<?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>239127</bug_id>
          
          <creation_ts>2022-04-12 08:39:38 -0700</creation_ts>
          <short_desc>Replace AtomString(const char*) with AtomString::fromLatin1(const char*)</short_desc>
          <delta_ts>2022-04-13 09:10:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1860680</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 08:39:38 -0700</bug_when>
    <thetext>Replace AtomString(const char*) with AtomString::fromLatin1(const char*) for consistency with String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860682</commentid>
    <comment_count>1</comment_count>
      <attachid>457333</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 08:49:54 -0700</bug_when>
    <thetext>Created attachment 457333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860687</commentid>
    <comment_count>2</comment_count>
      <attachid>457334</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 09:10:46 -0700</bug_when>
    <thetext>Created attachment 457334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860700</commentid>
    <comment_count>3</comment_count>
      <attachid>457336</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 09:40:54 -0700</bug_when>
    <thetext>Created attachment 457336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860711</commentid>
    <comment_count>4</comment_count>
      <attachid>457340</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 10:16:12 -0700</bug_when>
    <thetext>Created attachment 457340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860720</commentid>
    <comment_count>5</comment_count>
      <attachid>457343</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 10:41:10 -0700</bug_when>
    <thetext>Created attachment 457343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860730</commentid>
    <comment_count>6</comment_count>
      <attachid>457348</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 10:57:46 -0700</bug_when>
    <thetext>Created attachment 457348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860771</commentid>
    <comment_count>7</comment_count>
      <attachid>457377</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 12:46:31 -0700</bug_when>
    <thetext>Created attachment 457377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860869</commentid>
    <comment_count>8</comment_count>
      <attachid>457410</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 13:43:59 -0700</bug_when>
    <thetext>Created attachment 457410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860987</commentid>
    <comment_count>9</comment_count>
      <attachid>457410</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-12 18:07:48 -0700</bug_when>
    <thetext>Comment on attachment 457410
Patch

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

&gt; Source/WTF/wtf/text/AtomString.h:171
&gt; +    AtomString(const char*);

Might even mark this explicit.

&gt; Source/WebCore/dom/DocumentInlines.h:42
&gt; +inline AtomString Document::encoding() const { return AtomString::fromLatin1(textEncoding().domName()); }

I wonder if this is better AtomString than String; worth thinking about at some point, now obviously good to change just this.

&gt; Source/WebCore/editing/HTMLInterchange.h:39
&gt; +#define ApplePasteAsQuotation     &quot;Apple-paste-as-quotation&quot;_s
&gt; +#define AppleStyleSpanClass       &quot;Apple-style-span&quot;_s
&gt; +#define AppleTabSpanClass         &quot;Apple-tab-span&quot;_s
&gt; +#define WebKitMSOListQuirksStyle  &quot;WebKit-mso-list-quirks-style&quot;_s

If we’re changing it this much, maybe we can use constexpr instead of #define

&gt; Source/WebCore/page/Quirks.cpp:504
&gt; +            if (auto* paneContainer = node-&gt;treeScope().getElementById(AtomString(&quot;paneContainer&quot;_s))) {

Does this require an explicit conversion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861005</commentid>
    <comment_count>10</comment_count>
      <attachid>457500</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 19:26:28 -0700</bug_when>
    <thetext>Created attachment 457500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861016</commentid>
    <comment_count>11</comment_count>
      <attachid>457504</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 20:49:16 -0700</bug_when>
    <thetext>Created attachment 457504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861017</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 20:50:07 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 457410 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457410&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/AtomString.h:171
&gt; &gt; +    AtomString(const char*);
&gt; 
&gt; Might even mark this explicit.
&gt; 
&gt; &gt; Source/WebCore/dom/DocumentInlines.h:42
&gt; &gt; +inline AtomString Document::encoding() const { return AtomString::fromLatin1(textEncoding().domName()); }
&gt; 
&gt; I wonder if this is better AtomString than String; worth thinking about at
&gt; some point, now obviously good to change just this.
&gt; 
&gt; &gt; Source/WebCore/editing/HTMLInterchange.h:39
&gt; &gt; +#define ApplePasteAsQuotation     &quot;Apple-paste-as-quotation&quot;_s
&gt; &gt; +#define AppleStyleSpanClass       &quot;Apple-style-span&quot;_s
&gt; &gt; +#define AppleTabSpanClass         &quot;Apple-tab-span&quot;_s
&gt; &gt; +#define WebKitMSOListQuirksStyle  &quot;WebKit-mso-list-quirks-style&quot;_s
&gt; 
&gt; If we’re changing it this much, maybe we can use constexpr instead of #define
&gt; 
&gt; &gt; Source/WebCore/page/Quirks.cpp:504
&gt; &gt; +            if (auto* paneContainer = node-&gt;treeScope().getElementById(AtomString(&quot;paneContainer&quot;_s))) {
&gt; 
&gt; Does this require an explicit conversion?

Yes, it is ambiguous without it because there is a getElementById() that takes in a String and one that takes in an AtomString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861116</commentid>
    <comment_count>13</comment_count>
      <attachid>457504</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 07:47:44 -0700</bug_when>
    <thetext>Comment on attachment 457504
Patch

Clearing flags on attachment: 457504

Committed r292810 (249592@trunk): &lt;https://commits.webkit.org/249592@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861117</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 07:47:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861118</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-13 07:48:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91689002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861134</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-13 09:10:03 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; (In reply to Darin Adler from comment #9)
&gt; &gt; &gt; Source/WebCore/page/Quirks.cpp:504
&gt; &gt; &gt; +            if (auto* paneContainer = node-&gt;treeScope().getElementById(AtomString(&quot;paneContainer&quot;_s))) {
&gt; &gt; 
&gt; &gt; Does this require an explicit conversion?
&gt; 
&gt; Yes, it is ambiguous without it because there is a getElementById() that
&gt; takes in a String and one that takes in an AtomString.

Side note: If we wanted an efficient algorithm for this in hot code paths, we would call a &quot;find an AtomString only if it already exists&quot; variant rather than the AtomString constructor. It’s wasteful to allocate memory for the AtomString, when we know that in that case there is no element with that ID.

One of the ways to do that would be an overload that takes an ASCIILiteral. Another would be some AtomString construction functions that followed this &quot;only if already exists&quot; rule, which could be useful for various kinds of AtomString-based lookup scenarios.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457333</attachid>
            <date>2022-04-12 08:49:54 -0700</date>
            <delta_ts>2022-04-12 09:15:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412084954.patch</filename>
            <type>text/plain</type>
            <size>83231</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uMzk0N2VmNTY3MmFiYjUzNDFj
MDhjNDExNGUwY2Y5MzJkMDQyOWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KCIiX3MpOwogCiAgICAgICAgIC8vIFdoZW4gc3RhcnRpbmcgV2ViVGhyZWFkIHZp
YSBTdGFydFdlYlRocmVhZCBmdW5jdGlvbiwgd2UgaGF2ZSBzcGVjaWFsIHBlcmlvZCBiZXR3ZWVu
IHRoZSBwcm9sb2d1ZSBvZiBTdGFydFdlYlRocmVhZCBhbmQgc3Bhd25pbmcgV2ViVGhyZWFkIGFj
dHVhbGx5LgogICAgICAgICAvLyBJbiB0aGlzIHBlcmlvZCwgYGlzTWFpblRocmVhZCgpYCByZXR1
cm5zIGZhbHNlIGV2ZW4gaWYgdGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNl
IFdlYlRocmVhZCBpcyBub3cgZW5hYmxlZCBhbmQgd2UgYXJlIG5vdCB0YWtpbmcgYSBXZWJUaHJl
YWQgbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggMzUwNjM5ZGM1ZDZmYTI4MzE3
NGU1YzE0NjFiN2Q0NWNiNDIwNTc1OS4uMDY5YWY2ZDMyNTlkMzJiMjRjOTVhMjU0MDNhYTNmYWMw
ZDgwYjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTM5LDExICszOSwxMiBAQCBw
dWJsaWM6CiAKICAgICBBdG9tU3RyaW5nKCk7CiAgICAgQXRvbVN0cmluZyhjb25zdCBMQ2hhciop
OwotICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOwogICAgIEF0b21TdHJpbmcoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqKTsKIAorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcgZnJvbUxhdGluMShjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKSB7IHJldHVybiBBdG9tU3RyaW5nKGNoYXJhY3RlcnMpOyB9CisKICAgICB0ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgZXhwbGljaXQgQXRvbVN0cmluZyhjb25zdCBWZWN0
b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgY2hhcmFjdGVycykKICAgICAgICAgOiBtX3N0cmlu
ZyhBdG9tU3RyaW5nSW1wbDo6YWRkKGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUo
KSkpCkBAIC0xNjcsNiArMTY4LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAg
QXRvbVN0cmluZyhjb25zdCBjaGFyKik7CisKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlw
ZSB7IFVwcGVyLCBMb3dlciB9OwogICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZT4gQXRvbVN0
cmluZyBjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3Q7CiAKQEAgLTE4MCw2ICsxODMsNyBAQCBzdGF0
aWNfYXNzZXJ0KHNpemVvZihBdG9tU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJp
bmcgYW5kIFN0cmluZyBtdXN0CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgp
OyB9CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IExDaGFyKik7CiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIp
IHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihiKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwg
QVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0
dXJuIGEuaW1wbCgpICYmIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9ICAg
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
IGIgPT0gYTsgfQpAQCAtMTkyLDYgKzE5Niw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXRvbVN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyBy
ZXR1cm4gIShhID09IGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
ICEoYiA9PSBhKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9
CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0
b21TdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApp
bmRleCA4Y2RiY2E3N2FmMzgzMDdiMmI0YzBhNGQyNWExZjBlOTExYWJiMWRlLi42MjQ5MmE5MDYw
NTRiNWQyY2Y4ZTU5MjFiYjljNDhlZjczZjM0YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAg
LTIyNiw5ICsyMjYsOSBAQCBJbml0RGF0YVJlZ2lzdHJ5JiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFy
ZWQoKQogCiBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIHsKLSAgICByZWdp
c3RlckluaXREYXRhVHlwZSgia2V5aWRzIiwgeyBzYW5pdGl6ZUtleWlkcywgZXh0cmFjdEtleUlE
c0tleWlkcyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgiY2VuYyIsIHsgc2FuaXRpemVD
ZW5jLCBleHRyYWN0S2V5SURzQ2VuYyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgid2Vi
bSIsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKKyAgICByZWdpc3Rlcklu
aXREYXRhVHlwZSgia2V5aWRzIl9zLCB7IHNhbml0aXplS2V5aWRzLCBleHRyYWN0S2V5SURzS2V5
aWRzIH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJjZW5jIl9zLCB7IHNhbml0aXplQ2Vu
YywgZXh0cmFjdEtleUlEc0NlbmMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoIndlYm0i
X3MsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKIH0KIAogSW5pdERhdGFS
ZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCBhNmQzMTAyYzg4MmE2MDk4ZjQ3OTJiN2JjZDA2YmEyNmQ0Mjg3ZDhhLi4wMDUwZGUx
NmMwY2JkN2YwNjU3NjliYzU4MjY0YjYxMTY4ZWRjZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE3ODYsNyArMTc4Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiAgICAgaWYgKCFp
czxFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOworICAgIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGNiMmFmMWY2NmJmNDFlNTZkMDAyZmVmMDAw
ZmUxMTBkMzIwNDMzZDEuLmNkYTQwMWViMGY1YzRjMGY3MGZlYjYxMDg5M2NmMTRkZjA1ZjJiMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU1dlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIktleWZyYW1lRWZmZWN0LmgiCkBAIC0xNDc0LDcgKzE0NzUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmNvbW1pdFN0eWxlcygpCiAKICAgICBhdXRvIGNvbXB1
dGVkU3R5bGVFeHRyYWN0b3IgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKCZzdHlsZWRFbGVtZW50
KTsKICAgICBhdXRvIGlubGluZVN0eWxlID0gc3R5bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICBpbmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHls
ZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSk7CisgICAgaW5saW5lU3R5bGUtPnNldENz
c1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKTsK
IAogICAgIGF1dG8mIGtleWZyYW1lU3RhY2sgPSBzdHlsZWRFbGVtZW50LmVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soUHNldWRvSWQ6Ok5vbmUpOwogICAgIC8vIER1cmluZyBpdGVyYXRpb24gcmVz
b2x2ZSgpIGNvdWxkIGNsZWFyIHRoZSB1bmRlcmx5aW5nIHByb3BlcnRpZXMgc28gd2UgdXNlIGEg
Y29weQpAQCAtMTUwNyw3ICsxNTA4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
Ojpjb21taXRTdHlsZXMoKQogICAgICAgICAgICAgaW5saW5lU3R5bGUtPnNldFByb3BlcnR5SW50
ZXJuYWwocHJvcGVydHksIGNzc1ZhbHVlLT5jc3NUZXh0KCksIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBpbmxpbmVTdHlsZS0+Y3NzVGV4
dCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0
ciwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50SW5saW5lcy5oCmluZGV4IDdjMWVmN2M2M2M0YzM1NzdkMTllZWVhMzlm
ZjJhYTAzODZmOGJlOWUuLjFmZTg2MDM5NDg5NTYwOGM2ODhhNDMxY2IxMGNhMTMxM2FjNzk4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRJbmxpbmVzLmgKQEAgLTM5LDcgKzM5LDcgQEAgaW5s
aW5lIFBBTDo6VGV4dEVuY29kaW5nIERvY3VtZW50Ojp0ZXh0RW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBQQUw6OlRleHRFbmNvZGluZygpOwogfQogCi1pbmxpbmUgQXRvbVN0cmluZyBEb2N1
bWVudDo6ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0RW5jb2RpbmcoKS5kb21OYW1lKCk7
IH0KK2lubGluZSBBdG9tU3RyaW5nIERvY3VtZW50OjplbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IEF0b21TdHJpbmc6OmZyb21MYXRpbjEodGV4dEVuY29kaW5nKCkuZG9tTmFtZSgpKTsgfQogCiBp
bmxpbmUgU3RyaW5nIERvY3VtZW50OjpjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gRG9jdW1lbnQ6
OmVuY29kaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGUwMGMxZjlhODk1NGVl
MGI4Y2JjMWQ4MmQzMGI2MDFkZmUxMzliZWMuLmVmZjgwYjU1ZjE3NTM0M2QyOTExYmI3ZjExZDQ1
MGViM2U5MzBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMyMjQsNyArMzIyNCw3IEBA
IHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFkeUV2ZW50
Rm9yVGVzdGluZygpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS53ZWJraXRJbWFn
ZVJlYWR5RXZlbnRFbmFibGVkKCkpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiX3MsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUZv
cmNlV2lsbEJlZ2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA0MTNl
MzQ2NzJlYjY3NTZkODlhMGZlNGFmZDY3ZjllYTZjNjhiYzVjLi4zNmM4OTc3YjE2YjQ1ZjNhODdl
ZWQ5M2M4YWU0YjQ2ZDU1Njk2YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQc2V1ZG9FbGVt
ZW50KTsKIAogY29uc3QgUXVhbGlmaWVkTmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCks
ICI8cHNldWRvPiIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFs
aWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCksICI8cHNldWRvPiJfcywgbnVsbEF0b20oKSk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDdk
OWQ1OWJlMWMxNTJmMDk4NWY1ZjUxOGJiOWZjY2U1NmY4N2JjOWEuLjgwZmZkMWVjM2Y4MjBmMTY2
NzJhYjE4YjY0MjUwNDNiOWJmNGJmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApA
QCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0JiB0YWJUZXh0Tm9kZSkKICAgICBhdXRvIHNwYW5F
bGVtZW50ID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgc3BhbkVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBs
ZVRhYlNwYW5DbGFzcyk7Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3aGl0ZS1zcGFjZTpwcmUiKTsKKyAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIndoaXRlLXNwYWNlOnByZSJfcyk7CiAKICAgICBzcGFuRWxlbWVudC0+YXBwZW5kQ2hp
bGQodGFiVGV4dE5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjgwMzMx
YjI4ZjA3Y2Y1NDZlZTExYzViYTBmYzFjM2E5ZGZjOTg5ZS4uOTc0Nzg4YTNiM2FhODEzZWYwMWUy
ZDIxYmIyNzkyMmMyMGZiN2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTE3
OCw3ICsxMTc4LDcgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKENvbXBvc2l0ZUVkaXRD
b21tYW5kJiBjb21tYW5kKQogCiBib29sIEVkaXRvcjo6d2lsbFVuYXBwbHlFZGl0aW5nKGNvbnN0
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVy
biBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRh
YmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJo
aXN0b3J5VW5kbyIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBv
c2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdS
b290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9y
Ojp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpA
QCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoRWRpdENv
bW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihjb21wb3NpdGlvbi5zdGFydGluZ1NlbGVjdGlvbigpKTsKICAgICBjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSk7Ci0gICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiAKICAgICB1
cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZv
aWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBv
c2l0aW9uKQogCiBib29sIEVkaXRvcjo6d2lsbFJlYXBwbHlFZGl0aW5nKGNvbnN0IEVkaXRDb21t
YW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVybiBkaXNwYXRj
aEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVu
dCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVk
byIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZWFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpAQCAtMTIxNCw3
ICsxMjE0LDcgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21w
b3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjb21wb3NpdGlvbi5lbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRp
bmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgImhpc3RvcnlSZWRvIik7CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogICAgIAogICAgIHVwZGF0ZUVk
aXRvclVJTm93SWZTY2hlZHVsZWQoKTsKIApAQCAtMTU1MCw4ICsxNTUwLDggQEAgdm9pZCBFZGl0
b3I6OnBhc3RlRm9udChGcm9tTWVudU9yS2V5QmluZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykK
IHZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkKIHsKICAgICBhdXRvIGJsb2NrUXVvdGUgPSBIVE1MUXVvdGVFbGVtZW50OjpjcmVh
dGUoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQoKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRvbVN0cmluZygiY2l0ZSIpKTsK
LSAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNz
QXR0ciwgQXRvbVN0cmluZyhBcHBsZVBhc3RlQXNRdW90YXRpb24pKTsKKyAgICBibG9ja1F1b3Rl
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCAiY2l0ZSJfcyk7
CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFz
c0F0dHIsIEFwcGxlUGFzdGVBc1F1b3RhdGlvbik7CiAKICAgICBhdXRvIGNoaWxkTm9kZSA9IGZy
YWdtZW50LmZpcnN0Q2hpbGQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hh
bmdlLmgKaW5kZXggZDRjNTA1YzhhNjcyYjJlMDhjZTg1ODMwZGE1OWUwOWYwMTQxNjExYi4uNWI2
ZjM3MDg5Y2VlZDU5NjZlMjUyY2U0YjQwNDExZWQ3MDcxMDE0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgVGV4dDsK
IAogI2RlZmluZSBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAgICJBcHBsZS1pbnRlcmNoYW5nZS1u
ZXdsaW5lIgogI2RlZmluZSBBcHBsZUNvbnZlcnRlZFNwYWNlICAgICAgICJBcHBsZS1jb252ZXJ0
ZWQtc3BhY2UiCi0jZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxlLXBhc3Rl
LWFzLXF1b3RhdGlvbiIKLSNkZWZpbmUgQXBwbGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUt
c3R5bGUtc3BhbiIKLSNkZWZpbmUgQXBwbGVUYWJTcGFuQ2xhc3MgICAgICAgICAiQXBwbGUtdGFi
LXNwYW4iCi0jZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldlYktpdC1tc28tbGlz
dC1xdWlya3Mtc3R5bGUiCisjZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxl
LXBhc3RlLWFzLXF1b3RhdGlvbiJfcworI2RlZmluZSBBcHBsZVN0eWxlU3BhbkNsYXNzICAgICAg
ICJBcHBsZS1zdHlsZS1zcGFuIl9zCisjZGVmaW5lIEFwcGxlVGFiU3BhbkNsYXNzICAgICAgICAg
IkFwcGxlLXRhYi1zcGFuIl9zCisjZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldl
YktpdC1tc28tbGlzdC1xdWlya3Mtc3R5bGUiX3MKIAogLy8gQ29udHJvbHMgd2hldGhlciBhIHNw
ZWNpYWwgQlIgd2hpY2ggaXMgcmVtb3ZlZCB1cG9uIHBhc3RlIGluIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kIG5lZWRzIHRvIGJlIGluc2VydGVkCiAvLyBhbmQgbWFraW5nIHNlcXVlbmNlIG9mIHNw
YWNlcyBub3QgY29sbGFwc2libGUgYnkgaW5zZXJ0aW5nIG5vbi1icmVha2luZyBzcGFjZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCmluZGV4
IDNjNDYxNDNhNzgxYzM2ZWM3OTRlZjdlNzFiNTI4MjUxYjgxMDllMDYuLjE3YTQ4NzA4ZTJiZjg5
ZTUyYmNmN2YyY2Q4MWU2NmFiMDdlOGY2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29s
IGlzTGlzdE9ySW5kZW50QmxvY2txdW90ZShjb25zdCBOb2RlKiBub2RlKQogfQogCiBJbmRlbnRP
dXRkZW50Q29tbWFuZDo6SW5kZW50T3V0ZGVudENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBF
SW5kZW50VHlwZSB0eXBlT2ZBY3Rpb24pCi0gICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQo
ZG9jdW1lbnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9u
ZTsgcGFkZGluZzogMHB4OyIpCisgICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQoZG9jdW1l
bnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFk
ZGluZzogMHB4OyJfcykKICAgICAsIG1fdHlwZU9mQWN0aW9uKHR5cGVPZkFjdGlvbikKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAyZDhmOGIzMzU5MzBkMDdkZDMzMjZiODEw
NjVmMmQ0ZmQ4MzVhY2FlLi43ZTU5NTJiN2E5NjI4NzA3MGU4MDM3OThkNTlkOGZjMmY3YjM5Yjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMTc0LDcgKzExNzQsNyBAQCBSZWY8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb25zdCBTaW1wbGVSYW5n
ZSYgY29udGV4dCwgY29uc3QgUwogCiAgICAgYXV0byBjcmVhdGVIVE1MQlJFbGVtZW50ID0gWyZk
b2N1bWVudF0oKSB7CiAgICAgICAgIGF1dG8gZWxlbWVudCA9IEhUTUxCUkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7CisgICAgICAgIGVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBdG9t
U3RyaW5nOjpmcm9tTGF0aW4xKEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKSk7CiAgICAgICAgIHJl
dHVybiBlbGVtZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF1ZGlvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1l
bnQuY3BwCmluZGV4IDUwNDk1YzE3YjljYTk3OTIwM2VmOTg0YmYyODE2MzRlNTIwZmFlNGMuLmE4
YzAwMzIyOWU0MzE4Yjg3NzVlNzI2NThiMTJhZWEwNjMzMDAzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWY8SFRNTEF1ZGlv
RWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvYwogUmVmPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0
ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21T
dHJpbmcmIHNyYykKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3Vt
ZW50LCBmYWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihwcmVsb2FkQXR0ciwgImF1dG8iKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCAiYXV0byJfcyk7CiAgICAgZWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNBdHRyLCBzcmMpOwogICAgIHJl
dHVybiBlbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCmluZGV4IGJmNTQzMmFmMzE2ZTVhNzRhZjJhZDI3M2YxMTUyNmU0ZGI0NWIyY2IuLjY4YmMy
MzhlYmQ5MWE0MTdiY2JkOGM5NTg2NWM3MzU1OWJmZDVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHN1bW1hcnlTbG90TmFt
ZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNsb3QiKTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1bW1hcnlTbG90KCJzdW1tYXJ5U2xvdCJf
cyk7CiAgICAgcmV0dXJuIHN1bW1hcnlTbG90OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCmluZGV4IDFiMzZkNWIzNmYwMDFhZDA3ZTllNmFhMDI4NjgxNjI3MjI0NjRkMzAuLjZi
MWQ4ZDNjMWQxMDNhNWYwMmI4MDMyMDNmZWZkODBiMDZjZDBkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCkBAIC02OTYsNyArNjk2LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6dHJh
bnNsYXRlKCkgY29uc3QKIAogdm9pZCBIVE1MRWxlbWVudDo6c2V0VHJhbnNsYXRlKGJvb2wgZW5h
YmxlKQogewotICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHJhbnNsYXRl
QXR0ciwgZW5hYmxlID8gInllcyIgOiAibm8iKTsKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHRyYW5zbGF0ZUF0dHIsIGVuYWJsZSA/ICJ5ZXMiX3MgOiAibm8iX3MpOwog
fQogCiBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzRXZlck5lZWRlZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAyMDliNjgyMzk2Mzk5ZmU4MDY5Yjk0
YzgyMTllZTQzODYxZjAxYTcyLi5iYWI1MTExZDI2ZWE5MDlhN2Y1YzBkNjM3Yjc1Mjg5N2RjZDI1
ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI2NzAs
NyArMjY3MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVB
ZnRlck5lZWRLZXkoKQogewogICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAg
ICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXki
KSB8fCAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYm
ICFkb2N1bWVudCgpLnF1aXJrcygpLmhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1
aXJrKCkpOworICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBoYXNFdmVudExpc3RlbmVycyhldmVu
dE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KSB8fCAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVu
Y3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFkb2N1bWVudCgpLnF1aXJrcygpLmhhc0Jyb2tl
bkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJrKCkpOwogICAgIG1fcGxheWVyLT5zZXRTaG91
bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3VsZENvbnRpbnVlKTsKIH0KICNlbmRpZgpAQCAt
MjY4NSw3ICsyNjg1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU5l
ZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQogICAgIGlmICghZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVka2V5IikKKyAgICBp
ZiAoIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICAgICAgLy8gT25seSBmaXJlIGFuIGVycm9y
IGlmIEVOQ1JZUFRFRF9NRURJQSBpcyBub3QgZW5hYmxlZCwgdG8gZ2l2ZSBjbGllbnRzIG9mIHRo
ZQogICAgICAgICAvLyAiZW5jcnlwdGVkIiBldmVudCBhIGNoYW5jZSB0byBoYW5kbGUgaXQgd2l0
aG91dCByZXN1bHRpbmcgaW4gYSBzeW50aGV0aWMgZXJyb3IuCkBAIC00NzA1LDcgKzQ3MDUsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKCkKIHsKICAgICBhdXRv
IHRhc2sgPSBbdGhpc10gewogICAgICAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hhZG93
Um9vdCgpKQotICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKCJy
ZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsK
KyAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucmVzaXplRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOwogICAgIH07CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFdURk1vdmUodGFzaykpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAppbmRleCA4Y2ViODhhM2IxMDdiZGY2NDlhNWYyMmEw
MGE4MmU5NDI0Y2UyZWE3Li5iZDQ0ZTJkMDI4YTcwMDg4NjM2ZmYyNjYwNjM3N2ViZWRkZjk3N2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKQEAgLTE5MCwxNSAr
MTkwLDE1IEBAIHN0YXRpYyB2b2lkIHNldFZhbHVlQ2xhc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQs
IEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uIGdhCiB7CiAgICAgc3dpdGNoIChnYXVnZVJl
Z2lvbikgewogICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25PcHRpbXVtOgot
ICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgIm9wdGlt
dW0iKTsKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIs
ICJvcHRpbXVtIl9zKTsKICAgICAgICAgZWxlbWVudC5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRz
Ojp3ZWJraXRNZXRlck9wdGltdW1WYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
SFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25TdWJvcHRpbWFsOgotICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgInN1Ym9wdGltdW0iKTsKKyAgICAg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVt
Il9zKTsKICAgICAgICAgZWxlbWVudC5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRN
ZXRlclN1Ym9wdGltdW1WYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTE1l
dGVyRWxlbWVudDo6R2F1Z2VSZWdpb25FdmVuTGVzc0dvb2Q6Ci0gICAgICAgIGVsZW1lbnQuc2V0
QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZXZlbi1sZXNzLWdvb2QiKTsKKyAgICAg
ICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJldmVuLWxlc3Mt
Z29vZCJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJFdmVuTGVzc0dvb2RWYWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1
bHQ6CkBAIC0yMzQsMTcgKzIzNCwxNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYgcm9vdCkKIAogICAgIC8vIFBzZXVkb3MgYXJl
IHNldCB0byBhbGxvdyBhdXRob3Igc3R5bGluZy4KICAgICBhdXRvIGlubmVyID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBpbm5lci0+c2V0SWRBdHRyaWJ1dGUoImlu
bmVyIik7CisgICAgaW5uZXItPnNldElkQXR0cmlidXRlKCJpbm5lciJfcyk7CiAgICAgaW5uZXIt
PnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVySW5uZXJFbGVtZW50KCkpOwog
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoaW5uZXIpOwogCiAgICAgYXV0byBiYXIgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIGJhci0+c2V0SWRBdHRyaWJ1dGUoImJhciIp
OworICAgIGJhci0+c2V0SWRBdHRyaWJ1dGUoImJhciJfcyk7CiAgICAgYmFyLT5zZXRQc2V1ZG8o
U2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlckJhcigpKTsKICAgICBpbm5lci0+YXBwZW5kQ2hp
bGQoYmFyKTsKIAogICAgIG1fdmFsdWUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KCkpOwotICAgIG1fdmFsdWUtPnNldElkQXR0cmlidXRlKCJ2YWx1ZSIpOworICAgIG1fdmFsdWUt
PnNldElkQXR0cmlidXRlKCJ2YWx1ZSJfcyk7CiAgICAgYmFyLT5hcHBlbmRDaGlsZCgqbV92YWx1
ZSk7CiAKICAgICBkaWRFbGVtZW50U3RhdGVDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCmluZGV4IDgwNDFlYTQyYzNiYTc5NTU3NWYzYTAyYjVlMjYzOWI1N2VhNDQw
NDUuLjM5NmY5ZGM5Njg4MTAzNjE5NjRhZDI4ZWUyOGY5YjUwYjVkYzE4YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjMwLDE2ICsyMzAsMTYgQEAgdm9pZCBJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgcm9vdEVsZW1lbnQtPmFw
cGVuZENoaWxkKGhlYWQpOwogCiAgICAgYXV0byBib2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVh
dGUoKnRoaXMpOwotICAgIGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDBw
eCIpOworICAgIGJvZHktPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDBweCJfcyk7
CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUoZG9jdW1lbnQoKS5sb2Fk
ZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKSkKICAgICAgICAgYm9keS0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgIndoaXRlIl9zKTsKICAgICByb290
RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSk7CiAgICAgCiAgICAgYXV0byBpbWFnZUVsZW1lbnQg
PSBJbWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRlKCp0aGlzKTsKICAgICBpZiAobV9zaG91bGRT
aHJpbmtJbWFnZSkKLSAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRy
LCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46YXV0bzsg
cGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdo
dCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7
Iik7CisgICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJr
aXQtdXNlci1zZWxlY3Q6bm9uZTsgZGlzcGxheTpibG9jazsgbWFyZ2luOmF1dG87IHBhZGRpbmc6
ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpIGVudihz
YWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpOyJfcyk7CiAg
ICAgZWxzZQotICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICIt
d2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3Ap
IGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBl
bnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpOyIpOworICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0
dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IHBhZGRpbmc6ZW52
KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpIGVudihzYWZl
LWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpOyJfcyk7CiAgICAg
aW1hZ2VFbGVtZW50LT5zZXRMb2FkTWFudWFsbHkodHJ1ZSk7CiAgICAgaW1hZ2VFbGVtZW50LT5z
ZXRTcmModXJsKCkuc3RyaW5nKCkpOwogICAgIGltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+
c2V0UmVzcG9uc2UobG9hZGVyKCktPnJlc3BvbnNlKCkpOwpAQCAtMjUzLDggKzI1Myw4IEBAIHZv
aWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogI2Vsc2UKICAgICAg
ICAgYXV0byBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAg
ICAgICAgaWYgKFJlZlB0cjxET01XaW5kb3c+IHdpbmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQot
ICAgICAgICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lci5j
b3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIFdURk1vdmUobGlzdGVuZXIpLCBmYWxzZSk7CisgICAgICAgICAgICB3aW5kb3ct
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBsaXN0ZW5lci5jb3B5
UmVmKCksIGZhbHNlKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOwogI2VuZGlm
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCmluZGV4IDRlMTk0NjE2ZWNl
MjUzYzk0MTI0Y2ZiZTcyNDU4YWJiYmQ4NTNiMGQuLjU5ZGZiMDIxMjg2NTAwYzU1ZTdiMmJkNTk1
Y2Q4NDM3Y2QxNjhlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCkBAIC0xNDUs
NyArMTQ1LDcgQEAgdm9pZCBQREZEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQog
ICAgIC8vIERlc2NyaXB0aW9uIG9mIHBhcmFtZXRlcnM6CiAgICAgLy8gLSBgI3BhZ2Vtb2RlPW5v
bmVgIHByZXZlbnRzIHRoZSBzaWRlYmFyIGZyb20gc2hvd2luZyBvbiBsb2FkLgogICAgIC8vIC0g
RW1wdHkgYD9maWxlPWAgcGFyYW1ldGVyIHByZXZlbnRzIGRlZmF1bHQgcGRmIGZyb20gbG9hZGlu
Zy4KLSAgICBhdXRvIHZpZXdlclVSTCA9ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2Vi
L3ZpZXdlci5odG1sP2ZpbGU9I3BhZ2Vtb2RlPW5vbmUiOworICAgIGF1dG8gdmlld2VyVVJMID0g
IndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0jcGFnZW1v
ZGU9bm9uZSJfczsKICAgICBhdXRvIHJvb3RFbGVtZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVh
dGUoKnRoaXMpOwogICAgIGFwcGVuZENoaWxkKHJvb3RFbGVtZW50KTsKICAgICByb290RWxlbWVu
dC0+aW5zZXJ0ZWRCeVBhcnNlcigpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUERGRG9jdW1l
bnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBtX2lmcmFtZS0+c2V0QXR0cmlidXRl
KHN0eWxlQXR0ciwgQXRvbVN0cmluZygid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYm9yZGVy
OiAwOyBkaXNwbGF5OiBibG9jazsiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwogCiAgICAgbV9saXN0ZW5lciA9IFBERkRvY3VtZW50RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0
aGlzKTsKLSAgICBtX2lmcmFtZS0+YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICptX2xpc3RlbmVy
LCBmYWxzZSk7CisgICAgbV9pZnJhbWUtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxv
YWRFdmVudCwgKm1fbGlzdGVuZXIsIGZhbHNlKTsKIAogICAgIGJvZHktPmFwcGVuZENoaWxkKCpt
X2lmcmFtZSk7CiB9CkBAIC0yMjMsOSArMjIzLDkgQEAgdm9pZCBQREZEb2N1bWVudDo6aW5qZWN0
U3R5bGVBbmRDb250ZW50U2NyaXB0KCkKIAogICAgIEFTU0VSVChjb250ZW50RG9jdW1lbnQtPmJv
ZHkoKSk7CiAgICAgYXV0byBzY3JpcHQgPSBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKHNjcmlw
dFRhZywgKmNvbnRlbnREb2N1bWVudCwgZmFsc2UpOwotICAgIHNjcmlwdC0+YWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIG1fbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgZmFsc2UpOworICAgIHNj
cmlwdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBtX2xpc3RlbmVy
LnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKIAotICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNy
Y0F0dHIsICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0
LmpzIik7CisgICAgc2NyaXB0LT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgIndlYmtpdC1wZGZqcy12
aWV3ZXI6Ly9wZGZqcy9leHRyYXMvY29udGVudC1zY3JpcHQuanMiX3MpOwogICAgIGNvbnRlbnRE
b2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChzY3JpcHQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCmluZGV4IGUwMWRmMzkyOTM2ZTgyMDljZWJkNGQ2NDg0YmZmZTI4ZTA0MmI0ZWEuLjAw
M2E5MDFlMDQzZTM3YzhlM2MwNjY4YzYzMzcyNDBmNmNkZTYxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKTsKIHN0YXRpYyBjb25zdGV4cHIgSW1hZ2VTbW9vdGhp
bmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFsaXR5ID0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5
OjpMb3c7CiAKIGNvbnN0IGludCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpEZWZhdWx0
Rm9udFNpemUgPSAxMDsKLWNvbnN0IGNoYXIqIGNvbnN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OkRlZmF1bHRGb250RmFtaWx5ID0gInNhbnMtc2VyaWYiOworY29uc3QgQVNDSUlMaXRl
cmFsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkRlZmF1bHRGb250RmFtaWx5ID0gInNh
bnMtc2VyaWYiX3M7CiBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBEZWZhdWx0Rm9udCA9
ICIxMHB4IHNhbnMtc2VyaWYiX3M7CiAKIHN0YXRpYyBDYW52YXNMaW5lQ2FwIHRvQ2FudmFzTGlu
ZUNhcChMaW5lQ2FwIGxpbmVDYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKaW5kZXggNGE3YTQzYTdjZmZl
ODI2YWY4NGI3MDEzMjAyZjJiOTNlNDg2ZGI0YS4uNWJmNWI1MzM4YWNiMjA3Y2IzYjE0OTMwNmVl
ODQxMDc4MDY4ZmVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaApAQCAtMjk2LDcgKzI5Niw3IEBAIHB1
YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBpbnQgRGVmYXVsdEZvbnRTaXpl
OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBEZWZhdWx0Rm9udEZhbWlseTsKKyAgICBz
dGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIERlZmF1bHRGb250RmFtaWx5OwogCiAgICAgY29uc3Qg
U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogICAg
IHZvaWQgcmVhbGl6ZVNhdmVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcAppbmRleCBhMWYxNjdjYjA4M2M5OTg0MzYxODM0MTE4MDI5ZjI4NWU0
MWMwMDA1Li5lZGNjNmFmZDZjNmYwMzhiODRjNGU3MWY1NzhhNjg4ODQyN2M3MTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTU0NCw3
ICs1NDQsNyBAQCBzdGF0aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
PEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+IGNyZWF0ZQogICAgIGFkZE5hbWVzV2l0aFByZWZp
eChtYXAsIHhtbEF0b20oKSwgWE1MTmFtZXM6OmdldFhNTEF0dHJzKCksIFhNTE5hbWVzOjpYTUxB
dHRyc0NvdW50KTsKIAogICAgIG1hcC5hZGQoeG1sbnNBdG9tKCksIFhNTE5TTmFtZXM6OnhtbG5z
QXR0cik7Ci0gICAgbWFwLmFkZCgieG1sbnM6eGxpbmsiLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRv
bSgpLCB4bGlua05hbWUsIFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSk7CisgICAgbWFw
LmFkZCgieG1sbnM6eGxpbmsiX3MsIFF1YWxpZmllZE5hbWUoeG1sbnNBdG9tKCksIHhsaW5rTmFt
ZSwgWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkkpKTsKIAogICAgIHJldHVybiBtYXA7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNw
cAppbmRleCA0NzA2ZjI2ZTg0NDA5ZWU4MTNjZDEzYmM1ZjRlMGFjY2Y2NzRhODY3Li43OGUxMWZj
MmMxMDhkNzdmZjhjMmE5MmFhOTI1ZWZjNTJlNDM5MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
dm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KCkKICAgICAvLyBX
ZSBjcmVhdGUgYSBmYWtlIHRva2VuIGFuZCBnaXZlIGl0IHRvIHRoZSB0cmVlIGJ1aWxkZXIgcmF0
aGVyIHRoYW4KICAgICAvLyBzZW5kaW5nIGZha2UgYnl0ZXMgdGhyb3VnaCB0aGUgZnJvbnQtZW5k
IG9mIHRoZSBwYXJzZXIgdG8gYXZvaWQKICAgICAvLyBkaXN0cnViaW5nIHRoZSBsaW5lL2NvbHVt
biBudW1iZXIgY2FsY3VsYXRpb25zLgotICAgIEF0dHJpYnV0ZSBhdHRyaWJ1dGUoc3R5bGVBdHRy
LCAid29yZC13cmFwOiBicmVhay13b3JkOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Iik7CisgICAg
QXR0cmlidXRlIGF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdo
aXRlLXNwYWNlOiBwcmUtd3JhcDsiX3MpOwogICAgIEF0b21IVE1MVG9rZW4gZmFrZVByZShIVE1M
VG9rZW46OlN0YXJ0VGFnLCBwcmVUYWctPmxvY2FsTmFtZSgpLCB7IFdURk1vdmUoYXR0cmlidXRl
KSB9KTsKICAgICB0cmVlQnVpbGRlcigpLmNvbnN0cnVjdFRyZWUoV1RGTW92ZShmYWtlUHJlKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAppbmRleCA4NDljZDU5NGE3
YjlhMzk4YjBjMzFmYTkwZmM2N2Q3ZjZkNjc2YTJmLi4xMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4
ZGQ1NWVhNmMzNjlkNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3Bw
CkBAIC04OCwxMyArODgsMTMgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGZvcmNlZEtleXdv
cmQoKQogCiBUZXh0VHJhY2smIFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVtKCkKIHsKLSAg
ICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2Zm
IG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxs
cHRyLCAib2ZmIG1lbnUgaXRlbSJfcywgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0
b20oKSkubGVha1JlZigpOwogICAgIHJldHVybiBvZmY7CiB9CiAKIFRleHRUcmFjayYgVGV4dFRy
YWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2sm
IGF1dG9tYXRpYyA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBp
dGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOwor
ICAgIHN0YXRpYyBUZXh0VHJhY2smIGF1dG9tYXRpYyA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxw
dHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIl9zLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVt
cHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGF1dG9tYXRpYzsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGJjZjhlMTcyYTY3MzIw
ZjY2ODgxMjA3NDc5ZGY3YTgwYWJhYzE3ZWUuLjc3YzZhMTYwYmE5NWJkNWEyODZjNWRhNzQ5Mzk4
MzVlNTFiOWFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5j
cHAKQEAgLTY3LDEzICs2NywxMyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dFRy
YWNrQ3VlQm94KTsKIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGN1ZUF0dHJpYnV0TmFt
ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGN1ZVRhZyhu
dWxsQXRvbSgpLCAiY3VlIiwgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFF1YWxpZmllZE5hbWU+IGN1ZVRhZyhudWxsQXRvbSgpLCAiY3VlIl9zLCBudWxsQXRvbSgpKTsK
ICAgICByZXR1cm4gY3VlVGFnOwogfQogCiBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3Vl
QmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1
YWxpZmllZE5hbWU+IGN1ZUJhY2tncm91bmRUYWcobnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQi
LCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
Y3VlQmFja2dyb3VuZFRhZyhudWxsQXRvbSgpLCAiY3VlYmFja2dyb3VuZCJfcywgbnVsbEF0b20o
KSk7CiAgICAgcmV0dXJuIGN1ZUJhY2tncm91bmRUYWc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmluZGV4IDkzNmQyN2IzYjI3MzdjMDA3NjE5Mzk1
MjI3MWU2ODdjYjVjNDY2NTUuLjE4YjA2ZjI4ZGFjNTA0YTNjZWIyNWFhOTc4YWYyODk2MDI1ZGMx
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAt
NDEsMTQgKzQxLDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJWVFRFbGVtZW50
KTsKIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5vZGVUeXBlVG9UYWdOYW1lKFdlYlZU
VE5vZGVUeXBlIG5vZGVUeXBlKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZp
ZWROYW1lPiBjVGFnKG51bGxBdG9tKCksICJjIiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZUYWcobnVsbEF0b20oKSwgInYiLCBudWxsQXRv
bSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbGFuZ1RhZyhu
dWxsQXRvbSgpLCAibGFuZyIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBiVGFnKG51bGxBdG9tKCksICJiIiwgbnVsbEF0b20oKSk7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHVUYWcobnVsbEF0b20oKSwgInUi
LCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4g
aVRhZyhudWxsQXRvbSgpLCAiaSIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51bGxBdG9tKCksICJydWJ5IiwgbnVsbEF0b20o
KSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHJ0VGFnKG51bGxB
dG9tKCksICJydCIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFs
aWZpZWROYW1lPiBjVGFnKG51bGxBdG9tKCksICJjIl9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdlRhZyhudWxsQXRvbSgpLCAidiJfcywg
bnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxh
bmdUYWcobnVsbEF0b20oKSwgImxhbmciX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFnKG51bGxBdG9tKCksICJiIl9zLCBudWxsQXRv
bSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdVRhZyhudWxs
QXRvbSgpLCAidSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1
YWxpZmllZE5hbWU+IGlUYWcobnVsbEF0b20oKSwgImkiX3MsIG51bGxBdG9tKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51bGxBdG9tKCksICJy
dWJ5Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gcnRUYWcobnVsbEF0b20oKSwgInJ0Il9zLCBudWxsQXRvbSgpKTsKICAgICBzd2l0Y2gg
KG5vZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFROb2RlVHlwZUNsYXNzOgogICAgICAgICByZXR1
cm4gY1RhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXgg
ZGVjYmUxN2FiYmYxZDlhNDNlNDgwZGM3OGNkNzIzODVlYjYwOTc2ZC4uMWM1Yzg1ZTMyYjI4OTQ1
ZTZlMmYwMTE4YzcxYWNjMmY0Y2Q1ZTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRFbGVtZW50LmgKQEAgLTYzLDEzICs2MywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VBdHRyaWJ1dGVOYW1lKCkKICAgICB7Ci0gICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20o
KSwgInZvaWNlIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgInZvaWNlIl9zLCBudWxsQXRvbSgp
KTsKICAgICAgICAgcmV0dXJuIHZvaWNlQXR0cjsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGxhbmdBdHRyaWJ1dGVOYW1lKCkKICAgICB7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwg
ImxhbmciLCBudWxsQXRvbSgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxp
ZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAibGFuZyJfcywgbnVsbEF0b20oKSk7CiAg
ICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCmluZGV4IDZhYTYxMjZkZDdjYWM2ODAxMTdiMjc3YjQ0YTZjMTg2ZWMzNzA1MzguLmZhMTg0
NGE2ZmYxZmU1YWE1MjhhYjI1NWNjODFjYzQyNmVlYjliNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxJ
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OkNvbXB1dGVkUHJvcGVydGllcz4KICAg
ICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2YW50VGV4dCA9ICJ0ZXh0Il9zOwogCiAgICAg
ICAgICAgICAgICAgY29uc3QgYXV0byYgdmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVs
ZXZhbnRBdHRyVmFsdWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFp
bnMoImFsbCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygiYWxsIl9z
KSkgewogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQuYXBwZW5kKGFyaWFS
ZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFu
dC5hcHBlbmQoYXJpYVJlbGV2YW50UmVtb3ZhbHMpOwogICAgICAgICAgICAgICAgICAgICBsaXZl
UmVnaW9uUmVsZXZhbnQuYXBwZW5kKGFyaWFSZWxldmFudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcAppbmRleCA3M2FmODM2
ZWY3NDZjNmJiODAzMzI4NzQ4YzhmZWNlYmRhNjcyNWZkLi5mNjExNDcxYTg1ZTNmZTY5M2RkNmYz
YWNhNjNlMjAyNDgyNjU3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcApAQCAtNTksNyArNTksNyBAQCBJbnNwZWN0b3JPdmVy
bGF5TGFiZWw6Okluc3BlY3Rvck92ZXJsYXlMYWJlbChjb25zdCBTdHJpbmcmIHRleHQsIEZsb2F0
UG9pbnQgbG9jYQogc3RhdGljIEZvbnRDYXNjYWRlIHN5c3RlbUZvbnQoKQogewogICAgIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRGYW1pbGllcyh7ICJzeXN0ZW0tdWkiIH0pOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1p
bGllcyh7ICJzeXN0ZW0tdWkiX3MgfSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChG
b250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZSgxMik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAppbmRleCAxN2EyOTdiNWFiMzQ0YzZiMjE4MGRkMGZhOWE5NDQyZmRhMzNlMzk3
Li4yNmUxOGVjMDRhYTZmN2RhZjNjN2I0MzNhOTZiMjYxYmI5MDI0OTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xNTkzLDcg
KzE1OTMsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYQogICAgICwgbV9pc1N0eWxlVGV4dFZh
bGlkKGZhbHNlKQogewogICAgIG1faW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3Jl
YXRlKEluc3BlY3RvckNTU0lkKGlkLCAwKSwgaW5saW5lU3R5bGUoKSwgdGhpcyk7Ci0gICAgbV9z
dHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJpbmcoKTsKKyAg
ICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVB
dHRyKS5zdHJpbmcoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGU6OmRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUoKQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjppbmxp
bmVTdHlsZSgpIGNvbnN0CiAKIGNvbnN0IFN0cmluZyYgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlOjplbGVtZW50U3R5bGVUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9lbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZWxlbWVu
dC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKS5zdHJpbmcoKTsKIH0KIAogUmVm
PENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnJ1
bGVTb3VyY2VEYXRhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZDM4OWVjMDdhZTg3YmM5NWI1Njgw
OWU4ZGI4MjU5MDg4ZTA1MmEwNi4uMDZjNDcyM2Y1NzAwNzA1MWVjNjE5MDlhYzcxOWRmM2I4Y2Iy
ZGNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTIyMjksNyArMjIyOSw3IEBAIFJlZjxQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yQWNjCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIHZhbHVl
cyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJpYVJlbGV2YW50QXR0clZhbHVlLCB0cnVlKTsKICAgICAg
ICAgICAgICAgICAgICAgLy8gQGFyaWEtcmVsZXZhbnQ9ImFsbCIgaXMgZXhwb3NlZCBhcyBbImFk
ZGl0aW9ucyIsInJlbW92YWxzIiwidGV4dCJdLCBpbiBvcmRlci4KICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBvcmRlciBpcyBjb250cm9sbGVkIGluIFdlYkNvcmUgYW5kIGV4cGVjdGVkIGlu
IFdlYkluc3BlY3RvclVJLgotICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNvbnRhaW5z
KCJhbGwiKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwi
X3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0
ZW0oYXJpYVJlbGV2YW50QWRkaXRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVS
ZWdpb25SZWxldmFudC0+YWRkSXRlbShhcmlhUmVsZXZhbnRSZW1vdmFscyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50VGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggOWYxN2MxMjhhMzE4MTZh
NmE5Mzk4YjVkMmIxNDU2ODU0YzVkOWE1MS4uMzZmZWJiZWRjZTBkZTE4OTFhZTRhOTJkMzk0Mjk3
OTIwM2VhMWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMjYzLDcg
KzI2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5r
TG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGluCiAgICAgb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHBhcmFtcy5yZWZlcnJlclBvbGljeTsKICAgICBhdXRvIGxpbmtSZXF1ZXN0ID0gY3Jl
YXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVlc3QodXJsLCBXVEZNb3ZlKG9wdGlvbnMpLCBk
b2N1bWVudCwgcGFyYW1zLmNyb3NzT3JpZ2luKTsKICAgICBsaW5rUmVxdWVzdC5zZXRQcmlvcml0
eShEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHk6OmZvclJlc291cmNlVHlwZSh0eXBlLnZhbHVl
KCkpKTsKLSAgICBsaW5rUmVxdWVzdC5zZXRJbml0aWF0b3IoImxpbmsiKTsKKyAgICBsaW5rUmVx
dWVzdC5zZXRJbml0aWF0b3IoImxpbmsiX3MpOwogICAgIGxpbmtSZXF1ZXN0LnNldElnbm9yZUZv
clJlcXVlc3RDb3VudCh0cnVlKTsKICAgICBsaW5rUmVxdWVzdC5zZXRJc0xpbmtQcmVsb2FkKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmNwcAppbmRleCA2NWIyNmNjOWJkNTc1ZWIxYTAxNWY0NWNjNWRlNjVjY2Q1NTM1MzdiLi41
MTAyMmM2NzVkMjRmMGJiOGE1M2IxOTVmZTg4YjFhZjAzZDEzNzAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0xODEs
NyArMTgxLDcgQEAgYm9vbCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Ojppc0Zsb3dDb250ZW50
KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpwVGFnKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6cHJlVGFnKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
c2VjdGlvblRhZykKLSAgICAgICAgfHwgKGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpzdHlsZVRhZykgJiYgaHRtbEVsZW1lbnQuaGFzQXR0cmlidXRlKCJzY29wZWQiKSkKKyAgICAg
ICAgfHwgKGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdHlsZVRhZykgJiYgaHRt
bEVsZW1lbnQuaGFzQXR0cmlidXRlKEhUTUxOYW1lczo6c2NvcGVkQXR0cikpCiAgICAgICAgIHx8
IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0YWJsZVRhZykKICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnVsVGFnKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggMjU5YzcyMjUzNjcxYjVhMGFlMDg1
YmMwNzEyYTRiMTVlYjI3OTVkNi4uZTk0YmRmZjhhOTMzODU0ZDdkOWZkYjBiZmM2YTE4ODFhZDU5
MTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTE5
Myw3ICsxOTMsNyBAQCB2b2lkIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5LCBHcmFwaGljcwogICAgIEZsb2F0UmVjdCBsZWdl
bmRSZWN0ID0geyBib3VuZHMubWF4WCgpIC0gMzAuMGYsIDEwLCAyMCwgMjAgfTsKICAgICAKICAg
ICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZp
ZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKICAg
ICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKQEAg
LTQwNyw3ICs0MDcsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRp
bmdzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB9CiAKICAgICBGb250Q2FzY2FkZURl
c2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFt
aWx5KCJIZWx2ZXRpY2EiKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2
ZXRpY2EiX3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEyKTsKICAg
ICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNw
cAppbmRleCBkZGJhODM1ZWY4OTIwM2FhZWFkYTFkMzAzYjIzNjk0NThkNDcyODEyLi45OGM0OTA2
ZDY2ZDQ1MjM5YTgwYzkzMWQ1OTM5YzMwZGUyMWJhY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3Bw
CkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZFRvb2x0aXBQcmV2ZW50RnJv
bVByb2NlZWRpbmdXaXRoQ2xpY2soY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIAogICAgIGlmICgh
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51
cmwoKS5ob3N0KCksICJjb3ZpZC5jZGMuZ292IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJ0b29sdGlwIik7CisgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50
LmNsYXNzTmFtZXMoKS5jb250YWlucygidG9vbHRpcCJfcyk7CiB9CiAKIC8vIEZJWE1FOiBSZW1v
dmUgYWZ0ZXIgdGhlIHNpdGUgaXMgZml4ZWQsIDxyZGFyOi8vcHJvYmxlbS83NTc5MjkxMz4KQEAg
LTQ4OCw3ICs0ODgsNyBAQCBzdGQ6Om9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IFF1aXJr
czo6c2ltdWxhdGVkTW91c2VFdmVudFR5cGVGb3JUYXJnZXQoRXZlbgogCiAgICAgLy8gT24gR29v
Z2xlIE1hcHMsIHdlIHdhbnQgdG8gbGltaXQgc2ltdWxhdGVkIG1vdXNlIGV2ZW50cyB0byBkcmFn
Z2luZyB0aGUgbGl0dGxlIG1hbiB0aGF0IGFsbG93cyBlbnRlcmluZyBpbnRvIFN0cmVldCBWaWV3
LgogICAgIGlmIChpc0dvb2dsZU1hcHMoKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4odGFy
Z2V0KSAmJiBkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpLT5nZXRBdHRyaWJ1dGUoImNsYXNzIikg
PT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21hbi1pY29uIikKKyAgICAgICAgaWYgKGlzPEVs
ZW1lbnQ+KHRhcmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6Y2xhc3NBdHRyKSA9PSAid2lkZ2V0LWV4cGFuZC1idXR0b24tcGVnbWFuLWlj
b24iKQogICAgICAgICAgICAgcmV0dXJuIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllczsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xMDIzLDEwICsxMDIzLDEwIEBAIHN0YXRpYyBib29s
IGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICAv
LyBzcGFuIHdpdGggdGhlc2UgY2xhc3MgbmFtZXMsIG9yIHRoZSBzdmcsIG9yIHRoZSBzdmcncyBw
YXRoLgogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkpIHsKICAgICAgICAgYXV0byYgY2xhc3NO
YW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250
YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dpbiIpCi0gICAgICAgICAgICB8fCBjbGFzc05h
bWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiIpCi0gICAgICAgICAgICB8fCBjbGFz
c05hbWVzLmNvbnRhaW5zKCJzYy0xaWwzdXJ1LTMiKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJj
SWhLZmQiKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygiaXl2bjM0LTAiKSB8
fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJiWUlqdGwiKSkKKyAgICAgICAgaWYgKGNsYXNzTmFtZXMu
Y29udGFpbnMoImpzX3N3aXRjaC10by1idXJuZXItbG9naW4iX3MpCisgICAgICAgICAgICB8fCBj
bGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiJfcykKKyAgICAgICAgICAg
IHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInNjLTFpbDN1cnUtMyJfcykgfHwgY2xhc3NOYW1lcy5j
b250YWlucygiY0loS2ZkIl9zKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygi
aXl2bjM0LTAiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImJZSWp0bCJfcykpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0YXRpYyBi
b29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAg
ICAgICAgc3ZnRWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpOwogCiAgICAgaWYgKHN2
Z0VsZW1lbnQgJiYgc3ZnRWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIGF1dG8g
YXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXROYW1lZEl0ZW0oImFy
aWEtbGFiZWwiKTsKKyAgICAgICAgYXV0byBhcmlhTGFiZWxBdHRyID0gc3ZnRWxlbWVudC0+YXR0
cmlidXRlcygpLmdldE5hbWVkSXRlbSgiYXJpYS1sYWJlbCJfcyk7CiAgICAgICAgIGlmIChhcmlh
TGFiZWxBdHRyICYmIGFyaWFMYWJlbEF0dHItPnZhbHVlKCkgPT0gIlVzZXJGaWxsZWQgaWNvbiIp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDU2LDI0ICsxMDU2LDI0IEBA
IHN0YXRpYyBib29sIGlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudChjb25zdCBV
UkwmIHVybCwgY29uc3QgRWxlbWVudCYKICAgICAvLyBGSVhNRSgyMTg3NzkpOiBSZW1vdmUgdGhp
cyBxdWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVzIHRoZWlyIGxvZ2luIGZsb3cgcmVk
ZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gInd3dy5taWNyb3NvZnQuY29tIl9zKSB7CiAg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAgICAgICAgJiYgKGVsZW1lbnQuY2xh
c3NOYW1lcygpLmNvbnRhaW5zKCJnbHlwaF9zaWduSW5fY2lyY2xlIikKLSAgICAgICAgfHwgZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0IikKLSAgICAgICAg
fHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXIiKSk7CisgICAg
ICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiZ2x5cGhfc2lnbkluX2NpcmNs
ZSJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9o
ZWFkZXJ0ZXh0Il9zKQorICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygi
bWVjdHJsX2hlYWRlciJfcykpOwogICAgIH0KICAgICAvLyBTa3lwZSBjYXNlLgogICAgIC8vIEZJ
WE1FKDIyMDEwNSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgU2t5cGUgdW5kZXIgb3V0bG9vay5s
aXZlLmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICBpZiAodXJs
Lmhvc3QoKSA9PSAib3V0bG9vay5saXZlLmNvbSJfcykgewogICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygi
XzNpb0VwMlJHUjV2YjBncVJEc2FGUGEiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMo
KS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3kiKSk7CisgICAgICAgICYmIChlbGVt
ZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJHUjV2YjBncVJEc2FGUGEiX3MpCisg
ICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJfMkFtMmp2VGFCejE3VUo4
WG5meEZPeSJfcykpOwogICAgIH0KICAgICAvLyBTb255IE5ldHdvcmsgRW50ZXJ0YWlubWVudCBs
b2dpbiBjYXNlLgogICAgIC8vIEZJWE1FKDIxODc2MCk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2Ug
cGxheXN0YXRpb24uY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWduLgogICAg
IGlmICh1cmwuaG9zdCgpID09ICJ3d3cucGxheXN0YXRpb24uY29tIl9zIHx8IHVybC5ob3N0KCkg
PT0gIm15LnBsYXlzdGF0aW9uLmNvbSJfcykgewogICAgICAgICByZXR1cm4gZWxlbWVudC5oYXND
bGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygid2ViLXRv
b2xiYXJfX3NpZ25pbi1idXR0b24iKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5j
b250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24tbGFiZWwiKQotICAgICAgICB8fCBl
bGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2lnbmluLWJ1dHRvbiIpKTsKKyAgICAg
ICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmlu
LWJ1dHRvbiJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIndl
Yi10b29sYmFyX19zaWduaW4tYnV0dG9uLWxhYmVsIl9zKQorICAgICAgICB8fCBlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygic2Itc2lnbmluLWJ1dHRvbiJfcykpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTExMTIsNyArMTExMiw3IEBAIHN0YXRpYyBib29sIGlzQkJDUG9w
VXBQbGF5ZXJFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50
LnBhcmVudEVsZW1lbnQoKSB8fCAhZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmhhc0NsYXNzKCkg
fHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSB8fCAhcGFyZW50RWxlbWVudC0+cGFy
ZW50RWxlbWVudCgpLT5oYXNDbGFzcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygicF9h
dWRpb0J1dHRvbl9idXR0b25Jbm5lciIpICYmIHBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iKTsKKyAgICByZXR1cm4gZWxlbWVudC5w
YXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygicF9hdWRpb0J1dHRvbl9idXR0
b25Jbm5lciJfcykgJiYgcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVz
KCkuY29udGFpbnMoImhpZGRlbiJfcyk7CiB9CiAKIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3Vs
dCBRdWlya3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQW5kSGFuZGxlQ2xpY2soQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaG91bGREaXNwYXRjaENsaWNrKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29u
c3QKQEAgLTExODUsMTQgKzExODUsMTQgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1
aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKIAogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBraW5qYUxvZ2luVXNlclNjcmlwdCB7
ICJmdW5jdGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNlcmJ1dHRvbicpOyBpZiAoZWxlbWVu
dHMgJiYgZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xpY2soKTsgY2xlYXJJbnRlcnZhbChp
bnRlcnZhbCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0cmlnZ2VyTG9naW5Gb3Jt
LCAyMDApOyJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3Rv
cjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVudEVuZCwgVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdhaXRGb3JOb3RpZmlj
YXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCi0gICAgaWYgKGV2ZW50VHlwZSA9PSAiY2xp
Y2siKSB7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewog
ICAgICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9y
YWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKIAogICAgICAgICAvLyBFbWJl
ZGRlZCBZb3VUdWJlIGNhc2UuCiAgICAgICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZG9t
YWluID09IHlvdVR1YmVEb21haW4gJiYgIW1fZG9jdW1lbnQtPmlzVG9wRG9jdW1lbnQoKSAmJiBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKHlvdVR1
YmVEb21haW4pKSB7CiAgICAgICAgICAgICBhdXRvJiBjbGFzc05hbWVzID0gZWxlbWVudC5jbGFz
c05hbWVzKCk7Ci0gICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygieXRwLXdhdGNo
LWxhdGVyLWljb24iKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNv
biIpKSB7CisgICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygieXRwLXdhdGNoLWxh
dGVyLWljb24iX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29u
Il9zKSkgewogICAgICAgICAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVk
KCkuaGFzSGFkVXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21haW4pKSB7CiAgICAgICAgICAgICAg
ICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1
bWVudFF1aXJrKCptX2RvY3VtZW50LCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6
U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmlu
ZGV4IDE5NzQxZjYyZjZiNjZhMWJlMDc3N2RlZTZhM2FhMzlkYjAyODBlZGMuLjEzNmY3Y2Q1MmQz
NDNlODBiYTdjYzIwOTBmNmY2ODdhM2I2MDlkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCkBAIC0yMDYsNyArMjA2LDcgQEAgU3Bhbjxjb25zdCBBdG9tU3RyaW5nPiBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKIAogY29u
c3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFt
ZUFsbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyI7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2
ZW50cyJfczsKICAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggZWMzMWM1MzgwMDgzMjAwYjkwMGQyZWE1Y2Y1NDBhMzY4OTdjZTY1NC4uNDIz
N2NmNjA1OTg0ZGM2ZDUzNjA0NzQ2NzM1NWQzODQ2NzMxYWI4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0zMDY3LDcgKzMwNjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnByb2Nlc3NNZXRhZGF0YVRyYWNrKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9tZXRhZGF0YVRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjpj
cmVhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZDo6TWV0YWRhdGEsIEluYmFuZFRleHRU
cmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6RGF0YSk7Ci0gICAgbV9tZXRhZGF0YVRyYWNrLT5zZXRJ
bkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20uYXBwbGUuc3RyZWFtaW5nIik7Cisg
ICAgbV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCJj
b20uYXBwbGUuc3RyZWFtaW5nIl9zKTsKICAgICBwbGF5ZXIoKS0+YWRkVGV4dFRyYWNrKCptX21l
dGFkYXRhVHJhY2spOwogfQogCkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRUZXh0VHJhY2soSW5iYW5kVGV4dFRy
YWNrUHJpdgogICAgIGlmIChtX2N1cnJlbnRUZXh0VHJhY2sgPT0gdHJhY2spCiAgICAgICAgIHJl
dHVybjsKIAotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzZWxlY3RpbmcgdHJhY2sgd2l0
aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFnZSgpIDogIiIpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICJzZWxlY3RpbmcgdHJhY2sgd2l0aCBsYW5ndWFnZSAiLCB0cmFj
ayA/IHRyYWNrLT5sYW5ndWFnZSgpIDogZW1wdHlBdG9tKCkpOwogCiAgICAgbV9jdXJyZW50VGV4
dFRyYWNrID0gdHJhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGNmYTI5YjExMmVhMzI5NzNmYzg1NjM1YjY1ZTQy
MWVhZmJmOTE0MDcuLjAxZjJjNjk3MTZmNjE4YWE0OGQyOGVlMTY1ZjExODBmMGY0YmI5ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gd2hpY2ggaXMgcHJl
c3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgICAgIGlmICghbV9jb2RlYykKLSAgICAgICAgICAgIG1fY29kZWMgPSBBdG9tU3Ry
aW5nKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkpOworICAgICAgICAgICAgbV9jb2Rl
YyA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEobV9vcmlnaW5hbENvZGVjLnN0cmluZygpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCmluZGV4
IDg1MjM0NmY2YjVjNTY3ZGUyOWYzNTE3N2RjNDg3MjM2NWRmMjdkNDAuLmIwODY5ZjgwMDQ1NjE5
ZTY5NjU4NjFjYjE3Mjk4MWVlZTFmMzFjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApAQCAtOTMsNyArOTMs
NyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIFBsYQogICAgIFRleHRSdW4gdGV4dFJ1bihTdHJpbmc6
Om51bWJlcihyZXBhaW50Q291bnQpKTsKIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGlj
YSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOwogICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IDNlNGUwZTkzNDI1ZTY4MGI5MDM2MjdiZTk5ZmI0M2YyYTIzYzJlMGYuLjQ2MjQxZDEyNDE5
M2FlZWFlMmVkZWQ0MDVjYTI4NWMzOTNhMzE1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0zNDgs
NyArMzQ4LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogICAgIHVuc2lnbmVkIGhvdXJzID0gbWludXRlcyAvIDYwICUg
NjA7CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBm
b250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJDb3VyaWVyIik7CisgICAgZm9udERlc2NyaXB0
aW9uLnNldE9uZUZhbWlseSgiQ291cmllciJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CiAKICAgICBmb250RGVzY3JpcHRpb24uc2V0
U3BlY2lmaWVkU2l6ZShtX2Jhc2VGb250U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCBhNTMxMDYwN2EzMDQ5
OTk1M2U0OTVkYWU2MzQ1ZjhlNTJmZGYwNzJlLi45Nzc4YzE3NWYzNGQ0NmQwYjZmNTAxMTZlN2U4
ZDNhNTU0OTQ0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTY3LDggKzY3LDkgQEAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpCiB7CiAgICAgc3RhdGljIGJvb2wg
ZGlkUmVnaXN0ZXIgPSBmYWxzZTsKICAgICBpZiAoIWRpZFJlZ2lzdGVyKSB7Ci0gICAgICAgIFJl
c291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3RvcigiYmxvYiIsIGNyZWF0ZUJs
b2JSZXNvdXJjZUhhbmRsZSk7Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0
aW5TeW5jaHJvbm91c0xvYWRlcigiYmxvYiIsIGxvYWRCbG9iUmVzb3VyY2VTeW5jaHJvbm91c2x5
KTsKKyAgICAgICAgQXRvbVN0cmluZyBibG9iID0gImJsb2IiX3M7CisgICAgICAgIFJlc291cmNl
SGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3RvcihibG9iLCBjcmVhdGVCbG9iUmVzb3Vy
Y2VIYW5kbGUpOworICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hy
b25vdXNMb2FkZXIoYmxvYiwgbG9hZEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzbHkpOwogICAgICAg
ICBkaWRSZWdpc3RlciA9IHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGEzZmVmYWQwNmE2YjI3MmIxYWYxYjU5MDQzNjk4MmEx
Njg1M2IxYWYuLjQ4NWNlNzNkOWMzNGEwYzlhMzQyZDNjZmU3MGE1NWU0NDZmY2EyOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTYzMyw3ICs2MzMs
NyBAQCB2b2lkIHNob3dDb3VudGVyUmVuZGVyZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IGNoYXIqCiAgICAgd2hpbGUgKHJvb3QtPnBhcmVudCgpKQog
ICAgICAgICByb290ID0gcm9vdC0+cGFyZW50KCk7CiAKLSAgICBBdG9tU3RyaW5nIGlkZW50aWZp
ZXIoY291bnRlck5hbWUpOworICAgIGF1dG8gaWRlbnRpZmllciA9IEF0b21TdHJpbmc6OmZyb21M
YXRpbjEoY291bnRlck5hbWUpOwogICAgIGZvciAoYXV0byogY3VycmVudCA9IHJvb3Q7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0SW5QcmVPcmRlcigpKSB7CiAgICAgICAgIGlmICgh
aXM8V2ViQ29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJlbnQpKQogICAgICAgICAgICAgY29udGlu
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDI2M2FjNzVhYzdlNGQyYTNkMjM1OTE0NmFhYzNkZjdjZjQ5YmI5MjIuLmQ5Nzc4OTVh
ZmRjMTc4ZTYzZjNhNGNkYTkxMjBmNjYzYWI1ZTE5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCBz
dGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29u
dGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAKICAgICAgICAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVG
YW1pbHkoIkhlbHZldGljYSIpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5
KCJIZWx2ZXRpY2EiX3MpOwogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6
ZSgxMCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoMTApOwogICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcAppbmRleCAyMWQ5YzdlMmM3MmVkMTA0YTg1ZWQ5OWQwNTE2YjdjYWQ2YjE4ZTc3
Li5jMGMzNDc4YzI4YjlhODU0YTgxMjYzNGFjYWFlMzI4NGVmNTRmMjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3Bw
CkBAIC00NSw4ICs0NSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck1hdGhNTEZlbmNlZCk7CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBnT3BlbmluZ0JyYWNlQ2hhciA9ICIoIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBnQ2xv
c2luZ0JyYWNlQ2hhciA9ICIpIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBnT3BlbmluZ0JyYWNl
Q2hhciA9ICIoIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdDbG9zaW5nQnJhY2VDaGFyID0g
IikiX3M7CiAKIFJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKE1hdGhNTFJv
d0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJNYXRo
TUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXggMzMxODliZDY0Y2FjYmVkZjkzNjhk
MzRmYTlmYjU2NGQ1OGJkMWYzNi4uOGFjNmVkZWMyZmUwYjYxNjcxODgyYTVmOWZmZDY0N2Y0MDZi
Y2Y0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVu
dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIGlmIChyZW5kZXJWaWV3Lm11bHRp
Q29sdW1uRmxvdygpKQogICAgICAgICAgICAgcmVuZGVyVmlldy51cGRhdGVDb2x1bW5Qcm9ncmVz
c2lvbkZyb21TdHlsZShkb2N1bWVudFN0eWxlKTsKICAgICAgICAgaWYgKHJlbmRlclZpZXcucGFn
ZSgpLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoKSkgewotICAgICAgICAgICAgZG9jdW1lbnRT
dHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2luYXRpb24tZ3JpZCIpOworICAg
ICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2lu
YXRpb24tZ3JpZCJfcyk7CiAgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExpbmVTbmFwKExp
bmVTbmFwOjpDb250YWluKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKaW5kZXggM2FkMjRlNWZjYzkxY2IyZjg4ZTIwMjU0
YWJhZDYwMTQ4NzE5Mjg4ZC4uNjNiY2QxYTgwZWY3ODUzMzk0MjQyMTMwZGQyZGY4OTA5YzIyM2Zk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxl
bWVudDo6c3JjVmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gc3JjID0gQ1NTRm9udEZhY2VTcmNW
YWx1ZTo6Y3JlYXRlKGdldEF0dHJpYnV0ZShTVkdOYW1lczo6aHJlZkF0dHIsIFhMaW5rTmFtZXM6
OmhyZWZBdHRyKSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOwogICAgIEF0b21TdHJpbmcg
dmFsdWUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtYXRBdHRyKSk7Ci0gICAg
c3JjLmdldCgpLnNldEZvcm1hdCh2YWx1ZS5pc0VtcHR5KCkgPyAic3ZnIiA6IHZhbHVlKTsgLy8g
RGVmYXVsdCBmb3JtYXQKKyAgICBzcmMuZ2V0KCkuc2V0Rm9ybWF0KHZhbHVlLmlzRW1wdHkoKSA/
ICJzdmciX3MgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0CiAgICAgcmV0dXJuIHNyYzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IGEwMWY2YmFkYTFjMWQ2YzI1
ZjgyMGY3MjZjOGVjZWU4MTgyZWNiNmEuLjZlNWM3Yzc0YzhlN2NjZTdkOTgzNzU4YWRkNDUyYmZl
ZmE0YTAxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE0Myw4ICsx
NDMsOCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1Rhcmdl
dENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAgICAgICAvLyBJZiBhdHRyaWJ1dGVz
IHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBlbGVtZW50LCB0
aGVuIHRoZXNlIGF0dHJpYnV0ZXMKICAgICAgICAgLy8gd2lsbCBiZSB0cmFuc2ZlcnJlZCB0byB0
aGUgZ2VuZXJhdGVkICdzdmcnLiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJl
IG5vdCBzcGVjaWZpZWQsCiAgICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgJ3N2ZycgZWxlbWVudCB3
aWxsIHVzZSB2YWx1ZXMgb2YgMTAwJSBmb3IgdGhlc2UgYXR0cmlidXRlcy4KLSAgICAgICAgc2hh
ZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgd2lkdGgoKS52YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcod2lkdGgoKS52YWx1ZUFzU3RyaW5nKCkp
IDogIjEwMCUiKTsKLSAgICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6
OmhlaWdodEF0dHIsIGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmlu
ZyhoZWlnaHQoKS52YWx1ZUFzU3RyaW5nKCkpIDogIjEwMCUiKTsKKyAgICAgICAgc2hhZG93RWxl
bWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgd2lkdGgoKS52YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcod2lkdGgoKS52YWx1ZUFzU3RyaW5nKCkpIDogIjEw
MCUiX3MpOworICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVp
Z2h0QXR0ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhl
aWdodCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSJfcyk7CiAgICAgfSBlbHNlIGlmIChpczxT
VkdTVkdFbGVtZW50PihzaGFkb3dFbGVtZW50KSkgewogICAgICAgICAvLyBTcGVjICg8dXNlPiBv
biA8c3ZnPik6IElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgcHJvdmlkZWQg
b24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UKICAgICAgICAgLy8gdmFsdWVzIHdpbGwg
b3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBvbiB0aGUgJ3N2ZycgaW4gdGhl
IGdlbmVyYXRlZCB0cmVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0ZldGNoRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNo
RXZlbnQuY3BwCmluZGV4IGU3YWUxYThjNjhiMDAxNzEzZDE3NzVhMjQyZTk0YmM2MTYwZmZkNWYu
LjFkYTExOTRiYThlZmQwZWEwNGFmMjUzZDQxOWIyNjkxNGFkMGY4MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJGZXRjaEV2ZW50LmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKQEAgLTQyLDcgKzQzLDcgQEAgUmVmPEZldGNoRXZlbnQ+IEZldGNoRXZlbnQ6OmNyZWF0
ZUZvclRlc3RpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBGZXRj
aEV2ZW50OjpJbml0IGluaXQ7CiAgICAgaW5pdC5yZXF1ZXN0ID0gRmV0Y2hSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJk
OjpJbW11dGFibGUsIHsgfSksIHsgfSwgeyB9LCB7IH0pOwotICAgIHJldHVybiBGZXRjaEV2ZW50
OjpjcmVhdGUoKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksICJmZXRjaCIsIFdURk1vdmUoaW5pdCks
IEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgcmV0dXJuIEZldGNoRXZlbnQ6OmNyZWF0ZSgq
Y29udGV4dC5nbG9iYWxPYmplY3QoKSwgZXZlbnROYW1lcygpLmZldGNoRXZlbnQsIFdURk1vdmUo
aW5pdCksIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVmPERP
TVByb21pc2U+IHJldHJpZXZlSGFuZGxlZFByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWZQdHI8RE9NUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJy
b3JzLmNwcAppbmRleCA2ZGYzZjBjOTNlZjQ1NjBiMjk3NjNkOGIxNGZkMjg1NzI4ZGJjNzY4Li5l
ZjRjZGVhYmRlNDlkZWM0MDQyYTZmODMyNTBiNmUyZjc3MjYwMTU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmNwcApAQCAtODMsMTAgKzgzLDEwIEBAIHZvaWQgWE1MRXJyb3JzOjphcHBlbmRFcnJv
ck1lc3NhZ2UoQVNDSUlMaXRlcmFsIHR5cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBwb3NpdGlvCiAK
IHN0YXRpYyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZXMpCiB7Ci0gICAg
UmVmPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFF1YWxp
ZmllZE5hbWUobnVsbEF0b20oKSwgInBhcnNlcmVycm9yIiwgeGh0bWxOYW1lc3BhY2VVUkkpLCB0
cnVlKTsKKyAgICBSZWY8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCAicGFyc2VyZXJyb3IiX3MsIHhodG1sTmFt
ZXNwYWNlVVJJKSwgdHJ1ZSk7CiAKICAgICBWZWN0b3I8QXR0cmlidXRlPiByZXBvcnRBdHRyaWJ1
dGVzOwotICAgIHJlcG9ydEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJk
aXNwbGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3Nzsg
cGFkZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRk
OyBjb2xvcjogYmxhY2siKSk7CisgICAgcmVwb3J0QXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRl
KHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJlOyBib3JkZXI6IDJw
eCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2luOiAxZW07IGJhY2tncm91
bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayJfcykpOwogICAgIHJlcG9ydEVsZW1lbnQtPnBh
cnNlclNldEF0dHJpYnV0ZXMocmVwb3J0QXR0cmlidXRlcyk7CiAKICAgICBhdXRvIGgzID0gSFRN
TEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoaDNUYWcsIGRvY3VtZW50KTsKQEAgLTk1LDcgKzk1LDcg
QEAgc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRl
cihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnMKIAogICAgIGF1dG8gZml4ZWQgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBWZWN0b3I8QXR0cmlidXRlPiBmaXhlZEF0dHJp
YnV0ZXM7Ci0gICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAi
Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4IikpOworICAgIGZpeGVkQXR0cmli
dXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtm
b250LXNpemU6MTJweCJfcykpOwogICAgIGZpeGVkLT5wYXJzZXJTZXRBdHRyaWJ1dGVzKGZpeGVk
QXR0cmlidXRlcyk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoZml4ZWQp
OwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBYTUxFcnJvcnM6Omluc2VydEVycm9yTWVzc2Fn
ZUJsb2NrKCkKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9kb2N1bWVudC50cmFuc2Zvcm1T
b3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
Ci0gICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1z
cGFjZTogbm9ybWFsIikpOworICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5
bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCJfcykpOwogICAgICAgICBhdXRvIHBhcmFncmFw
aCA9IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAgICAgICAgIHBh
cmFncmFwaC0+cGFyc2VyU2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICAgICAgcGFyYWdy
YXBoLT5wYXJzZXJBcHBlbmRDaGlsZChtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJUaGlzIGRv
Y3VtZW50IHdhcyBjcmVhdGVkIGFzIHRoZSByZXN1bHQgb2YgYW4gWFNMIHRyYW5zZm9ybWF0aW9u
LiBUaGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgZ2l2ZW4gYXJlIGZyb20gdGhlIHRyYW5zZm9y
bWVkIHJlc3VsdC4iX3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVl
Vmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAppbmRleCAy
MzVmYTM4NWRhZDYxZTVjYjdhYmFiMDE5YTg5OWIzMWQzYTBiMzY5Li4wMmVlOTkwY2UwN2RhMGJm
MzkzMDRhYjFkYjcyYWUwNzRlMWMxYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgWE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9jdW1l
bnRUb1RyZWVWaWV3KCkKIHsKICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nID0gU3RyaW5nSW1wbDo6
Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2pzLCBzaXplb2YoWE1MVmlld2VyX2pzKSk7
CiAgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0
aW9uKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5nKSk7Ci0gICAgbV9kb2N1bWVudC5mcmFt
ZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUo
QXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5v
dCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0
LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsiKSkpOworICAgIG1fZG9jdW1l
bnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3Vy
Y2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUg
ZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQg
d2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7Il9zKSkpOwogCiAg
ICAgU3RyaW5nIGNzc1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFhN
TFZpZXdlcl9jc3MsIHNpemVvZihYTUxWaWV3ZXJfY3NzKSk7CiAgICAgYXV0byB0ZXh0ID0gbV9k
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3NTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVs
ZC5tbQppbmRleCBmNjJkYzdjODM3ZjAyZjcwMTBjODJkOTc5MGUyYmFhZjIxNGUxZDIxLi42YjI4
NTgwNTk0ZWUzNWUxNTI5M2NjMzdkZjAwODMwYzFlMWJhM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbQpAQCAtNTQsNyArNTQsNyBAQCBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERG
UGx1Z2luUGFzc3dvcmRGaWVsZCgpCiBSZWY8RWxlbWVudD4gUERGUGx1Z2luUGFzc3dvcmRGaWVs
ZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewogICAgIGF1dG8gZWxlbWVudCA9IFBERlBs
dWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwotICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7CisgICAgZWxlbWVudC0+c2V0
QXR0cmlidXRlKHR5cGVBdHRyLCAicGFzc3dvcmQiX3MpOwogICAgIGVsZW1lbnQtPmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNl
KTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggNzNmYzAxMzQyYzhiN2Y0MTRjYzhk
YzE1YzhiYzdkNWQ5OWI0NzVjNC4uNThmYTNlNDIxYzcxMGRlZGVmZmYzMWRlMjRjZGVjNDhiOWVl
YmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVz
dGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVz
dGluZ0FQSS5jcHAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIEpTVmFsdWVSZWYgSlNJUEM6Om1lc3Nh
Z2VzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmlu
CiAgICAgICAgIGRpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaXNTeW5jSWRlbnQsIEpTQzo6anNC
b29sZWFuKG1lc3NhZ2VJc1N5bmMobmFtZSkpKTsgICAgICAgICAgICAKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogCi0g
ICAgICAgIG1lc3NhZ2VzT2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bUNTdHJpbmcodm0sIGRlc2NyaXB0aW9uKG5hbWUpKSwgZGljdGlvbmFyeSk7CisgICAgICAgIG1l
c3NhZ2VzT2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2
bSwgZGVzY3JpcHRpb24obmFtZSkpLCBkaWN0aW9uYXJ5KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQppbmRleCAxNDBlY2FkYmE3ZjdjZWE2NjBhMTE3MGE1OWE4MTVlNGU3MDZmNWU0Li40ZTJlOWJh
ODI1YjBiYWJiNDk3YzBkOTlmYzg5NWM1ZDAwMzU3YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzQ0Miw3ICszNDQy
LDcgQEAgc3RkOjpvcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBXZWJQYWdlOjpm
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc1Rl
bGVwaG9uZUZpZWxkKCkpCiAgICAgICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElu
cHV0VHlwZTo6UGhvbmU7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNOdW1iZXJGaWVsZCgp
KQotICAgICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBlbGVtZW50LmdldEF0dHJp
YnV0ZSgicGF0dGVybiIpID09ICJcXGQqIiB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZSgicGF0dGVy
biIpID09ICJbMC05XSoiID8gSW5wdXRUeXBlOjpOdW1iZXJQYWQgOiBJbnB1dFR5cGU6Ok51bWJl
cjsKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gZWxlbWVudC5nZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpwYXR0ZXJuQXR0cikgPT0gIlxcZCoiIHx8IGVsZW1lbnQuZ2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6cGF0dGVybkF0dHIpID09ICJbMC05XSoiID8gSW5wdXRUeXBlOjpO
dW1iZXJQYWQgOiBJbnB1dFR5cGU6Ok51bWJlcjsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5p
c0RhdGVUaW1lTG9jYWxGaWVsZCgpKQogICAgICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5
cGUgPSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQu
aXNEYXRlRmllbGQoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBkNjdjZWI5YmExYTI2NWNjOTUzN2ZhMGYwODJmMGE5YzgxNDc2MDEyLi4wMjVi
YjA1MTVkNmNhOGJkNTRlYzlmYTdkNjU2NWY0YTQxNmNmOTk1IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDQt
MTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIEF0
b21TdHJpbmcoY29uc3QgY2hhciopIHdpdGggQXRvbVN0cmluZzo6ZnJvbUxhdGluMShjb25zdCBj
aGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
OTEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdP
cGVyYXRvcnMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0wNC0xMSAgQWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgaVBob25lIDEyIF0gZmFzdC9oaWRw
aSAmIGZhc3QvbGF5ZXJzL2hpZHBpIHRlc3RzIGFyZSBmbGFreSB0ZXh0L2ltYWdlIGZhaWxpbmcK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21TdHJpbmcuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKaW5kZXggYmU3
NDE1NGUzODhiYTdjNTY0NjFlYzk2YmE3MDAzZTFkOTJiNjhlYS4uMDNmMTliMDQxMzJlNWI1MGMz
ZDg0ZmZmZWU4N2E2YWE1OGVjOWJkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQXRvbVN0cmluZy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgVEVTVChXVEYsIEF0b21TdHJpbmdD
cmVhdGlvbkZyb21MaXRlcmFsVW5pcXVlbmVzcykKICAgICBBdG9tU3RyaW5nIHN0cmluZzIoIlRl
bXBsYXRlIExpdGVyYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAgICAg
QVNTRVJUX0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmcyLmltcGwoKSk7CiAKLSAgICBBdG9tU3Ry
aW5nIHN0cmluZzMoIlRlbXBsYXRlIExpdGVyYWwiKTsKKyAgICBBdG9tU3RyaW5nIHN0cmluZzMo
IlRlbXBsYXRlIExpdGVyYWwiX3MpOwogICAgIEFTU0VSVF9FUShzdHJpbmcxLmltcGwoKSwgc3Ry
aW5nMy5pbXBsKCkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nT3BlcmF0b3JzLmNwcAppbmRleCBiNDQyZTQzNjhjMDNkYjdiYTYzMGM3YWVhMmE5ODM1
ZDM0OGI0NGI4Li4wMmI2MTY0YmQ1OWU5ZjIxZmQ0Y2Y4Nzk2ZjhmY2I0OWZlNmJiZWZkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXVEYsIFN0
cmluZ09wZXJhdG9ycykKIHsKICAgICBTdHJpbmcgc3RyaW5nKCJTdHJpbmciX3MpOwotICAgIEF0
b21TdHJpbmcgYXRvbVN0cmluZygiQXRvbVN0cmluZyIpOworICAgIEF0b21TdHJpbmcgYXRvbVN0
cmluZygiQXRvbVN0cmluZyJfcyk7CiAgICAgQVNDSUlMaXRlcmFsIGxpdGVyYWwgeyAiQVNDSUlM
aXRlcmFsIl9zIH07CiAKICAgICBTdHJpbmcgc3RyaW5nVmlld0JhY2tpbmcgeyAiU3RyaW5nVmll
dyJfcyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBiY2YwMzI5NTViZTJlYmRmZmU2OTNk
OGE4YmJkODJiZjk0MmY5ZDk5Li4zODBmMzQwYjFhNDMxZjI0NzJjMDJhMTFiOTU4YThiZGE2OTJm
MDc0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiBU
RVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1
bkluUlRMKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAg
ZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7
CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51
cGRhdGUoKTsKQEAgLTk0LDcgKzk0LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRl
c3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQogewogICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1l
cyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3Zl
KGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBU
RVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTCkKIFRF
U1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVu
SW5MVFIpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBk
ZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5kZSIpOworICAgIGRlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikp
OwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0xODEsNyArMTgxLDcgQEAgVEVTVF9GKENvbXBsZXhU
ZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKIFRFU1Rf
RihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluTFRSKQogewogICAg
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0
T25lRmFtaWx5KCJMdWNpZGFHcmFuZGUiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
Ikx1Y2lkYUdyYW5kZSJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsK
ICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVw
ZGF0ZSgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJU
ZXN0LCBJbml0aWFsQWR2YW5jZUluTFRSKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRl
c3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiB7CiAgICAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVz
Iik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3Jp
cHRpb24uc2V0Q29tcHV0ZWRTaXplKDQ4KTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUo
ZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIFRF
U1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMTm9Pcmln
aW5zKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24pCiB7
CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlv
bi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJU
aW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDQ4KTsKICAgICBGb250
Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpA
QCAtMjk0LDcgKzI5NCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBMZWZ0
RXhwYW5zaW9uKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2
YW5jZXMpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBk
ZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25l
RmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDQ4KTsK
ICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVw
ZGF0ZSgpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJU
ZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3Qs
IFRvdGFsV2lkdGhXaXRoSnVzdGlmaWNhdGlvbikKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsK
KyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNj
cmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHRUZXN0c0NHLmNwcAppbmRleCAyZjI4ZDRlNjY1MzMwZmM2ODYzZTQxZTA3ZWQ3
YmM3YmRiMGU0NDY0Li40MDZkMDg3M2FkZjlkNmIzMWUxYmFhZThjNzVhMGQ3ZGU3NGFkMjRjIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMsIFRleHQpCiAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjdHgocHJpbWFyeUNvbnRleHQsIHNlY29uZGFy
eUNvbnRleHQpOwogCiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAg
ICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0
T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgw
KTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250
LnVwZGF0ZSgpOwo=
</data>
<flag name="commit-queue"
          id="485912"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457334</attachid>
            <date>2022-04-12 09:10:46 -0700</date>
            <delta_ts>2022-04-12 10:31:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412091046.patch</filename>
            <type>text/plain</type>
            <size>111250</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uMzk0N2VmNTY3MmFiYjUzNDFj
MDhjNDExNGUwY2Y5MzJkMDQyOWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KCIiX3MpOwogCiAgICAgICAgIC8vIFdoZW4gc3RhcnRpbmcgV2ViVGhyZWFkIHZp
YSBTdGFydFdlYlRocmVhZCBmdW5jdGlvbiwgd2UgaGF2ZSBzcGVjaWFsIHBlcmlvZCBiZXR3ZWVu
IHRoZSBwcm9sb2d1ZSBvZiBTdGFydFdlYlRocmVhZCBhbmQgc3Bhd25pbmcgV2ViVGhyZWFkIGFj
dHVhbGx5LgogICAgICAgICAvLyBJbiB0aGlzIHBlcmlvZCwgYGlzTWFpblRocmVhZCgpYCByZXR1
cm5zIGZhbHNlIGV2ZW4gaWYgdGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNl
IFdlYlRocmVhZCBpcyBub3cgZW5hYmxlZCBhbmQgd2UgYXJlIG5vdCB0YWtpbmcgYSBXZWJUaHJl
YWQgbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggMzUwNjM5ZGM1ZDZmYTI4MzE3
NGU1YzE0NjFiN2Q0NWNiNDIwNTc1OS4uMDY5YWY2ZDMyNTlkMzJiMjRjOTVhMjU0MDNhYTNmYWMw
ZDgwYjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTM5LDExICszOSwxMiBAQCBw
dWJsaWM6CiAKICAgICBBdG9tU3RyaW5nKCk7CiAgICAgQXRvbVN0cmluZyhjb25zdCBMQ2hhciop
OwotICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOwogICAgIEF0b21TdHJpbmcoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqKTsKIAorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcgZnJvbUxhdGluMShjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKSB7IHJldHVybiBBdG9tU3RyaW5nKGNoYXJhY3RlcnMpOyB9CisKICAgICB0ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgZXhwbGljaXQgQXRvbVN0cmluZyhjb25zdCBWZWN0
b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgY2hhcmFjdGVycykKICAgICAgICAgOiBtX3N0cmlu
ZyhBdG9tU3RyaW5nSW1wbDo6YWRkKGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUo
KSkpCkBAIC0xNjcsNiArMTY4LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAg
QXRvbVN0cmluZyhjb25zdCBjaGFyKik7CisKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlw
ZSB7IFVwcGVyLCBMb3dlciB9OwogICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZT4gQXRvbVN0
cmluZyBjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3Q7CiAKQEAgLTE4MCw2ICsxODMsNyBAQCBzdGF0
aWNfYXNzZXJ0KHNpemVvZihBdG9tU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJp
bmcgYW5kIFN0cmluZyBtdXN0CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgp
OyB9CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IExDaGFyKik7CiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIp
IHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihiKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwg
QVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0
dXJuIGEuaW1wbCgpICYmIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9ICAg
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
IGIgPT0gYTsgfQpAQCAtMTkyLDYgKzE5Niw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXRvbVN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyBy
ZXR1cm4gIShhID09IGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
ICEoYiA9PSBhKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9
CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0
b21TdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApp
bmRleCA4Y2RiY2E3N2FmMzgzMDdiMmI0YzBhNGQyNWExZjBlOTExYWJiMWRlLi42MjQ5MmE5MDYw
NTRiNWQyY2Y4ZTU5MjFiYjljNDhlZjczZjM0YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAg
LTIyNiw5ICsyMjYsOSBAQCBJbml0RGF0YVJlZ2lzdHJ5JiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFy
ZWQoKQogCiBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIHsKLSAgICByZWdp
c3RlckluaXREYXRhVHlwZSgia2V5aWRzIiwgeyBzYW5pdGl6ZUtleWlkcywgZXh0cmFjdEtleUlE
c0tleWlkcyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgiY2VuYyIsIHsgc2FuaXRpemVD
ZW5jLCBleHRyYWN0S2V5SURzQ2VuYyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgid2Vi
bSIsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKKyAgICByZWdpc3Rlcklu
aXREYXRhVHlwZSgia2V5aWRzIl9zLCB7IHNhbml0aXplS2V5aWRzLCBleHRyYWN0S2V5SURzS2V5
aWRzIH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJjZW5jIl9zLCB7IHNhbml0aXplQ2Vu
YywgZXh0cmFjdEtleUlEc0NlbmMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoIndlYm0i
X3MsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKIH0KIAogSW5pdERhdGFS
ZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCBhNmQzMTAyYzg4MmE2MDk4ZjQ3OTJiN2JjZDA2YmEyNmQ0Mjg3ZDhhLi4wMDUwZGUx
NmMwY2JkN2YwNjU3NjliYzU4MjY0YjYxMTY4ZWRjZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE3ODYsNyArMTc4Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiAgICAgaWYgKCFp
czxFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOworICAgIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGNiMmFmMWY2NmJmNDFlNTZkMDAyZmVmMDAw
ZmUxMTBkMzIwNDMzZDEuLmNkYTQwMWViMGY1YzRjMGY3MGZlYjYxMDg5M2NmMTRkZjA1ZjJiMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU1dlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIktleWZyYW1lRWZmZWN0LmgiCkBAIC0xNDc0LDcgKzE0NzUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmNvbW1pdFN0eWxlcygpCiAKICAgICBhdXRvIGNvbXB1
dGVkU3R5bGVFeHRyYWN0b3IgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKCZzdHlsZWRFbGVtZW50
KTsKICAgICBhdXRvIGlubGluZVN0eWxlID0gc3R5bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICBpbmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHls
ZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSk7CisgICAgaW5saW5lU3R5bGUtPnNldENz
c1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKTsK
IAogICAgIGF1dG8mIGtleWZyYW1lU3RhY2sgPSBzdHlsZWRFbGVtZW50LmVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soUHNldWRvSWQ6Ok5vbmUpOwogICAgIC8vIER1cmluZyBpdGVyYXRpb24gcmVz
b2x2ZSgpIGNvdWxkIGNsZWFyIHRoZSB1bmRlcmx5aW5nIHByb3BlcnRpZXMgc28gd2UgdXNlIGEg
Y29weQpAQCAtMTUwNyw3ICsxNTA4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
Ojpjb21taXRTdHlsZXMoKQogICAgICAgICAgICAgaW5saW5lU3R5bGUtPnNldFByb3BlcnR5SW50
ZXJuYWwocHJvcGVydHksIGNzc1ZhbHVlLT5jc3NUZXh0KCksIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBpbmxpbmVTdHlsZS0+Y3NzVGV4
dCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0
ciwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50SW5saW5lcy5oCmluZGV4IDdjMWVmN2M2M2M0YzM1NzdkMTllZWVhMzlm
ZjJhYTAzODZmOGJlOWUuLjFmZTg2MDM5NDg5NTYwOGM2ODhhNDMxY2IxMGNhMTMxM2FjNzk4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRJbmxpbmVzLmgKQEAgLTM5LDcgKzM5LDcgQEAgaW5s
aW5lIFBBTDo6VGV4dEVuY29kaW5nIERvY3VtZW50Ojp0ZXh0RW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBQQUw6OlRleHRFbmNvZGluZygpOwogfQogCi1pbmxpbmUgQXRvbVN0cmluZyBEb2N1
bWVudDo6ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0RW5jb2RpbmcoKS5kb21OYW1lKCk7
IH0KK2lubGluZSBBdG9tU3RyaW5nIERvY3VtZW50OjplbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IEF0b21TdHJpbmc6OmZyb21MYXRpbjEodGV4dEVuY29kaW5nKCkuZG9tTmFtZSgpKTsgfQogCiBp
bmxpbmUgU3RyaW5nIERvY3VtZW50OjpjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gRG9jdW1lbnQ6
OmVuY29kaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGUwMGMxZjlhODk1NGVl
MGI4Y2JjMWQ4MmQzMGI2MDFkZmUxMzliZWMuLmVmZjgwYjU1ZjE3NTM0M2QyOTExYmI3ZjExZDQ1
MGViM2U5MzBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMyMjQsNyArMzIyNCw3IEBA
IHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFkeUV2ZW50
Rm9yVGVzdGluZygpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS53ZWJraXRJbWFn
ZVJlYWR5RXZlbnRFbmFibGVkKCkpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiX3MsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUZv
cmNlV2lsbEJlZ2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA0MTNl
MzQ2NzJlYjY3NTZkODlhMGZlNGFmZDY3ZjllYTZjNjhiYzVjLi4zNmM4OTc3YjE2YjQ1ZjNhODdl
ZWQ5M2M4YWU0YjQ2ZDU1Njk2YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQc2V1ZG9FbGVt
ZW50KTsKIAogY29uc3QgUXVhbGlmaWVkTmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCks
ICI8cHNldWRvPiIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFs
aWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCksICI8cHNldWRvPiJfcywgbnVsbEF0b20oKSk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDdk
OWQ1OWJlMWMxNTJmMDk4NWY1ZjUxOGJiOWZjY2U1NmY4N2JjOWEuLjgwZmZkMWVjM2Y4MjBmMTY2
NzJhYjE4YjY0MjUwNDNiOWJmNGJmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApA
QCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0JiB0YWJUZXh0Tm9kZSkKICAgICBhdXRvIHNwYW5F
bGVtZW50ID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgc3BhbkVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBs
ZVRhYlNwYW5DbGFzcyk7Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3aGl0ZS1zcGFjZTpwcmUiKTsKKyAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIndoaXRlLXNwYWNlOnByZSJfcyk7CiAKICAgICBzcGFuRWxlbWVudC0+YXBwZW5kQ2hp
bGQodGFiVGV4dE5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjgwMzMx
YjI4ZjA3Y2Y1NDZlZTExYzViYTBmYzFjM2E5ZGZjOTg5ZS4uOTc0Nzg4YTNiM2FhODEzZWYwMWUy
ZDIxYmIyNzkyMmMyMGZiN2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTE3
OCw3ICsxMTc4LDcgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKENvbXBvc2l0ZUVkaXRD
b21tYW5kJiBjb21tYW5kKQogCiBib29sIEVkaXRvcjo6d2lsbFVuYXBwbHlFZGl0aW5nKGNvbnN0
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVy
biBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRh
YmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJo
aXN0b3J5VW5kbyIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBv
c2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdS
b290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9y
Ojp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpA
QCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoRWRpdENv
bW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihjb21wb3NpdGlvbi5zdGFydGluZ1NlbGVjdGlvbigpKTsKICAgICBjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSk7Ci0gICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiAKICAgICB1
cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZv
aWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBv
c2l0aW9uKQogCiBib29sIEVkaXRvcjo6d2lsbFJlYXBwbHlFZGl0aW5nKGNvbnN0IEVkaXRDb21t
YW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVybiBkaXNwYXRj
aEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVu
dCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVk
byIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZWFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpAQCAtMTIxNCw3
ICsxMjE0LDcgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21w
b3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjb21wb3NpdGlvbi5lbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRp
bmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgImhpc3RvcnlSZWRvIik7CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogICAgIAogICAgIHVwZGF0ZUVk
aXRvclVJTm93SWZTY2hlZHVsZWQoKTsKIApAQCAtMTU1MCw4ICsxNTUwLDggQEAgdm9pZCBFZGl0
b3I6OnBhc3RlRm9udChGcm9tTWVudU9yS2V5QmluZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykK
IHZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkKIHsKICAgICBhdXRvIGJsb2NrUXVvdGUgPSBIVE1MUXVvdGVFbGVtZW50OjpjcmVh
dGUoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQoKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRvbVN0cmluZygiY2l0ZSIpKTsK
LSAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNz
QXR0ciwgQXRvbVN0cmluZyhBcHBsZVBhc3RlQXNRdW90YXRpb24pKTsKKyAgICBibG9ja1F1b3Rl
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCAiY2l0ZSJfcyk7
CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFz
c0F0dHIsIEFwcGxlUGFzdGVBc1F1b3RhdGlvbik7CiAKICAgICBhdXRvIGNoaWxkTm9kZSA9IGZy
YWdtZW50LmZpcnN0Q2hpbGQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hh
bmdlLmgKaW5kZXggZDRjNTA1YzhhNjcyYjJlMDhjZTg1ODMwZGE1OWUwOWYwMTQxNjExYi4uNWI2
ZjM3MDg5Y2VlZDU5NjZlMjUyY2U0YjQwNDExZWQ3MDcxMDE0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgVGV4dDsK
IAogI2RlZmluZSBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAgICJBcHBsZS1pbnRlcmNoYW5nZS1u
ZXdsaW5lIgogI2RlZmluZSBBcHBsZUNvbnZlcnRlZFNwYWNlICAgICAgICJBcHBsZS1jb252ZXJ0
ZWQtc3BhY2UiCi0jZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxlLXBhc3Rl
LWFzLXF1b3RhdGlvbiIKLSNkZWZpbmUgQXBwbGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUt
c3R5bGUtc3BhbiIKLSNkZWZpbmUgQXBwbGVUYWJTcGFuQ2xhc3MgICAgICAgICAiQXBwbGUtdGFi
LXNwYW4iCi0jZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldlYktpdC1tc28tbGlz
dC1xdWlya3Mtc3R5bGUiCisjZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxl
LXBhc3RlLWFzLXF1b3RhdGlvbiJfcworI2RlZmluZSBBcHBsZVN0eWxlU3BhbkNsYXNzICAgICAg
ICJBcHBsZS1zdHlsZS1zcGFuIl9zCisjZGVmaW5lIEFwcGxlVGFiU3BhbkNsYXNzICAgICAgICAg
IkFwcGxlLXRhYi1zcGFuIl9zCisjZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldl
YktpdC1tc28tbGlzdC1xdWlya3Mtc3R5bGUiX3MKIAogLy8gQ29udHJvbHMgd2hldGhlciBhIHNw
ZWNpYWwgQlIgd2hpY2ggaXMgcmVtb3ZlZCB1cG9uIHBhc3RlIGluIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kIG5lZWRzIHRvIGJlIGluc2VydGVkCiAvLyBhbmQgbWFraW5nIHNlcXVlbmNlIG9mIHNw
YWNlcyBub3QgY29sbGFwc2libGUgYnkgaW5zZXJ0aW5nIG5vbi1icmVha2luZyBzcGFjZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCmluZGV4
IDNjNDYxNDNhNzgxYzM2ZWM3OTRlZjdlNzFiNTI4MjUxYjgxMDllMDYuLjE3YTQ4NzA4ZTJiZjg5
ZTUyYmNmN2YyY2Q4MWU2NmFiMDdlOGY2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29s
IGlzTGlzdE9ySW5kZW50QmxvY2txdW90ZShjb25zdCBOb2RlKiBub2RlKQogfQogCiBJbmRlbnRP
dXRkZW50Q29tbWFuZDo6SW5kZW50T3V0ZGVudENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBF
SW5kZW50VHlwZSB0eXBlT2ZBY3Rpb24pCi0gICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQo
ZG9jdW1lbnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9u
ZTsgcGFkZGluZzogMHB4OyIpCisgICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQoZG9jdW1l
bnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFk
ZGluZzogMHB4OyJfcykKICAgICAsIG1fdHlwZU9mQWN0aW9uKHR5cGVPZkFjdGlvbikKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA0
YTMyNmU2Njg4MDk0MGZiNTM0ODVmOTNhMTMzOTlkMDJhNmNhMjY4Li5lZmVjNTcyZWRiMjgwZWUx
ZjNhNzM0ZTE3ZjFkNmFhMDI4NTliNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC01OTUsNyArNTk1LDcgQEAgTlNBcnJheSAqRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRS
YW5nZSwgT3AKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmPEhUTUxBbmNob3JFbGVtZW50
PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRIcmVmKGNvcnJlc3BvbmRpbmdVUkwpOwotICAg
ICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0RGlyKCJsdHIiKTsKKyAgICAgICAgICAgIGFuY2hv
ckVsZW1lbnQtPnNldERpcigibHRyIl9zKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZFVzZUxp
Z2h0TGlua3MpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMmQ4ZjhiMzM1OTMwZDA3ZGQzMzI2
YjgxMDY1ZjJkNGZkODM1YWNhZS4uN2U1OTUyYjdhOTYyODcwNzBlODAzNzk4ZDU5ZDhmYzJmN2Iz
OWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTE3NCw3ICsxMTc0LDcgQEAg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxl
UmFuZ2UmIGNvbnRleHQsIGNvbnN0IFMKIAogICAgIGF1dG8gY3JlYXRlSFRNTEJSRWxlbWVudCA9
IFsmZG9jdW1lbnRdKCkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBIVE1MQlJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOworICAgICAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwg
QXRvbVN0cmluZzo6ZnJvbUxhdGluMShBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOwogICAgICAg
ICByZXR1cm4gZWxlbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmNwcAppbmRleCA1MDQ5NWMxN2I5Y2E5NzkyMDNlZjk4NGJmMjgxNjM0ZTUyMGZhZTRj
Li5hOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4YjEyYWVhMDYzMzAwMzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxB
dWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2MKIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50Ojpj
cmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBB
dG9tU3RyaW5nJiBzcmMpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGF1ZGlvVGFnLCBk
b2N1bWVudCwgZmFsc2UpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24ocHJlbG9hZEF0dHIsICJhdXRvIik7CisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVsb2FkQXR0ciwgImF1dG8iX3MpOwogICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAppbmRleCBiZjU0MzJhZjMxNmU1YTc0YWYyYWQyNzNmMTE1MjZlNGRiNDViMmNiLi42
OGJjMjM4ZWJkOTFhNDE3YmNiZDhjOTU4NjVjNzM1NTliZmQ1ZTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5U2xv
dE5hbWUoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gc3VtbWFyeVNsb3QoInN1bW1hcnlTbG90Iik7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNs
b3QiX3MpOwogICAgIHJldHVybiBzdW1tYXJ5U2xvdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCAxYjM2ZDViMzZmMDAxYWQwN2U5ZTZhYTAyODY4MTYyNzIyNDY0ZDMw
Li42YjFkOGQzYzFkMTAzYTVmMDJiODAzMjAzZmVmZDgwYjA2Y2QwZDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNjk2LDcgKzY5Niw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
OnRyYW5zbGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZShib29s
IGVuYWJsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRyYW5z
bGF0ZUF0dHIsIGVuYWJsZSA/ICJ5ZXMiIDogIm5vIik7CisgICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIl9zIDogIm5vIl9z
KTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc0V2ZXJOZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjA5YjY4MjM5NjM5OWZlODA2
OWI5NGM4MjE5ZWU0Mzg2MWYwMWE3Mi4uYmFiNTExMWQyNmVhOTA5YTdmNWMwZDYzN2I3NTI4OTdk
Y2QyNWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0y
NjcwLDcgKzI2NzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKIHsKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47
Ci0gICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
KSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBv
cnRRdWlyaygpKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3Mo
KS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNC
cm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygpKTsKICAgICBtX3BsYXllci0+c2V0
U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGRDb250aW51ZSk7CiB9CiAjZW5kaWYK
QEAgLTI2ODUsNyArMjY4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJL
ZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKICAgICBpZiAoIWRvY3VtZW50
KCkuc2V0dGluZ3MoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCisg
ICAgaWYgKCFoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50
KQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIC8vIE9ubHkgZmlyZSBhbiBl
cnJvciBpZiBFTkNSWVBURURfTUVESUEgaXMgbm90IGVuYWJsZWQsIHRvIGdpdmUgY2xpZW50cyBv
ZiB0aGUKICAgICAgICAgLy8gImVuY3J5cHRlZCIgZXZlbnQgYSBjaGFuY2UgdG8gaGFuZGxlIGl0
IHdpdGhvdXQgcmVzdWx0aW5nIGluIGEgc3ludGhldGljIGVycm9yLgpAQCAtNDcwNSw3ICs0NzA1
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCgpCiB7CiAgICAg
YXV0byB0YXNrID0gW3RoaXNdIHsKICAgICAgICAgaWYgKGF1dG8gcm9vdCA9IHVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgicmVzaXplIiwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CisgICAgICAgICAgICByb290LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnJlc2l6ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKICAgICB9OwogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBXVEZNb3ZlKHRhc2spKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggOGNlYjg4YTNiMTA3YmRmNjQ5YTVm
MjJhMDBhODJlOTQyNGNlMmVhNy4uYmQ0NGUyZDAyOGE3MDA4ODYzNmZmMjY2MDYzNzdlYmVkZGY5
NzdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0xOTAs
MTUgKzE5MCwxNSBAQCBzdGF0aWMgdm9pZCBzZXRWYWx1ZUNsYXNzKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbiBnYQogewogICAgIHN3aXRjaCAoZ2F1
Z2VSZWdpb24pIHsKICAgICBjYXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uT3B0aW11
bToKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJv
cHRpbXVtIik7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAib3B0aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVk
b0lkczo6d2Via2l0TWV0ZXJPcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uU3Vib3B0aW1hbDoKLSAgICAgICAgZWxl
bWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVtIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAic3Vib3B0
aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJTdWJvcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhU
TUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uRXZlbkxlc3NHb29kOgotICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgImV2ZW4tbGVzcy1nb29kIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZXZlbi1s
ZXNzLWdvb2QiX3MpOwogICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6
OndlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgpAQCAtMjM0LDE3ICsyMzQsMTcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpkaWRB
ZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCiAKICAgICAvLyBQc2V1ZG9z
IGFyZSBzZXQgdG8gYWxsb3cgYXV0aG9yIHN0eWxpbmcuCiAgICAgYXV0byBpbm5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgaW5uZXItPnNldElkQXR0cmlidXRl
KCJpbm5lciIpOworICAgIGlubmVyLT5zZXRJZEF0dHJpYnV0ZSgiaW5uZXIiX3MpOwogICAgIGlu
bmVyLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlcklubmVyRWxlbWVudCgp
KTsKICAgICByb290LmFwcGVuZENoaWxkKGlubmVyKTsKIAogICAgIGF1dG8gYmFyID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBiYXItPnNldElkQXR0cmlidXRlKCJi
YXIiKTsKKyAgICBiYXItPnNldElkQXR0cmlidXRlKCJiYXIiX3MpOwogICAgIGJhci0+c2V0UHNl
dWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJCYXIoKSk7CiAgICAgaW5uZXItPmFwcGVu
ZENoaWxkKGJhcik7CiAKICAgICBtX3ZhbHVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKLSAgICBtX3ZhbHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiKTsKKyAgICBtX3Zh
bHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiX3MpOwogICAgIGJhci0+YXBwZW5kQ2hpbGQoKm1f
dmFsdWUpOwogCiAgICAgZGlkRWxlbWVudFN0YXRlQ2hhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAppbmRleCA4MDQxZWE0MmMzYmE3OTU1NzVmM2EwMmI1ZTI2MzliNTdl
YTQ0MDQ1Li4zOTZmOWRjOTY4ODEwMzYxOTY0YWQyOGVlMjhmOWI1MGI1ZGMxOGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzMCwxNiArMjMwLDE2IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIHJvb3RFbGVtZW50
LT5hcHBlbmRDaGlsZChoZWFkKTsKIAogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2lu
OiAwcHgiKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiAwcHgi
X3MpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKGRvY3VtZW50KCku
bG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgIGJvZHktPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJ3aGl0ZSJfcyk7CiAgICAg
cm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHkpOwogICAgIAogICAgIGF1dG8gaW1hZ2VFbGVt
ZW50ID0gSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgaWYgKG1fc2hv
dWxkU2hyaW5rSW1hZ2UpCi0gICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgZGlzcGxheTpibG9jazsgbWFyZ2luOmF1
dG87IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQt
cmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxl
ZnQpOyIpOworICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICIt
d2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvOyBwYWRk
aW5nOmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBl
bnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3Mp
OwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRy
LCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5nOmVudihzYWZlLWFyZWEtaW5zZXQt
dG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRv
bSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5n
OmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYo
c2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3MpOwog
ICAgIGltYWdlRWxlbWVudC0+c2V0TG9hZE1hbnVhbGx5KHRydWUpOwogICAgIGltYWdlRWxlbWVu
dC0+c2V0U3JjKHVybCgpLnN0cmluZygpKTsKICAgICBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCktPnNldFJlc3BvbnNlKGxvYWRlcigpLT5yZXNwb25zZSgpKTsKQEAgLTI1Myw4ICsyNTMsOCBA
QCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICNlbHNlCiAg
ICAgICAgIGF1dG8gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgICAgIGlmIChSZWZQdHI8RE9NV2luZG93PiB3aW5kb3cgPSB0aGlzLT5kb21XaW5kb3co
KSkKLSAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVu
ZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOworICAgICAgICAgICAgd2lu
ZG93LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgbGlzdGVuZXIu
Y29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKICNl
bmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcAppbmRleCA0ZTE5NDYx
NmVjZTI1M2M5NDEyNGNmYmU3MjQ1OGFiYmJkODUzYjBkLi41OWRmYjAyMTI4NjUwMGM1NWU3YjJi
ZDU5NWNkODQzN2NkMTY4ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCkKICAgICAvLyBEZXNjcmlwdGlvbiBvZiBwYXJhbWV0ZXJzOgogICAgIC8vIC0gYCNwYWdlbW9k
ZT1ub25lYCBwcmV2ZW50cyB0aGUgc2lkZWJhciBmcm9tIHNob3dpbmcgb24gbG9hZC4KICAgICAv
LyAtIEVtcHR5IGA/ZmlsZT1gIHBhcmFtZXRlciBwcmV2ZW50cyBkZWZhdWx0IHBkZiBmcm9tIGxv
YWRpbmcuCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpz
L3dlYi92aWV3ZXIuaHRtbD9maWxlPSNwYWdlbW9kZT1ub25lIjsKKyAgICBhdXRvIHZpZXdlclVS
TCA9ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9I3Bh
Z2Vtb2RlPW5vbmUiX3M7CiAgICAgYXV0byByb290RWxlbWVudCA9IEhUTUxIdG1sRWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKICAgICBhcHBlbmRDaGlsZChyb290RWxlbWVudCk7CiAgICAgcm9vdEVs
ZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFBERkRv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgbV9pZnJhbWUtPnNldEF0dHJp
YnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJv
cmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIAogICAgIG1fbGlzdGVuZXIgPSBQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0
ZSgqdGhpcyk7Ci0gICAgbV9pZnJhbWUtPmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAqbV9saXN0
ZW5lciwgZmFsc2UpOworICAgIG1faWZyYW1lLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQsICptX2xpc3RlbmVyLCBmYWxzZSk7CiAKICAgICBib2R5LT5hcHBlbmRDaGls
ZCgqbV9pZnJhbWUpOwogfQpAQCAtMjIzLDkgKzIyMyw5IEBAIHZvaWQgUERGRG9jdW1lbnQ6Omlu
amVjdFN0eWxlQW5kQ29udGVudFNjcmlwdCgpCiAKICAgICBBU1NFUlQoY29udGVudERvY3VtZW50
LT5ib2R5KCkpOwogICAgIGF1dG8gc2NyaXB0ID0gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShz
Y3JpcHRUYWcsICpjb250ZW50RG9jdW1lbnQsIGZhbHNlKTsKLSAgICBzY3JpcHQtPmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKKyAg
ICBzY3JpcHQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgbV9saXN0
ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7CiAKLSAgICBzY3JpcHQtPnNldEF0dHJpYnV0
ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNj
cmlwdC5qcyIpOworICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsICJ3ZWJraXQtcGRm
anMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIl9zKTsKICAgICBjb250
ZW50RG9jdW1lbnQtPmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAppbmRleCBlMDFkZjM5MjkzNmU4MjA5Y2ViZDRkNjQ4NGJmZmUyOGUwNDJiNGVh
Li4wMDNhOTAxZTA0M2UzN2M4ZTNjMDY2OGM2MzM3MjQwZjZjZGU2MWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcApAQCAtODUsNyArODUsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSk7CiBzdGF0aWMgY29uc3RleHByIEltYWdlU21v
b3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVhbGl0eSA9IEltYWdlU21vb3RoaW5nUXVh
bGl0eTo6TG93OwogCiBjb25zdCBpbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6RGVm
YXVsdEZvbnRTaXplID0gMTA7Ci1jb25zdCBjaGFyKiBjb25zdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9ICJzYW5zLXNlcmlmIjsKK2NvbnN0IEFTQ0lJ
TGl0ZXJhbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9
ICJzYW5zLXNlcmlmIl9zOwogc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgRGVmYXVsdEZv
bnQgPSAiMTBweCBzYW5zLXNlcmlmIl9zOwogCiBzdGF0aWMgQ2FudmFzTGluZUNhcCB0b0NhbnZh
c0xpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDRhN2E0M2E3
Y2ZmZTgyNmFmODRiNzAxMzIwMmYyYjkzZTQ4NmRiNGEuLjViZjViNTMzOGFjYjIwN2NiM2IxNDkz
MDZlZTg0MTA3ODA2OGZlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTI5Niw3ICsyOTYsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRGb250
U2l6ZTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgRGVmYXVsdEZvbnRGYW1pbHk7Cisg
ICAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBEZWZhdWx0Rm9udEZhbWlseTsKIAogICAgIGNv
bnN0IFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0K
ICAgICB2b2lkIHJlYWxpemVTYXZlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggYTFmMTY3Y2IwODNjOTk4NDM2MTgzNDExODAyOWYy
ODVlNDFjMDAwNS4uZWRjYzZhZmQ2YzZmMDM4Yjg0YzRlNzFmNTc4YTY4ODg0MjdjNzEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01
NDQsNyArNTQ0LDcgQEAgc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBjcmVhdGUKICAgICBhZGROYW1lc1dpdGhQ
cmVmaXgobWFwLCB4bWxBdG9tKCksIFhNTE5hbWVzOjpnZXRYTUxBdHRycygpLCBYTUxOYW1lczo6
WE1MQXR0cnNDb3VudCk7CiAKICAgICBtYXAuYWRkKHhtbG5zQXRvbSgpLCBYTUxOU05hbWVzOjp4
bWxuc0F0dHIpOwotICAgIG1hcC5hZGQoInhtbG5zOnhsaW5rIiwgUXVhbGlmaWVkTmFtZSh4bWxu
c0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSSkpOworICAg
IG1hcC5hZGQoInhtbG5zOnhsaW5rIl9zLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlu
a05hbWUsIFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSk7CiAKICAgICByZXR1cm4gbWFw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggNDcwNmYyNmU4NDQwOWVlODEzY2QxM2JjNWY0ZTBhY2NmNjc0YTg2Ny4uNzhl
MTFmYzJjMTA4ZDc3ZmY4YzJhOTJhYTkyNWVmYzUyZTQzOTEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCgpCiAgICAg
Ly8gV2UgY3JlYXRlIGEgZmFrZSB0b2tlbiBhbmQgZ2l2ZSBpdCB0byB0aGUgdHJlZSBidWlsZGVy
IHJhdGhlciB0aGFuCiAgICAgLy8gc2VuZGluZyBmYWtlIGJ5dGVzIHRocm91Z2ggdGhlIGZyb250
LWVuZCBvZiB0aGUgcGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gZGlzdHJ1YmluZyB0aGUgbGluZS9j
b2x1bW4gbnVtYmVyIGNhbGN1bGF0aW9ucy4KLSAgICBBdHRyaWJ1dGUgYXR0cmlidXRlKHN0eWxl
QXR0ciwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpOwor
ICAgIEF0dHJpYnV0ZSBhdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3Jk
OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Il9zKTsKICAgICBBdG9tSFRNTFRva2VuIGZha2VQcmUo
SFRNTFRva2VuOjpTdGFydFRhZywgcHJlVGFnLT5sb2NhbE5hbWUoKSwgeyBXVEZNb3ZlKGF0dHJp
YnV0ZSkgfSk7CiAgICAgdHJlZUJ1aWxkZXIoKS5jb25zdHJ1Y3RUcmVlKFdURk1vdmUoZmFrZVBy
ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggODQ5Y2Q1
OTRhN2I5YTM5OGIwYzMxZmE5MGZjNjdkN2Y2ZDY3NmEyZi4uMTBmNGQxZGFlMGE5OTAyNWI1ZDQw
ZjIzOGRkNTVlYTZjMzY5ZDcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcApAQCAtODgsMTMgKzg4LDEzIEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBmb3JjZWRL
ZXl3b3JkKCkKIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpCiB7
Ci0gICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUo
bnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iX3MsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0VHJhY2smIFRl
eHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRy
YWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1l
bnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShu
dWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSJfcywgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgp
LCBlbXB0eUF0b20oKSkubGVha1JlZigpOwogICAgIHJldHVybiBhdXRvbWF0aWM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBiY2Y4ZTE3MmE2
NzMyMGY2Njg4MTIwNzQ3OWRmN2E4MGFiYWMxN2VlLi43N2M2YTE2MGJhOTViZDVhMjg2YzVkYTc0
OTM5ODM1ZTUxYjlhZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRl
eHRUcmFja0N1ZUJveCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVBdHRyaWJ1
dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVU
YWcobnVsbEF0b20oKSwgImN1ZSIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxRdWFsaWZpZWROYW1lPiBjdWVUYWcobnVsbEF0b20oKSwgImN1ZSJfcywgbnVsbEF0b20o
KSk7CiAgICAgcmV0dXJuIGN1ZVRhZzsKIH0KIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBjdWVCYWNrZ3JvdW5kVGFnKG51bGxBdG9tKCksICJjdWViYWNrZ3Jv
dW5kIiwgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGN1ZUJhY2tncm91bmRUYWcobnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiX3MsIG51bGxB
dG9tKCkpOwogICAgIHJldHVybiBjdWVCYWNrZ3JvdW5kVGFnOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCA5MzZkMjdiM2IyNzM3YzAwNzYx
OTM5NTIyNzFlNjg3Y2I1YzQ2NjU1Li4xOGIwNmYyOGRhYzUwNGEzY2ViMjVhYTk3OGFmMjg5NjAy
NWRjMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAK
QEAgLTQxLDE0ICs0MSwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViVlRURWxl
bWVudCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFtZShX
ZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tKCksICJ2IiwgbnVs
bEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdU
YWcobnVsbEF0b20oKSwgImxhbmciLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiIsIG51bGxBdG9tKCkpOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tKCks
ICJ1IiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGlUYWcobnVsbEF0b20oKSwgImkiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgpLCAicnVieSIsIG51bGxB
dG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhu
dWxsQXRvbSgpLCAicnQiLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyJfcywgbnVsbEF0b20oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZUYWcobnVsbEF0b20oKSwgInYi
X3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1l
PiBsYW5nVGFnKG51bGxBdG9tKCksICJsYW5nIl9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiJfcywgbnVs
bEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHVUYWco
bnVsbEF0b20oKSwgInUiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBpVGFnKG51bGxBdG9tKCksICJpIl9zLCBudWxsQXRvbSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgp
LCAicnVieSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxp
ZmllZE5hbWU+IHJ0VGFnKG51bGxBdG9tKCksICJydCJfcywgbnVsbEF0b20oKSk7CiAgICAgc3dp
dGNoIChub2RlVHlwZSkgewogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVDbGFzczoKICAgICAgICAg
cmV0dXJuIGNUYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmlu
ZGV4IGRlY2JlMTdhYmJmMWQ5YTQzZTQ4MGRjNzhjZDcyMzg1ZWI2MDk3NmQuLjFjNWM4NWUzMmIy
ODk0NWU2ZTJmMDExOGM3MWFjYzJmNGNkNWUyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5oCkBAIC02MywxMyArNjMsMTMgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxB
dG9tKCksICJ2b2ljZSIsIG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tKCksICJ2b2ljZSJfcywgbnVsbEF0
b20oKSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9t
KCksICJsYW5nIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgImxhbmciX3MsIG51bGxBdG9tKCkp
OwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCA2YWE2MTI2ZGQ3Y2FjNjgwMTE3YjI3N2I0NGE2YzE4NmVjMzcwNTM4Li5m
YTE4NDRhNmZmMWZlNWFhNTI4YWIyNTVjYzgxY2M0MjZlZWI5YjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSAidGV4dCJfczsKIAog
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJp
YVJlbGV2YW50QXR0clZhbHVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNv
bnRhaW5zKCJhbGwiKSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFs
bCJfcykpIHsKICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChh
cmlhUmVsZXZhbnRBZGRpdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVs
ZXZhbnQuYXBwZW5kKGFyaWFSZWxldmFudFJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAg
bGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChhcmlhUmVsZXZhbnRUZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKaW5kZXggNzNh
ZjgzNmVmNzQ2YzZiYjgwMzMyODc0OGM4ZmVjZWJkYTY3MjVmZC4uZjYxMTQ3MWE4NWUzZmU2OTNk
ZDZmM2FjYTYzZTIwMjQ4MjY1Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSW5zcGVjdG9y
T3ZlcmxheUxhYmVsOjpJbnNwZWN0b3JPdmVybGF5TGFiZWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBG
bG9hdFBvaW50IGxvY2EKIHN0YXRpYyBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KCkKIHsKICAgICBG
b250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRp
b24uc2V0RmFtaWxpZXMoeyAic3lzdGVtLXVpIiB9KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
RmFtaWxpZXMoeyAic3lzdGVtLXVpIl9zIH0pOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWln
aHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoMTIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKaW5kZXggMTdhMjk3YjVhYjM0NGM2YjIxODBkZDBmYTlhOTQ0MmZkYTMz
ZTM5Ny4uMjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTU5
Myw3ICsxNTkzLDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGEKICAgICAsIG1faXNTdHlsZVRl
eHRWYWxpZChmYWxzZSkKIHsKICAgICBtX2luc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6
OmNyZWF0ZShJbnNwZWN0b3JDU1NJZChpZCwgMCksIGlubGluZVN0eWxlKCksIHRoaXMpOwotICAg
IG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7
CisgICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0
eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCkKQEAgLTE2NjksNyArMTY2OSw3IEBA
IENTU1N0eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
aW5saW5lU3R5bGUoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6ZWxlbWVudFN0eWxlVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKCJzdHlsZSIpLnN0cmluZygpOworICAgIHJldHVybiBtX2Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAK
IFJlZjxDU1NSdWxlU291cmNlRGF0YT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
OjpydWxlU291cmNlRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQzODllYzA3YWU4N2JjOTVi
NTY4MDllOGRiODI1OTA4OGUwNTJhMDYuLjA2YzQ3MjNmNTcwMDcwNTFlYzYxOTA5YWM3MTlkZjNi
OGNiMmRjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMjI5LDcgKzIyMjksNyBAQCBSZWY8UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvckFjYwogICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB2
YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEBhcmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9zZWQgYXMg
WyJhZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgb3JkZXIgaXMgY29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBleHBlY3Rl
ZCBpbiBXZWJJbnNwZWN0b3JVSS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250
YWlucygiYWxsIikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygi
YWxsIl9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5h
ZGRJdGVtKGFyaWFSZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBs
aXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50UmVtb3ZhbHMpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5hZGRJdGVtKGFyaWFSZWxldmFu
dFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDlmMTdjMTI4YTMx
ODE2YTZhOTM5OGI1ZDJiMTQ1Njg1NGM1ZDlhNTEuLjM2ZmViYmVkY2UwZGUxODkxYWU0YTkyZDM5
NDI5NzkyMDNlYTFkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTI2
Myw3ICsyNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4g
TGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIG9wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSBwYXJhbXMucmVmZXJyZXJQb2xpY3k7CiAgICAgYXV0byBsaW5rUmVxdWVzdCA9
IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0KHVybCwgV1RGTW92ZShvcHRpb25z
KSwgZG9jdW1lbnQsIHBhcmFtcy5jcm9zc09yaWdpbik7CiAgICAgbGlua1JlcXVlc3Quc2V0UHJp
b3JpdHkoRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5Ojpmb3JSZXNvdXJjZVR5cGUodHlwZS52
YWx1ZSgpKSk7Ci0gICAgbGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CisgICAgbGlu
a1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIl9zKTsKICAgICBsaW5rUmVxdWVzdC5zZXRJZ25v
cmVGb3JSZXF1ZXN0Q291bnQodHJ1ZSk7CiAgICAgbGlua1JlcXVlc3Quc2V0SXNMaW5rUHJlbG9h
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudC5jcHAKaW5kZXggNjViMjZjYzliZDU3NWViMWEwMTVmNDVjYzVkZTY1Y2NkNTUzNTM3
Yi4uNTEwMjJjNjc1ZDI0ZjBiYjhhNTNiMTk1ZmU4OGIxYWYwM2QxMzcwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIGJvb2wgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29u
dGVudChjb25zdCBOb2RlJiBub2RlKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6cFRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnByZVRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlY3Rpb25UYWcpCi0gICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6c3R5bGVUYWcpICYmIGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZSgic2NvcGVkIikpCisg
ICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWcpICYm
IGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OnNjb3BlZEF0dHIpKQogICAgICAg
ICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGFibGVUYWcpCiAgICAgICAg
IHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDI1OWM3MjI1MzY3MWI1YTBh
ZTA4NWJjMDcxMmE0YjE1ZWIyNzk1ZDYuLmU5NGJkZmY4YTkzMzg1NGQ3ZDlmZGIwYmZjNmExODgx
YWQ1OTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRy
YXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBGbG9hdFJlY3Qg
bGVnZW5kUmVjdCA9IHsgYm91bmRzLm1heFgoKSAtIDMwLjBmLCAxMCwgMjAsIDIwIH07CiAgICAg
CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERl
c2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3Bl
Y2lmaWVkU2l6ZSgxMik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7
CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdT
ZXR0aW5ncyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgfQogCiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
SGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5jcHAKaW5kZXggZGRiYTgzNWVmODkyMDNhYWVhZGExZDMwM2IyMzY5NDU4ZDQ3MjgxMi4uYzRm
OWY2N2QwNjdmNGEzNDFlNzg5MTI2NjIzZTM5YTdkNTUxMzAwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRUb29sdGlwUHJldmVu
dEZyb21Qcm9jZWVkaW5nV2l0aENsaWNrKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBp
ZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50
KCkudXJsKCkuaG9zdCgpLCAiY292aWQuY2RjLmdvdiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5j
b250YWlucygidG9vbHRpcCIpOworICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInRvb2x0aXAiX3MpOwogfQogCiAvLyBGSVhNRTog
UmVtb3ZlIGFmdGVyIHRoZSBzaXRlIGlzIGZpeGVkLCA8cmRhcjovL3Byb2JsZW0vNzU3OTI5MTM+
CkBAIC00ODgsNyArNDg4LDcgQEAgc3RkOjpvcHRpb25hbDxFdmVudDo6SXNDYW5jZWxhYmxlPiBR
dWlya3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0KEV2ZW4KIAogICAgIC8vIE9u
IEdvb2dsZSBNYXBzLCB3ZSB3YW50IHRvIGxpbWl0IHNpbXVsYXRlZCBtb3VzZSBldmVudHMgdG8g
ZHJhZ2dpbmcgdGhlIGxpdHRsZSBtYW4gdGhhdCBhbGxvd3MgZW50ZXJpbmcgaW50byBTdHJlZXQg
Vmlldy4KICAgICBpZiAoaXNHb29nbGVNYXBzKCkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+
KHRhcmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRlKCJjbGFz
cyIpID09ICJ3aWRnZXQtZXhwYW5kLWJ1dHRvbi1wZWdtYW4taWNvbiIpCisgICAgICAgIGlmIChp
czxFbGVtZW50Pih0YXJnZXQpICYmIGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldCktPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikgPT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21h
bi1pY29uIikKICAgICAgICAgICAgIHJldHVybiBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXM7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNjMxLDggKzYzMSw4IEBAIGJvb2wgUXVpcmtz
OjpuZWVkc0lucHV0TW9kZU5vbmVJbXBsaWNpdGx5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KSBjb25zdAogICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykp
IHsKICAgICAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RvY3VtZW50
LT51cmwoKS5ob3N0KCksICJjYWxlbmRhci5nb29nbGUuY29tIikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBk
YXRhSW5pdGlhbFZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1pbml0aWFsLXZhbHVlIiwgbnVs
bEF0b20oKSk7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBk
YXRhUHJldmlvdXNWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtcHJldmlvdXMtdmFsdWUiLCBu
dWxsQXRvbSgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGRhdGFJbml0aWFsVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLWluaXRpYWwtdmFsdWUiX3Ms
IG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFt
ZT4gZGF0YVByZXZpb3VzVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLXByZXZpb3VzLXZhbHVl
Il9zLCBudWxsQXRvbSgpKTsKIAogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6YXV0b2NvbXBsZXRlQXR0ciksICJvZmYiKQogICAgICAgICAgICAgJiYgZWxlbWVudC5oYXNB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRhdGFJbml0aWFsVmFsdWVBdHRyKQpAQCAt
NjQ3LDcgKzY0Nyw3IEBAIGJvb2wgUXVpcmtzOjpuZWVkc0lucHV0TW9kZU5vbmVJbXBsaWNpdGx5
KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSBjb25zdAogICAgIGlmICghaG9zdC5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCIuZGVzbW9zLmNvbSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgJiYgZWxlbWVudC5wYXJlbnRF
bGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiZGNnLW1xLXRleHRhcmVhIik7CisgICAg
cmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQucGFyZW50RWxlbWVudCgp
LT5jbGFzc05hbWVzKCkuY29udGFpbnMoImRjZy1tcS10ZXh0YXJlYSJfcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIzLDEwICsx
MDIzLDEwIEBAIHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKICAgICAvLyBzcGFuIHdpdGggdGhlc2UgY2xhc3MgbmFtZXMsIG9yIHRo
ZSBzdmcsIG9yIHRoZSBzdmcncyBwYXRoLgogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkpIHsK
ICAgICAgICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAg
ICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dpbiIpCi0g
ICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiIp
Ci0gICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJzYy0xaWwzdXJ1LTMiKSB8fCBj
bGFzc05hbWVzLmNvbnRhaW5zKCJjSWhLZmQiKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5j
b250YWlucygiaXl2bjM0LTAiKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJiWUlqdGwiKSkKKyAg
ICAgICAgaWYgKGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJuZXItbG9naW4i
X3MpCisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1
dHRvbiJfcykKKyAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInNjLTFpbDN1cnUt
MyJfcykgfHwgY2xhc3NOYW1lcy5jb250YWlucygiY0loS2ZkIl9zKQorICAgICAgICAgICAgfHwg
Y2xhc3NOYW1lcy5jb250YWlucygiaXl2bjM0LTAiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
ImJZSWp0bCJfcykpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMzcs
NyArMTAzNyw3IEBAIHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgc3ZnRWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxl
bWVudCgpOwogCiAgICAgaWYgKHN2Z0VsZW1lbnQgJiYgc3ZnRWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKSB7Ci0gICAgICAgIGF1dG8gYXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXROYW1lZEl0ZW0oImFyaWEtbGFiZWwiKTsKKyAgICAgICAgYXV0byBhcmlhTGFiZWxB
dHRyID0gc3ZnRWxlbWVudC0+YXR0cmlidXRlcygpLmdldE5hbWVkSXRlbSgiYXJpYS1sYWJlbCJf
cyk7CiAgICAgICAgIGlmIChhcmlhTGFiZWxBdHRyICYmIGFyaWFMYWJlbEF0dHItPnZhbHVlKCkg
PT0gIlVzZXJGaWxsZWQgaWNvbiIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xMDU2LDI0ICsxMDU2LDI0IEBAIHN0YXRpYyBib29sIGlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9t
YWluQW5kRWxlbWVudChjb25zdCBVUkwmIHVybCwgY29uc3QgRWxlbWVudCYKICAgICAvLyBGSVhN
RSgyMTg3NzkpOiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVz
IHRoZWlyIGxvZ2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gInd3dy5t
aWNyb3NvZnQuY29tIl9zKSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAg
ICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJnbHlwaF9zaWduSW5fY2ly
Y2xlIikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9o
ZWFkZXJ0ZXh0IikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1l
Y3RybF9oZWFkZXIiKSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlu
cygiZ2x5cGhfc2lnbkluX2NpcmNsZSJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVz
KCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0Il9zKQorICAgICAgICB8fCBlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygibWVjdHJsX2hlYWRlciJfcykpOwogICAgIH0KICAgICAvLyBT
a3lwZSBjYXNlLgogICAgIC8vIEZJWE1FKDIyMDEwNSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2Ug
U2t5cGUgdW5kZXIgb3V0bG9vay5saXZlLmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyBy
ZWRlc2lnbi4KICAgICBpZiAodXJsLmhvc3QoKSA9PSAib3V0bG9vay5saXZlLmNvbSJfcykgewog
ICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJHUjV2YjBncVJEc2FGUGEiKQotICAgICAgICB8
fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3ki
KSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJH
UjV2YjBncVJEc2FGUGEiX3MpCisgICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJfMkFtMmp2VGFCejE3VUo4WG5meEZPeSJfcykpOwogICAgIH0KICAgICAvLyBTb255IE5l
dHdvcmsgRW50ZXJ0YWlubWVudCBsb2dpbiBjYXNlLgogICAgIC8vIEZJWE1FKDIxODc2MCk6IFJl
bW92ZSB0aGlzIHF1aXJrIG9uY2UgcGxheXN0YXRpb24uY29tIGNvbXBsZXRlcyB0aGVpciBsb2dp
biBmbG93IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9zdCgpID09ICJ3d3cucGxheXN0YXRpb24u
Y29tIl9zIHx8IHVybC5ob3N0KCkgPT0gIm15LnBsYXlzdGF0aW9uLmNvbSJfcykgewogICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFt
ZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24iKQotICAgICAgICB8fCBl
bGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24t
bGFiZWwiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2ln
bmluLWJ1dHRvbiIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5z
KCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRvbiJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFz
c05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uLWxhYmVsIl9zKQor
ICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2lnbmluLWJ1dHRv
biJfcykpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTIsNyArMTExMiw3IEBA
IHN0YXRpYyBib29sIGlzQkJDUG9wVXBQbGF5ZXJFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQoKSB8fCAhZWxlbWVudC5wYXJlbnRF
bGVtZW50KCktPmhhc0NsYXNzKCkgfHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSB8
fCAhcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5oYXNDbGFzcygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNz
TmFtZXMoKS5jb250YWlucygicF9hdWRpb0J1dHRvbl9idXR0b25Jbm5lciIpICYmIHBhcmVudEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iKTsK
KyAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlu
cygicF9hdWRpb0J1dHRvbl9idXR0b25Jbm5lciJfcykgJiYgcGFyZW50RWxlbWVudC0+cGFyZW50
RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImhpZGRlbiJfcyk7CiB9CiAKIFF1aXJr
czo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQW5kSGFu
ZGxlQ2xpY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGREaXNwYXRjaENsaWNrKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgY29uc3QKQEAgLTExODUsMTQgKzExODUsMTQgQEAgUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrKEVsZW1lbnQmIGUKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBr
aW5qYUxvZ2luVXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQg
ZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNl
cmJ1dHRvbicpOyBpZiAoZWxlbWVudHMgJiYgZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xp
Y2soKTsgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRl
cnZhbCh0cmlnZ2VyTG9naW5Gb3JtLCAyMDApOyJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZl
Y3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
OjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCi0gICAg
aWYgKGV2ZW50VHlwZSA9PSAiY2xpY2siKSB7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgICAg
ICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVu
dDsKIAogICAgICAgICAvLyBFbWJlZGRlZCBZb3VUdWJlIGNhc2UuCiAgICAgICAgIGlmIChlbGVt
ZW50Lmhhc0NsYXNzKCkgJiYgZG9tYWluID09IHlvdVR1YmVEb21haW4gJiYgIW1fZG9jdW1lbnQt
PmlzVG9wRG9jdW1lbnQoKSAmJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFk
VXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21haW4pKSB7CiAgICAgICAgICAgICBhdXRvJiBjbGFz
c05hbWVzID0gZWxlbWVudC5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAgICBpZiAoY2xhc3NOYW1l
cy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5z
KCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiIpKSB7CisgICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5j
b250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
Inl0cC13YXRjaC1sYXRlci1pY29uIl9zKSkgewogICAgICAgICAgICAgICAgIGlmIChSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21h
aW4pKSB7CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBbXShTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCkgeyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6
U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDE5NzQxZjYyZjZiNjZhMWJlMDc3N2RlZTZhM2FhMzlk
YjAyODBlZGMuLjEzNmY3Y2Q1MmQzNDNlODBiYTdjYzIwOTBmNmY2ODdhM2I2MDlkNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0yMDYsNyArMjA2LDcgQEAgU3Bhbjxj
b25zdCBBdG9tU3RyaW5nPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2
ZWRFdmVudE5hbWVzKCkKIAogY29uc3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFsbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyI7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
RXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyJfczsKICAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZWMzMWM1MzgwMDgzMjAwYjkwMGQyZWE1
Y2Y1NDBhMzY4OTdjZTY1NC4uNDIzN2NmNjA1OTg0ZGM2ZDUzNjA0NzQ2NzM1NWQzODQ2NzMxYWI4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zMDY3LDcgKzMwNjcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NNZXRhZGF0YVRyYWNrKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tZXRhZGF0YVRyYWNrID0gSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZDo6
TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6RGF0YSk7Ci0gICAg
bV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20u
YXBwbGUuc3RyZWFtaW5nIik7CisgICAgbV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0
YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20uYXBwbGUuc3RyZWFtaW5nIl9zKTsKICAgICBwbGF5ZXIo
KS0+YWRkVGV4dFRyYWNrKCptX21ldGFkYXRhVHJhY2spOwogfQogCkBAIC0zMDk2LDcgKzMwOTYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRU
ZXh0VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIGlmIChtX2N1cnJlbnRUZXh0VHJhY2sg
PT0gdHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJzZWxlY3RpbmcgdHJhY2sgd2l0aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFn
ZSgpIDogIiIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzZWxlY3RpbmcgdHJhY2sg
d2l0aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFnZSgpIDogZW1wdHlBdG9tKCkp
OwogCiAgICAgbV9jdXJyZW50VGV4dFRyYWNrID0gdHJhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGNmYTI5YjEx
MmVhMzI5NzNmYzg1NjM1YjY1ZTQyMWVhZmJmOTE0MDcuLjAxZjJjNjk3MTZmNjE4YWE0OGQyOGVl
MTY1ZjExODBmMGY0YmI5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gd2hpY2ggaXMgcHJlc3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9jb2RlYykKLSAgICAgICAg
ICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkp
OworICAgICAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEobV9vcmlnaW5h
bENvZGVjLnN0cmluZygpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCmluZGV4IDg1MjM0NmY2YjVjNTY3ZGUyOWYzNTE3N2RjNDg3MjM2NWRm
MjdkNDAuLmIwODY5ZjgwMDQ1NjE5ZTY5NjU4NjFjYjE3Mjk4MWVlZTFmMzFjM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFp
bnRJbmRpY2F0b3IoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFBsYQogICAgIFRl
eHRSdW4gdGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKIAogICAgIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkhlbHZldGljYSJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUo
Zm9udFNpemUpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDY3
ZDcwY2JjZjcyMzIzZTIwOTM5MjQwZDRkNDcwYzQzODExNjYwNmMuLmM3NmRkM2QyOWVkMzQ2OTZm
ZTFmNTA5MGQ3MThmYzdmMGYxMWI2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyhjb25zdCBHU3RyZWFtZXJS
ZWcKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1pbWVUeXBlIDogY3VycmVudC53
ZWJraXRNaW1lVHlwZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChtaW1lVHlwZSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZyhjdXJyZW50LmNhcHNTdHJpbmcpKTsKKyAg
ICAgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZzo6ZnJvbUxh
dGluMShjdXJyZW50LmNhcHNTdHJpbmcpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI2Miwy
NiArMjYyLDI2IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVT
ZXRGcm9tQ2Fwc01hcHBpbmcoY29uc3QgR1N0cmVhbWVyUmVnCiB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6RWxlbWVudEZhY3RvcmllcyYgZmFjdG9yaWVzKQogewogICAgIGlmIChmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29k
ZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOwotICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7Ci0gICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwot
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBm
YWxzZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIp
LCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJh
dWRpby9hYWMiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8veC1tNGEiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyJfcykpOworICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIl9zKSwgZmFsc2UpOwogICAgIH0K
IAogICAgIGF1dG8gb3B1c1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtb3B1cyIp
OwogICAgIGlmIChvcHVzU3VwcG9ydGVkICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmll
cy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvUGFy
c2VyLCAiYXVkaW8veC1vcHVzIikpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOworICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9
CiAKICAgICBhdXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtdm9y
YmlzIik7CiAgICAgaWYgKHZvcmJpc1N1cHBvcnRlZCAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBm
YWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpB
dWRpb1BhcnNlciwgImF1ZGlvL3gtdm9yYmlzIikpKSB7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiKSwgZmFsc2UpOwotICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiKSwgZmFsc2UpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIl9zKSwgZmFsc2UpOworICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiX3MpLCBmYWxzZSk7
CiAgICAgfQogCiAgICAgYm9vbCBtYXRyb3NrYVN1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby94
LW1hdHJvc2thIik7CkBAIC0yOTAsMjEgKzI5MCwyMSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cgogICAgICAgICBhdXRvIHZwOURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by94LXZwOSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogCiAgICAgICAgIGlmICh2cDhEZWNvZGVyQXZhaWxhYmxlIHx8IHZwOURlY29kZXJBdmFpbGFi
bGUpCi0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlk
ZW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJ2aWRlby93ZWJtIl9zKSk7CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUp
IHsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwg
dnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUu
aXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ2cDguMCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4Il9zKSwgdnA4
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4Il9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwOC4wIl9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICh2cDlEZWNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LXZwOSIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAi
KSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIiksIHZwOURlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ2cDkiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiX3Mp
LCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiX3MpLCB2cDlEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnAwOSoiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAgICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAg
ICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIl9z
KSk7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRBZGRNUDRDb250YWluZXIgPSBmYWxzZTsKQEAg
LTMxMiwzNSArMzEyLDM1IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFs
aXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgYXV0byBoMjY0
RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0o
c3RyaW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50
RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NERl
Y29kZXJBdmFpbGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9QYXJzZXIsICJ2aWRl
by94LWgyNjQiKSkpIHsKICAgICAgICAgc2hvdWxkQWRkTVA0Q29udGFpbmVyID0gdHJ1ZTsKLSAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioi
KSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCJfcyksIGgyNjREZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJhdmMqIl9zKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIl9zKSwgaDI2
NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBhdXRvIGgy
NjVEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxl
bWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjY1IiwgRWxlbWVu
dEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAgaWYgKGgyNjVE
ZWNvZGVyQXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvUGFyc2VyLCAidmlk
ZW8veC1oMjY1IikpKSB7CiAgICAgICAgIHNob3VsZEFkZE1QNENvbnRhaW5lciA9IHRydWU7Ci0g
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjUiKSwgaDI2NURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImh2YzEqIiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJoZXYx
KiIpLCBoMjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY1Il9zKSwgaDI2NURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImh2YzEqIl9zKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJl
KTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImhldjEqIl9zKSwg
aDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAo
c2hvdWxkQWRkTVA0Q29udGFpbmVyKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiX3MpKTsKICAgICB9CiAKICAg
ICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIs
IEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAgIGlm
ICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3Vy
YXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYx
IiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIl9zKSwgYXYxRGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygiYXYxIl9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAg
ICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiX3MpLCBhdjFEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgVmVjdG9yPEdzdENh
cHNXZWJLaXRNYXBwaW5nPiBtc2VDb21wYXRpYmxlTWFwcGluZyA9IHsKLSAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWFjMyIsIHsgfSwgeyJ4
LWFjMyIsICJhYy0zIiwgImFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyJhdWRpby94LWFjMyJ9LCAgeyJ4LWVh
YzMiLCAiZWMzIiwgImVjLTMiLCAiZWFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1mbGFjIiwgeyJhdWRpby94LWZsYWMiLCAi
YXVkaW8vZmxhYyJ9LCB7IngtZmxhYyIsICJmbGFjIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1hYzMiLCB7IH0sIHsgIngtYWMz
Il9zLCAiYWMtMyJfcywgImFjMyJfcyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6
VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyAiYXVkaW8veC1hYzMiX3MgfSwg
IHsgIngtZWFjMyJfcywgImVjMyJfcywgImVjLTMiX3MsICJlYWMzIl9zIH0gfSwKKyAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWZsYWMiLCB7
ICJhdWRpby94LWZsYWMiX3MsICJhdWRpby9mbGFjIl9zIH0sIHsieC1mbGFjIl9zLCAiZmxhYyJf
cyB9IH0sCiAgICAgfTsKICAgICBmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoZmFjdG9y
aWVzLCBtc2VDb21wYXRpYmxlTWFwcGluZyk7CiAKQEAgLTM1MCw3NiArMzUwLDc2IEBAIHZvaWQg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyCiAgICAgLy8gVGhlIG1pbWUtdHlwZXMgaW5pdGlhbGl6ZWQgYmVs
b3cgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIE1TRSBiYWNrZW5kLgogCiAgICAgVmVjdG9yPEdz
dENhcHNXZWJLaXRNYXBwaW5nPiBtYXBwaW5nID0gewotICAgICAgICB7IEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21pZGkiLCB7ICJhdWRpby9taWRpIiwgImF1
ZGlvL3JpZmYtbWlkaSIgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbWlkaSIsIHsgImF1ZGlvL21pZGkiX3MsICJhdWRpby9y
aWZmLW1pZGkiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1kdHMiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc2JjIiwgeyB9LCB7IH0g
fSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRp
by94LXNpZCIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1zcGVleCIsIHsgImF1ZGlvL3NwZWV4IiwgImF1ZGlvL3gt
c3BlZXgiIH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlv
RGVjb2RlciwgImF1ZGlvL3gtd2F2cGFjayIsIHsgImF1ZGlvL3gtd2F2cGFjayIgfSwgeyB9IH0s
Ci0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8v
bXBlZywgbXBlZ3ZlcnNpb249KGludCl7MSwyfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNl
IiwgeyAidmlkZW8vbXBlZyIgfSwgeyAibXBlZyIgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVl
eCJfcywgImF1ZGlvL3gtc3BlZXgiX3MgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC13YXZwYWNrIiwgeyAiYXVkaW8veC13
YXZwYWNrIl9zIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZp
ZGVvRGVjb2RlciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0
cmVhbT0oYm9vbGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciX3MgfSwgeyAibXBlZyJfcyB9IH0s
CiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8v
bXBlZ3RzIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpW
aWRlb0RlY29kZXIsICJ2aWRlby94LWRpcmFjIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwg
eyAidmlkZW8vZmx2IiwgInZpZGVvL3gtZmx2IiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwgeyAi
dmlkZW8vZmx2Il9zLCAidmlkZW8veC1mbHYiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjYzIiwgeyB9LCB7IH0g
fSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by94LW1zdmlkZW9jb2RlYyIsIHsgInZpZGVvL3gtbXN2aWRlbyIgfSwgeyB9IH0sCisgICAgICAg
IHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVv
Y29kZWMiLCB7ICJ2aWRlby94LW1zdmlkZW8iX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEi
LCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIs
ICJhcHBsaWNhdGlvbi94LTNncCIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtaGxzIiwgeyAiYXBwbGljYXRpb24v
dm5kLmFwcGxlLm1wZWd1cmwiLCAiYXBwbGljYXRpb24veC1tcGVndXJsIiB9LCB7IH0gfSwKKyAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC1o
bHMiLCB7ICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJfcywgImFwcGxpY2F0aW9uL3gt
bXBlZ3VybCJfcyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAiYXBwbGljYXRpb24veC1wbi1yZWFsYXVkaW8iLCB7IH0sIHsgfSB9LAogICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi9kYXNoK3ht
bCIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhl
ciwgImF1ZGlvL3gtYWlmZiIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiLCAiYXVkaW8v
d2F2IiwgImF1ZGlvL3ZuZC53YXZlIiB9LCB7ICIxIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiX3Ms
ICJhdWRpby93YXYiX3MsICJhdWRpby92bmQud2F2ZSJfcyB9LCB7ICIxIl9zIH0gfSwKICAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lIiwg
eyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAi
dmlkZW8vcXVpY2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVvLzNncHAiIH0s
IHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRl
by9xdWlja3RpbWUsIHZhcmlhbnQ9KHN0cmluZykzZ3BwIiwgeyAidmlkZW8vM2dwcCJfcyB9LCB7
IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8v
eC1tcy1hc2YiLCB7IH0sIHsgfSB9LAogICAgIH07CiAgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNh
cHNNYXBwaW5nKGZhY3RvcmllcywgbWFwcGluZyk7CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxp
Y2F0aW9uL29nZyIpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJhcHBsaWNhdGlvbi9vZ2ciKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhcHBsaWNhdGlvbi9vZ2ciX3MpKTsKIAogICAgICAgICBpZiAodm9yYmlz
U3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8vb2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL3gtdm9yYmlzK29nZyIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKKyAgICAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ci
X3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNw
ZWV4IikpIHsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJhdWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygic3BlZXgiKSwgZmFsc2UpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInNwZWV4Il9zKSwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdGhlb3JhIikpIHsKLSAgICAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9vZ2ciKSk7Ci0gICAg
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidGhlb3JhIiksIGZhbHNl
KTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRl
by9vZ2ciX3MpKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ0aGVvcmEiX3MpLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGF1ZGlv
TXBlZ1N1cHBvcnRlZCA9IGZhbHNlOwogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9tcGVn
LCBtcGVndmVyc2lvbj0oaW50KTEsIGxheWVyPShpbnQpWzEsIDNdIikpIHsKICAgICAgICAgYXVk
aW9NcGVnU3VwcG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL21wMSIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXAzIikpOwotICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAzIiksIGZhbHNlKTsKLSAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wMyIpLCBmYWxzZSk7CisgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiX3MpKTsKKyAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJfcykpOworICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcDMiX3Mp
KTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJf
cyksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1w
MyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbXBl
ZywgbXBlZ3ZlcnNpb249KGludCkyIikpIHsKICAgICAgICAgYXVkaW9NcGVnU3VwcG9ydGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L21wMiIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL21wMiJfcykpOwogICAgIH0KIAogICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRh
aW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3Mp
OwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CisgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIl9zKSk7CisgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciX3MpKTsK
ICAgICB9CiAKICAgICBpZiAobWF0cm9za2FTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbWF0cm9za2EiKSk7CisgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2thIl9z
KSk7CiAKICAgICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdnAxMCIpKQotICAgICAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7
CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
d2VibSJfcykpOwogICAgIH0KIH0KIApAQCAtNDMxLDc2ICs0MzEsNzYgQEAgdm9pZCBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXIKIAogICAgIGF1dG8gYWFjU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVk
aW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0Iik7CiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1
ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiJfcyksIGZhbHNlKTsKICAgICB9CiAK
ICAgICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJhdWRpby94LW9wdXMiKTsK
ICAgICBpZiAob3B1c1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBh
dXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL3gtdm9yYmlzIik7CiAg
ICAgaWYgKHZvcmJpc1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIl9zKSwgZmFsc2UpOwogICAgIH0K
IAogICAgIFZlY3RvcjxTdHJpbmc+IGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3QgeyAiYXYxZW5j
Il9zIH07CiAgICAgYXV0byBhdjFFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVyLCAidmlk
ZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVz
LCBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShhdjFFbmNvZGVyc0Rpc2FsbG93ZWRMaXN0KSkp
OwogICAgIGlmIChhdjFFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiX3MpLCBmYWxzZSk7CisgICAgICAgIG1f
ZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiX3MpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSJfcyksIGZhbHNlKTsKICAg
ICB9CiAKICAgICBhdXRvIHZwOEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRl
by94LXZwOCIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogICAgIGlmICh2cDhFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgi
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidnA4Il9zKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiX3MpLCB2cDhFbmNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ2cDguMCJfcyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKICAgICB9CiAKICAgICBhdXRvIHZwOUVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29k
ZXIsICJ2aWRlby94LXZwOSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyOjpZZXMpOwogICAgIGlmICh2cDlFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygieC12cDkiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnAwOSoiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5Il9zKSwgdnA5
RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2
cDkuMCJfcyksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIl9zKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVv
L3dlYm0iKSAmJiAodnA4RW5jb2RlckF2YWlsYWJsZSB8fCB2cDlFbmNvZGVyQXZhaWxhYmxlIHx8
IGF2MUVuY29kZXJBdmFpbGFibGUpKQotICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygidmlkZW8vd2VibSIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKIAogICAgIGlmIChmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlv
L3dlYm0iKSkgewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBt
X2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAg
ICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9z
KSk7CisgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93
ZWJtIl9zKSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAiYXVkaW8vb2dnIikgJiYgKHZvcmJp
c1N1cHBvcnRlZCB8fCBvcHVzU3VwcG9ydGVkKSkKLSAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOwogCiAgICAgYXV0byBoMjY0RW5j
b2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3Ry
aW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50RmFj
dG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NEVuY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImgyNjQiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioiKSwgaDI2
NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoImgyNjQiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
eC1oMjY0Il9zKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiX3MpLCBoMjY0RW5jb2Rl
ckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygibXA0dioiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVvL3F1aWNrdGltZSIpKSB7CiAg
ICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7CisgICAgICAgICAgICBtX2VuY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOwogICAgICAgICBpZiAo
YWFjU3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSIpKTsKKyAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMiX3MpKTsKKyAgICAgICAg
ICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiX3MpKTsK
KyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94
LW00YSJfcykpOwogICAgICAgICB9CiAgICAgICAgIGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVv
L21wNCIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJ2aWRlby94LW00diIpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJ2aWRlby9tcDQiX3MpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBl
U2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diJfcykpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDdiMjAyNzk1ZWQxNWZmMjQyODg5ZDhkODFmYzYyMWU4YmFkYzI0MDIuLjYyNzZj
YTkwOTVkYjVkM2JjZDE3YjZjMTY0OThkMGYxNzYwMjliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcih1bnNpZ25lZCBpbmRleCwKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUo
Q3VlRm9ybWF0OjpXZWJWVFQpCiAgICAgLCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6VGV4dCwgdGhpcywgaW5kZXgsIFdURk1v
dmUoc3RyZWFtKSkKIHsKLSAgICBtX2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3Ry
ZWFtLmdldCgpKTsKKyAgICBtX2lkID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShnc3Rfc3RyZWFt
X2dldF9zdHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpKTsKICAgICBHU1RfSU5GTygiVHJhY2sgJWQg
Z290IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1faWQuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKICAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1RfUFRSX0ZPUk1B
VCwgbV9zdHJlYW0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCAwMWZlZmVhMzJkMjEzNmRmZDFlMWYzYzI1YjgxNjI2OTY5MGZi
ZDE0Li4yMDk4MDM1ZGE4MGIwYjkzOTM1ZTQ2NjkxZjAyNTc1ZWU3ODg4NmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTQ2NCw3ICsx
NDY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhj
b25zdCBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICAgICAgICAgIENSRUFURV9UUkFD
Syh2aWRlbywgVmlkZW8pOwogICAgICAgICBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBF
X1RFWFQgJiYgIXVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgICAgICBhdXRvIHRyYWNrID0gSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIFdU
Rk1vdmUoc3RyZWFtKSk7Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKHN0cmVhbUlkKSwgdHJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgIG1f
cGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAl
cyIsIHN0cmVhbUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAppbmRleCAyOTU3YmNlZjNkMGQwZTE4MjhlZjVkZjdiZjhiY2U1ZGVjMmY4ZDlhLi45YWIx
NWRmYWVjMmI0ZTU4MThlNWEzZWY5ZTEyNzA5ODBjMDg2YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tUeXBlIHR5
cGUsIFRyYWNrUHJpdmF0CiAgICAgLCBtX293bmVyKG93bmVyKQogewogICAgIEFTU0VSVChtX3N0
cmVhbSk7Ci0gICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQo
KSk7CisgICAgbV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEoZ3N0X3N0cmVhbV9nZXRfc3Ry
ZWFtX2lkKG1fc3RyZWFtLmdldCgpKSk7CiAKICAgICAvLyBXZSBjYW4ndCBjYWxsIG5vdGlmeVRy
YWNrT2ZUYWdzQ2hhbmdlZCgpIGRpcmVjdGx5LCBiZWNhdXNlIHdlIG5lZWQgdGFnc0NoYW5nZWQo
KSB0byBzZXR1cCBtX3RhZ3MuCiAgICAgdGFnc0NoYW5nZWQoKTsKQEAgLTI1Miw3ICsyNTIsNyBA
QCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFu
Z2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCBzdHJl
YW0gc3RhcnQgZm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZC5nZXQoKSk7Ci0gICAg
bV9pZCA9IHN0cmVhbUlkLmdldCgpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4x
KHN0cmVhbUlkLmdldCgpKTsKIH0KIAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpz
dHJlYW1DaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggM2U0ZTBlOTM0MjVlNjgwYjkwMzYy
N2JlOTlmYjQzZjJhMjNjMmUwZi4uNDYyNDFkMTI0MTkzYWVlYWUyZWRlZDQwNWNhMjg1YzM5M2Ez
MTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
dW5zaWduZWQgaG91cnMgPSBtaW51dGVzIC8gNjAgJSA2MDsKIAogICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkNvdXJpZXIiKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJDb3VyaWVy
Il9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1
MDApKTsKIAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1fYmFzZUZvbnRT
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCmluZGV4IGE1MzEwNjA3YTMwNDk5OTUzZTQ5NWRhZTYzNDVmOGU1MmZkZjA3
MmUuLjk3NzhjMTc1ZjM0ZDQ2ZDBiNmY1MDExNmU3ZThkM2E1NTQ5NDQ0NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApA
QCAtNjcsOCArNjcsOSBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNv
bnN0cnVjdG9yKCkKIHsKICAgICBzdGF0aWMgYm9vbCBkaWRSZWdpc3RlciA9IGZhbHNlOwogICAg
IGlmICghZGlkUmVnaXN0ZXIpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVp
bHRpbkNvbnN0cnVjdG9yKCJibG9iIiwgY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKTsKLSAgICAg
ICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKCJibG9i
IiwgbG9hZEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzbHkpOworICAgICAgICBBdG9tU3RyaW5nIGJs
b2IgPSAiYmxvYiJfczsKKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNv
bnN0cnVjdG9yKGJsb2IsIGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZSk7CisgICAgICAgIFJlc291
cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihibG9iLCBsb2FkQmxv
YlJlc291cmNlU3luY2hyb25vdXNseSk7CiAgICAgICAgIGRpZFJlZ2lzdGVyID0gdHJ1ZTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXgg
YTNmZWZhZDA2YTZiMjcyYjFhZjFiNTkwNDM2OTgyYTE2ODUzYjFhZi4uNDg1Y2U3M2Q5YzM0YTBj
OWEzNDJkM2NmZTcwYTU1ZTQ0NmZjYTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5k
ZXJlclRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hh
cioKICAgICB3aGlsZSAocm9vdC0+cGFyZW50KCkpCiAgICAgICAgIHJvb3QgPSByb290LT5wYXJl
bnQoKTsKIAotICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcihjb3VudGVyTmFtZSk7CisgICAgYXV0
byBpZGVudGlmaWVyID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShjb3VudGVyTmFtZSk7CiAgICAg
Zm9yIChhdXRvKiBjdXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5l
eHRJblByZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKCFpczxXZWJDb3JlOjpSZW5kZXJFbGVtZW50
PigqY3VycmVudCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMjYzYWM3NWFjN2U0ZDJhM2Qy
MzU5MTQ2YWFjM2RmN2NmNDliYjkyMi4uZDk3Nzg5NWFmZGMxNzhlNjNmM2E0Y2RhOTEyMGY2NjNh
YjVlMTk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTMzMzAsNyArMzMzMCw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0
dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKIAogICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsK
LSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEwKTsKICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRX
ZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCmluZGV4IDIxZDljN2Uy
YzcyZWQxMDRhODVlZDk5ZDA1MTZiN2NhZDZiMThlNzcuLmMwYzM0NzhjMjhiOWE4NTRhODEyNjM0
YWNhYWUzMjg0ZWY1NGYyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgdXNpbmcg
bmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVu
ZGVyTWF0aE1MRmVuY2VkKTsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGdPcGVuaW5nQnJhY2VDaGFy
ID0gIigiOwotc3RhdGljIGNvbnN0IGNoYXIqIGdDbG9zaW5nQnJhY2VDaGFyID0gIikiOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiX3M7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gZ0Nsb3NpbmdCcmFjZUNoYXIgPSAiKSJfczsKIAogUmVuZGVyTWF0aE1MRmVu
Y2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MUm93RWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50
LmNwcAppbmRleCAzMzE4OWJkNjRjYWNiZWRmOTM2OGQzNGZhOWZiNTY0ZDU4YmQxZjM2Li44YWM2
ZWRlYzJmZTBiNjE2NzE4ODJhNWY5ZmZkNjQ3ZjQwNmJjZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICAgICAgaWYgKHJlbmRlclZpZXcubXVsdGlDb2x1bW5GbG93KCkpCiAgICAgICAgICAg
ICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKGRvY3VtZW50U3R5
bGUpOwogICAgICAgICBpZiAocmVuZGVyVmlldy5wYWdlKCkucGFnaW5hdGlvbkxpbmVHcmlkRW5h
YmxlZCgpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExpbmVHcmlkKCItd2Via2l0
LWRlZmF1bHQtcGFnaW5hdGlvbi1ncmlkIik7CisgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNl
dExpbmVHcmlkKCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1ncmlkIl9zKTsKICAgICAgICAg
ICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXA6OkNvbnRhaW4pOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJp
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNw
cAppbmRleCAzYWQyNGU1ZmNjOTFjYjJmODhlMjAyNTRhYmFkNjAxNDg3MTkyODhkLi42M2JjZDFh
ODBlZjc4NTMzOTQyNDIxMzBkZDJkZjg5MDljMjIzZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZWY8Q1NTRm9u
dEZhY2VTcmNWYWx1ZT4gU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpzcmNWYWx1ZSgpIGNvbnN0CiB7
CiAgICAgYXV0byBzcmMgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGUoZ2V0QXR0cmlidXRl
KFNWR05hbWVzOjpocmVmQXR0ciwgWExpbmtOYW1lczo6aHJlZkF0dHIpLCBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlOjpObyk7CiAgICAgQXRvbVN0cmluZyB2YWx1ZShhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGZvcm1hdEF0dHIpKTsKLSAgICBzcmMuZ2V0KCkuc2V0Rm9ybWF0KHZhbHVl
LmlzRW1wdHkoKSA/ICJzdmciIDogdmFsdWUpOyAvLyBEZWZhdWx0IGZvcm1hdAorICAgIHNyYy5n
ZXQoKS5zZXRGb3JtYXQodmFsdWUuaXNFbXB0eSgpID8gInN2ZyJfcyA6IHZhbHVlKTsgLy8gRGVm
YXVsdCBmb3JtYXQKICAgICByZXR1cm4gc3JjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKaW5kZXggYTAxZjZiYWRhMWMxZDZjMjVmODIwZjcyNmM4ZWNlZTgxODJlY2I2YS4u
NmU1YzdjNzRjOGU3Y2NlN2Q5ODM3NThhZGQ0NTJiZmVmYTRhMDE5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgU1ZHVXNlRWxlbWVu
dDo6dHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoU1ZHRWxlbWVudCYgc2hhZG93
RWxlbWVuCiAgICAgICAgIC8vIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUg
cHJvdmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UgYXR0cmlidXRlcwogICAg
ICAgICAvLyB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBnZW5lcmF0ZWQgJ3N2ZycuIElmIGF0
dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgbm90IHNwZWNpZmllZCwKICAgICAgICAg
Ly8gdGhlIGdlbmVyYXRlZCAnc3ZnJyBlbGVtZW50IHdpbGwgdXNlIHZhbHVlcyBvZiAxMDAlIGZv
ciB0aGVzZSBhdHRyaWJ1dGVzLgotICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShT
VkdOYW1lczo6d2lkdGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRv
bVN0cmluZyh3aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSIpOwotICAgICAgICBzaGFk
b3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgaGVpZ2h0KCkudmFs
dWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhlaWdodCgpLnZhbHVlQXNTdHJpbmco
KSkgOiAiMTAwJSIpOworICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1l
czo6d2lkdGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmlu
Zyh3aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSJfcyk7CisgICAgICAgIHNoYWRvd0Vs
ZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWlnaHQoKS52YWx1ZUlu
U3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6
ICIxMDAlIl9zKTsKICAgICB9IGVsc2UgaWYgKGlzPFNWR1NWR0VsZW1lbnQ+KHNoYWRvd0VsZW1l
bnQpKSB7CiAgICAgICAgIC8vIFNwZWMgKDx1c2U+IG9uIDxzdmc+KTogSWYgYXR0cmlidXRlcyB3
aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBwcm92aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhl
biB0aGVzZQogICAgICAgICAvLyB2YWx1ZXMgd2lsbCBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGlu
ZyBhdHRyaWJ1dGVzIG9uIHRoZSAnc3ZnJyBpbiB0aGUgZ2VuZXJhdGVkIHRyZWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKaW5kZXggZTdhZTFhOGM2
OGIwMDE3MTNkMTc3NWEyNDJlOTRiYzYxNjBmZmQ1Zi4uMWRhMTE5NGJhOGVmZDBlYTA0YWYyNTNk
NDE5YjI2OTE0YWQwZjgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9G
ZXRjaEV2ZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIK
IAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNG
ZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDIsNyArNDMsNyBAQCBS
ZWY8RmV0Y2hFdmVudD4gRmV0Y2hFdmVudDo6Y3JlYXRlRm9yVGVzdGluZyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KQogewogICAgIEZldGNoRXZlbnQ6OkluaXQgaW5pdDsKICAgICBp
bml0LnJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCB7IH0sIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgeyB9KSwgeyB9LCB7
IH0sIHsgfSk7Ci0gICAgcmV0dXJuIEZldGNoRXZlbnQ6OmNyZWF0ZSgqY29udGV4dC5nbG9iYWxP
YmplY3QoKSwgImZldGNoIiwgV1RGTW92ZShpbml0KSwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsK
KyAgICByZXR1cm4gRmV0Y2hFdmVudDo6Y3JlYXRlKCpjb250ZXh0Lmdsb2JhbE9iamVjdCgpLCBl
dmVudE5hbWVzKCkuZmV0Y2hFdmVudCwgV1RGTW92ZShpbml0KSwgRXZlbnQ6OklzVHJ1c3RlZDo6
WWVzKTsKIH0KIAogc3RhdGljIGlubGluZSBSZWY8RE9NUHJvbWlzZT4gcmV0cmlldmVIYW5kbGVk
UHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZlB0cjxET01Qcm9t
aXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3Jz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IDZkZjNmMGM5M2Vm
NDU2MGIyOTc2M2Q4YjE0ZmQyODU3MjhkYmM3NjguLmVmNGNkZWFiZGU0OWRlYzQwNDJhNmY4MzI1
MGI2ZTJmNzcyNjAxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC04MywxMCArODMs
MTAgQEAgdm9pZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlw
ZVN0cmluZywgVGV4dFBvc2l0aW9uIHBvc2l0aW8KIAogc3RhdGljIGlubGluZSBSZWY8RWxlbWVu
dD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlcykKIHsKLSAgICBSZWY8RWxlbWVudD4gcmVwb3J0RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCAicGFy
c2VyZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUpOworICAgIFJlZjxFbGVtZW50PiBy
ZXBvcnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxB
dG9tKCksICJwYXJzZXJlcnJvciJfcywgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKIAogICAg
IFZlY3RvcjxBdHRyaWJ1dGU+IHJlcG9ydEF0dHJpYnV0ZXM7Ci0gICAgcmVwb3J0QXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFj
ZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFy
Z2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayIpKTsKKyAgICBy
ZXBvcnRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxv
Y2s7IHdoaXRlLXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAg
MWVtIDAgMWVtOyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJs
YWNrIl9zKSk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyU2V0QXR0cmlidXRlcyhyZXBvcnRB
dHRyaWJ1dGVzKTsKIAogICAgIGF1dG8gaDMgPSBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZSho
M1RhZywgZG9jdW1lbnQpOwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxFbGVt
ZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29u
cwogCiAgICAgYXV0byBmaXhlZCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwog
ICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGZpeGVkQXR0cmlidXRlczsKLSAgICBmaXhlZEF0dHJpYnV0
ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9u
dC1zaXplOjEycHgiKSk7CisgICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5
bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4Il9zKSk7CiAgICAg
Zml4ZWQtPnBhcnNlclNldEF0dHJpYnV0ZXMoZml4ZWRBdHRyaWJ1dGVzKTsKICAgICByZXBvcnRF
bGVtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChmaXhlZCk7CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2
b2lkIFhNTEVycm9yczo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQogI2lmIEVOQUJMRShYU0xU
KQogICAgIGlmIChtX2RvY3VtZW50LnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKICAgICAg
ICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKLSAgICAgICAgYXR0cmlidXRlcy5hcHBl
bmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3JtYWwiKSk7CisgICAgICAg
IGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTogbm9y
bWFsIl9zKSk7CiAgICAgICAgIGF1dG8gcGFyYWdyYXBoID0gSFRNTFBhcmFncmFwaEVsZW1lbnQ6
OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJTZXRBdHRyaWJ1
dGVzKGF0dHJpYnV0ZXMpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlckFwcGVuZENoaWxkKG1f
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhl
IHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVt
YmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiJfcykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IDIzNWZhMzg1ZGFkNjFlNWNiN2FiYWIwMTlh
ODk5YjMxZDNhMGIzNjkuLjAyZWU5OTBjZTA3ZGEwYmYzOTMwNGFiMWRiNzJhZTA3NGUxYzFhNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9p
ZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKQogewogICAgIFN0
cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxW
aWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKICAgICBtX2RvY3VtZW50LmZyYW1lKCkt
PnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShzY3Jp
cHRTdHJpbmcpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdu
b3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVwYXJlV2ViS2l0
WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFueSBzdHls
ZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0cmVlIGlzIHNo
b3duIGJlbG93LicpOyIpKSk7CisgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFs
dWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFy
ZVdlYktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBh
bnkgc3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJl
ZSBpcyBzaG93biBiZWxvdy4nKTsiX3MpKSk7CiAKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZp
ZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNz
c1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IGY2MmRjN2M4MzdmMDJm
NzAxMGM4MmQ5NzkwZTJiYWFmMjE0ZTFkMjEuLjZiMjg1ODA1OTRlZTM1ZTE1MjkzY2MzN2RmMDA4
MzBjMWUxYmEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC01NCw3ICs1NCw3
IEBAIFBERlBsdWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxkKCkKIFJl
ZjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0
ZUFubm90YXRpb25FbGVtZW50KCk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHR5cGVBdHRy
LCAicGFzc3dvcmQiKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJwYXNz
d29yZCJfcyk7CiAgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5
dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAgIHJldHVybiBlbGVtZW50Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGlu
Z0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJ
LmNwcAppbmRleCA3M2ZjMDEzNDJjOGI3ZjQxNGNjOGRjMTVjOGJjN2Q1ZDk5YjQ3NWM0Li41OGZh
M2U0MjFjNzEwZGVkZWZmZjMxZGUyNGNkZWM0OGI5ZWViYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMjA0Myw3ICsy
MDQzLDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6bWVzc2FnZXMoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW4KICAgICAgICAgZGljdGlvbmFyeS0+cHV0
RGlyZWN0KHZtLCBpc1N5bmNJZGVudCwgSlNDOjpqc0Jvb2xlYW4obWVzc2FnZUlzU3luYyhuYW1l
KSkpOyAgICAgICAgICAgIAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAKLSAgICAgICAgbWVzc2FnZXNPYmplY3QtPnB1
dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyh2bSwgZGVzY3JpcHRpb24o
bmFtZSkpLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgbWVzc2FnZXNPYmplY3QtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tTGF0aW4xKHZtLCBkZXNjcmlwdGlvbihuYW1lKSksIGRp
Y3Rpb25hcnkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDE0MGVjYWRiYTdmN2NlYTY2
MGExMTcwYTU5YTgxNWU0ZTcwNmY1ZTQuLjRlMmU5YmE4MjViMGJhYmI0OTdjMGQ5OWZjODk1YzVk
MDAzNTdhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC0zNDQyLDcgKzM0NDIsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24+IFdlYlBhZ2U6OmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24o
KQogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzVGVsZXBob25lRmllbGQoKSkKICAgICAgICAg
ICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpQaG9uZTsKICAgICAgICAg
ZWxzZSBpZiAoZWxlbWVudC5pc051bWJlckZpZWxkKCkpCi0gICAgICAgICAgICBpbmZvcm1hdGlv
bi5lbGVtZW50VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwYXR0ZXJuIikgPT0gIlxcZCoi
IHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwYXR0ZXJuIikgPT0gIlswLTldKiIgPyBJbnB1dFR5
cGU6Ok51bWJlclBhZCA6IElucHV0VHlwZTo6TnVtYmVyOworICAgICAgICAgICAgaW5mb3JtYXRp
b24uZWxlbWVudFR5cGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnBhdHRlcm5B
dHRyKSA9PSAiXFxkKiIgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpwYXR0ZXJu
QXR0cikgPT0gIlswLTldKiIgPyBJbnB1dFR5cGU6Ok51bWJlclBhZCA6IElucHV0VHlwZTo6TnVt
YmVyOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkpCiAg
ICAgICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElucHV0VHlwZTo6RGF0ZVRpbWVM
b2NhbDsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc0RhdGVGaWVsZCgpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ2N2NlYjliYTFhMjY1
Y2M5NTM3ZmEwZjA4MmYwYTljODE0NzYwMTIuLjAyNWJiMDUxNWQ2Y2E4YmQ1NGVjOWZhN2Q2NTY1
ZjRhNDE2Y2Y5OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0
aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9B
dG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIyLTA0LTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbIGlPUyBpUGhvbmUgMTIgXSBmYXN0L2hpZHBpICYgZmFzdC9sYXllcnMvaGlkcGkgdGVz
dHMgYXJlIGZsYWt5IHRleHQvaW1hZ2UgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9BdG9tU3RyaW5nLmNwcAppbmRleCBiZTc0MTU0ZTM4OGJhN2M1NjQ2MWVjOTZiYTcw
MDNlMWQ5MmI2OGVhLi4wM2YxOWIwNDEzMmU1YjUwYzNkODRmZmZlZTg3YTZhYTU4ZWM5YmRhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcApAQCAtNDks
NyArNDksNyBAQCBURVNUKFdURiwgQXRvbVN0cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWxVbmlxdWVu
ZXNzKQogICAgIEF0b21TdHJpbmcgc3RyaW5nMigiVGVtcGxhdGUgTGl0ZXJhbCIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBBU1NFUlRfRVEoc3RyaW5nMS5pbXBsKCks
IHN0cmluZzIuaW1wbCgpKTsKIAotICAgIEF0b21TdHJpbmcgc3RyaW5nMygiVGVtcGxhdGUgTGl0
ZXJhbCIpOworICAgIEF0b21TdHJpbmcgc3RyaW5nMygiVGVtcGxhdGUgTGl0ZXJhbCJfcyk7CiAg
ICAgQVNTRVJUX0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmczLmltcGwoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCmluZGV4
IGI0NDJlNDM2OGMwM2RiN2JhNjMwYzdhZWEyYTk4MzVkMzQ4YjQ0YjguLjAyYjYxNjRiZDU5ZTlm
MjFmZDRjZjg3OTZmOGZjYjQ5ZmU2YmJlZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdURiwgU3RyaW5nT3BlcmF0b3JzKQogewogICAgIFN0
cmluZyBzdHJpbmcoIlN0cmluZyJfcyk7Ci0gICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nKCJBdG9t
U3RyaW5nIik7CisgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nKCJBdG9tU3RyaW5nIl9zKTsKICAg
ICBBU0NJSUxpdGVyYWwgbGl0ZXJhbCB7ICJBU0NJSUxpdGVyYWwiX3MgfTsKIAogICAgIFN0cmlu
ZyBzdHJpbmdWaWV3QmFja2luZyB7ICJTdHJpbmdWaWV3Il9zIH07CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCmluZGV4IGJjZjAzMjk1NWJlMmViZGZmZTY5M2Q4YThiYmQ4MmJmOTQyZjlkOTkuLjM4MGYz
NDBiMWE0MzFmMjQ3MmMwMmExMWI5NThhOGJkYTY5MmYwNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xs
ZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5SVEwpCiB7CiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
IlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAg
ZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdU
Rk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtOTQsNyArOTQsNyBA
QCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVm
dFJ1bkluUlRMKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZh
bmNlSW5SVEwpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAg
ICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0
T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgw
KTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250
LnVwZGF0ZSgpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xs
ZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKIHsKICAgICBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
THVjaWRhR3JhbmRlIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFHcmFu
ZGUiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENh
c2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAg
LTE4MSw3ICsxODEsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlh
bEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRl
c3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5kZSIp
OworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIl9zKTsKICAgICBk
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RG
TW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yMTgsNyArMjE4LDcg
QEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIp
CiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5v
T3JpZ2lucykKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAg
IGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRP
bmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoNDgp
OwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQu
dXBkYXRlKCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiBURVNUX0YoQ29tcGxleFRleHRD
b250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lvbikKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsK
KyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNj
cmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgVEVTVF9G
KENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24pCiBURVNUX0YoQ29tcGxl
eFRleHRDb250cm9sbGVyVGVzdCwgVmVydGljYWxBZHZhbmNlcykKIHsKICAgICBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
VGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBk
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RG
TW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0zMzgsNyArMzM4LDcg
QEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCiBU
RVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVG90YWxXaWR0aFdpdGhKdXN0aWZpY2F0
aW9uKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVz
Y3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZh
bWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAg
ICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRh
dGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmlu
ZGV4IDJmMjhkNGU2NjUzMzBmYzY4NjNlNDFlMDdlZDdiYzdiZGIwZTQ0NjQuLjQwNmQwODczYWRm
OWQ2YjMxZTFiYWFlOGM3NWEwZDdkZTc0YWQyNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtOTgsNyArOTgsNyBAQCBURVNUKEJpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgVGV4dCkKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0IGN0eChwcmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAKICAgICBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAg
ICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQo
V1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7Cg==
</data>
<flag name="commit-queue"
          id="485918"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457336</attachid>
            <date>2022-04-12 09:40:54 -0700</date>
            <delta_ts>2022-04-12 10:34:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412094053.patch</filename>
            <type>text/plain</type>
            <size>112210</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uMzk0N2VmNTY3MmFiYjUzNDFj
MDhjNDExNGUwY2Y5MzJkMDQyOWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KCIiX3MpOwogCiAgICAgICAgIC8vIFdoZW4gc3RhcnRpbmcgV2ViVGhyZWFkIHZp
YSBTdGFydFdlYlRocmVhZCBmdW5jdGlvbiwgd2UgaGF2ZSBzcGVjaWFsIHBlcmlvZCBiZXR3ZWVu
IHRoZSBwcm9sb2d1ZSBvZiBTdGFydFdlYlRocmVhZCBhbmQgc3Bhd25pbmcgV2ViVGhyZWFkIGFj
dHVhbGx5LgogICAgICAgICAvLyBJbiB0aGlzIHBlcmlvZCwgYGlzTWFpblRocmVhZCgpYCByZXR1
cm5zIGZhbHNlIGV2ZW4gaWYgdGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNl
IFdlYlRocmVhZCBpcyBub3cgZW5hYmxlZCBhbmQgd2UgYXJlIG5vdCB0YWtpbmcgYSBXZWJUaHJl
YWQgbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggMzUwNjM5ZGM1ZDZmYTI4MzE3
NGU1YzE0NjFiN2Q0NWNiNDIwNTc1OS4uMDY5YWY2ZDMyNTlkMzJiMjRjOTVhMjU0MDNhYTNmYWMw
ZDgwYjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTM5LDExICszOSwxMiBAQCBw
dWJsaWM6CiAKICAgICBBdG9tU3RyaW5nKCk7CiAgICAgQXRvbVN0cmluZyhjb25zdCBMQ2hhciop
OwotICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOwogICAgIEF0b21TdHJpbmcoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqKTsKIAorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcgZnJvbUxhdGluMShjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKSB7IHJldHVybiBBdG9tU3RyaW5nKGNoYXJhY3RlcnMpOyB9CisKICAgICB0ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgZXhwbGljaXQgQXRvbVN0cmluZyhjb25zdCBWZWN0
b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgY2hhcmFjdGVycykKICAgICAgICAgOiBtX3N0cmlu
ZyhBdG9tU3RyaW5nSW1wbDo6YWRkKGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUo
KSkpCkBAIC0xNjcsNiArMTY4LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAg
QXRvbVN0cmluZyhjb25zdCBjaGFyKik7CisKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlw
ZSB7IFVwcGVyLCBMb3dlciB9OwogICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZT4gQXRvbVN0
cmluZyBjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3Q7CiAKQEAgLTE4MCw2ICsxODMsNyBAQCBzdGF0
aWNfYXNzZXJ0KHNpemVvZihBdG9tU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJp
bmcgYW5kIFN0cmluZyBtdXN0CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgp
OyB9CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IExDaGFyKik7CiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIp
IHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihiKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwg
QVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0
dXJuIGEuaW1wbCgpICYmIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9ICAg
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
IGIgPT0gYTsgfQpAQCAtMTkyLDYgKzE5Niw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXRvbVN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyBy
ZXR1cm4gIShhID09IGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
ICEoYiA9PSBhKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9
CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0
b21TdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApp
bmRleCA4Y2RiY2E3N2FmMzgzMDdiMmI0YzBhNGQyNWExZjBlOTExYWJiMWRlLi42MjQ5MmE5MDYw
NTRiNWQyY2Y4ZTU5MjFiYjljNDhlZjczZjM0YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAg
LTIyNiw5ICsyMjYsOSBAQCBJbml0RGF0YVJlZ2lzdHJ5JiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFy
ZWQoKQogCiBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIHsKLSAgICByZWdp
c3RlckluaXREYXRhVHlwZSgia2V5aWRzIiwgeyBzYW5pdGl6ZUtleWlkcywgZXh0cmFjdEtleUlE
c0tleWlkcyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgiY2VuYyIsIHsgc2FuaXRpemVD
ZW5jLCBleHRyYWN0S2V5SURzQ2VuYyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgid2Vi
bSIsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKKyAgICByZWdpc3Rlcklu
aXREYXRhVHlwZSgia2V5aWRzIl9zLCB7IHNhbml0aXplS2V5aWRzLCBleHRyYWN0S2V5SURzS2V5
aWRzIH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJjZW5jIl9zLCB7IHNhbml0aXplQ2Vu
YywgZXh0cmFjdEtleUlEc0NlbmMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoIndlYm0i
X3MsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKIH0KIAogSW5pdERhdGFS
ZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCBhNmQzMTAyYzg4MmE2MDk4ZjQ3OTJiN2JjZDA2YmEyNmQ0Mjg3ZDhhLi4wMDUwZGUx
NmMwY2JkN2YwNjU3NjliYzU4MjY0YjYxMTY4ZWRjZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE3ODYsNyArMTc4Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiAgICAgaWYgKCFp
czxFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOworICAgIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGNiMmFmMWY2NmJmNDFlNTZkMDAyZmVmMDAw
ZmUxMTBkMzIwNDMzZDEuLmNkYTQwMWViMGY1YzRjMGY3MGZlYjYxMDg5M2NmMTRkZjA1ZjJiMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU1dlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIktleWZyYW1lRWZmZWN0LmgiCkBAIC0xNDc0LDcgKzE0NzUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmNvbW1pdFN0eWxlcygpCiAKICAgICBhdXRvIGNvbXB1
dGVkU3R5bGVFeHRyYWN0b3IgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKCZzdHlsZWRFbGVtZW50
KTsKICAgICBhdXRvIGlubGluZVN0eWxlID0gc3R5bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICBpbmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHls
ZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSk7CisgICAgaW5saW5lU3R5bGUtPnNldENz
c1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKTsK
IAogICAgIGF1dG8mIGtleWZyYW1lU3RhY2sgPSBzdHlsZWRFbGVtZW50LmVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soUHNldWRvSWQ6Ok5vbmUpOwogICAgIC8vIER1cmluZyBpdGVyYXRpb24gcmVz
b2x2ZSgpIGNvdWxkIGNsZWFyIHRoZSB1bmRlcmx5aW5nIHByb3BlcnRpZXMgc28gd2UgdXNlIGEg
Y29weQpAQCAtMTUwNyw3ICsxNTA4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
Ojpjb21taXRTdHlsZXMoKQogICAgICAgICAgICAgaW5saW5lU3R5bGUtPnNldFByb3BlcnR5SW50
ZXJuYWwocHJvcGVydHksIGNzc1ZhbHVlLT5jc3NUZXh0KCksIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBpbmxpbmVTdHlsZS0+Y3NzVGV4
dCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0
ciwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50SW5saW5lcy5oCmluZGV4IDdjMWVmN2M2M2M0YzM1NzdkMTllZWVhMzlm
ZjJhYTAzODZmOGJlOWUuLjFmZTg2MDM5NDg5NTYwOGM2ODhhNDMxY2IxMGNhMTMxM2FjNzk4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRJbmxpbmVzLmgKQEAgLTM5LDcgKzM5LDcgQEAgaW5s
aW5lIFBBTDo6VGV4dEVuY29kaW5nIERvY3VtZW50Ojp0ZXh0RW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBQQUw6OlRleHRFbmNvZGluZygpOwogfQogCi1pbmxpbmUgQXRvbVN0cmluZyBEb2N1
bWVudDo6ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0RW5jb2RpbmcoKS5kb21OYW1lKCk7
IH0KK2lubGluZSBBdG9tU3RyaW5nIERvY3VtZW50OjplbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IEF0b21TdHJpbmc6OmZyb21MYXRpbjEodGV4dEVuY29kaW5nKCkuZG9tTmFtZSgpKTsgfQogCiBp
bmxpbmUgU3RyaW5nIERvY3VtZW50OjpjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gRG9jdW1lbnQ6
OmVuY29kaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGUwMGMxZjlhODk1NGVl
MGI4Y2JjMWQ4MmQzMGI2MDFkZmUxMzliZWMuLmVmZjgwYjU1ZjE3NTM0M2QyOTExYmI3ZjExZDQ1
MGViM2U5MzBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMyMjQsNyArMzIyNCw3IEBA
IHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFkeUV2ZW50
Rm9yVGVzdGluZygpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS53ZWJraXRJbWFn
ZVJlYWR5RXZlbnRFbmFibGVkKCkpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiX3MsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUZv
cmNlV2lsbEJlZ2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA0MTNl
MzQ2NzJlYjY3NTZkODlhMGZlNGFmZDY3ZjllYTZjNjhiYzVjLi4zNmM4OTc3YjE2YjQ1ZjNhODdl
ZWQ5M2M4YWU0YjQ2ZDU1Njk2YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQc2V1ZG9FbGVt
ZW50KTsKIAogY29uc3QgUXVhbGlmaWVkTmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCks
ICI8cHNldWRvPiIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFs
aWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCksICI8cHNldWRvPiJfcywgbnVsbEF0b20oKSk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDdk
OWQ1OWJlMWMxNTJmMDk4NWY1ZjUxOGJiOWZjY2U1NmY4N2JjOWEuLjgwZmZkMWVjM2Y4MjBmMTY2
NzJhYjE4YjY0MjUwNDNiOWJmNGJmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApA
QCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0JiB0YWJUZXh0Tm9kZSkKICAgICBhdXRvIHNwYW5F
bGVtZW50ID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgc3BhbkVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBs
ZVRhYlNwYW5DbGFzcyk7Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3aGl0ZS1zcGFjZTpwcmUiKTsKKyAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIndoaXRlLXNwYWNlOnByZSJfcyk7CiAKICAgICBzcGFuRWxlbWVudC0+YXBwZW5kQ2hp
bGQodGFiVGV4dE5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjgwMzMx
YjI4ZjA3Y2Y1NDZlZTExYzViYTBmYzFjM2E5ZGZjOTg5ZS4uOTc0Nzg4YTNiM2FhODEzZWYwMWUy
ZDIxYmIyNzkyMmMyMGZiN2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTE3
OCw3ICsxMTc4LDcgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKENvbXBvc2l0ZUVkaXRD
b21tYW5kJiBjb21tYW5kKQogCiBib29sIEVkaXRvcjo6d2lsbFVuYXBwbHlFZGl0aW5nKGNvbnN0
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVy
biBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRh
YmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJo
aXN0b3J5VW5kbyIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBv
c2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdS
b290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9y
Ojp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpA
QCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoRWRpdENv
bW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihjb21wb3NpdGlvbi5zdGFydGluZ1NlbGVjdGlvbigpKTsKICAgICBjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSk7Ci0gICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiAKICAgICB1
cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZv
aWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBv
c2l0aW9uKQogCiBib29sIEVkaXRvcjo6d2lsbFJlYXBwbHlFZGl0aW5nKGNvbnN0IEVkaXRDb21t
YW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVybiBkaXNwYXRj
aEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVu
dCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVk
byIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZWFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpAQCAtMTIxNCw3
ICsxMjE0LDcgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21w
b3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjb21wb3NpdGlvbi5lbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRp
bmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgImhpc3RvcnlSZWRvIik7CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogICAgIAogICAgIHVwZGF0ZUVk
aXRvclVJTm93SWZTY2hlZHVsZWQoKTsKIApAQCAtMTU1MCw4ICsxNTUwLDggQEAgdm9pZCBFZGl0
b3I6OnBhc3RlRm9udChGcm9tTWVudU9yS2V5QmluZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykK
IHZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkKIHsKICAgICBhdXRvIGJsb2NrUXVvdGUgPSBIVE1MUXVvdGVFbGVtZW50OjpjcmVh
dGUoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQoKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRvbVN0cmluZygiY2l0ZSIpKTsK
LSAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNz
QXR0ciwgQXRvbVN0cmluZyhBcHBsZVBhc3RlQXNRdW90YXRpb24pKTsKKyAgICBibG9ja1F1b3Rl
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCAiY2l0ZSJfcyk7
CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFz
c0F0dHIsIEFwcGxlUGFzdGVBc1F1b3RhdGlvbik7CiAKICAgICBhdXRvIGNoaWxkTm9kZSA9IGZy
YWdtZW50LmZpcnN0Q2hpbGQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hh
bmdlLmgKaW5kZXggZDRjNTA1YzhhNjcyYjJlMDhjZTg1ODMwZGE1OWUwOWYwMTQxNjExYi4uNWI2
ZjM3MDg5Y2VlZDU5NjZlMjUyY2U0YjQwNDExZWQ3MDcxMDE0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgVGV4dDsK
IAogI2RlZmluZSBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAgICJBcHBsZS1pbnRlcmNoYW5nZS1u
ZXdsaW5lIgogI2RlZmluZSBBcHBsZUNvbnZlcnRlZFNwYWNlICAgICAgICJBcHBsZS1jb252ZXJ0
ZWQtc3BhY2UiCi0jZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxlLXBhc3Rl
LWFzLXF1b3RhdGlvbiIKLSNkZWZpbmUgQXBwbGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUt
c3R5bGUtc3BhbiIKLSNkZWZpbmUgQXBwbGVUYWJTcGFuQ2xhc3MgICAgICAgICAiQXBwbGUtdGFi
LXNwYW4iCi0jZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldlYktpdC1tc28tbGlz
dC1xdWlya3Mtc3R5bGUiCisjZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxl
LXBhc3RlLWFzLXF1b3RhdGlvbiJfcworI2RlZmluZSBBcHBsZVN0eWxlU3BhbkNsYXNzICAgICAg
ICJBcHBsZS1zdHlsZS1zcGFuIl9zCisjZGVmaW5lIEFwcGxlVGFiU3BhbkNsYXNzICAgICAgICAg
IkFwcGxlLXRhYi1zcGFuIl9zCisjZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldl
YktpdC1tc28tbGlzdC1xdWlya3Mtc3R5bGUiX3MKIAogLy8gQ29udHJvbHMgd2hldGhlciBhIHNw
ZWNpYWwgQlIgd2hpY2ggaXMgcmVtb3ZlZCB1cG9uIHBhc3RlIGluIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kIG5lZWRzIHRvIGJlIGluc2VydGVkCiAvLyBhbmQgbWFraW5nIHNlcXVlbmNlIG9mIHNw
YWNlcyBub3QgY29sbGFwc2libGUgYnkgaW5zZXJ0aW5nIG5vbi1icmVha2luZyBzcGFjZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCmluZGV4
IDNjNDYxNDNhNzgxYzM2ZWM3OTRlZjdlNzFiNTI4MjUxYjgxMDllMDYuLjE3YTQ4NzA4ZTJiZjg5
ZTUyYmNmN2YyY2Q4MWU2NmFiMDdlOGY2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29s
IGlzTGlzdE9ySW5kZW50QmxvY2txdW90ZShjb25zdCBOb2RlKiBub2RlKQogfQogCiBJbmRlbnRP
dXRkZW50Q29tbWFuZDo6SW5kZW50T3V0ZGVudENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBF
SW5kZW50VHlwZSB0eXBlT2ZBY3Rpb24pCi0gICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQo
ZG9jdW1lbnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9u
ZTsgcGFkZGluZzogMHB4OyIpCisgICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQoZG9jdW1l
bnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFk
ZGluZzogMHB4OyJfcykKICAgICAsIG1fdHlwZU9mQWN0aW9uKHR5cGVPZkFjdGlvbikKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA0
YTMyNmU2Njg4MDk0MGZiNTM0ODVmOTNhMTMzOTlkMDJhNmNhMjY4Li5lZmVjNTcyZWRiMjgwZWUx
ZjNhNzM0ZTE3ZjFkNmFhMDI4NTliNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC01OTUsNyArNTk1LDcgQEAgTlNBcnJheSAqRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRS
YW5nZSwgT3AKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmPEhUTUxBbmNob3JFbGVtZW50
PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRIcmVmKGNvcnJlc3BvbmRpbmdVUkwpOwotICAg
ICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0RGlyKCJsdHIiKTsKKyAgICAgICAgICAgIGFuY2hv
ckVsZW1lbnQtPnNldERpcigibHRyIl9zKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZFVzZUxp
Z2h0TGlua3MpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMmQ4ZjhiMzM1OTMwZDA3ZGQzMzI2
YjgxMDY1ZjJkNGZkODM1YWNhZS4uN2U1OTUyYjdhOTYyODcwNzBlODAzNzk4ZDU5ZDhmYzJmN2Iz
OWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTE3NCw3ICsxMTc0LDcgQEAg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxl
UmFuZ2UmIGNvbnRleHQsIGNvbnN0IFMKIAogICAgIGF1dG8gY3JlYXRlSFRNTEJSRWxlbWVudCA9
IFsmZG9jdW1lbnRdKCkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBIVE1MQlJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOworICAgICAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwg
QXRvbVN0cmluZzo6ZnJvbUxhdGluMShBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOwogICAgICAg
ICByZXR1cm4gZWxlbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmNwcAppbmRleCA1MDQ5NWMxN2I5Y2E5NzkyMDNlZjk4NGJmMjgxNjM0ZTUyMGZhZTRj
Li5hOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4YjEyYWVhMDYzMzAwMzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxB
dWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2MKIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50Ojpj
cmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBB
dG9tU3RyaW5nJiBzcmMpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGF1ZGlvVGFnLCBk
b2N1bWVudCwgZmFsc2UpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24ocHJlbG9hZEF0dHIsICJhdXRvIik7CisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVsb2FkQXR0ciwgImF1dG8iX3MpOwogICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAppbmRleCBiZjU0MzJhZjMxNmU1YTc0YWYyYWQyNzNmMTE1MjZlNGRiNDViMmNiLi42
OGJjMjM4ZWJkOTFhNDE3YmNiZDhjOTU4NjVjNzM1NTliZmQ1ZTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5U2xv
dE5hbWUoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gc3VtbWFyeVNsb3QoInN1bW1hcnlTbG90Iik7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNs
b3QiX3MpOwogICAgIHJldHVybiBzdW1tYXJ5U2xvdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCAxYjM2ZDViMzZmMDAxYWQwN2U5ZTZhYTAyODY4MTYyNzIyNDY0ZDMw
Li42YjFkOGQzYzFkMTAzYTVmMDJiODAzMjAzZmVmZDgwYjA2Y2QwZDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNjk2LDcgKzY5Niw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
OnRyYW5zbGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZShib29s
IGVuYWJsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRyYW5z
bGF0ZUF0dHIsIGVuYWJsZSA/ICJ5ZXMiIDogIm5vIik7CisgICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIl9zIDogIm5vIl9z
KTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc0V2ZXJOZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjA5YjY4MjM5NjM5OWZlODA2
OWI5NGM4MjE5ZWU0Mzg2MWYwMWE3Mi4uYmFiNTExMWQyNmVhOTA5YTdmNWMwZDYzN2I3NTI4OTdk
Y2QyNWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0y
NjcwLDcgKzI2NzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKIHsKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47
Ci0gICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
KSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBv
cnRRdWlyaygpKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3Mo
KS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNC
cm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygpKTsKICAgICBtX3BsYXllci0+c2V0
U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGRDb250aW51ZSk7CiB9CiAjZW5kaWYK
QEAgLTI2ODUsNyArMjY4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJL
ZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKICAgICBpZiAoIWRvY3VtZW50
KCkuc2V0dGluZ3MoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCisg
ICAgaWYgKCFoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50
KQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIC8vIE9ubHkgZmlyZSBhbiBl
cnJvciBpZiBFTkNSWVBURURfTUVESUEgaXMgbm90IGVuYWJsZWQsIHRvIGdpdmUgY2xpZW50cyBv
ZiB0aGUKICAgICAgICAgLy8gImVuY3J5cHRlZCIgZXZlbnQgYSBjaGFuY2UgdG8gaGFuZGxlIGl0
IHdpdGhvdXQgcmVzdWx0aW5nIGluIGEgc3ludGhldGljIGVycm9yLgpAQCAtNDcwNSw3ICs0NzA1
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCgpCiB7CiAgICAg
YXV0byB0YXNrID0gW3RoaXNdIHsKICAgICAgICAgaWYgKGF1dG8gcm9vdCA9IHVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgicmVzaXplIiwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CisgICAgICAgICAgICByb290LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnJlc2l6ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKICAgICB9OwogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBXVEZNb3ZlKHRhc2spKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggOGNlYjg4YTNiMTA3YmRmNjQ5YTVm
MjJhMDBhODJlOTQyNGNlMmVhNy4uYmQ0NGUyZDAyOGE3MDA4ODYzNmZmMjY2MDYzNzdlYmVkZGY5
NzdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0xOTAs
MTUgKzE5MCwxNSBAQCBzdGF0aWMgdm9pZCBzZXRWYWx1ZUNsYXNzKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbiBnYQogewogICAgIHN3aXRjaCAoZ2F1
Z2VSZWdpb24pIHsKICAgICBjYXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uT3B0aW11
bToKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJv
cHRpbXVtIik7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAib3B0aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVk
b0lkczo6d2Via2l0TWV0ZXJPcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uU3Vib3B0aW1hbDoKLSAgICAgICAgZWxl
bWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVtIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAic3Vib3B0
aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJTdWJvcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhU
TUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uRXZlbkxlc3NHb29kOgotICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgImV2ZW4tbGVzcy1nb29kIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZXZlbi1s
ZXNzLWdvb2QiX3MpOwogICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6
OndlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgpAQCAtMjM0LDE3ICsyMzQsMTcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpkaWRB
ZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCiAKICAgICAvLyBQc2V1ZG9z
IGFyZSBzZXQgdG8gYWxsb3cgYXV0aG9yIHN0eWxpbmcuCiAgICAgYXV0byBpbm5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgaW5uZXItPnNldElkQXR0cmlidXRl
KCJpbm5lciIpOworICAgIGlubmVyLT5zZXRJZEF0dHJpYnV0ZSgiaW5uZXIiX3MpOwogICAgIGlu
bmVyLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlcklubmVyRWxlbWVudCgp
KTsKICAgICByb290LmFwcGVuZENoaWxkKGlubmVyKTsKIAogICAgIGF1dG8gYmFyID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBiYXItPnNldElkQXR0cmlidXRlKCJi
YXIiKTsKKyAgICBiYXItPnNldElkQXR0cmlidXRlKCJiYXIiX3MpOwogICAgIGJhci0+c2V0UHNl
dWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJCYXIoKSk7CiAgICAgaW5uZXItPmFwcGVu
ZENoaWxkKGJhcik7CiAKICAgICBtX3ZhbHVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKLSAgICBtX3ZhbHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiKTsKKyAgICBtX3Zh
bHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiX3MpOwogICAgIGJhci0+YXBwZW5kQ2hpbGQoKm1f
dmFsdWUpOwogCiAgICAgZGlkRWxlbWVudFN0YXRlQ2hhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAppbmRleCA4MDQxZWE0MmMzYmE3OTU1NzVmM2EwMmI1ZTI2MzliNTdl
YTQ0MDQ1Li4zOTZmOWRjOTY4ODEwMzYxOTY0YWQyOGVlMjhmOWI1MGI1ZGMxOGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzMCwxNiArMjMwLDE2IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIHJvb3RFbGVtZW50
LT5hcHBlbmRDaGlsZChoZWFkKTsKIAogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2lu
OiAwcHgiKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiAwcHgi
X3MpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKGRvY3VtZW50KCku
bG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgIGJvZHktPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJ3aGl0ZSJfcyk7CiAgICAg
cm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHkpOwogICAgIAogICAgIGF1dG8gaW1hZ2VFbGVt
ZW50ID0gSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgaWYgKG1fc2hv
dWxkU2hyaW5rSW1hZ2UpCi0gICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgZGlzcGxheTpibG9jazsgbWFyZ2luOmF1
dG87IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQt
cmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxl
ZnQpOyIpOworICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICIt
d2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvOyBwYWRk
aW5nOmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBl
bnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3Mp
OwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRy
LCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5nOmVudihzYWZlLWFyZWEtaW5zZXQt
dG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRv
bSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5n
OmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYo
c2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3MpOwog
ICAgIGltYWdlRWxlbWVudC0+c2V0TG9hZE1hbnVhbGx5KHRydWUpOwogICAgIGltYWdlRWxlbWVu
dC0+c2V0U3JjKHVybCgpLnN0cmluZygpKTsKICAgICBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCktPnNldFJlc3BvbnNlKGxvYWRlcigpLT5yZXNwb25zZSgpKTsKQEAgLTI1Myw4ICsyNTMsOCBA
QCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICNlbHNlCiAg
ICAgICAgIGF1dG8gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgICAgIGlmIChSZWZQdHI8RE9NV2luZG93PiB3aW5kb3cgPSB0aGlzLT5kb21XaW5kb3co
KSkKLSAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVu
ZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOworICAgICAgICAgICAgd2lu
ZG93LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgbGlzdGVuZXIu
Y29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKICNl
bmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcAppbmRleCA0ZTE5NDYx
NmVjZTI1M2M5NDEyNGNmYmU3MjQ1OGFiYmJkODUzYjBkLi41OWRmYjAyMTI4NjUwMGM1NWU3YjJi
ZDU5NWNkODQzN2NkMTY4ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCkKICAgICAvLyBEZXNjcmlwdGlvbiBvZiBwYXJhbWV0ZXJzOgogICAgIC8vIC0gYCNwYWdlbW9k
ZT1ub25lYCBwcmV2ZW50cyB0aGUgc2lkZWJhciBmcm9tIHNob3dpbmcgb24gbG9hZC4KICAgICAv
LyAtIEVtcHR5IGA/ZmlsZT1gIHBhcmFtZXRlciBwcmV2ZW50cyBkZWZhdWx0IHBkZiBmcm9tIGxv
YWRpbmcuCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpz
L3dlYi92aWV3ZXIuaHRtbD9maWxlPSNwYWdlbW9kZT1ub25lIjsKKyAgICBhdXRvIHZpZXdlclVS
TCA9ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9I3Bh
Z2Vtb2RlPW5vbmUiX3M7CiAgICAgYXV0byByb290RWxlbWVudCA9IEhUTUxIdG1sRWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKICAgICBhcHBlbmRDaGlsZChyb290RWxlbWVudCk7CiAgICAgcm9vdEVs
ZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFBERkRv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgbV9pZnJhbWUtPnNldEF0dHJp
YnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJv
cmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIAogICAgIG1fbGlzdGVuZXIgPSBQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0
ZSgqdGhpcyk7Ci0gICAgbV9pZnJhbWUtPmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAqbV9saXN0
ZW5lciwgZmFsc2UpOworICAgIG1faWZyYW1lLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQsICptX2xpc3RlbmVyLCBmYWxzZSk7CiAKICAgICBib2R5LT5hcHBlbmRDaGls
ZCgqbV9pZnJhbWUpOwogfQpAQCAtMjIzLDkgKzIyMyw5IEBAIHZvaWQgUERGRG9jdW1lbnQ6Omlu
amVjdFN0eWxlQW5kQ29udGVudFNjcmlwdCgpCiAKICAgICBBU1NFUlQoY29udGVudERvY3VtZW50
LT5ib2R5KCkpOwogICAgIGF1dG8gc2NyaXB0ID0gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShz
Y3JpcHRUYWcsICpjb250ZW50RG9jdW1lbnQsIGZhbHNlKTsKLSAgICBzY3JpcHQtPmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKKyAg
ICBzY3JpcHQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgbV9saXN0
ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7CiAKLSAgICBzY3JpcHQtPnNldEF0dHJpYnV0
ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNj
cmlwdC5qcyIpOworICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsICJ3ZWJraXQtcGRm
anMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIl9zKTsKICAgICBjb250
ZW50RG9jdW1lbnQtPmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAppbmRleCBlMDFkZjM5MjkzNmU4MjA5Y2ViZDRkNjQ4NGJmZmUyOGUwNDJiNGVh
Li4wMDNhOTAxZTA0M2UzN2M4ZTNjMDY2OGM2MzM3MjQwZjZjZGU2MWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcApAQCAtODUsNyArODUsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSk7CiBzdGF0aWMgY29uc3RleHByIEltYWdlU21v
b3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVhbGl0eSA9IEltYWdlU21vb3RoaW5nUXVh
bGl0eTo6TG93OwogCiBjb25zdCBpbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6RGVm
YXVsdEZvbnRTaXplID0gMTA7Ci1jb25zdCBjaGFyKiBjb25zdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9ICJzYW5zLXNlcmlmIjsKK2NvbnN0IEFTQ0lJ
TGl0ZXJhbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9
ICJzYW5zLXNlcmlmIl9zOwogc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgRGVmYXVsdEZv
bnQgPSAiMTBweCBzYW5zLXNlcmlmIl9zOwogCiBzdGF0aWMgQ2FudmFzTGluZUNhcCB0b0NhbnZh
c0xpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDRhN2E0M2E3
Y2ZmZTgyNmFmODRiNzAxMzIwMmYyYjkzZTQ4NmRiNGEuLjViZjViNTMzOGFjYjIwN2NiM2IxNDkz
MDZlZTg0MTA3ODA2OGZlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTI5Niw3ICsyOTYsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRGb250
U2l6ZTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgRGVmYXVsdEZvbnRGYW1pbHk7Cisg
ICAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBEZWZhdWx0Rm9udEZhbWlseTsKIAogICAgIGNv
bnN0IFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0K
ICAgICB2b2lkIHJlYWxpemVTYXZlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggYTFmMTY3Y2IwODNjOTk4NDM2MTgzNDExODAyOWYy
ODVlNDFjMDAwNS4uZWRjYzZhZmQ2YzZmMDM4Yjg0YzRlNzFmNTc4YTY4ODg0MjdjNzEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01
NDQsNyArNTQ0LDcgQEAgc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBjcmVhdGUKICAgICBhZGROYW1lc1dpdGhQ
cmVmaXgobWFwLCB4bWxBdG9tKCksIFhNTE5hbWVzOjpnZXRYTUxBdHRycygpLCBYTUxOYW1lczo6
WE1MQXR0cnNDb3VudCk7CiAKICAgICBtYXAuYWRkKHhtbG5zQXRvbSgpLCBYTUxOU05hbWVzOjp4
bWxuc0F0dHIpOwotICAgIG1hcC5hZGQoInhtbG5zOnhsaW5rIiwgUXVhbGlmaWVkTmFtZSh4bWxu
c0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSSkpOworICAg
IG1hcC5hZGQoInhtbG5zOnhsaW5rIl9zLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlu
a05hbWUsIFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSk7CiAKICAgICByZXR1cm4gbWFw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggNDcwNmYyNmU4NDQwOWVlODEzY2QxM2JjNWY0ZTBhY2NmNjc0YTg2Ny4uNzhl
MTFmYzJjMTA4ZDc3ZmY4YzJhOTJhYTkyNWVmYzUyZTQzOTEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCgpCiAgICAg
Ly8gV2UgY3JlYXRlIGEgZmFrZSB0b2tlbiBhbmQgZ2l2ZSBpdCB0byB0aGUgdHJlZSBidWlsZGVy
IHJhdGhlciB0aGFuCiAgICAgLy8gc2VuZGluZyBmYWtlIGJ5dGVzIHRocm91Z2ggdGhlIGZyb250
LWVuZCBvZiB0aGUgcGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gZGlzdHJ1YmluZyB0aGUgbGluZS9j
b2x1bW4gbnVtYmVyIGNhbGN1bGF0aW9ucy4KLSAgICBBdHRyaWJ1dGUgYXR0cmlidXRlKHN0eWxl
QXR0ciwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpOwor
ICAgIEF0dHJpYnV0ZSBhdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3Jk
OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Il9zKTsKICAgICBBdG9tSFRNTFRva2VuIGZha2VQcmUo
SFRNTFRva2VuOjpTdGFydFRhZywgcHJlVGFnLT5sb2NhbE5hbWUoKSwgeyBXVEZNb3ZlKGF0dHJp
YnV0ZSkgfSk7CiAgICAgdHJlZUJ1aWxkZXIoKS5jb25zdHJ1Y3RUcmVlKFdURk1vdmUoZmFrZVBy
ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggODQ5Y2Q1
OTRhN2I5YTM5OGIwYzMxZmE5MGZjNjdkN2Y2ZDY3NmEyZi4uMTBmNGQxZGFlMGE5OTAyNWI1ZDQw
ZjIzOGRkNTVlYTZjMzY5ZDcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcApAQCAtODgsMTMgKzg4LDEzIEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBmb3JjZWRL
ZXl3b3JkKCkKIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpCiB7
Ci0gICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUo
bnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iX3MsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0VHJhY2smIFRl
eHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRy
YWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1l
bnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShu
dWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSJfcywgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgp
LCBlbXB0eUF0b20oKSkubGVha1JlZigpOwogICAgIHJldHVybiBhdXRvbWF0aWM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBiY2Y4ZTE3MmE2
NzMyMGY2Njg4MTIwNzQ3OWRmN2E4MGFiYWMxN2VlLi43N2M2YTE2MGJhOTViZDVhMjg2YzVkYTc0
OTM5ODM1ZTUxYjlhZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRl
eHRUcmFja0N1ZUJveCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVBdHRyaWJ1
dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVU
YWcobnVsbEF0b20oKSwgImN1ZSIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxRdWFsaWZpZWROYW1lPiBjdWVUYWcobnVsbEF0b20oKSwgImN1ZSJfcywgbnVsbEF0b20o
KSk7CiAgICAgcmV0dXJuIGN1ZVRhZzsKIH0KIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBjdWVCYWNrZ3JvdW5kVGFnKG51bGxBdG9tKCksICJjdWViYWNrZ3Jv
dW5kIiwgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGN1ZUJhY2tncm91bmRUYWcobnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiX3MsIG51bGxB
dG9tKCkpOwogICAgIHJldHVybiBjdWVCYWNrZ3JvdW5kVGFnOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCA5MzZkMjdiM2IyNzM3YzAwNzYx
OTM5NTIyNzFlNjg3Y2I1YzQ2NjU1Li4xOGIwNmYyOGRhYzUwNGEzY2ViMjVhYTk3OGFmMjg5NjAy
NWRjMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAK
QEAgLTQxLDE0ICs0MSwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViVlRURWxl
bWVudCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFtZShX
ZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tKCksICJ2IiwgbnVs
bEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdU
YWcobnVsbEF0b20oKSwgImxhbmciLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiIsIG51bGxBdG9tKCkpOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tKCks
ICJ1IiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGlUYWcobnVsbEF0b20oKSwgImkiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgpLCAicnVieSIsIG51bGxB
dG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhu
dWxsQXRvbSgpLCAicnQiLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyJfcywgbnVsbEF0b20oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZUYWcobnVsbEF0b20oKSwgInYi
X3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1l
PiBsYW5nVGFnKG51bGxBdG9tKCksICJsYW5nIl9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiJfcywgbnVs
bEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHVUYWco
bnVsbEF0b20oKSwgInUiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBpVGFnKG51bGxBdG9tKCksICJpIl9zLCBudWxsQXRvbSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgp
LCAicnVieSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxp
ZmllZE5hbWU+IHJ0VGFnKG51bGxBdG9tKCksICJydCJfcywgbnVsbEF0b20oKSk7CiAgICAgc3dp
dGNoIChub2RlVHlwZSkgewogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVDbGFzczoKICAgICAgICAg
cmV0dXJuIGNUYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmlu
ZGV4IGRlY2JlMTdhYmJmMWQ5YTQzZTQ4MGRjNzhjZDcyMzg1ZWI2MDk3NmQuLjFjNWM4NWUzMmIy
ODk0NWU2ZTJmMDExOGM3MWFjYzJmNGNkNWUyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5oCkBAIC02MywxMyArNjMsMTMgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxB
dG9tKCksICJ2b2ljZSIsIG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tKCksICJ2b2ljZSJfcywgbnVsbEF0
b20oKSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9t
KCksICJsYW5nIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgImxhbmciX3MsIG51bGxBdG9tKCkp
OwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCA2YWE2MTI2ZGQ3Y2FjNjgwMTE3YjI3N2I0NGE2YzE4NmVjMzcwNTM4Li5m
YTE4NDRhNmZmMWZlNWFhNTI4YWIyNTVjYzgxY2M0MjZlZWI5YjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSAidGV4dCJfczsKIAog
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJp
YVJlbGV2YW50QXR0clZhbHVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNv
bnRhaW5zKCJhbGwiKSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFs
bCJfcykpIHsKICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChh
cmlhUmVsZXZhbnRBZGRpdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVs
ZXZhbnQuYXBwZW5kKGFyaWFSZWxldmFudFJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAg
bGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChhcmlhUmVsZXZhbnRUZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKaW5kZXggNzNh
ZjgzNmVmNzQ2YzZiYjgwMzMyODc0OGM4ZmVjZWJkYTY3MjVmZC4uZjYxMTQ3MWE4NWUzZmU2OTNk
ZDZmM2FjYTYzZTIwMjQ4MjY1Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSW5zcGVjdG9y
T3ZlcmxheUxhYmVsOjpJbnNwZWN0b3JPdmVybGF5TGFiZWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBG
bG9hdFBvaW50IGxvY2EKIHN0YXRpYyBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KCkKIHsKICAgICBG
b250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRp
b24uc2V0RmFtaWxpZXMoeyAic3lzdGVtLXVpIiB9KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
RmFtaWxpZXMoeyAic3lzdGVtLXVpIl9zIH0pOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWln
aHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoMTIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKaW5kZXggMTdhMjk3YjVhYjM0NGM2YjIxODBkZDBmYTlhOTQ0MmZkYTMz
ZTM5Ny4uMjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTU5
Myw3ICsxNTkzLDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGEKICAgICAsIG1faXNTdHlsZVRl
eHRWYWxpZChmYWxzZSkKIHsKICAgICBtX2luc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6
OmNyZWF0ZShJbnNwZWN0b3JDU1NJZChpZCwgMCksIGlubGluZVN0eWxlKCksIHRoaXMpOwotICAg
IG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7
CisgICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0
eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCkKQEAgLTE2NjksNyArMTY2OSw3IEBA
IENTU1N0eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
aW5saW5lU3R5bGUoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6ZWxlbWVudFN0eWxlVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKCJzdHlsZSIpLnN0cmluZygpOworICAgIHJldHVybiBtX2Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAK
IFJlZjxDU1NSdWxlU291cmNlRGF0YT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
OjpydWxlU291cmNlRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQzODllYzA3YWU4N2JjOTVi
NTY4MDllOGRiODI1OTA4OGUwNTJhMDYuLjA2YzQ3MjNmNTcwMDcwNTFlYzYxOTA5YWM3MTlkZjNi
OGNiMmRjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMjI5LDcgKzIyMjksNyBAQCBSZWY8UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvckFjYwogICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB2
YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEBhcmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9zZWQgYXMg
WyJhZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgb3JkZXIgaXMgY29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBleHBlY3Rl
ZCBpbiBXZWJJbnNwZWN0b3JVSS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250
YWlucygiYWxsIikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygi
YWxsIl9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5h
ZGRJdGVtKGFyaWFSZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBs
aXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50UmVtb3ZhbHMpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5hZGRJdGVtKGFyaWFSZWxldmFu
dFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDlmMTdjMTI4YTMx
ODE2YTZhOTM5OGI1ZDJiMTQ1Njg1NGM1ZDlhNTEuLjM2ZmViYmVkY2UwZGUxODkxYWU0YTkyZDM5
NDI5NzkyMDNlYTFkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTI2
Myw3ICsyNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4g
TGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIG9wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSBwYXJhbXMucmVmZXJyZXJQb2xpY3k7CiAgICAgYXV0byBsaW5rUmVxdWVzdCA9
IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0KHVybCwgV1RGTW92ZShvcHRpb25z
KSwgZG9jdW1lbnQsIHBhcmFtcy5jcm9zc09yaWdpbik7CiAgICAgbGlua1JlcXVlc3Quc2V0UHJp
b3JpdHkoRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5Ojpmb3JSZXNvdXJjZVR5cGUodHlwZS52
YWx1ZSgpKSk7Ci0gICAgbGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CisgICAgbGlu
a1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIl9zKTsKICAgICBsaW5rUmVxdWVzdC5zZXRJZ25v
cmVGb3JSZXF1ZXN0Q291bnQodHJ1ZSk7CiAgICAgbGlua1JlcXVlc3Quc2V0SXNMaW5rUHJlbG9h
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudC5jcHAKaW5kZXggNjViMjZjYzliZDU3NWViMWEwMTVmNDVjYzVkZTY1Y2NkNTUzNTM3
Yi4uNTEwMjJjNjc1ZDI0ZjBiYjhhNTNiMTk1ZmU4OGIxYWYwM2QxMzcwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIGJvb2wgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29u
dGVudChjb25zdCBOb2RlJiBub2RlKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6cFRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnByZVRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlY3Rpb25UYWcpCi0gICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6c3R5bGVUYWcpICYmIGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZSgic2NvcGVkIikpCisg
ICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWcpICYm
IGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OnNjb3BlZEF0dHIpKQogICAgICAg
ICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGFibGVUYWcpCiAgICAgICAg
IHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDI1OWM3MjI1MzY3MWI1YTBh
ZTA4NWJjMDcxMmE0YjE1ZWIyNzk1ZDYuLmU5NGJkZmY4YTkzMzg1NGQ3ZDlmZGIwYmZjNmExODgx
YWQ1OTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRy
YXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBGbG9hdFJlY3Qg
bGVnZW5kUmVjdCA9IHsgYm91bmRzLm1heFgoKSAtIDMwLjBmLCAxMCwgMjAsIDIwIH07CiAgICAg
CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERl
c2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3Bl
Y2lmaWVkU2l6ZSgxMik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7
CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdT
ZXR0aW5ncyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgfQogCiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
SGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5jcHAKaW5kZXggZGRiYTgzNWVmODkyMDNhYWVhZGExZDMwM2IyMzY5NDU4ZDQ3MjgxMi4uYzRm
OWY2N2QwNjdmNGEzNDFlNzg5MTI2NjIzZTM5YTdkNTUxMzAwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRUb29sdGlwUHJldmVu
dEZyb21Qcm9jZWVkaW5nV2l0aENsaWNrKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBp
ZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50
KCkudXJsKCkuaG9zdCgpLCAiY292aWQuY2RjLmdvdiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5j
b250YWlucygidG9vbHRpcCIpOworICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInRvb2x0aXAiX3MpOwogfQogCiAvLyBGSVhNRTog
UmVtb3ZlIGFmdGVyIHRoZSBzaXRlIGlzIGZpeGVkLCA8cmRhcjovL3Byb2JsZW0vNzU3OTI5MTM+
CkBAIC00ODgsNyArNDg4LDcgQEAgc3RkOjpvcHRpb25hbDxFdmVudDo6SXNDYW5jZWxhYmxlPiBR
dWlya3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0KEV2ZW4KIAogICAgIC8vIE9u
IEdvb2dsZSBNYXBzLCB3ZSB3YW50IHRvIGxpbWl0IHNpbXVsYXRlZCBtb3VzZSBldmVudHMgdG8g
ZHJhZ2dpbmcgdGhlIGxpdHRsZSBtYW4gdGhhdCBhbGxvd3MgZW50ZXJpbmcgaW50byBTdHJlZXQg
Vmlldy4KICAgICBpZiAoaXNHb29nbGVNYXBzKCkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+
KHRhcmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRlKCJjbGFz
cyIpID09ICJ3aWRnZXQtZXhwYW5kLWJ1dHRvbi1wZWdtYW4taWNvbiIpCisgICAgICAgIGlmIChp
czxFbGVtZW50Pih0YXJnZXQpICYmIGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldCktPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikgPT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21h
bi1pY29uIikKICAgICAgICAgICAgIHJldHVybiBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXM7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNjMxLDggKzYzMSw4IEBAIGJvb2wgUXVpcmtz
OjpuZWVkc0lucHV0TW9kZU5vbmVJbXBsaWNpdGx5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KSBjb25zdAogICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykp
IHsKICAgICAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RvY3VtZW50
LT51cmwoKS5ob3N0KCksICJjYWxlbmRhci5nb29nbGUuY29tIikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBk
YXRhSW5pdGlhbFZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1pbml0aWFsLXZhbHVlIiwgbnVs
bEF0b20oKSk7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBk
YXRhUHJldmlvdXNWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtcHJldmlvdXMtdmFsdWUiLCBu
dWxsQXRvbSgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGRhdGFJbml0aWFsVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLWluaXRpYWwtdmFsdWUiX3Ms
IG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFt
ZT4gZGF0YVByZXZpb3VzVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLXByZXZpb3VzLXZhbHVl
Il9zLCBudWxsQXRvbSgpKTsKIAogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6YXV0b2NvbXBsZXRlQXR0ciksICJvZmYiKQogICAgICAgICAgICAgJiYgZWxlbWVudC5oYXNB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRhdGFJbml0aWFsVmFsdWVBdHRyKQpAQCAt
NjQ3LDcgKzY0Nyw3IEBAIGJvb2wgUXVpcmtzOjpuZWVkc0lucHV0TW9kZU5vbmVJbXBsaWNpdGx5
KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSBjb25zdAogICAgIGlmICghaG9zdC5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCIuZGVzbW9zLmNvbSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgJiYgZWxlbWVudC5wYXJlbnRF
bGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiZGNnLW1xLXRleHRhcmVhIik7CisgICAg
cmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQucGFyZW50RWxlbWVudCgp
LT5jbGFzc05hbWVzKCkuY29udGFpbnMoImRjZy1tcS10ZXh0YXJlYSJfcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIzLDEwICsx
MDIzLDEwIEBAIHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKICAgICAvLyBzcGFuIHdpdGggdGhlc2UgY2xhc3MgbmFtZXMsIG9yIHRo
ZSBzdmcsIG9yIHRoZSBzdmcncyBwYXRoLgogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkpIHsK
ICAgICAgICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAg
ICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dpbiIpCi0g
ICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiIp
Ci0gICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJzYy0xaWwzdXJ1LTMiKSB8fCBj
bGFzc05hbWVzLmNvbnRhaW5zKCJjSWhLZmQiKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5j
b250YWlucygiaXl2bjM0LTAiKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJiWUlqdGwiKSkKKyAg
ICAgICAgaWYgKGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJuZXItbG9naW4i
X3MpCisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1
dHRvbiJfcykKKyAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInNjLTFpbDN1cnUt
MyJfcykgfHwgY2xhc3NOYW1lcy5jb250YWlucygiY0loS2ZkIl9zKQorICAgICAgICAgICAgfHwg
Y2xhc3NOYW1lcy5jb250YWlucygiaXl2bjM0LTAiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
ImJZSWp0bCJfcykpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMzcs
NyArMTAzNyw3IEBAIHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgc3ZnRWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxl
bWVudCgpOwogCiAgICAgaWYgKHN2Z0VsZW1lbnQgJiYgc3ZnRWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKSB7Ci0gICAgICAgIGF1dG8gYXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXROYW1lZEl0ZW0oImFyaWEtbGFiZWwiKTsKKyAgICAgICAgYXV0byBhcmlhTGFiZWxB
dHRyID0gc3ZnRWxlbWVudC0+YXR0cmlidXRlcygpLmdldE5hbWVkSXRlbSgiYXJpYS1sYWJlbCJf
cyk7CiAgICAgICAgIGlmIChhcmlhTGFiZWxBdHRyICYmIGFyaWFMYWJlbEF0dHItPnZhbHVlKCkg
PT0gIlVzZXJGaWxsZWQgaWNvbiIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xMDU2LDI0ICsxMDU2LDI0IEBAIHN0YXRpYyBib29sIGlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9t
YWluQW5kRWxlbWVudChjb25zdCBVUkwmIHVybCwgY29uc3QgRWxlbWVudCYKICAgICAvLyBGSVhN
RSgyMTg3NzkpOiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVz
IHRoZWlyIGxvZ2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gInd3dy5t
aWNyb3NvZnQuY29tIl9zKSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAg
ICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJnbHlwaF9zaWduSW5fY2ly
Y2xlIikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9o
ZWFkZXJ0ZXh0IikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1l
Y3RybF9oZWFkZXIiKSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlu
cygiZ2x5cGhfc2lnbkluX2NpcmNsZSJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVz
KCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0Il9zKQorICAgICAgICB8fCBlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygibWVjdHJsX2hlYWRlciJfcykpOwogICAgIH0KICAgICAvLyBT
a3lwZSBjYXNlLgogICAgIC8vIEZJWE1FKDIyMDEwNSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2Ug
U2t5cGUgdW5kZXIgb3V0bG9vay5saXZlLmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyBy
ZWRlc2lnbi4KICAgICBpZiAodXJsLmhvc3QoKSA9PSAib3V0bG9vay5saXZlLmNvbSJfcykgewog
ICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJHUjV2YjBncVJEc2FGUGEiKQotICAgICAgICB8
fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3ki
KSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJH
UjV2YjBncVJEc2FGUGEiX3MpCisgICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJfMkFtMmp2VGFCejE3VUo4WG5meEZPeSJfcykpOwogICAgIH0KICAgICAvLyBTb255IE5l
dHdvcmsgRW50ZXJ0YWlubWVudCBsb2dpbiBjYXNlLgogICAgIC8vIEZJWE1FKDIxODc2MCk6IFJl
bW92ZSB0aGlzIHF1aXJrIG9uY2UgcGxheXN0YXRpb24uY29tIGNvbXBsZXRlcyB0aGVpciBsb2dp
biBmbG93IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9zdCgpID09ICJ3d3cucGxheXN0YXRpb24u
Y29tIl9zIHx8IHVybC5ob3N0KCkgPT0gIm15LnBsYXlzdGF0aW9uLmNvbSJfcykgewogICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFt
ZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24iKQotICAgICAgICB8fCBl
bGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24t
bGFiZWwiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2ln
bmluLWJ1dHRvbiIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5z
KCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRvbiJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFz
c05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uLWxhYmVsIl9zKQor
ICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2lnbmluLWJ1dHRv
biJfcykpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTIsNyArMTExMiw3IEBA
IHN0YXRpYyBib29sIGlzQkJDUG9wVXBQbGF5ZXJFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQoKSB8fCAhZWxlbWVudC5wYXJlbnRF
bGVtZW50KCktPmhhc0NsYXNzKCkgfHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSB8
fCAhcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5oYXNDbGFzcygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNz
TmFtZXMoKS5jb250YWlucygicF9hdWRpb0J1dHRvbl9idXR0b25Jbm5lciIpICYmIHBhcmVudEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iKTsK
KyAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlu
cygicF9hdWRpb0J1dHRvbl9idXR0b25Jbm5lciJfcykgJiYgcGFyZW50RWxlbWVudC0+cGFyZW50
RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImhpZGRlbiJfcyk7CiB9CiAKIFF1aXJr
czo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQW5kSGFu
ZGxlQ2xpY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGREaXNwYXRjaENsaWNrKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgY29uc3QKQEAgLTExODUsMTQgKzExODUsMTQgQEAgUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrKEVsZW1lbnQmIGUKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBr
aW5qYUxvZ2luVXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQg
ZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNl
cmJ1dHRvbicpOyBpZiAoZWxlbWVudHMgJiYgZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xp
Y2soKTsgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRl
cnZhbCh0cmlnZ2VyTG9naW5Gb3JtLCAyMDApOyJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZl
Y3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
OjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCi0gICAg
aWYgKGV2ZW50VHlwZSA9PSAiY2xpY2siKSB7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgICAg
ICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVu
dDsKIAogICAgICAgICAvLyBFbWJlZGRlZCBZb3VUdWJlIGNhc2UuCiAgICAgICAgIGlmIChlbGVt
ZW50Lmhhc0NsYXNzKCkgJiYgZG9tYWluID09IHlvdVR1YmVEb21haW4gJiYgIW1fZG9jdW1lbnQt
PmlzVG9wRG9jdW1lbnQoKSAmJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFk
VXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21haW4pKSB7CiAgICAgICAgICAgICBhdXRvJiBjbGFz
c05hbWVzID0gZWxlbWVudC5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAgICBpZiAoY2xhc3NOYW1l
cy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5z
KCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiIpKSB7CisgICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5j
b250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
Inl0cC13YXRjaC1sYXRlci1pY29uIl9zKSkgewogICAgICAgICAgICAgICAgIGlmIChSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21h
aW4pKSB7CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBbXShTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCkgeyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6
U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDE5NzQxZjYyZjZiNjZhMWJlMDc3N2RlZTZhM2FhMzlk
YjAyODBlZGMuLjEzNmY3Y2Q1MmQzNDNlODBiYTdjYzIwOTBmNmY2ODdhM2I2MDlkNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0yMDYsNyArMjA2LDcgQEAgU3Bhbjxj
b25zdCBBdG9tU3RyaW5nPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2
ZWRFdmVudE5hbWVzKCkKIAogY29uc3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFsbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyI7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
RXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyJfczsKICAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZWMzMWM1MzgwMDgzMjAwYjkwMGQyZWE1
Y2Y1NDBhMzY4OTdjZTY1NC4uNDIzN2NmNjA1OTg0ZGM2ZDUzNjA0NzQ2NzM1NWQzODQ2NzMxYWI4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zMDY3LDcgKzMwNjcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NNZXRhZGF0YVRyYWNrKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tZXRhZGF0YVRyYWNrID0gSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZDo6
TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6RGF0YSk7Ci0gICAg
bV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20u
YXBwbGUuc3RyZWFtaW5nIik7CisgICAgbV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0
YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20uYXBwbGUuc3RyZWFtaW5nIl9zKTsKICAgICBwbGF5ZXIo
KS0+YWRkVGV4dFRyYWNrKCptX21ldGFkYXRhVHJhY2spOwogfQogCkBAIC0zMDk2LDcgKzMwOTYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRU
ZXh0VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIGlmIChtX2N1cnJlbnRUZXh0VHJhY2sg
PT0gdHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJzZWxlY3RpbmcgdHJhY2sgd2l0aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFn
ZSgpIDogIiIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzZWxlY3RpbmcgdHJhY2sg
d2l0aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFnZSgpIDogZW1wdHlBdG9tKCkp
OwogCiAgICAgbV9jdXJyZW50VGV4dFRyYWNrID0gdHJhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGNmYTI5YjEx
MmVhMzI5NzNmYzg1NjM1YjY1ZTQyMWVhZmJmOTE0MDcuLjAxZjJjNjk3MTZmNjE4YWE0OGQyOGVl
MTY1ZjExODBmMGY0YmI5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gd2hpY2ggaXMgcHJlc3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9jb2RlYykKLSAgICAgICAg
ICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkp
OworICAgICAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEobV9vcmlnaW5h
bENvZGVjLnN0cmluZygpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCmluZGV4IDg1MjM0NmY2YjVjNTY3ZGUyOWYzNTE3N2RjNDg3MjM2NWRm
MjdkNDAuLmIwODY5ZjgwMDQ1NjE5ZTY5NjU4NjFjYjE3Mjk4MWVlZTFmMzFjM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFp
bnRJbmRpY2F0b3IoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFBsYQogICAgIFRl
eHRSdW4gdGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKIAogICAgIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkhlbHZldGljYSJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUo
Zm9udFNpemUpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDY3
ZDcwY2JjZjcyMzIzZTIwOTM5MjQwZDRkNDcwYzQzODExNjYwNmMuLmM3NmRkM2QyOWVkMzQ2OTZm
ZTFmNTA5MGQ3MThmYzdmMGYxMWI2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyhjb25zdCBHU3RyZWFtZXJS
ZWcKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1pbWVUeXBlIDogY3VycmVudC53
ZWJraXRNaW1lVHlwZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChtaW1lVHlwZSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZyhjdXJyZW50LmNhcHNTdHJpbmcpKTsKKyAg
ICAgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZzo6ZnJvbUxh
dGluMShjdXJyZW50LmNhcHNTdHJpbmcpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI2Miwy
NiArMjYyLDI2IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVT
ZXRGcm9tQ2Fwc01hcHBpbmcoY29uc3QgR1N0cmVhbWVyUmVnCiB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6RWxlbWVudEZhY3RvcmllcyYgZmFjdG9yaWVzKQogewogICAgIGlmIChmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29k
ZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOwotICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7Ci0gICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwot
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBm
YWxzZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIp
LCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJh
dWRpby9hYWMiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8veC1tNGEiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyJfcykpOworICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIl9zKSwgZmFsc2UpOwogICAgIH0K
IAogICAgIGF1dG8gb3B1c1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtb3B1cyIp
OwogICAgIGlmIChvcHVzU3VwcG9ydGVkICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmll
cy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvUGFy
c2VyLCAiYXVkaW8veC1vcHVzIikpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOworICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9
CiAKICAgICBhdXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtdm9y
YmlzIik7CiAgICAgaWYgKHZvcmJpc1N1cHBvcnRlZCAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBm
YWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpB
dWRpb1BhcnNlciwgImF1ZGlvL3gtdm9yYmlzIikpKSB7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiKSwgZmFsc2UpOwotICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiKSwgZmFsc2UpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIl9zKSwgZmFsc2UpOworICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiX3MpLCBmYWxzZSk7
CiAgICAgfQogCiAgICAgYm9vbCBtYXRyb3NrYVN1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby94
LW1hdHJvc2thIik7CkBAIC0yOTAsMjEgKzI5MCwyMSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cgogICAgICAgICBhdXRvIHZwOURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by94LXZwOSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogCiAgICAgICAgIGlmICh2cDhEZWNvZGVyQXZhaWxhYmxlIHx8IHZwOURlY29kZXJBdmFpbGFi
bGUpCi0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlk
ZW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJ2aWRlby93ZWJtIl9zKSk7CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUp
IHsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwg
dnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUu
aXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ2cDguMCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4Il9zKSwgdnA4
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4Il9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwOC4wIl9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICh2cDlEZWNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LXZwOSIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAi
KSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIiksIHZwOURlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ2cDkiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiX3Mp
LCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiX3MpLCB2cDlEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnAwOSoiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAgICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAg
ICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIl9z
KSk7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRBZGRNUDRDb250YWluZXIgPSBmYWxzZTsKQEAg
LTMxMiwzNSArMzEyLDM1IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFs
aXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgYXV0byBoMjY0
RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0o
c3RyaW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50
RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NERl
Y29kZXJBdmFpbGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9QYXJzZXIsICJ2aWRl
by94LWgyNjQiKSkpIHsKICAgICAgICAgc2hvdWxkQWRkTVA0Q29udGFpbmVyID0gdHJ1ZTsKLSAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioi
KSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCJfcyksIGgyNjREZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJhdmMqIl9zKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIl9zKSwgaDI2
NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBhdXRvIGgy
NjVEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxl
bWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjY1IiwgRWxlbWVu
dEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAgaWYgKGgyNjVE
ZWNvZGVyQXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvUGFyc2VyLCAidmlk
ZW8veC1oMjY1IikpKSB7CiAgICAgICAgIHNob3VsZEFkZE1QNENvbnRhaW5lciA9IHRydWU7Ci0g
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjUiKSwgaDI2NURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImh2YzEqIiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJoZXYx
KiIpLCBoMjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY1Il9zKSwgaDI2NURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImh2YzEqIl9zKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJl
KTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImhldjEqIl9zKSwg
aDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAo
c2hvdWxkQWRkTVA0Q29udGFpbmVyKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiX3MpKTsKICAgICB9CiAKICAg
ICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIs
IEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAgIGlm
ICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3Vy
YXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYx
IiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIl9zKSwgYXYxRGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygiYXYxIl9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAg
ICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiX3MpLCBhdjFEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgVmVjdG9yPEdzdENh
cHNXZWJLaXRNYXBwaW5nPiBtc2VDb21wYXRpYmxlTWFwcGluZyA9IHsKLSAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWFjMyIsIHsgfSwgeyJ4
LWFjMyIsICJhYy0zIiwgImFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyJhdWRpby94LWFjMyJ9LCAgeyJ4LWVh
YzMiLCAiZWMzIiwgImVjLTMiLCAiZWFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1mbGFjIiwgeyJhdWRpby94LWZsYWMiLCAi
YXVkaW8vZmxhYyJ9LCB7IngtZmxhYyIsICJmbGFjIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1hYzMiLCB7IH0sIHsgIngtYWMz
Il9zLCAiYWMtMyJfcywgImFjMyJfcyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6
VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyAiYXVkaW8veC1hYzMiX3MgfSwg
IHsgIngtZWFjMyJfcywgImVjMyJfcywgImVjLTMiX3MsICJlYWMzIl9zIH0gfSwKKyAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWZsYWMiLCB7
ICJhdWRpby94LWZsYWMiX3MsICJhdWRpby9mbGFjIl9zIH0sIHsieC1mbGFjIl9zLCAiZmxhYyJf
cyB9IH0sCiAgICAgfTsKICAgICBmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoZmFjdG9y
aWVzLCBtc2VDb21wYXRpYmxlTWFwcGluZyk7CiAKQEAgLTM1MCw3NiArMzUwLDc2IEBAIHZvaWQg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyCiAgICAgLy8gVGhlIG1pbWUtdHlwZXMgaW5pdGlhbGl6ZWQgYmVs
b3cgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIE1TRSBiYWNrZW5kLgogCiAgICAgVmVjdG9yPEdz
dENhcHNXZWJLaXRNYXBwaW5nPiBtYXBwaW5nID0gewotICAgICAgICB7IEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21pZGkiLCB7ICJhdWRpby9taWRpIiwgImF1
ZGlvL3JpZmYtbWlkaSIgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbWlkaSIsIHsgImF1ZGlvL21pZGkiX3MsICJhdWRpby9y
aWZmLW1pZGkiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1kdHMiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc2JjIiwgeyB9LCB7IH0g
fSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRp
by94LXNpZCIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1zcGVleCIsIHsgImF1ZGlvL3NwZWV4IiwgImF1ZGlvL3gt
c3BlZXgiIH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlv
RGVjb2RlciwgImF1ZGlvL3gtd2F2cGFjayIsIHsgImF1ZGlvL3gtd2F2cGFjayIgfSwgeyB9IH0s
Ci0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8v
bXBlZywgbXBlZ3ZlcnNpb249KGludCl7MSwyfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNl
IiwgeyAidmlkZW8vbXBlZyIgfSwgeyAibXBlZyIgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVl
eCJfcywgImF1ZGlvL3gtc3BlZXgiX3MgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC13YXZwYWNrIiwgeyAiYXVkaW8veC13
YXZwYWNrIl9zIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZp
ZGVvRGVjb2RlciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0
cmVhbT0oYm9vbGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciX3MgfSwgeyAibXBlZyJfcyB9IH0s
CiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8v
bXBlZ3RzIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpW
aWRlb0RlY29kZXIsICJ2aWRlby94LWRpcmFjIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwg
eyAidmlkZW8vZmx2IiwgInZpZGVvL3gtZmx2IiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwgeyAi
dmlkZW8vZmx2Il9zLCAidmlkZW8veC1mbHYiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjYzIiwgeyB9LCB7IH0g
fSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by94LW1zdmlkZW9jb2RlYyIsIHsgInZpZGVvL3gtbXN2aWRlbyIgfSwgeyB9IH0sCisgICAgICAg
IHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVv
Y29kZWMiLCB7ICJ2aWRlby94LW1zdmlkZW8iX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEi
LCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIs
ICJhcHBsaWNhdGlvbi94LTNncCIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtaGxzIiwgeyAiYXBwbGljYXRpb24v
dm5kLmFwcGxlLm1wZWd1cmwiLCAiYXBwbGljYXRpb24veC1tcGVndXJsIiB9LCB7IH0gfSwKKyAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC1o
bHMiLCB7ICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJfcywgImFwcGxpY2F0aW9uL3gt
bXBlZ3VybCJfcyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAiYXBwbGljYXRpb24veC1wbi1yZWFsYXVkaW8iLCB7IH0sIHsgfSB9LAogICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi9kYXNoK3ht
bCIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhl
ciwgImF1ZGlvL3gtYWlmZiIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiLCAiYXVkaW8v
d2F2IiwgImF1ZGlvL3ZuZC53YXZlIiB9LCB7ICIxIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiX3Ms
ICJhdWRpby93YXYiX3MsICJhdWRpby92bmQud2F2ZSJfcyB9LCB7ICIxIl9zIH0gfSwKICAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lIiwg
eyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAi
dmlkZW8vcXVpY2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVvLzNncHAiIH0s
IHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRl
by9xdWlja3RpbWUsIHZhcmlhbnQ9KHN0cmluZykzZ3BwIiwgeyAidmlkZW8vM2dwcCJfcyB9LCB7
IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8v
eC1tcy1hc2YiLCB7IH0sIHsgfSB9LAogICAgIH07CiAgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNh
cHNNYXBwaW5nKGZhY3RvcmllcywgbWFwcGluZyk7CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxp
Y2F0aW9uL29nZyIpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJhcHBsaWNhdGlvbi9vZ2ciKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhcHBsaWNhdGlvbi9vZ2ciX3MpKTsKIAogICAgICAgICBpZiAodm9yYmlz
U3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8vb2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL3gtdm9yYmlzK29nZyIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKKyAgICAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ci
X3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNw
ZWV4IikpIHsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJhdWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygic3BlZXgiKSwgZmFsc2UpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInNwZWV4Il9zKSwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdGhlb3JhIikpIHsKLSAgICAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9vZ2ciKSk7Ci0gICAg
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidGhlb3JhIiksIGZhbHNl
KTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRl
by9vZ2ciX3MpKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ0aGVvcmEiX3MpLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGF1ZGlv
TXBlZ1N1cHBvcnRlZCA9IGZhbHNlOwogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9tcGVn
LCBtcGVndmVyc2lvbj0oaW50KTEsIGxheWVyPShpbnQpWzEsIDNdIikpIHsKICAgICAgICAgYXVk
aW9NcGVnU3VwcG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL21wMSIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXAzIikpOwotICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAzIiksIGZhbHNlKTsKLSAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wMyIpLCBmYWxzZSk7CisgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiX3MpKTsKKyAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJfcykpOworICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcDMiX3Mp
KTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJf
cyksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1w
MyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbXBl
ZywgbXBlZ3ZlcnNpb249KGludCkyIikpIHsKICAgICAgICAgYXVkaW9NcGVnU3VwcG9ydGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L21wMiIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL21wMiJfcykpOwogICAgIH0KIAogICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRh
aW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3Mp
OwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CisgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIl9zKSk7CisgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciX3MpKTsK
ICAgICB9CiAKICAgICBpZiAobWF0cm9za2FTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbWF0cm9za2EiKSk7CisgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2thIl9z
KSk7CiAKICAgICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdnAxMCIpKQotICAgICAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7
CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
d2VibSJfcykpOwogICAgIH0KIH0KIApAQCAtNDMxLDc2ICs0MzEsNzYgQEAgdm9pZCBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXIKIAogICAgIGF1dG8gYWFjU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVk
aW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0Iik7CiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1
ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiJfcyksIGZhbHNlKTsKICAgICB9CiAK
ICAgICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJhdWRpby94LW9wdXMiKTsK
ICAgICBpZiAob3B1c1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBh
dXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL3gtdm9yYmlzIik7CiAg
ICAgaWYgKHZvcmJpc1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIl9zKSwgZmFsc2UpOwogICAgIH0K
IAogICAgIFZlY3RvcjxTdHJpbmc+IGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3QgeyAiYXYxZW5j
Il9zIH07CiAgICAgYXV0byBhdjFFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVyLCAidmlk
ZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVz
LCBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShhdjFFbmNvZGVyc0Rpc2FsbG93ZWRMaXN0KSkp
OwogICAgIGlmIChhdjFFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiX3MpLCBmYWxzZSk7CisgICAgICAgIG1f
ZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiX3MpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSJfcyksIGZhbHNlKTsKICAg
ICB9CiAKICAgICBhdXRvIHZwOEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRl
by94LXZwOCIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogICAgIGlmICh2cDhFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgi
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidnA4Il9zKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiX3MpLCB2cDhFbmNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ2cDguMCJfcyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKICAgICB9CiAKICAgICBhdXRvIHZwOUVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29k
ZXIsICJ2aWRlby94LXZwOSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyOjpZZXMpOwogICAgIGlmICh2cDlFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygieC12cDkiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnAwOSoiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5Il9zKSwgdnA5
RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2
cDkuMCJfcyksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIl9zKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVv
L3dlYm0iKSAmJiAodnA4RW5jb2RlckF2YWlsYWJsZSB8fCB2cDlFbmNvZGVyQXZhaWxhYmxlIHx8
IGF2MUVuY29kZXJBdmFpbGFibGUpKQotICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygidmlkZW8vd2VibSIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKIAogICAgIGlmIChmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlv
L3dlYm0iKSkgewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBt
X2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAg
ICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9z
KSk7CisgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93
ZWJtIl9zKSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAiYXVkaW8vb2dnIikgJiYgKHZvcmJp
c1N1cHBvcnRlZCB8fCBvcHVzU3VwcG9ydGVkKSkKLSAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOwogCiAgICAgYXV0byBoMjY0RW5j
b2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3Ry
aW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50RmFj
dG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NEVuY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImgyNjQiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioiKSwgaDI2
NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoImgyNjQiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
eC1oMjY0Il9zKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiX3MpLCBoMjY0RW5jb2Rl
ckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygibXA0dioiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVvL3F1aWNrdGltZSIpKSB7CiAg
ICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7CisgICAgICAgICAgICBtX2VuY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOwogICAgICAgICBpZiAo
YWFjU3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSIpKTsKKyAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMiX3MpKTsKKyAgICAgICAg
ICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiX3MpKTsK
KyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94
LW00YSJfcykpOwogICAgICAgICB9CiAgICAgICAgIGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVv
L21wNCIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJ2aWRlby94LW00diIpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJ2aWRlby9tcDQiX3MpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBl
U2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diJfcykpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDdiMjAyNzk1ZWQxNWZmMjQyODg5ZDhkODFmYzYyMWU4YmFkYzI0MDIuLjYyNzZj
YTkwOTVkYjVkM2JjZDE3YjZjMTY0OThkMGYxNzYwMjliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcih1bnNpZ25lZCBpbmRleCwKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUo
Q3VlRm9ybWF0OjpXZWJWVFQpCiAgICAgLCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6VGV4dCwgdGhpcywgaW5kZXgsIFdURk1v
dmUoc3RyZWFtKSkKIHsKLSAgICBtX2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3Ry
ZWFtLmdldCgpKTsKKyAgICBtX2lkID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShnc3Rfc3RyZWFt
X2dldF9zdHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpKTsKICAgICBHU1RfSU5GTygiVHJhY2sgJWQg
Z290IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1faWQuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKICAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1RfUFRSX0ZPUk1B
VCwgbV9zdHJlYW0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCAwMWZlZmVhMzJkMjEzNmRmZDFlMWYzYzI1YjgxNjI2OTY5MGZi
ZDE0Li4yMDk4MDM1ZGE4MGIwYjkzOTM1ZTQ2NjkxZjAyNTc1ZWU3ODg4NmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTQ2NCw3ICsx
NDY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhj
b25zdCBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICAgICAgICAgIENSRUFURV9UUkFD
Syh2aWRlbywgVmlkZW8pOwogICAgICAgICBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBF
X1RFWFQgJiYgIXVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgICAgICBhdXRvIHRyYWNrID0gSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIFdU
Rk1vdmUoc3RyZWFtKSk7Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKHN0cmVhbUlkKSwgdHJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgIG1f
cGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAl
cyIsIHN0cmVhbUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAppbmRleCAyOTU3YmNlZjNkMGQwZTE4MjhlZjVkZjdiZjhiY2U1ZGVjMmY4ZDlhLi45YWIx
NWRmYWVjMmI0ZTU4MThlNWEzZWY5ZTEyNzA5ODBjMDg2YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tUeXBlIHR5
cGUsIFRyYWNrUHJpdmF0CiAgICAgLCBtX293bmVyKG93bmVyKQogewogICAgIEFTU0VSVChtX3N0
cmVhbSk7Ci0gICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQo
KSk7CisgICAgbV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEoZ3N0X3N0cmVhbV9nZXRfc3Ry
ZWFtX2lkKG1fc3RyZWFtLmdldCgpKSk7CiAKICAgICAvLyBXZSBjYW4ndCBjYWxsIG5vdGlmeVRy
YWNrT2ZUYWdzQ2hhbmdlZCgpIGRpcmVjdGx5LCBiZWNhdXNlIHdlIG5lZWQgdGFnc0NoYW5nZWQo
KSB0byBzZXR1cCBtX3RhZ3MuCiAgICAgdGFnc0NoYW5nZWQoKTsKQEAgLTI1Miw3ICsyNTIsNyBA
QCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFu
Z2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCBzdHJl
YW0gc3RhcnQgZm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZC5nZXQoKSk7Ci0gICAg
bV9pZCA9IHN0cmVhbUlkLmdldCgpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4x
KHN0cmVhbUlkLmdldCgpKTsKIH0KIAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpz
dHJlYW1DaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggMGJi
MjJkNTI1OTBlZGUyNTc4ZjA0ZjI2YTYxNmY5MTYwYzQ0YjNkZS4uYzI2YTliNTM1NjY5MzQ4OGI0
MjVmNmU5N2M0ODFiMTViMjc3YTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKQEAgLTcxMyw3ICs3MTMsNyBAQCBBcHBlbmRQaXBlbGluZTo6VHJhY2sqIEFwcGVuZFBpcGVs
aW5lOjp0cnlNYXRjaFBhZFRvRXhpc3RpbmdUcmFjayhHc3RQYWQgKmRlbXV4ZQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1faGFzUmVjZWl2ZWRGaXJzdEluaXRp
YWxpemF0aW9uU2VnbWVudCk7Ci0gICAgQXRvbVN0cmluZyB0cmFja0lkID0gR1NUX1BBRF9OQU1F
KGRlbXV4ZXJTcmNQYWQpOworICAgIGF1dG8gdHJhY2tJZCA9IEF0b21TdHJpbmc6OmZyb21MYXRp
bjEoR1NUX1BBRF9OQU1FKGRlbXV4ZXJTcmNQYWQpKTsKICAgICBhdXRvIFtwYXJzZWRDYXBzLCBz
dHJlYW1UeXBlLCBwcmVzZW50YXRpb25TaXplXSA9IHBhcnNlRGVtdXhlclNyY1BhZENhcHMoYWRv
cHRHUmVmKGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyhkZW11eGVyU3JjUGFkKSkuZ2V0KCkpOwog
CiAgICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBwcmUtZXhpc3RpbmcgdHJhY2suIElkZWFs
bHksIHRyYWNrcyBzaG91bGQgYmUgbWF0Y2hlZCBieSB0cmFjayBJRCwgYnV0IG1hdGNoaW5nIGJ5
IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggM2U0ZTBlOTM0MjVlNjgwYjkwMzYyN2JlOTlmYjQz
ZjJhMjNjMmUwZi4uNDYyNDFkMTI0MTkzYWVlYWUyZWRlZDQwNWNhMjg1YzM5M2EzMTViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgdW5zaWduZWQg
aG91cnMgPSBtaW51dGVzIC8gNjAgJSA2MDsKIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkNvdXJp
ZXIiKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJDb3VyaWVyIl9zKTsKICAg
ICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKIAog
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1fYmFzZUZvbnRTaXplKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwu
Y3BwCmluZGV4IGE1MzEwNjA3YTMwNDk5OTUzZTQ5NWRhZTYzNDVmOGU1MmZkZjA3MmUuLjk3Nzhj
MTc1ZjM0ZDQ2ZDBiNmY1MDExNmU3ZThkM2E1NTQ5NDQ0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtNjcsOCAr
NjcsOSBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9y
KCkKIHsKICAgICBzdGF0aWMgYm9vbCBkaWRSZWdpc3RlciA9IGZhbHNlOwogICAgIGlmICghZGlk
UmVnaXN0ZXIpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNvbnN0
cnVjdG9yKCJibG9iIiwgY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKTsKLSAgICAgICAgUmVzb3Vy
Y2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKCJibG9iIiwgbG9hZEJs
b2JSZXNvdXJjZVN5bmNocm9ub3VzbHkpOworICAgICAgICBBdG9tU3RyaW5nIGJsb2IgPSAiYmxv
YiJfczsKKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9y
KGJsb2IsIGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZSk7CisgICAgICAgIFJlc291cmNlSGFuZGxl
OjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihibG9iLCBsb2FkQmxvYlJlc291cmNl
U3luY2hyb25vdXNseSk7CiAgICAgICAgIGRpZFJlZ2lzdGVyID0gdHJ1ZTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggYTNmZWZhZDA2
YTZiMjcyYjFhZjFiNTkwNDM2OTgyYTE2ODUzYjFhZi4uNDg1Y2U3M2Q5YzM0YTBjOWEzNDJkM2Nm
ZTcwYTU1ZTQ0NmZjYTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5kZXJlclRyZWUo
Y29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhcioKICAgICB3
aGlsZSAocm9vdC0+cGFyZW50KCkpCiAgICAgICAgIHJvb3QgPSByb290LT5wYXJlbnQoKTsKIAot
ICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcihjb3VudGVyTmFtZSk7CisgICAgYXV0byBpZGVudGlm
aWVyID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShjb3VudGVyTmFtZSk7CiAgICAgZm9yIChhdXRv
KiBjdXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRJblByZU9y
ZGVyKCkpIHsKICAgICAgICAgaWYgKCFpczxXZWJDb3JlOjpSZW5kZXJFbGVtZW50PigqY3VycmVu
dCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMjYzYWM3NWFjN2U0ZDJhM2QyMzU5MTQ2YWFj
M2RmN2NmNDliYjkyMi4uZDk3Nzg5NWFmZGMxNzhlNjNmM2E0Y2RhOTEyMGY2NjNhYjVlMTk4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
QEAgLTMzMzAsNyArMzMzMCw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRl
c2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKIAog
ICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEwKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dENvbXB1dGVkU2l6ZSgxMCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFNlbGVjdGlvblZhbHVlKDUwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCmluZGV4IDIxZDljN2UyYzcyZWQxMDRh
ODVlZDk5ZDA1MTZiN2NhZDZiMThlNzcuLmMwYzM0NzhjMjhiOWE4NTRhODEyNjM0YWNhYWUzMjg0
ZWY1NGYyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRmVuY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgdXNpbmcgbmFtZXNwYWNl
IE1hdGhNTE5hbWVzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTWF0aE1M
RmVuY2VkKTsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiOwot
c3RhdGljIGNvbnN0IGNoYXIqIGdDbG9zaW5nQnJhY2VDaGFyID0gIikiOworc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiX3M7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gZ0Nsb3NpbmdCcmFjZUNoYXIgPSAiKSJfczsKIAogUmVuZGVyTWF0aE1MRmVuY2VkOjpSZW5k
ZXJNYXRoTUxGZW5jZWQoTWF0aE1MUm93RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAppbmRl
eCAzMzE4OWJkNjRjYWNiZWRmOTM2OGQzNGZhOWZiNTY0ZDU4YmQxZjM2Li44YWM2ZWRlYzJmZTBi
NjE2NzE4ODJhNWY5ZmZkNjQ3ZjQwNmJjZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgUmVuZGVy
U3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICAg
ICAgaWYgKHJlbmRlclZpZXcubXVsdGlDb2x1bW5GbG93KCkpCiAgICAgICAgICAgICByZW5kZXJW
aWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKGRvY3VtZW50U3R5bGUpOwogICAg
ICAgICBpZiAocmVuZGVyVmlldy5wYWdlKCkucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZCgpKSB7
Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExpbmVHcmlkKCItd2Via2l0LWRlZmF1bHQt
cGFnaW5hdGlvbi1ncmlkIik7CisgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExpbmVHcmlk
KCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1ncmlkIl9zKTsKICAgICAgICAgICAgIGRvY3Vt
ZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXA6OkNvbnRhaW4pOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAppbmRleCAz
YWQyNGU1ZmNjOTFjYjJmODhlMjAyNTRhYmFkNjAxNDg3MTkyODhkLi42M2JjZDFhODBlZjc4NTMz
OTQyNDIxMzBkZDJkZjg5MDljMjIzZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VVcmlFbGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZWY8Q1NTRm9udEZhY2VTcmNW
YWx1ZT4gU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpzcmNWYWx1ZSgpIGNvbnN0CiB7CiAgICAgYXV0
byBzcmMgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGUoZ2V0QXR0cmlidXRlKFNWR05hbWVz
OjpocmVmQXR0ciwgWExpbmtOYW1lczo6aHJlZkF0dHIpLCBMb2FkZWRGcm9tT3BhcXVlU291cmNl
OjpObyk7CiAgICAgQXRvbVN0cmluZyB2YWx1ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGZvcm1hdEF0dHIpKTsKLSAgICBzcmMuZ2V0KCkuc2V0Rm9ybWF0KHZhbHVlLmlzRW1wdHko
KSA/ICJzdmciIDogdmFsdWUpOyAvLyBEZWZhdWx0IGZvcm1hdAorICAgIHNyYy5nZXQoKS5zZXRG
b3JtYXQodmFsdWUuaXNFbXB0eSgpID8gInN2ZyJfcyA6IHZhbHVlKTsgLy8gRGVmYXVsdCBmb3Jt
YXQKICAgICByZXR1cm4gc3JjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAK
aW5kZXggYTAxZjZiYWRhMWMxZDZjMjVmODIwZjcyNmM4ZWNlZTgxODJlY2I2YS4uNmU1YzdjNzRj
OGU3Y2NlN2Q5ODM3NThhZGQ0NTJiZmVmYTRhMDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dHJhbnNm
ZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoU1ZHRWxlbWVudCYgc2hhZG93RWxlbWVuCiAg
ICAgICAgIC8vIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgcHJvdmlkZWQg
b24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UgYXR0cmlidXRlcwogICAgICAgICAvLyB3
aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBnZW5lcmF0ZWQgJ3N2ZycuIElmIGF0dHJpYnV0ZXMg
d2lkdGggYW5kL29yIGhlaWdodCBhcmUgbm90IHNwZWNpZmllZCwKICAgICAgICAgLy8gdGhlIGdl
bmVyYXRlZCAnc3ZnJyBlbGVtZW50IHdpbGwgdXNlIHZhbHVlcyBvZiAxMDAlIGZvciB0aGVzZSBh
dHRyaWJ1dGVzLgotICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6
d2lkdGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyh3
aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSIpOwotICAgICAgICBzaGFkb3dFbGVtZW50
LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNp
ZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhlaWdodCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAw
JSIpOworICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6d2lkdGhB
dHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyh3aWR0aCgp
LnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSJfcyk7CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0
QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIl9z
KTsKICAgICB9IGVsc2UgaWYgKGlzPFNWR1NWR0VsZW1lbnQ+KHNoYWRvd0VsZW1lbnQpKSB7CiAg
ICAgICAgIC8vIFNwZWMgKDx1c2U+IG9uIDxzdmc+KTogSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQv
b3IgaGVpZ2h0IGFyZSBwcm92aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZQog
ICAgICAgICAvLyB2YWx1ZXMgd2lsbCBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1
dGVzIG9uIHRoZSAnc3ZnJyBpbiB0aGUgZ2VuZXJhdGVkIHRyZWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKaW5kZXggZTdhZTFhOGM2OGIwMDE3MTNk
MTc3NWEyNDJlOTRiYzYxNjBmZmQ1Zi4uMWRhMTE5NGJhOGVmZDBlYTA0YWYyNTNkNDE5YjI2OTE0
YWQwZjgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNo
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKIAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDIsNyArNDMsNyBAQCBSZWY8RmV0Y2hF
dmVudD4gRmV0Y2hFdmVudDo6Y3JlYXRlRm9yVGVzdGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogewogICAgIEZldGNoRXZlbnQ6OkluaXQgaW5pdDsKICAgICBpbml0LnJlcXVl
c3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3Jl
YXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgeyB9KSwgeyB9LCB7IH0sIHsgfSk7
Ci0gICAgcmV0dXJuIEZldGNoRXZlbnQ6OmNyZWF0ZSgqY29udGV4dC5nbG9iYWxPYmplY3QoKSwg
ImZldGNoIiwgV1RGTW92ZShpbml0KSwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAgICByZXR1
cm4gRmV0Y2hFdmVudDo6Y3JlYXRlKCpjb250ZXh0Lmdsb2JhbE9iamVjdCgpLCBldmVudE5hbWVz
KCkuZmV0Y2hFdmVudCwgV1RGTW92ZShpbml0KSwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKIH0K
IAogc3RhdGljIGlubGluZSBSZWY8RE9NUHJvbWlzZT4gcmV0cmlldmVIYW5kbGVkUHJvbWlzZShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZlB0cjxET01Qcm9taXNlPiYmIHBy
b21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IDZkZjNmMGM5M2VmNDU2MGIyOTc2
M2Q4YjE0ZmQyODU3MjhkYmM3NjguLmVmNGNkZWFiZGU0OWRlYzQwNDJhNmY4MzI1MGI2ZTJmNzcy
NjAxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC04MywxMCArODMsMTAgQEAgdm9p
ZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlwZVN0cmluZywg
VGV4dFBvc2l0aW9uIHBvc2l0aW8KIAogc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRl
WEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlcykKIHsKLSAgICBSZWY8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCAicGFyc2VyZXJyb3Ii
LCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUpOworICAgIFJlZjxFbGVtZW50PiByZXBvcnRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksICJw
YXJzZXJlcnJvciJfcywgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKIAogICAgIFZlY3RvcjxB
dHRyaWJ1dGU+IHJlcG9ydEF0dHJpYnV0ZXM7Ci0gICAgcmVwb3J0QXR0cmlidXRlcy5hcHBlbmQo
QXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJlOyBi
b3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2luOiAxZW07
IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayIpKTsKKyAgICByZXBvcnRBdHRy
aWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxvY2s7IHdoaXRl
LXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAgMWVtIDAgMWVt
OyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJsYWNrIl9zKSk7
CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyU2V0QXR0cmlidXRlcyhyZXBvcnRBdHRyaWJ1dGVz
KTsKIAogICAgIGF1dG8gaDMgPSBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShoM1RhZywgZG9j
dW1lbnQpOwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxFbGVtZW50PiBjcmVh
dGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29ucwogCiAgICAg
YXV0byBmaXhlZCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIFZlY3Rv
cjxBdHRyaWJ1dGU+IGZpeGVkQXR0cmlidXRlczsKLSAgICBmaXhlZEF0dHJpYnV0ZXMuYXBwZW5k
KEF0dHJpYnV0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEy
cHgiKSk7CisgICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAi
Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4Il9zKSk7CiAgICAgZml4ZWQtPnBh
cnNlclNldEF0dHJpYnV0ZXMoZml4ZWRBdHRyaWJ1dGVzKTsKICAgICByZXBvcnRFbGVtZW50LT5w
YXJzZXJBcHBlbmRDaGlsZChmaXhlZCk7CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFhNTEVy
cm9yczo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQogI2lmIEVOQUJMRShYU0xUKQogICAgIGlm
IChtX2RvY3VtZW50LnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKICAgICAgICAgVmVjdG9y
PEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKLSAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmli
dXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3JtYWwiKSk7CisgICAgICAgIGF0dHJpYnV0
ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTogbm9ybWFsIl9zKSk7
CiAgICAgICAgIGF1dG8gcGFyYWdyYXBoID0gSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0ZSht
X2RvY3VtZW50KTsKICAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJTZXRBdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlckFwcGVuZENoaWxkKG1fZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhlIHJlc3VsdCBv
ZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBnaXZl
biBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiJfcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TFRyZWVWaWV3ZXIuY3BwCmluZGV4IDIzNWZhMzg1ZGFkNjFlNWNiN2FiYWIwMTlhODk5YjMxZDNh
MGIzNjkuLjAyZWU5OTBjZTA3ZGEwYmYzOTMwNGFiMWRiNzJhZTA3NGUxYzFhNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBYTUxUcmVl
Vmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKQogewogICAgIFN0cmluZyBzY3Jp
cHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfanMs
IHNpemVvZihYTUxWaWV3ZXJfanMpKTsKICAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgp
LmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShzY3JpcHRTdHJpbmcp
KTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNl
cHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVwYXJlV2ViS2l0WE1MVmlld2Vy
KCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFueSBzdHlsZSBpbmZvcm1h
dGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0cmVlIGlzIHNob3duIGJlbG93
LicpOyIpKSk7CisgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9y
aW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhN
TFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUg
aW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93
biBiZWxvdy4nKTsiX3MpKSk7CiAKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3RyaW5nSW1wbDo6
Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdlcl9jc3Mp
KTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0cmluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luUGFzc3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IGY2MmRjN2M4MzdmMDJmNzAxMGM4MmQ5
NzkwZTJiYWFmMjE0ZTFkMjEuLjZiMjg1ODA1OTRlZTM1ZTE1MjkzY2MzN2RmMDA4MzBjMWUxYmEz
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5QYXNzd29yZEZpZWxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC01NCw3ICs1NCw3IEBAIFBERlBs
dWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxkKCkKIFJlZjxFbGVtZW50
PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7CiAg
ICAgYXV0byBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCAicGFzc3dv
cmQiKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCJfcyk7
CiAgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwg
KmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAgIHJldHVybiBlbGVtZW50OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRl
eCA3M2ZjMDEzNDJjOGI3ZjQxNGNjOGRjMTVjOGJjN2Q1ZDk5YjQ3NWM0Li41OGZhM2U0MjFjNzEw
ZGVkZWZmZjMxZGUyNGNkZWM0OGI5ZWViYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMjA0Myw3ICsyMDQzLDcgQEAg
SlNWYWx1ZVJlZiBKU0lQQzo6bWVzc2FnZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIEpTU3RyaW4KICAgICAgICAgZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZt
LCBpc1N5bmNJZGVudCwgSlNDOjpqc0Jvb2xlYW4obWVzc2FnZUlzU3luYyhuYW1lKSkpOyAgICAg
ICAgICAgIAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KSk7CiAKLSAgICAgICAgbWVzc2FnZXNPYmplY3QtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyh2bSwgZGVzY3JpcHRpb24obmFtZSkpLCBk
aWN0aW9uYXJ5KTsKKyAgICAgICAgbWVzc2FnZXNPYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tTGF0aW4xKHZtLCBkZXNjcmlwdGlvbihuYW1lKSksIGRpY3Rpb25hcnkp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDE0MGVjYWRiYTdmN2NlYTY2MGExMTcwYTU5
YTgxNWU0ZTcwNmY1ZTQuLjRlMmU5YmE4MjViMGJhYmI0OTdjMGQ5OWZjODk1YzVkMDAzNTdhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0zNDQyLDcgKzM0NDIsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24+IFdlYlBhZ2U6OmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oKQogICAgICAg
ICBlbHNlIGlmIChlbGVtZW50LmlzVGVsZXBob25lRmllbGQoKSkKICAgICAgICAgICAgIGluZm9y
bWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpQaG9uZTsKICAgICAgICAgZWxzZSBpZiAo
ZWxlbWVudC5pc051bWJlckZpZWxkKCkpCi0gICAgICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50
VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwYXR0ZXJuIikgPT0gIlxcZCoiIHx8IGVsZW1l
bnQuZ2V0QXR0cmlidXRlKCJwYXR0ZXJuIikgPT0gIlswLTldKiIgPyBJbnB1dFR5cGU6Ok51bWJl
clBhZCA6IElucHV0VHlwZTo6TnVtYmVyOworICAgICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVu
dFR5cGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnBhdHRlcm5BdHRyKSA9PSAi
XFxkKiIgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpwYXR0ZXJuQXR0cikgPT0g
IlswLTldKiIgPyBJbnB1dFR5cGU6Ok51bWJlclBhZCA6IElucHV0VHlwZTo6TnVtYmVyOwogICAg
ICAgICBlbHNlIGlmIChlbGVtZW50LmlzRGF0ZVRpbWVMb2NhbEZpZWxkKCkpCiAgICAgICAgICAg
ICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDsKICAg
ICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc0RhdGVGaWVsZCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ2N2NlYjliYTFhMjY1Y2M5NTM3ZmEw
ZjA4MmYwYTljODE0NzYwMTIuLjAyNWJiMDUxNWQ2Y2E4YmQ1NGVjOWZhN2Q2NTY1ZjRhNDE2Y2Y5
OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3Ry
aW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDIyLTA0LTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlP
UyBpUGhvbmUgMTIgXSBmYXN0L2hpZHBpICYgZmFzdC9sYXllcnMvaGlkcGkgdGVzdHMgYXJlIGZs
YWt5IHRleHQvaW1hZ2UgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9B
dG9tU3RyaW5nLmNwcAppbmRleCBiZTc0MTU0ZTM4OGJhN2M1NjQ2MWVjOTZiYTcwMDNlMWQ5MmI2
OGVhLi4wM2YxOWIwNDEzMmU1YjUwYzNkODRmZmZlZTg3YTZhYTU4ZWM5YmRhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcApAQCAtNDksNyArNDksNyBA
QCBURVNUKFdURiwgQXRvbVN0cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWxVbmlxdWVuZXNzKQogICAg
IEF0b21TdHJpbmcgc3RyaW5nMigiVGVtcGxhdGUgTGl0ZXJhbCIsIEF0b21TdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKICAgICBBU1NFUlRfRVEoc3RyaW5nMS5pbXBsKCksIHN0cmluZzIu
aW1wbCgpKTsKIAotICAgIEF0b21TdHJpbmcgc3RyaW5nMygiVGVtcGxhdGUgTGl0ZXJhbCIpOwor
ICAgIEF0b21TdHJpbmcgc3RyaW5nMygiVGVtcGxhdGUgTGl0ZXJhbCJfcyk7CiAgICAgQVNTRVJU
X0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmczLmltcGwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCmluZGV4IGI0NDJlNDM2
OGMwM2RiN2JhNjMwYzdhZWEyYTk4MzVkMzQ4YjQ0YjguLjAyYjYxNjRiZDU5ZTlmMjFmZDRjZjg3
OTZmOGZjYjQ5ZmU2YmJlZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiBURVNUKFdURiwgU3RyaW5nT3BlcmF0b3JzKQogewogICAgIFN0cmluZyBzdHJp
bmcoIlN0cmluZyJfcyk7Ci0gICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nKCJBdG9tU3RyaW5nIik7
CisgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nKCJBdG9tU3RyaW5nIl9zKTsKICAgICBBU0NJSUxp
dGVyYWwgbGl0ZXJhbCB7ICJBU0NJSUxpdGVyYWwiX3MgfTsKIAogICAgIFN0cmluZyBzdHJpbmdW
aWV3QmFja2luZyB7ICJTdHJpbmdWaWV3Il9zIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4
IGJjZjAzMjk1NWJlMmViZGZmZTY5M2Q4YThiYmQ4MmJmOTQyZjlkOTkuLjM4MGYzNDBiMWE0MzFm
MjQ3MmMwMmExMWI5NThhOGJkYTY5MmYwNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJ
bml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5SVEwpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlw
dGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7
CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVz
Y3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtOTQsNyArOTQsNyBAQCBURVNUX0Yo
Q29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluUlRM
KQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwp
CiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlw
dGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5
KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAgICBG
b250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgp
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJ
bml0aWFsQWR2YW5jZUluUlRMKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIElu
aXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3Jh
bmRlIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFHcmFuZGUiX3MpOwog
ICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9u
dChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTE4MSw3ICsx
ODEsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VX
aXRoTGVmdFJ1bkluTFRSKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRp
YWxBZHZhbmNlSW5MVFIpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5kZSIpOworICAgIGRl
c2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIl9zKTsKICAgICBkZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNj
cmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgVEVTVF9G
KENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCiBURVNUX0Yo
Q29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykK
IHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0
aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
IlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZv
bnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7
CkBAIC0yNjQsNyArMjY0LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIElu
aXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVy
VGVzdCwgTGVmdEV4cGFuc2lvbikKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikp
OwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgVEVTVF9GKENvbXBsZXhU
ZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24pCiBURVNUX0YoQ29tcGxleFRleHRDb250
cm9sbGVyVGVzdCwgVmVydGljYWxBZHZhbmNlcykKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsK
KyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNj
cmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0zMzgsNyArMzM4LDcgQEAgVEVTVF9G
KENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCiBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgVG90YWxXaWR0aFdpdGhKdXN0aWZpY2F0aW9uKQogewog
ICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24u
c2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGlt
ZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENh
c2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCmluZGV4IDJmMjhk
NGU2NjUzMzBmYzY4NjNlNDFlMDdlZDdiYzdiZGIwZTQ0NjQuLjQwNmQwODczYWRmOWQ2YjMxZTFi
YWFlOGM3NWEwZDdkZTc0YWQyNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHRUZXN0c0NHLmNwcApAQCAtOTgsNyArOTgsNyBAQCBURVNUKEJpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHRUZXN0cywgVGV4dCkKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0eChw
cmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAKICAgICBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMi
KTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlw
dGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShk
ZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7Cg==
</data>
<flag name="commit-queue"
          id="485919"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457340</attachid>
            <date>2022-04-12 10:16:12 -0700</date>
            <delta_ts>2022-04-12 11:11:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412101611.patch</filename>
            <type>text/plain</type>
            <size>113858</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uMzk0N2VmNTY3MmFiYjUzNDFj
MDhjNDExNGUwY2Y5MzJkMDQyOWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KCIiX3MpOwogCiAgICAgICAgIC8vIFdoZW4gc3RhcnRpbmcgV2ViVGhyZWFkIHZp
YSBTdGFydFdlYlRocmVhZCBmdW5jdGlvbiwgd2UgaGF2ZSBzcGVjaWFsIHBlcmlvZCBiZXR3ZWVu
IHRoZSBwcm9sb2d1ZSBvZiBTdGFydFdlYlRocmVhZCBhbmQgc3Bhd25pbmcgV2ViVGhyZWFkIGFj
dHVhbGx5LgogICAgICAgICAvLyBJbiB0aGlzIHBlcmlvZCwgYGlzTWFpblRocmVhZCgpYCByZXR1
cm5zIGZhbHNlIGV2ZW4gaWYgdGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNl
IFdlYlRocmVhZCBpcyBub3cgZW5hYmxlZCBhbmQgd2UgYXJlIG5vdCB0YWtpbmcgYSBXZWJUaHJl
YWQgbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggMzUwNjM5ZGM1ZDZmYTI4MzE3
NGU1YzE0NjFiN2Q0NWNiNDIwNTc1OS4uMDY5YWY2ZDMyNTlkMzJiMjRjOTVhMjU0MDNhYTNmYWMw
ZDgwYjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTM5LDExICszOSwxMiBAQCBw
dWJsaWM6CiAKICAgICBBdG9tU3RyaW5nKCk7CiAgICAgQXRvbVN0cmluZyhjb25zdCBMQ2hhciop
OwotICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOwogICAgIEF0b21TdHJpbmcoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqKTsKIAorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcgZnJvbUxhdGluMShjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKSB7IHJldHVybiBBdG9tU3RyaW5nKGNoYXJhY3RlcnMpOyB9CisKICAgICB0ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgZXhwbGljaXQgQXRvbVN0cmluZyhjb25zdCBWZWN0
b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgY2hhcmFjdGVycykKICAgICAgICAgOiBtX3N0cmlu
ZyhBdG9tU3RyaW5nSW1wbDo6YWRkKGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUo
KSkpCkBAIC0xNjcsNiArMTY4LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAg
QXRvbVN0cmluZyhjb25zdCBjaGFyKik7CisKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlw
ZSB7IFVwcGVyLCBMb3dlciB9OwogICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZT4gQXRvbVN0
cmluZyBjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3Q7CiAKQEAgLTE4MCw2ICsxODMsNyBAQCBzdGF0
aWNfYXNzZXJ0KHNpemVvZihBdG9tU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJp
bmcgYW5kIFN0cmluZyBtdXN0CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgp
OyB9CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IExDaGFyKik7CiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIp
IHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihiKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwg
QVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0
dXJuIGEuaW1wbCgpICYmIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9ICAg
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
IGIgPT0gYTsgfQpAQCAtMTkyLDYgKzE5Niw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXRvbVN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyBy
ZXR1cm4gIShhID09IGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
ICEoYiA9PSBhKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9
CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0
b21TdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApp
bmRleCA4Y2RiY2E3N2FmMzgzMDdiMmI0YzBhNGQyNWExZjBlOTExYWJiMWRlLi42MjQ5MmE5MDYw
NTRiNWQyY2Y4ZTU5MjFiYjljNDhlZjczZjM0YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAg
LTIyNiw5ICsyMjYsOSBAQCBJbml0RGF0YVJlZ2lzdHJ5JiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFy
ZWQoKQogCiBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIHsKLSAgICByZWdp
c3RlckluaXREYXRhVHlwZSgia2V5aWRzIiwgeyBzYW5pdGl6ZUtleWlkcywgZXh0cmFjdEtleUlE
c0tleWlkcyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgiY2VuYyIsIHsgc2FuaXRpemVD
ZW5jLCBleHRyYWN0S2V5SURzQ2VuYyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgid2Vi
bSIsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKKyAgICByZWdpc3Rlcklu
aXREYXRhVHlwZSgia2V5aWRzIl9zLCB7IHNhbml0aXplS2V5aWRzLCBleHRyYWN0S2V5SURzS2V5
aWRzIH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJjZW5jIl9zLCB7IHNhbml0aXplQ2Vu
YywgZXh0cmFjdEtleUlEc0NlbmMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoIndlYm0i
X3MsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKIH0KIAogSW5pdERhdGFS
ZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCBhNmQzMTAyYzg4MmE2MDk4ZjQ3OTJiN2JjZDA2YmEyNmQ0Mjg3ZDhhLi4wMDUwZGUx
NmMwY2JkN2YwNjU3NjliYzU4MjY0YjYxMTY4ZWRjZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE3ODYsNyArMTc4Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiAgICAgaWYgKCFp
czxFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOworICAgIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGNiMmFmMWY2NmJmNDFlNTZkMDAyZmVmMDAw
ZmUxMTBkMzIwNDMzZDEuLmNkYTQwMWViMGY1YzRjMGY3MGZlYjYxMDg5M2NmMTRkZjA1ZjJiMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU1dlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIktleWZyYW1lRWZmZWN0LmgiCkBAIC0xNDc0LDcgKzE0NzUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmNvbW1pdFN0eWxlcygpCiAKICAgICBhdXRvIGNvbXB1
dGVkU3R5bGVFeHRyYWN0b3IgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKCZzdHlsZWRFbGVtZW50
KTsKICAgICBhdXRvIGlubGluZVN0eWxlID0gc3R5bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICBpbmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHls
ZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSk7CisgICAgaW5saW5lU3R5bGUtPnNldENz
c1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKTsK
IAogICAgIGF1dG8mIGtleWZyYW1lU3RhY2sgPSBzdHlsZWRFbGVtZW50LmVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soUHNldWRvSWQ6Ok5vbmUpOwogICAgIC8vIER1cmluZyBpdGVyYXRpb24gcmVz
b2x2ZSgpIGNvdWxkIGNsZWFyIHRoZSB1bmRlcmx5aW5nIHByb3BlcnRpZXMgc28gd2UgdXNlIGEg
Y29weQpAQCAtMTUwNyw3ICsxNTA4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
Ojpjb21taXRTdHlsZXMoKQogICAgICAgICAgICAgaW5saW5lU3R5bGUtPnNldFByb3BlcnR5SW50
ZXJuYWwocHJvcGVydHksIGNzc1ZhbHVlLT5jc3NUZXh0KCksIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBpbmxpbmVTdHlsZS0+Y3NzVGV4
dCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0
ciwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50SW5saW5lcy5oCmluZGV4IDdjMWVmN2M2M2M0YzM1NzdkMTllZWVhMzlm
ZjJhYTAzODZmOGJlOWUuLjFmZTg2MDM5NDg5NTYwOGM2ODhhNDMxY2IxMGNhMTMxM2FjNzk4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRJbmxpbmVzLmgKQEAgLTM5LDcgKzM5LDcgQEAgaW5s
aW5lIFBBTDo6VGV4dEVuY29kaW5nIERvY3VtZW50Ojp0ZXh0RW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBQQUw6OlRleHRFbmNvZGluZygpOwogfQogCi1pbmxpbmUgQXRvbVN0cmluZyBEb2N1
bWVudDo6ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0RW5jb2RpbmcoKS5kb21OYW1lKCk7
IH0KK2lubGluZSBBdG9tU3RyaW5nIERvY3VtZW50OjplbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IEF0b21TdHJpbmc6OmZyb21MYXRpbjEodGV4dEVuY29kaW5nKCkuZG9tTmFtZSgpKTsgfQogCiBp
bmxpbmUgU3RyaW5nIERvY3VtZW50OjpjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gRG9jdW1lbnQ6
OmVuY29kaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGUwMGMxZjlhODk1NGVl
MGI4Y2JjMWQ4MmQzMGI2MDFkZmUxMzliZWMuLmVmZjgwYjU1ZjE3NTM0M2QyOTExYmI3ZjExZDQ1
MGViM2U5MzBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMyMjQsNyArMzIyNCw3IEBA
IHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFkeUV2ZW50
Rm9yVGVzdGluZygpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS53ZWJraXRJbWFn
ZVJlYWR5RXZlbnRFbmFibGVkKCkpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiX3MsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUZv
cmNlV2lsbEJlZ2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA0MTNl
MzQ2NzJlYjY3NTZkODlhMGZlNGFmZDY3ZjllYTZjNjhiYzVjLi4zNmM4OTc3YjE2YjQ1ZjNhODdl
ZWQ5M2M4YWU0YjQ2ZDU1Njk2YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQc2V1ZG9FbGVt
ZW50KTsKIAogY29uc3QgUXVhbGlmaWVkTmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCks
ICI8cHNldWRvPiIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFs
aWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCksICI8cHNldWRvPiJfcywgbnVsbEF0b20oKSk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDdk
OWQ1OWJlMWMxNTJmMDk4NWY1ZjUxOGJiOWZjY2U1NmY4N2JjOWEuLjgwZmZkMWVjM2Y4MjBmMTY2
NzJhYjE4YjY0MjUwNDNiOWJmNGJmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApA
QCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0JiB0YWJUZXh0Tm9kZSkKICAgICBhdXRvIHNwYW5F
bGVtZW50ID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgc3BhbkVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBs
ZVRhYlNwYW5DbGFzcyk7Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3aGl0ZS1zcGFjZTpwcmUiKTsKKyAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIndoaXRlLXNwYWNlOnByZSJfcyk7CiAKICAgICBzcGFuRWxlbWVudC0+YXBwZW5kQ2hp
bGQodGFiVGV4dE5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjgwMzMx
YjI4ZjA3Y2Y1NDZlZTExYzViYTBmYzFjM2E5ZGZjOTg5ZS4uOTc0Nzg4YTNiM2FhODEzZWYwMWUy
ZDIxYmIyNzkyMmMyMGZiN2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTE3
OCw3ICsxMTc4LDcgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKENvbXBvc2l0ZUVkaXRD
b21tYW5kJiBjb21tYW5kKQogCiBib29sIEVkaXRvcjo6d2lsbFVuYXBwbHlFZGl0aW5nKGNvbnN0
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVy
biBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRh
YmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJo
aXN0b3J5VW5kbyIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBv
c2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdS
b290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9y
Ojp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpA
QCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoRWRpdENv
bW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihjb21wb3NpdGlvbi5zdGFydGluZ1NlbGVjdGlvbigpKTsKICAgICBjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSk7Ci0gICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiAKICAgICB1
cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZv
aWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBv
c2l0aW9uKQogCiBib29sIEVkaXRvcjo6d2lsbFJlYXBwbHlFZGl0aW5nKGNvbnN0IEVkaXRDb21t
YW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVybiBkaXNwYXRj
aEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVu
dCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVk
byIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZWFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpAQCAtMTIxNCw3
ICsxMjE0LDcgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21w
b3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjb21wb3NpdGlvbi5lbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRp
bmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgImhpc3RvcnlSZWRvIik7CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogICAgIAogICAgIHVwZGF0ZUVk
aXRvclVJTm93SWZTY2hlZHVsZWQoKTsKIApAQCAtMTU1MCw4ICsxNTUwLDggQEAgdm9pZCBFZGl0
b3I6OnBhc3RlRm9udChGcm9tTWVudU9yS2V5QmluZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykK
IHZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkKIHsKICAgICBhdXRvIGJsb2NrUXVvdGUgPSBIVE1MUXVvdGVFbGVtZW50OjpjcmVh
dGUoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQoKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRvbVN0cmluZygiY2l0ZSIpKTsK
LSAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNz
QXR0ciwgQXRvbVN0cmluZyhBcHBsZVBhc3RlQXNRdW90YXRpb24pKTsKKyAgICBibG9ja1F1b3Rl
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCAiY2l0ZSJfcyk7
CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFz
c0F0dHIsIEFwcGxlUGFzdGVBc1F1b3RhdGlvbik7CiAKICAgICBhdXRvIGNoaWxkTm9kZSA9IGZy
YWdtZW50LmZpcnN0Q2hpbGQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hh
bmdlLmgKaW5kZXggZDRjNTA1YzhhNjcyYjJlMDhjZTg1ODMwZGE1OWUwOWYwMTQxNjExYi4uNWI2
ZjM3MDg5Y2VlZDU5NjZlMjUyY2U0YjQwNDExZWQ3MDcxMDE0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgVGV4dDsK
IAogI2RlZmluZSBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAgICJBcHBsZS1pbnRlcmNoYW5nZS1u
ZXdsaW5lIgogI2RlZmluZSBBcHBsZUNvbnZlcnRlZFNwYWNlICAgICAgICJBcHBsZS1jb252ZXJ0
ZWQtc3BhY2UiCi0jZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxlLXBhc3Rl
LWFzLXF1b3RhdGlvbiIKLSNkZWZpbmUgQXBwbGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUt
c3R5bGUtc3BhbiIKLSNkZWZpbmUgQXBwbGVUYWJTcGFuQ2xhc3MgICAgICAgICAiQXBwbGUtdGFi
LXNwYW4iCi0jZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldlYktpdC1tc28tbGlz
dC1xdWlya3Mtc3R5bGUiCisjZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxl
LXBhc3RlLWFzLXF1b3RhdGlvbiJfcworI2RlZmluZSBBcHBsZVN0eWxlU3BhbkNsYXNzICAgICAg
ICJBcHBsZS1zdHlsZS1zcGFuIl9zCisjZGVmaW5lIEFwcGxlVGFiU3BhbkNsYXNzICAgICAgICAg
IkFwcGxlLXRhYi1zcGFuIl9zCisjZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldl
YktpdC1tc28tbGlzdC1xdWlya3Mtc3R5bGUiX3MKIAogLy8gQ29udHJvbHMgd2hldGhlciBhIHNw
ZWNpYWwgQlIgd2hpY2ggaXMgcmVtb3ZlZCB1cG9uIHBhc3RlIGluIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kIG5lZWRzIHRvIGJlIGluc2VydGVkCiAvLyBhbmQgbWFraW5nIHNlcXVlbmNlIG9mIHNw
YWNlcyBub3QgY29sbGFwc2libGUgYnkgaW5zZXJ0aW5nIG5vbi1icmVha2luZyBzcGFjZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCmluZGV4
IDNjNDYxNDNhNzgxYzM2ZWM3OTRlZjdlNzFiNTI4MjUxYjgxMDllMDYuLjE3YTQ4NzA4ZTJiZjg5
ZTUyYmNmN2YyY2Q4MWU2NmFiMDdlOGY2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29s
IGlzTGlzdE9ySW5kZW50QmxvY2txdW90ZShjb25zdCBOb2RlKiBub2RlKQogfQogCiBJbmRlbnRP
dXRkZW50Q29tbWFuZDo6SW5kZW50T3V0ZGVudENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBF
SW5kZW50VHlwZSB0eXBlT2ZBY3Rpb24pCi0gICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQo
ZG9jdW1lbnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9u
ZTsgcGFkZGluZzogMHB4OyIpCisgICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQoZG9jdW1l
bnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFk
ZGluZzogMHB4OyJfcykKICAgICAsIG1fdHlwZU9mQWN0aW9uKHR5cGVPZkFjdGlvbikKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA0
YTMyNmU2Njg4MDk0MGZiNTM0ODVmOTNhMTMzOTlkMDJhNmNhMjY4Li5lZmVjNTcyZWRiMjgwZWUx
ZjNhNzM0ZTE3ZjFkNmFhMDI4NTliNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC01OTUsNyArNTk1LDcgQEAgTlNBcnJheSAqRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRS
YW5nZSwgT3AKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmPEhUTUxBbmNob3JFbGVtZW50
PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRIcmVmKGNvcnJlc3BvbmRpbmdVUkwpOwotICAg
ICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0RGlyKCJsdHIiKTsKKyAgICAgICAgICAgIGFuY2hv
ckVsZW1lbnQtPnNldERpcigibHRyIl9zKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZFVzZUxp
Z2h0TGlua3MpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMmQ4ZjhiMzM1OTMwZDA3ZGQzMzI2
YjgxMDY1ZjJkNGZkODM1YWNhZS4uN2U1OTUyYjdhOTYyODcwNzBlODAzNzk4ZDU5ZDhmYzJmN2Iz
OWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTE3NCw3ICsxMTc0LDcgQEAg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxl
UmFuZ2UmIGNvbnRleHQsIGNvbnN0IFMKIAogICAgIGF1dG8gY3JlYXRlSFRNTEJSRWxlbWVudCA9
IFsmZG9jdW1lbnRdKCkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBIVE1MQlJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOworICAgICAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwg
QXRvbVN0cmluZzo6ZnJvbUxhdGluMShBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOwogICAgICAg
ICByZXR1cm4gZWxlbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmNwcAppbmRleCA1MDQ5NWMxN2I5Y2E5NzkyMDNlZjk4NGJmMjgxNjM0ZTUyMGZhZTRj
Li5hOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4YjEyYWVhMDYzMzAwMzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxB
dWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2MKIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50Ojpj
cmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBB
dG9tU3RyaW5nJiBzcmMpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGF1ZGlvVGFnLCBk
b2N1bWVudCwgZmFsc2UpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24ocHJlbG9hZEF0dHIsICJhdXRvIik7CisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVsb2FkQXR0ciwgImF1dG8iX3MpOwogICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAppbmRleCBiZjU0MzJhZjMxNmU1YTc0YWYyYWQyNzNmMTE1MjZlNGRiNDViMmNiLi42
OGJjMjM4ZWJkOTFhNDE3YmNiZDhjOTU4NjVjNzM1NTliZmQ1ZTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5U2xv
dE5hbWUoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gc3VtbWFyeVNsb3QoInN1bW1hcnlTbG90Iik7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNs
b3QiX3MpOwogICAgIHJldHVybiBzdW1tYXJ5U2xvdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCAxYjM2ZDViMzZmMDAxYWQwN2U5ZTZhYTAyODY4MTYyNzIyNDY0ZDMw
Li42YjFkOGQzYzFkMTAzYTVmMDJiODAzMjAzZmVmZDgwYjA2Y2QwZDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNjk2LDcgKzY5Niw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
OnRyYW5zbGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZShib29s
IGVuYWJsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRyYW5z
bGF0ZUF0dHIsIGVuYWJsZSA/ICJ5ZXMiIDogIm5vIik7CisgICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIl9zIDogIm5vIl9z
KTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc0V2ZXJOZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjA5YjY4MjM5NjM5OWZlODA2
OWI5NGM4MjE5ZWU0Mzg2MWYwMWE3Mi4uYmFiNTExMWQyNmVhOTA5YTdmNWMwZDYzN2I3NTI4OTdk
Y2QyNWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0y
NjcwLDcgKzI2NzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKIHsKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47
Ci0gICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
KSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBv
cnRRdWlyaygpKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3Mo
KS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNC
cm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygpKTsKICAgICBtX3BsYXllci0+c2V0
U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGRDb250aW51ZSk7CiB9CiAjZW5kaWYK
QEAgLTI2ODUsNyArMjY4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJL
ZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKICAgICBpZiAoIWRvY3VtZW50
KCkuc2V0dGluZ3MoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCisg
ICAgaWYgKCFoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50
KQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIC8vIE9ubHkgZmlyZSBhbiBl
cnJvciBpZiBFTkNSWVBURURfTUVESUEgaXMgbm90IGVuYWJsZWQsIHRvIGdpdmUgY2xpZW50cyBv
ZiB0aGUKICAgICAgICAgLy8gImVuY3J5cHRlZCIgZXZlbnQgYSBjaGFuY2UgdG8gaGFuZGxlIGl0
IHdpdGhvdXQgcmVzdWx0aW5nIGluIGEgc3ludGhldGljIGVycm9yLgpAQCAtNDcwNSw3ICs0NzA1
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCgpCiB7CiAgICAg
YXV0byB0YXNrID0gW3RoaXNdIHsKICAgICAgICAgaWYgKGF1dG8gcm9vdCA9IHVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgicmVzaXplIiwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CisgICAgICAgICAgICByb290LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnJlc2l6ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKICAgICB9OwogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBXVEZNb3ZlKHRhc2spKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggOGNlYjg4YTNiMTA3YmRmNjQ5YTVm
MjJhMDBhODJlOTQyNGNlMmVhNy4uYmQ0NGUyZDAyOGE3MDA4ODYzNmZmMjY2MDYzNzdlYmVkZGY5
NzdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0xOTAs
MTUgKzE5MCwxNSBAQCBzdGF0aWMgdm9pZCBzZXRWYWx1ZUNsYXNzKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbiBnYQogewogICAgIHN3aXRjaCAoZ2F1
Z2VSZWdpb24pIHsKICAgICBjYXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uT3B0aW11
bToKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJv
cHRpbXVtIik7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAib3B0aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVk
b0lkczo6d2Via2l0TWV0ZXJPcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uU3Vib3B0aW1hbDoKLSAgICAgICAgZWxl
bWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVtIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAic3Vib3B0
aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJTdWJvcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhU
TUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uRXZlbkxlc3NHb29kOgotICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgImV2ZW4tbGVzcy1nb29kIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZXZlbi1s
ZXNzLWdvb2QiX3MpOwogICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6
OndlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgpAQCAtMjM0LDE3ICsyMzQsMTcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpkaWRB
ZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCiAKICAgICAvLyBQc2V1ZG9z
IGFyZSBzZXQgdG8gYWxsb3cgYXV0aG9yIHN0eWxpbmcuCiAgICAgYXV0byBpbm5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgaW5uZXItPnNldElkQXR0cmlidXRl
KCJpbm5lciIpOworICAgIGlubmVyLT5zZXRJZEF0dHJpYnV0ZSgiaW5uZXIiX3MpOwogICAgIGlu
bmVyLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlcklubmVyRWxlbWVudCgp
KTsKICAgICByb290LmFwcGVuZENoaWxkKGlubmVyKTsKIAogICAgIGF1dG8gYmFyID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBiYXItPnNldElkQXR0cmlidXRlKCJi
YXIiKTsKKyAgICBiYXItPnNldElkQXR0cmlidXRlKCJiYXIiX3MpOwogICAgIGJhci0+c2V0UHNl
dWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJCYXIoKSk7CiAgICAgaW5uZXItPmFwcGVu
ZENoaWxkKGJhcik7CiAKICAgICBtX3ZhbHVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKLSAgICBtX3ZhbHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiKTsKKyAgICBtX3Zh
bHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiX3MpOwogICAgIGJhci0+YXBwZW5kQ2hpbGQoKm1f
dmFsdWUpOwogCiAgICAgZGlkRWxlbWVudFN0YXRlQ2hhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAppbmRleCA4MDQxZWE0MmMzYmE3OTU1NzVmM2EwMmI1ZTI2MzliNTdl
YTQ0MDQ1Li4zOTZmOWRjOTY4ODEwMzYxOTY0YWQyOGVlMjhmOWI1MGI1ZGMxOGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzMCwxNiArMjMwLDE2IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIHJvb3RFbGVtZW50
LT5hcHBlbmRDaGlsZChoZWFkKTsKIAogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2lu
OiAwcHgiKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiAwcHgi
X3MpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKGRvY3VtZW50KCku
bG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgIGJvZHktPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJ3aGl0ZSJfcyk7CiAgICAg
cm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHkpOwogICAgIAogICAgIGF1dG8gaW1hZ2VFbGVt
ZW50ID0gSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgaWYgKG1fc2hv
dWxkU2hyaW5rSW1hZ2UpCi0gICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgZGlzcGxheTpibG9jazsgbWFyZ2luOmF1
dG87IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQt
cmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxl
ZnQpOyIpOworICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICIt
d2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvOyBwYWRk
aW5nOmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBl
bnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3Mp
OwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRy
LCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5nOmVudihzYWZlLWFyZWEtaW5zZXQt
dG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRv
bSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5n
OmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYo
c2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3MpOwog
ICAgIGltYWdlRWxlbWVudC0+c2V0TG9hZE1hbnVhbGx5KHRydWUpOwogICAgIGltYWdlRWxlbWVu
dC0+c2V0U3JjKHVybCgpLnN0cmluZygpKTsKICAgICBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCktPnNldFJlc3BvbnNlKGxvYWRlcigpLT5yZXNwb25zZSgpKTsKQEAgLTI1Myw4ICsyNTMsOCBA
QCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICNlbHNlCiAg
ICAgICAgIGF1dG8gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgICAgIGlmIChSZWZQdHI8RE9NV2luZG93PiB3aW5kb3cgPSB0aGlzLT5kb21XaW5kb3co
KSkKLSAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVu
ZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOworICAgICAgICAgICAgd2lu
ZG93LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgbGlzdGVuZXIu
Y29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKICNl
bmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcAppbmRleCA0ZTE5NDYx
NmVjZTI1M2M5NDEyNGNmYmU3MjQ1OGFiYmJkODUzYjBkLi41OWRmYjAyMTI4NjUwMGM1NWU3YjJi
ZDU5NWNkODQzN2NkMTY4ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCkKICAgICAvLyBEZXNjcmlwdGlvbiBvZiBwYXJhbWV0ZXJzOgogICAgIC8vIC0gYCNwYWdlbW9k
ZT1ub25lYCBwcmV2ZW50cyB0aGUgc2lkZWJhciBmcm9tIHNob3dpbmcgb24gbG9hZC4KICAgICAv
LyAtIEVtcHR5IGA/ZmlsZT1gIHBhcmFtZXRlciBwcmV2ZW50cyBkZWZhdWx0IHBkZiBmcm9tIGxv
YWRpbmcuCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpz
L3dlYi92aWV3ZXIuaHRtbD9maWxlPSNwYWdlbW9kZT1ub25lIjsKKyAgICBhdXRvIHZpZXdlclVS
TCA9ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9I3Bh
Z2Vtb2RlPW5vbmUiX3M7CiAgICAgYXV0byByb290RWxlbWVudCA9IEhUTUxIdG1sRWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKICAgICBhcHBlbmRDaGlsZChyb290RWxlbWVudCk7CiAgICAgcm9vdEVs
ZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFBERkRv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgbV9pZnJhbWUtPnNldEF0dHJp
YnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJv
cmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIAogICAgIG1fbGlzdGVuZXIgPSBQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0
ZSgqdGhpcyk7Ci0gICAgbV9pZnJhbWUtPmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAqbV9saXN0
ZW5lciwgZmFsc2UpOworICAgIG1faWZyYW1lLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQsICptX2xpc3RlbmVyLCBmYWxzZSk7CiAKICAgICBib2R5LT5hcHBlbmRDaGls
ZCgqbV9pZnJhbWUpOwogfQpAQCAtMjIzLDkgKzIyMyw5IEBAIHZvaWQgUERGRG9jdW1lbnQ6Omlu
amVjdFN0eWxlQW5kQ29udGVudFNjcmlwdCgpCiAKICAgICBBU1NFUlQoY29udGVudERvY3VtZW50
LT5ib2R5KCkpOwogICAgIGF1dG8gc2NyaXB0ID0gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShz
Y3JpcHRUYWcsICpjb250ZW50RG9jdW1lbnQsIGZhbHNlKTsKLSAgICBzY3JpcHQtPmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKKyAg
ICBzY3JpcHQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgbV9saXN0
ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7CiAKLSAgICBzY3JpcHQtPnNldEF0dHJpYnV0
ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNj
cmlwdC5qcyIpOworICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsICJ3ZWJraXQtcGRm
anMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIl9zKTsKICAgICBjb250
ZW50RG9jdW1lbnQtPmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAppbmRleCBlMDFkZjM5MjkzNmU4MjA5Y2ViZDRkNjQ4NGJmZmUyOGUwNDJiNGVh
Li4wMDNhOTAxZTA0M2UzN2M4ZTNjMDY2OGM2MzM3MjQwZjZjZGU2MWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcApAQCAtODUsNyArODUsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSk7CiBzdGF0aWMgY29uc3RleHByIEltYWdlU21v
b3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVhbGl0eSA9IEltYWdlU21vb3RoaW5nUXVh
bGl0eTo6TG93OwogCiBjb25zdCBpbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6RGVm
YXVsdEZvbnRTaXplID0gMTA7Ci1jb25zdCBjaGFyKiBjb25zdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9ICJzYW5zLXNlcmlmIjsKK2NvbnN0IEFTQ0lJ
TGl0ZXJhbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9
ICJzYW5zLXNlcmlmIl9zOwogc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgRGVmYXVsdEZv
bnQgPSAiMTBweCBzYW5zLXNlcmlmIl9zOwogCiBzdGF0aWMgQ2FudmFzTGluZUNhcCB0b0NhbnZh
c0xpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDRhN2E0M2E3
Y2ZmZTgyNmFmODRiNzAxMzIwMmYyYjkzZTQ4NmRiNGEuLjViZjViNTMzOGFjYjIwN2NiM2IxNDkz
MDZlZTg0MTA3ODA2OGZlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTI5Niw3ICsyOTYsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRGb250
U2l6ZTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgRGVmYXVsdEZvbnRGYW1pbHk7Cisg
ICAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBEZWZhdWx0Rm9udEZhbWlseTsKIAogICAgIGNv
bnN0IFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0K
ICAgICB2b2lkIHJlYWxpemVTYXZlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggYTFmMTY3Y2IwODNjOTk4NDM2MTgzNDExODAyOWYy
ODVlNDFjMDAwNS4uZWRjYzZhZmQ2YzZmMDM4Yjg0YzRlNzFmNTc4YTY4ODg0MjdjNzEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01
NDQsNyArNTQ0LDcgQEAgc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBjcmVhdGUKICAgICBhZGROYW1lc1dpdGhQ
cmVmaXgobWFwLCB4bWxBdG9tKCksIFhNTE5hbWVzOjpnZXRYTUxBdHRycygpLCBYTUxOYW1lczo6
WE1MQXR0cnNDb3VudCk7CiAKICAgICBtYXAuYWRkKHhtbG5zQXRvbSgpLCBYTUxOU05hbWVzOjp4
bWxuc0F0dHIpOwotICAgIG1hcC5hZGQoInhtbG5zOnhsaW5rIiwgUXVhbGlmaWVkTmFtZSh4bWxu
c0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSSkpOworICAg
IG1hcC5hZGQoInhtbG5zOnhsaW5rIl9zLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlu
a05hbWUsIFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSk7CiAKICAgICByZXR1cm4gbWFw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggNDcwNmYyNmU4NDQwOWVlODEzY2QxM2JjNWY0ZTBhY2NmNjc0YTg2Ny4uNzhl
MTFmYzJjMTA4ZDc3ZmY4YzJhOTJhYTkyNWVmYzUyZTQzOTEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCgpCiAgICAg
Ly8gV2UgY3JlYXRlIGEgZmFrZSB0b2tlbiBhbmQgZ2l2ZSBpdCB0byB0aGUgdHJlZSBidWlsZGVy
IHJhdGhlciB0aGFuCiAgICAgLy8gc2VuZGluZyBmYWtlIGJ5dGVzIHRocm91Z2ggdGhlIGZyb250
LWVuZCBvZiB0aGUgcGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gZGlzdHJ1YmluZyB0aGUgbGluZS9j
b2x1bW4gbnVtYmVyIGNhbGN1bGF0aW9ucy4KLSAgICBBdHRyaWJ1dGUgYXR0cmlidXRlKHN0eWxl
QXR0ciwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpOwor
ICAgIEF0dHJpYnV0ZSBhdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3Jk
OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Il9zKTsKICAgICBBdG9tSFRNTFRva2VuIGZha2VQcmUo
SFRNTFRva2VuOjpTdGFydFRhZywgcHJlVGFnLT5sb2NhbE5hbWUoKSwgeyBXVEZNb3ZlKGF0dHJp
YnV0ZSkgfSk7CiAgICAgdHJlZUJ1aWxkZXIoKS5jb25zdHJ1Y3RUcmVlKFdURk1vdmUoZmFrZVBy
ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggODQ5Y2Q1
OTRhN2I5YTM5OGIwYzMxZmE5MGZjNjdkN2Y2ZDY3NmEyZi4uMTBmNGQxZGFlMGE5OTAyNWI1ZDQw
ZjIzOGRkNTVlYTZjMzY5ZDcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcApAQCAtODgsMTMgKzg4LDEzIEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBmb3JjZWRL
ZXl3b3JkKCkKIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpCiB7
Ci0gICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUo
bnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iX3MsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0VHJhY2smIFRl
eHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRy
YWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1l
bnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShu
dWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSJfcywgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgp
LCBlbXB0eUF0b20oKSkubGVha1JlZigpOwogICAgIHJldHVybiBhdXRvbWF0aWM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBiY2Y4ZTE3MmE2
NzMyMGY2Njg4MTIwNzQ3OWRmN2E4MGFiYWMxN2VlLi43N2M2YTE2MGJhOTViZDVhMjg2YzVkYTc0
OTM5ODM1ZTUxYjlhZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRl
eHRUcmFja0N1ZUJveCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVBdHRyaWJ1
dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVU
YWcobnVsbEF0b20oKSwgImN1ZSIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxRdWFsaWZpZWROYW1lPiBjdWVUYWcobnVsbEF0b20oKSwgImN1ZSJfcywgbnVsbEF0b20o
KSk7CiAgICAgcmV0dXJuIGN1ZVRhZzsKIH0KIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBjdWVCYWNrZ3JvdW5kVGFnKG51bGxBdG9tKCksICJjdWViYWNrZ3Jv
dW5kIiwgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGN1ZUJhY2tncm91bmRUYWcobnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiX3MsIG51bGxB
dG9tKCkpOwogICAgIHJldHVybiBjdWVCYWNrZ3JvdW5kVGFnOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCA5MzZkMjdiM2IyNzM3YzAwNzYx
OTM5NTIyNzFlNjg3Y2I1YzQ2NjU1Li4xOGIwNmYyOGRhYzUwNGEzY2ViMjVhYTk3OGFmMjg5NjAy
NWRjMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAK
QEAgLTQxLDE0ICs0MSwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViVlRURWxl
bWVudCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFtZShX
ZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tKCksICJ2IiwgbnVs
bEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdU
YWcobnVsbEF0b20oKSwgImxhbmciLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiIsIG51bGxBdG9tKCkpOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tKCks
ICJ1IiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGlUYWcobnVsbEF0b20oKSwgImkiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgpLCAicnVieSIsIG51bGxB
dG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhu
dWxsQXRvbSgpLCAicnQiLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyJfcywgbnVsbEF0b20oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZUYWcobnVsbEF0b20oKSwgInYi
X3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1l
PiBsYW5nVGFnKG51bGxBdG9tKCksICJsYW5nIl9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiJfcywgbnVs
bEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHVUYWco
bnVsbEF0b20oKSwgInUiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBpVGFnKG51bGxBdG9tKCksICJpIl9zLCBudWxsQXRvbSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgp
LCAicnVieSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxp
ZmllZE5hbWU+IHJ0VGFnKG51bGxBdG9tKCksICJydCJfcywgbnVsbEF0b20oKSk7CiAgICAgc3dp
dGNoIChub2RlVHlwZSkgewogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVDbGFzczoKICAgICAgICAg
cmV0dXJuIGNUYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmlu
ZGV4IGRlY2JlMTdhYmJmMWQ5YTQzZTQ4MGRjNzhjZDcyMzg1ZWI2MDk3NmQuLjFjNWM4NWUzMmIy
ODk0NWU2ZTJmMDExOGM3MWFjYzJmNGNkNWUyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5oCkBAIC02MywxMyArNjMsMTMgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxB
dG9tKCksICJ2b2ljZSIsIG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tKCksICJ2b2ljZSJfcywgbnVsbEF0
b20oKSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9t
KCksICJsYW5nIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgImxhbmciX3MsIG51bGxBdG9tKCkp
OwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCA2YWE2MTI2ZGQ3Y2FjNjgwMTE3YjI3N2I0NGE2YzE4NmVjMzcwNTM4Li5m
YTE4NDRhNmZmMWZlNWFhNTI4YWIyNTVjYzgxY2M0MjZlZWI5YjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSAidGV4dCJfczsKIAog
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJp
YVJlbGV2YW50QXR0clZhbHVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNv
bnRhaW5zKCJhbGwiKSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFs
bCJfcykpIHsKICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChh
cmlhUmVsZXZhbnRBZGRpdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVs
ZXZhbnQuYXBwZW5kKGFyaWFSZWxldmFudFJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAg
bGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChhcmlhUmVsZXZhbnRUZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKaW5kZXggNzNh
ZjgzNmVmNzQ2YzZiYjgwMzMyODc0OGM4ZmVjZWJkYTY3MjVmZC4uZjYxMTQ3MWE4NWUzZmU2OTNk
ZDZmM2FjYTYzZTIwMjQ4MjY1Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSW5zcGVjdG9y
T3ZlcmxheUxhYmVsOjpJbnNwZWN0b3JPdmVybGF5TGFiZWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBG
bG9hdFBvaW50IGxvY2EKIHN0YXRpYyBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KCkKIHsKICAgICBG
b250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRp
b24uc2V0RmFtaWxpZXMoeyAic3lzdGVtLXVpIiB9KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
RmFtaWxpZXMoeyAic3lzdGVtLXVpIl9zIH0pOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWln
aHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoMTIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKaW5kZXggMTdhMjk3YjVhYjM0NGM2YjIxODBkZDBmYTlhOTQ0MmZkYTMz
ZTM5Ny4uMjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTU5
Myw3ICsxNTkzLDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGEKICAgICAsIG1faXNTdHlsZVRl
eHRWYWxpZChmYWxzZSkKIHsKICAgICBtX2luc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6
OmNyZWF0ZShJbnNwZWN0b3JDU1NJZChpZCwgMCksIGlubGluZVN0eWxlKCksIHRoaXMpOwotICAg
IG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7
CisgICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0
eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCkKQEAgLTE2NjksNyArMTY2OSw3IEBA
IENTU1N0eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
aW5saW5lU3R5bGUoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6ZWxlbWVudFN0eWxlVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKCJzdHlsZSIpLnN0cmluZygpOworICAgIHJldHVybiBtX2Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAK
IFJlZjxDU1NSdWxlU291cmNlRGF0YT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
OjpydWxlU291cmNlRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQzODllYzA3YWU4N2JjOTVi
NTY4MDllOGRiODI1OTA4OGUwNTJhMDYuLjA2YzQ3MjNmNTcwMDcwNTFlYzYxOTA5YWM3MTlkZjNi
OGNiMmRjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMjI5LDcgKzIyMjksNyBAQCBSZWY8UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvckFjYwogICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB2
YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEBhcmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9zZWQgYXMg
WyJhZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgb3JkZXIgaXMgY29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBleHBlY3Rl
ZCBpbiBXZWJJbnNwZWN0b3JVSS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250
YWlucygiYWxsIikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygi
YWxsIl9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5h
ZGRJdGVtKGFyaWFSZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBs
aXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50UmVtb3ZhbHMpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5hZGRJdGVtKGFyaWFSZWxldmFu
dFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDlmMTdjMTI4YTMx
ODE2YTZhOTM5OGI1ZDJiMTQ1Njg1NGM1ZDlhNTEuLjM2ZmViYmVkY2UwZGUxODkxYWU0YTkyZDM5
NDI5NzkyMDNlYTFkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTI2
Myw3ICsyNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4g
TGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIG9wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSBwYXJhbXMucmVmZXJyZXJQb2xpY3k7CiAgICAgYXV0byBsaW5rUmVxdWVzdCA9
IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0KHVybCwgV1RGTW92ZShvcHRpb25z
KSwgZG9jdW1lbnQsIHBhcmFtcy5jcm9zc09yaWdpbik7CiAgICAgbGlua1JlcXVlc3Quc2V0UHJp
b3JpdHkoRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5Ojpmb3JSZXNvdXJjZVR5cGUodHlwZS52
YWx1ZSgpKSk7Ci0gICAgbGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CisgICAgbGlu
a1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIl9zKTsKICAgICBsaW5rUmVxdWVzdC5zZXRJZ25v
cmVGb3JSZXF1ZXN0Q291bnQodHJ1ZSk7CiAgICAgbGlua1JlcXVlc3Quc2V0SXNMaW5rUHJlbG9h
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudC5jcHAKaW5kZXggNjViMjZjYzliZDU3NWViMWEwMTVmNDVjYzVkZTY1Y2NkNTUzNTM3
Yi4uNTEwMjJjNjc1ZDI0ZjBiYjhhNTNiMTk1ZmU4OGIxYWYwM2QxMzcwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIGJvb2wgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29u
dGVudChjb25zdCBOb2RlJiBub2RlKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6cFRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnByZVRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlY3Rpb25UYWcpCi0gICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6c3R5bGVUYWcpICYmIGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZSgic2NvcGVkIikpCisg
ICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWcpICYm
IGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OnNjb3BlZEF0dHIpKQogICAgICAg
ICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGFibGVUYWcpCiAgICAgICAg
IHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDI1OWM3MjI1MzY3MWI1YTBh
ZTA4NWJjMDcxMmE0YjE1ZWIyNzk1ZDYuLmU5NGJkZmY4YTkzMzg1NGQ3ZDlmZGIwYmZjNmExODgx
YWQ1OTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRy
YXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBGbG9hdFJlY3Qg
bGVnZW5kUmVjdCA9IHsgYm91bmRzLm1heFgoKSAtIDMwLjBmLCAxMCwgMjAsIDIwIH07CiAgICAg
CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERl
c2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3Bl
Y2lmaWVkU2l6ZSgxMik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7
CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdT
ZXR0aW5ncyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgfQogCiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
SGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5jcHAKaW5kZXggZGRiYTgzNWVmODkyMDNhYWVhZGExZDMwM2IyMzY5NDU4ZDQ3MjgxMi4uYzRm
OWY2N2QwNjdmNGEzNDFlNzg5MTI2NjIzZTM5YTdkNTUxMzAwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRUb29sdGlwUHJldmVu
dEZyb21Qcm9jZWVkaW5nV2l0aENsaWNrKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBp
ZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50
KCkudXJsKCkuaG9zdCgpLCAiY292aWQuY2RjLmdvdiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5j
b250YWlucygidG9vbHRpcCIpOworICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInRvb2x0aXAiX3MpOwogfQogCiAvLyBGSVhNRTog
UmVtb3ZlIGFmdGVyIHRoZSBzaXRlIGlzIGZpeGVkLCA8cmRhcjovL3Byb2JsZW0vNzU3OTI5MTM+
CkBAIC00ODgsNyArNDg4LDcgQEAgc3RkOjpvcHRpb25hbDxFdmVudDo6SXNDYW5jZWxhYmxlPiBR
dWlya3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0KEV2ZW4KIAogICAgIC8vIE9u
IEdvb2dsZSBNYXBzLCB3ZSB3YW50IHRvIGxpbWl0IHNpbXVsYXRlZCBtb3VzZSBldmVudHMgdG8g
ZHJhZ2dpbmcgdGhlIGxpdHRsZSBtYW4gdGhhdCBhbGxvd3MgZW50ZXJpbmcgaW50byBTdHJlZXQg
Vmlldy4KICAgICBpZiAoaXNHb29nbGVNYXBzKCkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+
KHRhcmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRlKCJjbGFz
cyIpID09ICJ3aWRnZXQtZXhwYW5kLWJ1dHRvbi1wZWdtYW4taWNvbiIpCisgICAgICAgIGlmIChp
czxFbGVtZW50Pih0YXJnZXQpICYmIGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldCktPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikgPT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21h
bi1pY29uIikKICAgICAgICAgICAgIHJldHVybiBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXM7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNjMxLDggKzYzMSw4IEBAIGJvb2wgUXVpcmtz
OjpuZWVkc0lucHV0TW9kZU5vbmVJbXBsaWNpdGx5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50
KSBjb25zdAogICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykp
IHsKICAgICAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RvY3VtZW50
LT51cmwoKS5ob3N0KCksICJjYWxlbmRhci5nb29nbGUuY29tIikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBk
YXRhSW5pdGlhbFZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1pbml0aWFsLXZhbHVlIiwgbnVs
bEF0b20oKSk7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBk
YXRhUHJldmlvdXNWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtcHJldmlvdXMtdmFsdWUiLCBu
dWxsQXRvbSgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGRhdGFJbml0aWFsVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLWluaXRpYWwtdmFsdWUiX3Ms
IG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFt
ZT4gZGF0YVByZXZpb3VzVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLXByZXZpb3VzLXZhbHVl
Il9zLCBudWxsQXRvbSgpKTsKIAogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6YXV0b2NvbXBsZXRlQXR0ciksICJvZmYiKQogICAgICAgICAgICAgJiYgZWxlbWVudC5oYXNB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGRhdGFJbml0aWFsVmFsdWVBdHRyKQpAQCAt
NjQ3LDcgKzY0Nyw3IEBAIGJvb2wgUXVpcmtzOjpuZWVkc0lucHV0TW9kZU5vbmVJbXBsaWNpdGx5
KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSBjb25zdAogICAgIGlmICghaG9zdC5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKCIuZGVzbW9zLmNvbSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgJiYgZWxlbWVudC5wYXJlbnRF
bGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiZGNnLW1xLXRleHRhcmVhIik7CisgICAg
cmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQucGFyZW50RWxlbWVudCgp
LT5jbGFzc05hbWVzKCkuY29udGFpbnMoImRjZy1tcS10ZXh0YXJlYSJfcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIzLDEwICsx
MDIzLDEwIEBAIHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKICAgICAvLyBzcGFuIHdpdGggdGhlc2UgY2xhc3MgbmFtZXMsIG9yIHRo
ZSBzdmcsIG9yIHRoZSBzdmcncyBwYXRoLgogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkpIHsK
ICAgICAgICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAg
ICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dpbiIpCi0g
ICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiIp
Ci0gICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJzYy0xaWwzdXJ1LTMiKSB8fCBj
bGFzc05hbWVzLmNvbnRhaW5zKCJjSWhLZmQiKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5j
b250YWlucygiaXl2bjM0LTAiKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJiWUlqdGwiKSkKKyAg
ICAgICAgaWYgKGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJuZXItbG9naW4i
X3MpCisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1
dHRvbiJfcykKKyAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInNjLTFpbDN1cnUt
MyJfcykgfHwgY2xhc3NOYW1lcy5jb250YWlucygiY0loS2ZkIl9zKQorICAgICAgICAgICAgfHwg
Y2xhc3NOYW1lcy5jb250YWlucygiaXl2bjM0LTAiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
ImJZSWp0bCJfcykpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMzcs
NyArMTAzNyw3IEBAIHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgc3ZnRWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxl
bWVudCgpOwogCiAgICAgaWYgKHN2Z0VsZW1lbnQgJiYgc3ZnRWxlbWVudC0+aGFzQXR0cmlidXRl
cygpKSB7Ci0gICAgICAgIGF1dG8gYXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXROYW1lZEl0ZW0oImFyaWEtbGFiZWwiKTsKKyAgICAgICAgYXV0byBhcmlhTGFiZWxB
dHRyID0gc3ZnRWxlbWVudC0+YXR0cmlidXRlcygpLmdldE5hbWVkSXRlbSgiYXJpYS1sYWJlbCJf
cyk7CiAgICAgICAgIGlmIChhcmlhTGFiZWxBdHRyICYmIGFyaWFMYWJlbEF0dHItPnZhbHVlKCkg
PT0gIlVzZXJGaWxsZWQgaWNvbiIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0xMDU2LDI0ICsxMDU2LDI0IEBAIHN0YXRpYyBib29sIGlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9t
YWluQW5kRWxlbWVudChjb25zdCBVUkwmIHVybCwgY29uc3QgRWxlbWVudCYKICAgICAvLyBGSVhN
RSgyMTg3NzkpOiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVz
IHRoZWlyIGxvZ2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gInd3dy5t
aWNyb3NvZnQuY29tIl9zKSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAg
ICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJnbHlwaF9zaWduSW5fY2ly
Y2xlIikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9o
ZWFkZXJ0ZXh0IikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1l
Y3RybF9oZWFkZXIiKSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlu
cygiZ2x5cGhfc2lnbkluX2NpcmNsZSJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVz
KCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0Il9zKQorICAgICAgICB8fCBlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygibWVjdHJsX2hlYWRlciJfcykpOwogICAgIH0KICAgICAvLyBT
a3lwZSBjYXNlLgogICAgIC8vIEZJWE1FKDIyMDEwNSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2Ug
U2t5cGUgdW5kZXIgb3V0bG9vay5saXZlLmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyBy
ZWRlc2lnbi4KICAgICBpZiAodXJsLmhvc3QoKSA9PSAib3V0bG9vay5saXZlLmNvbSJfcykgewog
ICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJHUjV2YjBncVJEc2FGUGEiKQotICAgICAgICB8
fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3ki
KSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJH
UjV2YjBncVJEc2FGUGEiX3MpCisgICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJfMkFtMmp2VGFCejE3VUo4WG5meEZPeSJfcykpOwogICAgIH0KICAgICAvLyBTb255IE5l
dHdvcmsgRW50ZXJ0YWlubWVudCBsb2dpbiBjYXNlLgogICAgIC8vIEZJWE1FKDIxODc2MCk6IFJl
bW92ZSB0aGlzIHF1aXJrIG9uY2UgcGxheXN0YXRpb24uY29tIGNvbXBsZXRlcyB0aGVpciBsb2dp
biBmbG93IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9zdCgpID09ICJ3d3cucGxheXN0YXRpb24u
Y29tIl9zIHx8IHVybC5ob3N0KCkgPT0gIm15LnBsYXlzdGF0aW9uLmNvbSJfcykgewogICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFt
ZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24iKQotICAgICAgICB8fCBl
bGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24t
bGFiZWwiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2ln
bmluLWJ1dHRvbiIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5z
KCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRvbiJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFz
c05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uLWxhYmVsIl9zKQor
ICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2lnbmluLWJ1dHRv
biJfcykpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTIsNyArMTExMiw3IEBA
IHN0YXRpYyBib29sIGlzQkJDUG9wVXBQbGF5ZXJFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQoKSB8fCAhZWxlbWVudC5wYXJlbnRF
bGVtZW50KCktPmhhc0NsYXNzKCkgfHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSB8
fCAhcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5oYXNDbGFzcygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNz
TmFtZXMoKS5jb250YWlucygicF9hdWRpb0J1dHRvbl9idXR0b25Jbm5lciIpICYmIHBhcmVudEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iKTsK
KyAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlu
cygicF9hdWRpb0J1dHRvbl9idXR0b25Jbm5lciJfcykgJiYgcGFyZW50RWxlbWVudC0+cGFyZW50
RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImhpZGRlbiJfcyk7CiB9CiAKIFF1aXJr
czo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQW5kSGFu
ZGxlQ2xpY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGREaXNwYXRjaENsaWNrKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgY29uc3QKQEAgLTExODUsMTQgKzExODUsMTQgQEAgUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrKEVsZW1lbnQmIGUKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBr
aW5qYUxvZ2luVXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQg
ZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNl
cmJ1dHRvbicpOyBpZiAoZWxlbWVudHMgJiYgZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xp
Y2soKTsgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRl
cnZhbCh0cmlnZ2VyTG9naW5Gb3JtLCAyMDApOyJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZl
Y3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
OjpEb2N1bWVudEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHksIFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCi0gICAg
aWYgKGV2ZW50VHlwZSA9PSAiY2xpY2siKSB7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgICAg
ICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVu
dDsKIAogICAgICAgICAvLyBFbWJlZGRlZCBZb3VUdWJlIGNhc2UuCiAgICAgICAgIGlmIChlbGVt
ZW50Lmhhc0NsYXNzKCkgJiYgZG9tYWluID09IHlvdVR1YmVEb21haW4gJiYgIW1fZG9jdW1lbnQt
PmlzVG9wRG9jdW1lbnQoKSAmJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFk
VXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21haW4pKSB7CiAgICAgICAgICAgICBhdXRvJiBjbGFz
c05hbWVzID0gZWxlbWVudC5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAgICBpZiAoY2xhc3NOYW1l
cy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5z
KCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiIpKSB7CisgICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5j
b250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
Inl0cC13YXRjaC1sYXRlci1pY29uIl9zKSkgewogICAgICAgICAgICAgICAgIGlmIChSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21h
aW4pKSB7CiAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBbXShTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCkgeyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6
U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDE5NzQxZjYyZjZiNjZhMWJlMDc3N2RlZTZhM2FhMzlk
YjAyODBlZGMuLjEzNmY3Y2Q1MmQzNDNlODBiYTdjYzIwOTBmNmY2ODdhM2I2MDlkNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0yMDYsNyArMjA2LDcgQEAgU3Bhbjxj
b25zdCBBdG9tU3RyaW5nPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2
ZWRFdmVudE5hbWVzKCkKIAogY29uc3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxW
aWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFsbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyI7
CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBz
RXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyJfczsKICAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZWMzMWM1MzgwMDgzMjAwYjkwMGQyZWE1
Y2Y1NDBhMzY4OTdjZTY1NC4uNDIzN2NmNjA1OTg0ZGM2ZDUzNjA0NzQ2NzM1NWQzODQ2NzMxYWI4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zMDY3LDcgKzMwNjcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NNZXRhZGF0YVRyYWNrKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tZXRhZGF0YVRyYWNrID0gSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGOjpjcmVhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZDo6
TWV0YWRhdGEsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6RGF0YSk7Ci0gICAg
bV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20u
YXBwbGUuc3RyZWFtaW5nIik7CisgICAgbV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0
YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20uYXBwbGUuc3RyZWFtaW5nIl9zKTsKICAgICBwbGF5ZXIo
KS0+YWRkVGV4dFRyYWNrKCptX21ldGFkYXRhVHJhY2spOwogfQogCkBAIC0zMDk2LDcgKzMwOTYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRU
ZXh0VHJhY2soSW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIGlmIChtX2N1cnJlbnRUZXh0VHJhY2sg
PT0gdHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJzZWxlY3RpbmcgdHJhY2sgd2l0aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFn
ZSgpIDogIiIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzZWxlY3RpbmcgdHJhY2sg
d2l0aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFnZSgpIDogZW1wdHlBdG9tKCkp
OwogCiAgICAgbV9jdXJyZW50VGV4dFRyYWNrID0gdHJhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGNmYTI5YjEx
MmVhMzI5NzNmYzg1NjM1YjY1ZTQyMWVhZmJmOTE0MDcuLjAxZjJjNjk3MTZmNjE4YWE0OGQyOGVl
MTY1ZjExODBmMGY0YmI5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gd2hpY2ggaXMgcHJlc3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9jb2RlYykKLSAgICAgICAg
ICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkp
OworICAgICAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEobV9vcmlnaW5h
bENvZGVjLnN0cmluZygpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCmluZGV4IDg1MjM0NmY2YjVjNTY3ZGUyOWYzNTE3N2RjNDg3MjM2NWRm
MjdkNDAuLmIwODY5ZjgwMDQ1NjE5ZTY5NjU4NjFjYjE3Mjk4MWVlZTFmMzFjM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFp
bnRJbmRpY2F0b3IoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFBsYQogICAgIFRl
eHRSdW4gdGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKIAogICAgIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkhlbHZldGljYSJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUo
Zm9udFNpemUpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDY3
ZDcwY2JjZjcyMzIzZTIwOTM5MjQwZDRkNDcwYzQzODExNjYwNmMuLmM3NmRkM2QyOWVkMzQ2OTZm
ZTFmNTA5MGQ3MThmYzdmMGYxMWI2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyhjb25zdCBHU3RyZWFtZXJS
ZWcKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1pbWVUeXBlIDogY3VycmVudC53
ZWJraXRNaW1lVHlwZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChtaW1lVHlwZSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZyhjdXJyZW50LmNhcHNTdHJpbmcpKTsKKyAg
ICAgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZzo6ZnJvbUxh
dGluMShjdXJyZW50LmNhcHNTdHJpbmcpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI2Miwy
NiArMjYyLDI2IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVT
ZXRGcm9tQ2Fwc01hcHBpbmcoY29uc3QgR1N0cmVhbWVyUmVnCiB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6RWxlbWVudEZhY3RvcmllcyYgZmFjdG9yaWVzKQogewogICAgIGlmIChmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29k
ZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOwotICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7Ci0gICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwot
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBm
YWxzZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIp
LCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJh
dWRpby9hYWMiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8veC1tNGEiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyJfcykpOworICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIl9zKSwgZmFsc2UpOwogICAgIH0K
IAogICAgIGF1dG8gb3B1c1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtb3B1cyIp
OwogICAgIGlmIChvcHVzU3VwcG9ydGVkICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmll
cy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvUGFy
c2VyLCAiYXVkaW8veC1vcHVzIikpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOworICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9
CiAKICAgICBhdXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtdm9y
YmlzIik7CiAgICAgaWYgKHZvcmJpc1N1cHBvcnRlZCAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBm
YWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpB
dWRpb1BhcnNlciwgImF1ZGlvL3gtdm9yYmlzIikpKSB7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiKSwgZmFsc2UpOwotICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiKSwgZmFsc2UpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIl9zKSwgZmFsc2UpOworICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiX3MpLCBmYWxzZSk7
CiAgICAgfQogCiAgICAgYm9vbCBtYXRyb3NrYVN1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby94
LW1hdHJvc2thIik7CkBAIC0yOTAsMjEgKzI5MCwyMSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cgogICAgICAgICBhdXRvIHZwOURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by94LXZwOSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogCiAgICAgICAgIGlmICh2cDhEZWNvZGVyQXZhaWxhYmxlIHx8IHZwOURlY29kZXJBdmFpbGFi
bGUpCi0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlk
ZW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJ2aWRlby93ZWJtIl9zKSk7CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUp
IHsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwg
dnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUu
aXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ2cDguMCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4Il9zKSwgdnA4
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4Il9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwOC4wIl9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICh2cDlEZWNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LXZwOSIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAi
KSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIiksIHZwOURlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ2cDkiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiX3Mp
LCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiX3MpLCB2cDlEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnAwOSoiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAgICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAg
ICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIl9z
KSk7CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRBZGRNUDRDb250YWluZXIgPSBmYWxzZTsKQEAg
LTMxMiwzNSArMzEyLDM1IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFs
aXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgYXV0byBoMjY0
RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0o
c3RyaW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50
RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NERl
Y29kZXJBdmFpbGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9QYXJzZXIsICJ2aWRl
by94LWgyNjQiKSkpIHsKICAgICAgICAgc2hvdWxkQWRkTVA0Q29udGFpbmVyID0gdHJ1ZTsKLSAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioi
KSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCJfcyksIGgyNjREZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJhdmMqIl9zKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIl9zKSwgaDI2
NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBhdXRvIGgy
NjVEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxl
bWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjY1IiwgRWxlbWVu
dEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAgaWYgKGgyNjVE
ZWNvZGVyQXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvUGFyc2VyLCAidmlk
ZW8veC1oMjY1IikpKSB7CiAgICAgICAgIHNob3VsZEFkZE1QNENvbnRhaW5lciA9IHRydWU7Ci0g
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjUiKSwgaDI2NURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImh2YzEqIiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJoZXYx
KiIpLCBoMjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY1Il9zKSwgaDI2NURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImh2YzEqIl9zKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJl
KTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImhldjEqIl9zKSwg
aDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAo
c2hvdWxkQWRkTVA0Q29udGFpbmVyKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiX3MpKTsKICAgICB9CiAKICAg
ICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIs
IEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAgIGlm
ICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3Vy
YXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYx
IiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIl9zKSwgYXYxRGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygiYXYxIl9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAg
ICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiX3MpLCBhdjFEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgVmVjdG9yPEdzdENh
cHNXZWJLaXRNYXBwaW5nPiBtc2VDb21wYXRpYmxlTWFwcGluZyA9IHsKLSAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWFjMyIsIHsgfSwgeyJ4
LWFjMyIsICJhYy0zIiwgImFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyJhdWRpby94LWFjMyJ9LCAgeyJ4LWVh
YzMiLCAiZWMzIiwgImVjLTMiLCAiZWFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1mbGFjIiwgeyJhdWRpby94LWZsYWMiLCAi
YXVkaW8vZmxhYyJ9LCB7IngtZmxhYyIsICJmbGFjIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1hYzMiLCB7IH0sIHsgIngtYWMz
Il9zLCAiYWMtMyJfcywgImFjMyJfcyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6
VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyAiYXVkaW8veC1hYzMiX3MgfSwg
IHsgIngtZWFjMyJfcywgImVjMyJfcywgImVjLTMiX3MsICJlYWMzIl9zIH0gfSwKKyAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWZsYWMiLCB7
ICJhdWRpby94LWZsYWMiX3MsICJhdWRpby9mbGFjIl9zIH0sIHsieC1mbGFjIl9zLCAiZmxhYyJf
cyB9IH0sCiAgICAgfTsKICAgICBmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoZmFjdG9y
aWVzLCBtc2VDb21wYXRpYmxlTWFwcGluZyk7CiAKQEAgLTM1MCw3NiArMzUwLDc2IEBAIHZvaWQg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyCiAgICAgLy8gVGhlIG1pbWUtdHlwZXMgaW5pdGlhbGl6ZWQgYmVs
b3cgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIE1TRSBiYWNrZW5kLgogCiAgICAgVmVjdG9yPEdz
dENhcHNXZWJLaXRNYXBwaW5nPiBtYXBwaW5nID0gewotICAgICAgICB7IEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21pZGkiLCB7ICJhdWRpby9taWRpIiwgImF1
ZGlvL3JpZmYtbWlkaSIgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbWlkaSIsIHsgImF1ZGlvL21pZGkiX3MsICJhdWRpby9y
aWZmLW1pZGkiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1kdHMiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc2JjIiwgeyB9LCB7IH0g
fSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRp
by94LXNpZCIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1zcGVleCIsIHsgImF1ZGlvL3NwZWV4IiwgImF1ZGlvL3gt
c3BlZXgiIH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlv
RGVjb2RlciwgImF1ZGlvL3gtd2F2cGFjayIsIHsgImF1ZGlvL3gtd2F2cGFjayIgfSwgeyB9IH0s
Ci0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8v
bXBlZywgbXBlZ3ZlcnNpb249KGludCl7MSwyfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNl
IiwgeyAidmlkZW8vbXBlZyIgfSwgeyAibXBlZyIgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVl
eCJfcywgImF1ZGlvL3gtc3BlZXgiX3MgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC13YXZwYWNrIiwgeyAiYXVkaW8veC13
YXZwYWNrIl9zIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZp
ZGVvRGVjb2RlciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0
cmVhbT0oYm9vbGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciX3MgfSwgeyAibXBlZyJfcyB9IH0s
CiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8v
bXBlZ3RzIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpW
aWRlb0RlY29kZXIsICJ2aWRlby94LWRpcmFjIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwg
eyAidmlkZW8vZmx2IiwgInZpZGVvL3gtZmx2IiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwgeyAi
dmlkZW8vZmx2Il9zLCAidmlkZW8veC1mbHYiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjYzIiwgeyB9LCB7IH0g
fSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by94LW1zdmlkZW9jb2RlYyIsIHsgInZpZGVvL3gtbXN2aWRlbyIgfSwgeyB9IH0sCisgICAgICAg
IHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVv
Y29kZWMiLCB7ICJ2aWRlby94LW1zdmlkZW8iX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEi
LCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIs
ICJhcHBsaWNhdGlvbi94LTNncCIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtaGxzIiwgeyAiYXBwbGljYXRpb24v
dm5kLmFwcGxlLm1wZWd1cmwiLCAiYXBwbGljYXRpb24veC1tcGVndXJsIiB9LCB7IH0gfSwKKyAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC1o
bHMiLCB7ICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJfcywgImFwcGxpY2F0aW9uL3gt
bXBlZ3VybCJfcyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAiYXBwbGljYXRpb24veC1wbi1yZWFsYXVkaW8iLCB7IH0sIHsgfSB9LAogICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi9kYXNoK3ht
bCIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhl
ciwgImF1ZGlvL3gtYWlmZiIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiLCAiYXVkaW8v
d2F2IiwgImF1ZGlvL3ZuZC53YXZlIiB9LCB7ICIxIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiX3Ms
ICJhdWRpby93YXYiX3MsICJhdWRpby92bmQud2F2ZSJfcyB9LCB7ICIxIl9zIH0gfSwKICAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lIiwg
eyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAi
dmlkZW8vcXVpY2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVvLzNncHAiIH0s
IHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRl
by9xdWlja3RpbWUsIHZhcmlhbnQ9KHN0cmluZykzZ3BwIiwgeyAidmlkZW8vM2dwcCJfcyB9LCB7
IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8v
eC1tcy1hc2YiLCB7IH0sIHsgfSB9LAogICAgIH07CiAgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNh
cHNNYXBwaW5nKGZhY3RvcmllcywgbWFwcGluZyk7CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxp
Y2F0aW9uL29nZyIpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJhcHBsaWNhdGlvbi9vZ2ciKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhcHBsaWNhdGlvbi9vZ2ciX3MpKTsKIAogICAgICAgICBpZiAodm9yYmlz
U3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8vb2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL3gtdm9yYmlzK29nZyIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKKyAgICAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ci
X3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNw
ZWV4IikpIHsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJhdWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygic3BlZXgiKSwgZmFsc2UpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInNwZWV4Il9zKSwgZmFsc2UpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdGhlb3JhIikpIHsKLSAgICAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9vZ2ciKSk7Ci0gICAg
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidGhlb3JhIiksIGZhbHNl
KTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRl
by9vZ2ciX3MpKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ0aGVvcmEiX3MpLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGF1ZGlv
TXBlZ1N1cHBvcnRlZCA9IGZhbHNlOwogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9tcGVn
LCBtcGVndmVyc2lvbj0oaW50KTEsIGxheWVyPShpbnQpWzEsIDNdIikpIHsKICAgICAgICAgYXVk
aW9NcGVnU3VwcG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL21wMSIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXAzIikpOwotICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAzIiksIGZhbHNlKTsKLSAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wMyIpLCBmYWxzZSk7CisgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiX3MpKTsKKyAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJfcykpOworICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcDMiX3Mp
KTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJf
cyksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1w
MyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbXBl
ZywgbXBlZ3ZlcnNpb249KGludCkyIikpIHsKICAgICAgICAgYXVkaW9NcGVnU3VwcG9ydGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L21wMiIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL21wMiJfcykpOwogICAgIH0KIAogICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRh
aW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3Mp
OwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CisgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIl9zKSk7CisgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciX3MpKTsK
ICAgICB9CiAKICAgICBpZiAobWF0cm9za2FTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbWF0cm9za2EiKSk7CisgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2thIl9z
KSk7CiAKICAgICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdnAxMCIpKQotICAgICAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7
CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
d2VibSJfcykpOwogICAgIH0KIH0KIApAQCAtNDMxLDc2ICs0MzEsNzYgQEAgdm9pZCBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXIKIAogICAgIGF1dG8gYWFjU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVk
aW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0Iik7CiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1
ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiJfcyksIGZhbHNlKTsKICAgICB9CiAK
ICAgICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJhdWRpby94LW9wdXMiKTsK
ICAgICBpZiAob3B1c1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBh
dXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL3gtdm9yYmlzIik7CiAg
ICAgaWYgKHZvcmJpc1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIl9zKSwgZmFsc2UpOwogICAgIH0K
IAogICAgIFZlY3RvcjxTdHJpbmc+IGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3QgeyAiYXYxZW5j
Il9zIH07CiAgICAgYXV0byBhdjFFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVyLCAidmlk
ZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVz
LCBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShhdjFFbmNvZGVyc0Rpc2FsbG93ZWRMaXN0KSkp
OwogICAgIGlmIChhdjFFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiX3MpLCBmYWxzZSk7CisgICAgICAgIG1f
ZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiX3MpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSJfcyksIGZhbHNlKTsKICAg
ICB9CiAKICAgICBhdXRvIHZwOEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRl
by94LXZwOCIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogICAgIGlmICh2cDhFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgi
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidnA4Il9zKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiX3MpLCB2cDhFbmNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ2cDguMCJfcyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKICAgICB9CiAKICAgICBhdXRvIHZwOUVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29k
ZXIsICJ2aWRlby94LXZwOSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyOjpZZXMpOwogICAgIGlmICh2cDlFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygieC12cDkiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnAwOSoiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5Il9zKSwgdnA5
RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2
cDkuMCJfcyksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIl9zKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVv
L3dlYm0iKSAmJiAodnA4RW5jb2RlckF2YWlsYWJsZSB8fCB2cDlFbmNvZGVyQXZhaWxhYmxlIHx8
IGF2MUVuY29kZXJBdmFpbGFibGUpKQotICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygidmlkZW8vd2VibSIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKIAogICAgIGlmIChmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlv
L3dlYm0iKSkgewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBt
X2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAg
ICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9z
KSk7CisgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93
ZWJtIl9zKSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAiYXVkaW8vb2dnIikgJiYgKHZvcmJp
c1N1cHBvcnRlZCB8fCBvcHVzU3VwcG9ydGVkKSkKLSAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOwogCiAgICAgYXV0byBoMjY0RW5j
b2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3Ry
aW5nKXsgY29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50RmFj
dG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NEVuY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImgyNjQiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXZjKiIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioiKSwgaDI2
NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoImgyNjQiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
eC1oMjY0Il9zKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiX3MpLCBoMjY0RW5jb2Rl
ckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygibXA0dioiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVvL3F1aWNrdGltZSIpKSB7CiAg
ICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7CisgICAgICAgICAgICBtX2VuY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOwogICAgICAgICBpZiAo
YWFjU3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSIpKTsKKyAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMiX3MpKTsKKyAgICAgICAg
ICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiX3MpKTsK
KyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94
LW00YSJfcykpOwogICAgICAgICB9CiAgICAgICAgIGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVv
L21wNCIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJ2aWRlby94LW00diIpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJ2aWRlby9tcDQiX3MpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBl
U2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diJfcykpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDdiMjAyNzk1ZWQxNWZmMjQyODg5ZDhkODFmYzYyMWU4YmFkYzI0MDIuLjYyNzZj
YTkwOTVkYjVkM2JjZDE3YjZjMTY0OThkMGYxNzYwMjliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcih1bnNpZ25lZCBpbmRleCwKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUo
Q3VlRm9ybWF0OjpXZWJWVFQpCiAgICAgLCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNr
UHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6VGV4dCwgdGhpcywgaW5kZXgsIFdURk1v
dmUoc3RyZWFtKSkKIHsKLSAgICBtX2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3Ry
ZWFtLmdldCgpKTsKKyAgICBtX2lkID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShnc3Rfc3RyZWFt
X2dldF9zdHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpKTsKICAgICBHU1RfSU5GTygiVHJhY2sgJWQg
Z290IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1faWQuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKICAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1RfUFRSX0ZPUk1B
VCwgbV9zdHJlYW0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCAwMWZlZmVhMzJkMjEzNmRmZDFlMWYzYzI1YjgxNjI2OTY5MGZi
ZDE0Li4yMDk4MDM1ZGE4MGIwYjkzOTM1ZTQ2NjkxZjAyNTc1ZWU3ODg4NmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTQ2NCw3ICsx
NDY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhj
b25zdCBHUmVmUHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICAgICAgICAgIENSRUFURV9UUkFD
Syh2aWRlbywgVmlkZW8pOwogICAgICAgICBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBF
X1RFWFQgJiYgIXVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgICAgICBhdXRvIHRyYWNrID0gSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIFdU
Rk1vdmUoc3RyZWFtKSk7Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0
cmFjay5jb3B5UmVmKCkpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKHN0cmVhbUlkKSwgdHJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgIG1f
cGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIEdTVF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAl
cyIsIHN0cmVhbUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
LmNwcAppbmRleCAyOTU3YmNlZjNkMGQwZTE4MjhlZjVkZjdiZjhiY2U1ZGVjMmY4ZDlhLi45YWIx
NWRmYWVjMmI0ZTU4MThlNWEzZWY5ZTEyNzA5ODBjMDg2YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tUeXBlIHR5
cGUsIFRyYWNrUHJpdmF0CiAgICAgLCBtX293bmVyKG93bmVyKQogewogICAgIEFTU0VSVChtX3N0
cmVhbSk7Ci0gICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQo
KSk7CisgICAgbV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEoZ3N0X3N0cmVhbV9nZXRfc3Ry
ZWFtX2lkKG1fc3RyZWFtLmdldCgpKSk7CiAKICAgICAvLyBXZSBjYW4ndCBjYWxsIG5vdGlmeVRy
YWNrT2ZUYWdzQ2hhbmdlZCgpIGRpcmVjdGx5LCBiZWNhdXNlIHdlIG5lZWQgdGFnc0NoYW5nZWQo
KSB0byBzZXR1cCBtX3RhZ3MuCiAgICAgdGFnc0NoYW5nZWQoKTsKQEAgLTI1Miw3ICsyNTIsNyBA
QCB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFu
Z2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCBzdHJl
YW0gc3RhcnQgZm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZC5nZXQoKSk7Ci0gICAg
bV9pZCA9IHN0cmVhbUlkLmdldCgpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4x
KHN0cmVhbUlkLmdldCgpKTsKIH0KIAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpz
dHJlYW1DaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IGJjNTM5YTg3NDc4
MDI4MTgxM2Y2YWYzMDBhZTJlMDJiNzZhZTYxYmMuLjQ4OTAyMjkzNjkxOWQ3MzlkMDBlYTFjY2Mz
MjY2ZmRhZWYyODY3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMTQ3LDEwICsx
NDcsMTAgQEAgVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzKCkgY29uc3QKICAgICBzdGF0aWMgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBv
cnRlZEluaXREYXRhVHlwZXM7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAg
ICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDQpOwot
ICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5n
KCJrZXlpZHMiKSk7Ci0gICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBw
ZW5kKEF0b21TdHJpbmcoImNlbmMiKSk7Ci0gICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMu
dW5jaGVja2VkQXBwZW5kKEF0b21TdHJpbmcoIndlYm0iKSk7Ci0gICAgICAgIHN1cHBvcnRlZElu
aXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKEF0b21TdHJpbmcoImNiY3MiKSk7CisgICAgICAg
IHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKCJrZXlpZHMiX3MpOworICAg
ICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZCgiY2VuYyJfcyk7Cisg
ICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKCJ3ZWJtIl9zKTsK
KyAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoImNiY3MiX3Mp
OwogICAgIH0pOwogICAgIHJldHVybiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogfQpAQCAtMTcw
LDkgKzE3MCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjCiAKIFZlY3RvcjxBdG9tU3RyaW5n
PiBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4geyBlbXB0eUF0b20oKSwKLSAgICAgICAgIlNXX1NFQ1VSRV9ERUNPREUiLAotICAg
ICAgICAiU1dfU0VDVVJFX0NSWVBUTyIgfTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSwgIlNX
X1NFQ1VSRV9ERUNPREUiX3MsICJTV19TRUNVUkVfQ1JZUFRPIl9zIH07CiB9CiAKIENETVJlcXVp
cmVtZW50IENETVByaXZhdGVUaHVuZGVyOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1l
bnQoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9u
cyYpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IDBiYjIyZDUy
NTkwZWRlMjU3OGYwNGYyNmE2MTZmOTE2MGM0NGIzZGUuLmMyNmE5YjUzNTY2OTM0ODhiNDI1ZjZl
OTdjNDgxYjE1YjI3N2E1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBA
IC03MTMsNyArNzEzLDcgQEAgQXBwZW5kUGlwZWxpbmU6OlRyYWNrKiBBcHBlbmRQaXBlbGluZTo6
dHJ5TWF0Y2hQYWRUb0V4aXN0aW5nVHJhY2soR3N0UGFkICpkZW11eGUKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2hhc1JlY2VpdmVkRmlyc3RJbml0aWFsaXph
dGlvblNlZ21lbnQpOwotICAgIEF0b21TdHJpbmcgdHJhY2tJZCA9IEdTVF9QQURfTkFNRShkZW11
eGVyU3JjUGFkKTsKKyAgICBhdXRvIHRyYWNrSWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKEdT
VF9QQURfTkFNRShkZW11eGVyU3JjUGFkKSk7CiAgICAgYXV0byBbcGFyc2VkQ2Fwcywgc3RyZWFt
VHlwZSwgcHJlc2VudGF0aW9uU2l6ZV0gPSBwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKGFkb3B0R1Jl
Zihnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMoZGVtdXhlclNyY1BhZCkpLmdldCgpKTsKIAogICAg
IC8vIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgcHJlLWV4aXN0aW5nIHRyYWNrLiBJZGVhbGx5LCB0
cmFja3Mgc2hvdWxkIGJlIG1hdGNoZWQgYnkgdHJhY2sgSUQsIGJ1dCBtYXRjaGluZyBieSB0eXBl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCmluZGV4IDNlNGUwZTkzNDI1ZTY4MGI5MDM2MjdiZTk5ZmI0M2YyYTIz
YzJlMGYuLjQ2MjQxZDEyNDE5M2FlZWFlMmVkZWQ0MDVjYTI4NWMzOTNhMzE1YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIHVuc2lnbmVkIGhvdXJz
ID0gbWludXRlcyAvIDYwICUgNjA7CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJDb3VyaWVyIik7
CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiQ291cmllciJfcyk7CiAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CiAKICAgICBm
b250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShtX2Jhc2VGb250U2l6ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApp
bmRleCBhNTMxMDYwN2EzMDQ5OTk1M2U0OTVkYWU2MzQ1ZjhlNTJmZGYwNzJlLi45Nzc4YzE3NWYz
NGQ0NmQwYjZmNTAxMTZlN2U4ZDNhNTU0OTQ0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTY3LDggKzY3LDkg
QEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpCiB7
CiAgICAgc3RhdGljIGJvb2wgZGlkUmVnaXN0ZXIgPSBmYWxzZTsKICAgICBpZiAoIWRpZFJlZ2lz
dGVyKSB7Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3Rv
cigiYmxvYiIsIGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZSk7Ci0gICAgICAgIFJlc291cmNlSGFu
ZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcigiYmxvYiIsIGxvYWRCbG9iUmVz
b3VyY2VTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgQXRvbVN0cmluZyBibG9iID0gImJsb2IiX3M7
CisgICAgICAgIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3RvcihibG9i
LCBjcmVhdGVCbG9iUmVzb3VyY2VIYW5kbGUpOworICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVn
aXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoYmxvYiwgbG9hZEJsb2JSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOwogICAgICAgICBkaWRSZWdpc3RlciA9IHRydWU7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGEzZmVmYWQwNmE2YjI3
MmIxYWYxYjU5MDQzNjk4MmExNjg1M2IxYWYuLjQ4NWNlNzNkOWMzNGEwYzlhMzQyZDNjZmU3MGE1
NWU0NDZmY2EyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5j
cHAKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIHNob3dDb3VudGVyUmVuZGVyZXJUcmVlKGNvbnN0
IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IGNoYXIqCiAgICAgd2hpbGUg
KHJvb3QtPnBhcmVudCgpKQogICAgICAgICByb290ID0gcm9vdC0+cGFyZW50KCk7CiAKLSAgICBB
dG9tU3RyaW5nIGlkZW50aWZpZXIoY291bnRlck5hbWUpOworICAgIGF1dG8gaWRlbnRpZmllciA9
IEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY291bnRlck5hbWUpOwogICAgIGZvciAoYXV0byogY3Vy
cmVudCA9IHJvb3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0SW5QcmVPcmRlcigp
KSB7CiAgICAgICAgIGlmICghaXM8V2ViQ29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJlbnQpKQog
ICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDI2M2FjNzVhYzdlNGQyYTNkMjM1OTE0NmFhYzNkZjdj
ZjQ5YmI5MjIuLmQ5Nzc4OTVhZmRjMTc4ZTYzZjNhNGNkYTkxMjBmNjYzYWI1ZTE5ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0z
MzMwLDcgKzMzMzAsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlw
dGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBHcmFwaGlj
c0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAKICAgICAg
ICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0U3BlY2lmaWVkU2l6ZSgxMCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoMTApOwogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxl
Y3Rpb25WYWx1ZSg1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAppbmRleCAyMWQ5YzdlMmM3MmVkMTA0YTg1ZWQ5
OWQwNTE2YjdjYWQ2YjE4ZTc3Li5jMGMzNDc4YzI4YjlhODU0YTgxMjYzNGFjYWFlMzI4NGVmNTRm
Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZlbmNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGZW5jZWQuY3BwCkBAIC00NSw4ICs0NSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRo
TUxOYW1lczsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck1hdGhNTEZlbmNl
ZCk7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBnT3BlbmluZ0JyYWNlQ2hhciA9ICIoIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBnQ2xvc2luZ0JyYWNlQ2hhciA9ICIpIjsKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBnT3BlbmluZ0JyYWNlQ2hhciA9ICIoIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdD
bG9zaW5nQnJhY2VDaGFyID0gIikiX3M7CiAKIFJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0
aE1MRmVuY2VkKE1hdGhNTFJvd0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXggMzMx
ODliZDY0Y2FjYmVkZjkzNjhkMzRmYTlmYjU2NGQ1OGJkMWYzNi4uOGFjNmVkZWMyZmUwYjYxNjcx
ODgyYTVmOWZmZDY0N2Y0MDZiY2Y0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlbmRlclN0eWxl
IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIGlm
IChyZW5kZXJWaWV3Lm11bHRpQ29sdW1uRmxvdygpKQogICAgICAgICAgICAgcmVuZGVyVmlldy51
cGRhdGVDb2x1bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShkb2N1bWVudFN0eWxlKTsKICAgICAgICAg
aWYgKHJlbmRlclZpZXcucGFnZSgpLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoKSkgewotICAg
ICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2lu
YXRpb24tZ3JpZCIpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdl
YmtpdC1kZWZhdWx0LXBhZ2luYXRpb24tZ3JpZCJfcyk7CiAgICAgICAgICAgICBkb2N1bWVudFN0
eWxlLnNldExpbmVTbmFwKExpbmVTbmFwOjpDb250YWluKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKaW5kZXggM2FkMjRl
NWZjYzkxY2IyZjg4ZTIwMjU0YWJhZDYwMTQ4NzE5Mjg4ZC4uNjNiY2QxYTgwZWY3ODUzMzk0MjQy
MTMwZGQyZGY4OTA5YzIyM2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlVXJpRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNl
VXJpRWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+
IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gc3Jj
ID0gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGdldEF0dHJpYnV0ZShTVkdOYW1lczo6aHJl
ZkF0dHIsIFhMaW5rTmFtZXM6OmhyZWZBdHRyKSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8p
OwogICAgIEF0b21TdHJpbmcgdmFsdWUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihm
b3JtYXRBdHRyKSk7Ci0gICAgc3JjLmdldCgpLnNldEZvcm1hdCh2YWx1ZS5pc0VtcHR5KCkgPyAi
c3ZnIiA6IHZhbHVlKTsgLy8gRGVmYXVsdCBmb3JtYXQKKyAgICBzcmMuZ2V0KCkuc2V0Rm9ybWF0
KHZhbHVlLmlzRW1wdHkoKSA/ICJzdmciX3MgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0CiAg
ICAgcmV0dXJuIHNyYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4
IGEwMWY2YmFkYTFjMWQ2YzI1ZjgyMGY3MjZjOGVjZWU4MTgyZWNiNmEuLjZlNWM3Yzc0YzhlN2Nj
ZTdkOTgzNzU4YWRkNDUyYmZlZmE0YTAxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAgICAg
ICAvLyBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRo
ZSAndXNlJyBlbGVtZW50LCB0aGVuIHRoZXNlIGF0dHJpYnV0ZXMKICAgICAgICAgLy8gd2lsbCBi
ZSB0cmFuc2ZlcnJlZCB0byB0aGUgZ2VuZXJhdGVkICdzdmcnLiBJZiBhdHRyaWJ1dGVzIHdpZHRo
IGFuZC9vciBoZWlnaHQgYXJlIG5vdCBzcGVjaWZpZWQsCiAgICAgICAgIC8vIHRoZSBnZW5lcmF0
ZWQgJ3N2ZycgZWxlbWVudCB3aWxsIHVzZSB2YWx1ZXMgb2YgMTAwJSBmb3IgdGhlc2UgYXR0cmli
dXRlcy4KLSAgICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRo
QXR0ciwgd2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcod2lkdGgo
KS52YWx1ZUFzU3RyaW5nKCkpIDogIjEwMCUiKTsKLSAgICAgICAgc2hhZG93RWxlbWVudC5zZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRV
bml0cygpID8gQXRvbVN0cmluZyhoZWlnaHQoKS52YWx1ZUFzU3RyaW5nKCkpIDogIjEwMCUiKTsK
KyAgICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwg
d2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcod2lkdGgoKS52YWx1
ZUFzU3RyaW5nKCkpIDogIjEwMCUiX3MpOworICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJp
YnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRz
KCkgPyBBdG9tU3RyaW5nKGhlaWdodCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSJfcyk7CiAg
ICAgfSBlbHNlIGlmIChpczxTVkdTVkdFbGVtZW50PihzaGFkb3dFbGVtZW50KSkgewogICAgICAg
ICAvLyBTcGVjICg8dXNlPiBvbiA8c3ZnPik6IElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhl
aWdodCBhcmUgcHJvdmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UKICAgICAg
ICAgLy8gdmFsdWVzIHdpbGwgb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBv
biB0aGUgJ3N2ZycgaW4gdGhlIGdlbmVyYXRlZCB0cmVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCmluZGV4IGU3YWUxYThjNjhiMDAxNzEzZDE3NzVh
MjQyZTk0YmM2MTYwZmZkNWYuLjFkYTExOTRiYThlZmQwZWEwNGFmMjUzZDQxOWIyNjkxNGFkMGY4
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGZXRjaEV2ZW50LmgiCiAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTQyLDcgKzQzLDcgQEAgUmVmPEZldGNoRXZlbnQ+
IEZldGNoRXZlbnQ6OmNyZWF0ZUZvclRlc3RpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKIHsKICAgICBGZXRjaEV2ZW50OjpJbml0IGluaXQ7CiAgICAgaW5pdC5yZXF1ZXN0ID0g
RmV0Y2hSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShG
ZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUsIHsgfSksIHsgfSwgeyB9LCB7IH0pOwotICAg
IHJldHVybiBGZXRjaEV2ZW50OjpjcmVhdGUoKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksICJmZXRj
aCIsIFdURk1vdmUoaW5pdCksIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgcmV0dXJuIEZl
dGNoRXZlbnQ6OmNyZWF0ZSgqY29udGV4dC5nbG9iYWxPYmplY3QoKSwgZXZlbnROYW1lcygpLmZl
dGNoRXZlbnQsIFdURk1vdmUoaW5pdCksIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgUmVmPERPTVByb21pc2U+IHJldHJpZXZlSGFuZGxlZFByb21pc2UoSlNDOjpK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWZQdHI8RE9NUHJvbWlzZT4mJiBwcm9taXNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAppbmRleCA2ZGYzZjBjOTNlZjQ1NjBiMjk3NjNkOGIx
NGZkMjg1NzI4ZGJjNzY4Li5lZjRjZGVhYmRlNDlkZWM0MDQyYTZmODMyNTBiNmUyZjc3MjYwMTU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcApAQCAtODMsMTAgKzgzLDEwIEBAIHZvaWQgWE1M
RXJyb3JzOjphcHBlbmRFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFsIHR5cGVTdHJpbmcsIFRleHRQ
b3NpdGlvbiBwb3NpdGlvCiAKIHN0YXRpYyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1M
UGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZXMpCiB7Ci0gICAgUmVmPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgInBhcnNlcmVycm9yIiwgeGh0
bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKKyAgICBSZWY8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCAicGFyc2Vy
ZXJyb3IiX3MsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CiAKICAgICBWZWN0b3I8QXR0cmli
dXRlPiByZXBvcnRBdHRyaWJ1dGVzOwotICAgIHJlcG9ydEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJp
YnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVy
OiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNr
Z3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxhY2siKSk7CisgICAgcmVwb3J0QXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFj
ZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFy
Z2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayJfcykpOwogICAg
IHJlcG9ydEVsZW1lbnQtPnBhcnNlclNldEF0dHJpYnV0ZXMocmVwb3J0QXR0cmlidXRlcyk7CiAK
ICAgICBhdXRvIGgzID0gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoaDNUYWcsIGRvY3VtZW50
KTsKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhU
TUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnMKIAogICAgIGF1dG8g
Zml4ZWQgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBWZWN0b3I8QXR0
cmlidXRlPiBmaXhlZEF0dHJpYnV0ZXM7Ci0gICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRy
aWJ1dGUoc3R5bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4Iikp
OworICAgIGZpeGVkQXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImZvbnQt
ZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTJweCJfcykpOwogICAgIGZpeGVkLT5wYXJzZXJT
ZXRBdHRyaWJ1dGVzKGZpeGVkQXR0cmlidXRlcyk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2Vy
QXBwZW5kQ2hpbGQoZml4ZWQpOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBYTUxFcnJvcnM6
Omluc2VydEVycm9yTWVzc2FnZUJsb2NrKCkKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9k
b2N1bWVudC50cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAgIFZlY3RvcjxBdHRy
aWJ1dGU+IGF0dHJpYnV0ZXM7Ci0gICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShz
dHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTogbm9ybWFsIikpOworICAgICAgICBhdHRyaWJ1dGVzLmFw
cGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCJfcykpOwogICAg
ICAgICBhdXRvIHBhcmFncmFwaCA9IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpjcmVhdGUobV9kb2N1
bWVudCk7CiAgICAgICAgIHBhcmFncmFwaC0+cGFyc2VyU2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVz
KTsKICAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJBcHBlbmRDaGlsZChtX2RvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJUaGlzIGRvY3VtZW50IHdhcyBjcmVhdGVkIGFzIHRoZSByZXN1bHQgb2YgYW4g
WFNMIHRyYW5zZm9ybWF0aW9uLiBUaGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgZ2l2ZW4gYXJl
IGZyb20gdGhlIHRyYW5zZm9ybWVkIHJlc3VsdC4iX3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVl
Vmlld2VyLmNwcAppbmRleCAyMzVmYTM4NWRhZDYxZTVjYjdhYmFiMDE5YTg5OWIzMWQzYTBiMzY5
Li4wMmVlOTkwY2UwN2RhMGJmMzkzMDRhYjFkYjcyYWUwNzRlMWMxYTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTFRyZWVWaWV3ZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgWE1MVHJlZVZpZXdl
cjo6dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KCkKIHsKICAgICBTdHJpbmcgc2NyaXB0U3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2pzLCBzaXpl
b2YoWE1MVmlld2VyX2pzKSk7CiAgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFs
dWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5nKSk7Ci0g
ICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9u
KFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhp
cyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24g
YXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsi
KSkpOworICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4
Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3
ZXIoJ1RoaXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9y
bWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVs
b3cuJyk7Il9zKSkpOwogCiAgICAgU3RyaW5nIGNzc1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKFhNTFZpZXdlcl9jc3MsIHNpemVvZihYTUxWaWV3ZXJfY3NzKSk7CiAg
ICAgYXV0byB0ZXh0ID0gbV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3NTdHJpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBh
c3N3b3JkRmllbGQubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luUGFzc3dvcmRGaWVsZC5tbQppbmRleCBmNjJkYzdjODM3ZjAyZjcwMTBjODJkOTc5MGUy
YmFhZjIxNGUxZDIxLi42YjI4NTgwNTk0ZWUzNWUxNTI5M2NjMzdkZjAwODMwYzFlMWJhM2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
UGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQpAQCAtNTQsNyArNTQsNyBAQCBQREZQbHVnaW5Q
YXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgpCiBSZWY8RWxlbWVudD4gUERG
UGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewogICAgIGF1
dG8gZWxlbWVudCA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7
CisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCAicGFzc3dvcmQiX3MpOwogICAg
IGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVu
dExpc3RlbmVyKCksIGZhbHNlKTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggNzNm
YzAxMzQyYzhiN2Y0MTRjYzhkYzE1YzhiYzdkNWQ5OWI0NzVjNC4uNThmYTNlNDIxYzcxMGRlZGVm
ZmYzMWRlMjRjZGVjNDhiOWVlYmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIEpTVmFs
dWVSZWYgSlNJUEM6Om1lc3NhZ2VzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBKU1N0cmluCiAgICAgICAgIGRpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaXNT
eW5jSWRlbnQsIEpTQzo6anNCb29sZWFuKG1lc3NhZ2VJc1N5bmMobmFtZSkpKTsgICAgICAgICAg
ICAKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCkpOwogCi0gICAgICAgIG1lc3NhZ2VzT2JqZWN0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIGRlc2NyaXB0aW9uKG5hbWUpKSwgZGljdGlv
bmFyeSk7CisgICAgICAgIG1lc3NhZ2VzT2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbUxhdGluMSh2bSwgZGVzY3JpcHRpb24obmFtZSkpLCBkaWN0aW9uYXJ5KTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAxNDBlY2FkYmE3ZjdjZWE2NjBhMTE3MGE1OWE4MTVl
NGU3MDZmNWU0Li40ZTJlOWJhODI1YjBiYWJiNDk3YzBkOTlmYzg5NWM1ZDAwMzU3YWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtMzQ0Miw3ICszNDQyLDcgQEAgc3RkOjpvcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uPiBXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkKICAgICAgICAgZWxz
ZSBpZiAoZWxlbWVudC5pc1RlbGVwaG9uZUZpZWxkKCkpCiAgICAgICAgICAgICBpbmZvcm1hdGlv
bi5lbGVtZW50VHlwZSA9IElucHV0VHlwZTo6UGhvbmU7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1l
bnQuaXNOdW1iZXJGaWVsZCgpKQotICAgICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUg
PSBlbGVtZW50LmdldEF0dHJpYnV0ZSgicGF0dGVybiIpID09ICJcXGQqIiB8fCBlbGVtZW50Lmdl
dEF0dHJpYnV0ZSgicGF0dGVybiIpID09ICJbMC05XSoiID8gSW5wdXRUeXBlOjpOdW1iZXJQYWQg
OiBJbnB1dFR5cGU6Ok51bWJlcjsKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpwYXR0ZXJuQXR0cikgPT0gIlxcZCoi
IHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6cGF0dGVybkF0dHIpID09ICJbMC05
XSoiID8gSW5wdXRUeXBlOjpOdW1iZXJQYWQgOiBJbnB1dFR5cGU6Ok51bWJlcjsKICAgICAgICAg
ZWxzZSBpZiAoZWxlbWVudC5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpKQogICAgICAgICAgICAgaW5m
b3JtYXRpb24uZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw7CiAgICAgICAg
IGVsc2UgaWYgKGVsZW1lbnQuaXNEYXRlRmllbGQoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNjdjZWI5YmExYTI2NWNjOTUzN2ZhMGYwODJm
MGE5YzgxNDc2MDEyLi4wMjViYjA1MTVkNmNhOGJkNTRlYzlmYTdkNjU2NWY0YTQxNmNmOTk1IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMjItMDQtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXBsYWNlIEF0b21TdHJpbmcoY29uc3QgY2hhciopIHdpdGggQXRvbVN0cmluZzo6
ZnJvbUxhdGluMShjb25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzOTEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0w
NC0xMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgaVBo
b25lIDEyIF0gZmFzdC9oaWRwaSAmIGZhc3QvbGF5ZXJzL2hpZHBpIHRlc3RzIGFyZSBmbGFreSB0
ZXh0L2ltYWdlIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0F0b21TdHJpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0
cmluZy5jcHAKaW5kZXggYmU3NDE1NGUzODhiYTdjNTY0NjFlYzk2YmE3MDAzZTFkOTJiNjhlYS4u
MDNmMTliMDQxMzJlNWI1MGMzZDg0ZmZmZWU4N2E2YWE1OGVjOWJkYSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgVEVT
VChXVEYsIEF0b21TdHJpbmdDcmVhdGlvbkZyb21MaXRlcmFsVW5pcXVlbmVzcykKICAgICBBdG9t
U3RyaW5nIHN0cmluZzIoIlRlbXBsYXRlIExpdGVyYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCk7CiAgICAgQVNTRVJUX0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmcyLmltcGwo
KSk7CiAKLSAgICBBdG9tU3RyaW5nIHN0cmluZzMoIlRlbXBsYXRlIExpdGVyYWwiKTsKKyAgICBB
dG9tU3RyaW5nIHN0cmluZzMoIlRlbXBsYXRlIExpdGVyYWwiX3MpOwogICAgIEFTU0VSVF9FUShz
dHJpbmcxLmltcGwoKSwgc3RyaW5nMy5pbXBsKCkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAppbmRleCBiNDQyZTQzNjhjMDNk
YjdiYTYzMGM3YWVhMmE5ODM1ZDM0OGI0NGI4Li4wMmI2MTY0YmQ1OWU5ZjIxZmQ0Y2Y4Nzk2Zjhm
Y2I0OWZlNmJiZWZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdPcGVyYXRvcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ09wZXJhdG9ycy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogVEVTVChXVEYsIFN0cmluZ09wZXJhdG9ycykKIHsKICAgICBTdHJpbmcgc3RyaW5nKCJT
dHJpbmciX3MpOwotICAgIEF0b21TdHJpbmcgYXRvbVN0cmluZygiQXRvbVN0cmluZyIpOworICAg
IEF0b21TdHJpbmcgYXRvbVN0cmluZygiQXRvbVN0cmluZyJfcyk7CiAgICAgQVNDSUlMaXRlcmFs
IGxpdGVyYWwgeyAiQVNDSUlMaXRlcmFsIl9zIH07CiAKICAgICBTdHJpbmcgc3RyaW5nVmlld0Jh
Y2tpbmcgeyAiU3RyaW5nVmlldyJfcyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBiY2Yw
MzI5NTViZTJlYmRmZmU2OTNkOGE4YmJkODJiZjk0MmY5ZDk5Li4zODBmMzQwYjFhNDMxZjI0NzJj
MDJhMTFiOTU4YThiZGE2OTJmMDc0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlh
bEFkdmFuY2VXaXRoTGVmdFJ1bkluUlRMKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAg
IGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNl
dENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0
aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTk0LDcgKzk0LDcgQEAgVEVTVF9GKENvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKIFRF
U1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQogewog
ICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24u
c2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGlt
ZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENh
c2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAg
LTEzOCw3ICsxMzgsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlh
bEFkdmFuY2VJblJUTCkKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFs
QWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5kZSIp
OworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIl9zKTsKICAgICBk
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RG
TW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0xODEsNyArMTgxLDcg
QEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExl
ZnRSdW5JbkxUUikKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2
YW5jZUluTFRSKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0g
ICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFHcmFuZGUiKTsKKyAgICBkZXNjcmlw
dGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5kZSJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0
Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRp
b24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluTFRSKQogVEVTVF9GKENvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiB7CiAg
ICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5z
ZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1l
cyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDQ4KTsKICAgICBGb250Q2Fz
Y2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAt
MjY0LDcgKzI2NCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFs
QWR2YW5jZUluUlRMTm9PcmlnaW5zKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3Qs
IExlZnRFeHBhbnNpb24pCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKDQ4KTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAg
ICBmb250LnVwZGF0ZSgpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBMZWZ0RXhwYW5zaW9uKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIFZlcnRpY2FsQWR2YW5jZXMpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAg
ZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0
Q29tcHV0ZWRTaXplKDQ4KTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRp
b24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQogVEVTVF9GKENvbXBsZXhU
ZXh0Q29udHJvbGxlclRlc3QsIFRvdGFsV2lkdGhXaXRoSnVzdGlmaWNhdGlvbikKIHsKICAgICBG
b250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9z
KTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRl
IGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAppbmRleCAyZjI4ZDRlNjY1
MzMwZmM2ODYzZTQxZTA3ZWQ3YmM3YmRiMGU0NDY0Li40MDZkMDg3M2FkZjlkNmIzMWUxYmFhZThj
NzVhMGQ3ZGU3NGFkMjRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
VGVzdHNDRy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0VGVzdHMsIFRleHQpCiAgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjdHgocHJpbWFy
eUNvbnRleHQsIHNlY29uZGFyeUNvbnRleHQpOwogCiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlv
biBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7Cisg
ICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24u
c2V0Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3Jp
cHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwo=
</data>
<flag name="commit-queue"
          id="485923"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457343</attachid>
            <date>2022-04-12 10:41:10 -0700</date>
            <delta_ts>2022-04-12 10:57:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412104109.patch</filename>
            <type>text/plain</type>
            <size>116642</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uMzk0N2VmNTY3MmFiYjUzNDFj
MDhjNDExNGUwY2Y5MzJkMDQyOWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KCIiX3MpOwogCiAgICAgICAgIC8vIFdoZW4gc3RhcnRpbmcgV2ViVGhyZWFkIHZp
YSBTdGFydFdlYlRocmVhZCBmdW5jdGlvbiwgd2UgaGF2ZSBzcGVjaWFsIHBlcmlvZCBiZXR3ZWVu
IHRoZSBwcm9sb2d1ZSBvZiBTdGFydFdlYlRocmVhZCBhbmQgc3Bhd25pbmcgV2ViVGhyZWFkIGFj
dHVhbGx5LgogICAgICAgICAvLyBJbiB0aGlzIHBlcmlvZCwgYGlzTWFpblRocmVhZCgpYCByZXR1
cm5zIGZhbHNlIGV2ZW4gaWYgdGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNl
IFdlYlRocmVhZCBpcyBub3cgZW5hYmxlZCBhbmQgd2UgYXJlIG5vdCB0YWtpbmcgYSBXZWJUaHJl
YWQgbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggMzUwNjM5ZGM1ZDZmYTI4MzE3
NGU1YzE0NjFiN2Q0NWNiNDIwNTc1OS4uMDY5YWY2ZDMyNTlkMzJiMjRjOTVhMjU0MDNhYTNmYWMw
ZDgwYjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTM5LDExICszOSwxMiBAQCBw
dWJsaWM6CiAKICAgICBBdG9tU3RyaW5nKCk7CiAgICAgQXRvbVN0cmluZyhjb25zdCBMQ2hhciop
OwotICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOwogICAgIEF0b21TdHJpbmcoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIEF0b21TdHJpbmcoY29uc3QgVUNoYXIqKTsKIAorICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEF0b21TdHJpbmcgZnJvbUxhdGluMShjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzKSB7IHJldHVybiBBdG9tU3RyaW5nKGNoYXJhY3RlcnMpOyB9CisKICAgICB0ZW1wbGF0ZTxz
aXplX3QgaW5saW5lQ2FwYWNpdHk+CiAgICAgZXhwbGljaXQgQXRvbVN0cmluZyhjb25zdCBWZWN0
b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYgY2hhcmFjdGVycykKICAgICAgICAgOiBtX3N0cmlu
ZyhBdG9tU3RyaW5nSW1wbDo6YWRkKGNoYXJhY3RlcnMuZGF0YSgpLCBjaGFyYWN0ZXJzLnNpemUo
KSkpCkBAIC0xNjcsNiArMTY4LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAg
QXRvbVN0cmluZyhjb25zdCBjaGFyKik7CisKICAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlw
ZSB7IFVwcGVyLCBMb3dlciB9OwogICAgIHRlbXBsYXRlPENhc2VDb252ZXJ0VHlwZT4gQXRvbVN0
cmluZyBjb252ZXJ0QVNDSUlDYXNlKCkgY29uc3Q7CiAKQEAgLTE4MCw2ICsxODMsNyBAQCBzdGF0
aWNfYXNzZXJ0KHNpemVvZihBdG9tU3RyaW5nKSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJp
bmcgYW5kIFN0cmluZyBtdXN0CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuIGEuaW1wbCgpID09IGIuaW1wbCgp
OyB9CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IExDaGFyKik7CiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIp
IHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihiKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwg
QVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0
dXJuIGEuaW1wbCgpICYmIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9ICAg
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
IGIgPT0gYTsgfQpAQCAtMTkyLDYgKzE5Niw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXRvbVN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyBy
ZXR1cm4gIShhID09IGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJu
ICEoYiA9PSBhKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9
CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0
b21TdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApp
bmRleCA4Y2RiY2E3N2FmMzgzMDdiMmI0YzBhNGQyNWExZjBlOTExYWJiMWRlLi42MjQ5MmE5MDYw
NTRiNWQyY2Y4ZTU5MjFiYjljNDhlZjczZjM0YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAg
LTIyNiw5ICsyMjYsOSBAQCBJbml0RGF0YVJlZ2lzdHJ5JiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFy
ZWQoKQogCiBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIHsKLSAgICByZWdp
c3RlckluaXREYXRhVHlwZSgia2V5aWRzIiwgeyBzYW5pdGl6ZUtleWlkcywgZXh0cmFjdEtleUlE
c0tleWlkcyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgiY2VuYyIsIHsgc2FuaXRpemVD
ZW5jLCBleHRyYWN0S2V5SURzQ2VuYyB9KTsKLSAgICByZWdpc3RlckluaXREYXRhVHlwZSgid2Vi
bSIsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKKyAgICByZWdpc3Rlcklu
aXREYXRhVHlwZSgia2V5aWRzIl9zLCB7IHNhbml0aXplS2V5aWRzLCBleHRyYWN0S2V5SURzS2V5
aWRzIH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJjZW5jIl9zLCB7IHNhbml0aXplQ2Vu
YywgZXh0cmFjdEtleUlEc0NlbmMgfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoIndlYm0i
X3MsIHsgc2FuaXRpemVXZWJNLCBleHRyYWN0S2V5SURzV2ViTSB9KTsKIH0KIAogSW5pdERhdGFS
ZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCBhNmQzMTAyYzg4MmE2MDk4ZjQ3OTJiN2JjZDA2YmEyNmQ0Mjg3ZDhhLi4wMDUwZGUx
NmMwY2JkN2YwNjU3NjliYzU4MjY0YjYxMTY4ZWRjZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTE3ODYsNyArMTc4Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiAgICAgaWYgKCFp
czxFbGVtZW50Pihub2RlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOworICAgIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5zZXRBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSwgKHZhbHVlKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGNiMmFmMWY2NmJmNDFlNTZkMDAyZmVmMDAw
ZmUxMTBkMzIwNDMzZDEuLmNkYTQwMWViMGY1YzRjMGY3MGZlYjYxMDg5M2NmMTRkZjA1ZjJiMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU1dlYkFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgIktleWZyYW1lRWZmZWN0LmgiCkBAIC0xNDc0LDcgKzE0NzUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmNvbW1pdFN0eWxlcygpCiAKICAgICBhdXRvIGNvbXB1
dGVkU3R5bGVFeHRyYWN0b3IgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKCZzdHlsZWRFbGVtZW50
KTsKICAgICBhdXRvIGlubGluZVN0eWxlID0gc3R5bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICBpbmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHls
ZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSk7CisgICAgaW5saW5lU3R5bGUtPnNldENz
c1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpKTsK
IAogICAgIGF1dG8mIGtleWZyYW1lU3RhY2sgPSBzdHlsZWRFbGVtZW50LmVuc3VyZUtleWZyYW1l
RWZmZWN0U3RhY2soUHNldWRvSWQ6Ok5vbmUpOwogICAgIC8vIER1cmluZyBpdGVyYXRpb24gcmVz
b2x2ZSgpIGNvdWxkIGNsZWFyIHRoZSB1bmRlcmx5aW5nIHByb3BlcnRpZXMgc28gd2UgdXNlIGEg
Y29weQpAQCAtMTUwNyw3ICsxNTA4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
Ojpjb21taXRTdHlsZXMoKQogICAgICAgICAgICAgaW5saW5lU3R5bGUtPnNldFByb3BlcnR5SW50
ZXJuYWwocHJvcGVydHksIGNzc1ZhbHVlLT5jc3NUZXh0KCksIGZhbHNlKTsKICAgICB9CiAKLSAg
ICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZSgic3R5bGUiLCBpbmxpbmVTdHlsZS0+Y3NzVGV4
dCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0
ciwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50SW5saW5lcy5oCmluZGV4IDdjMWVmN2M2M2M0YzM1NzdkMTllZWVhMzlm
ZjJhYTAzODZmOGJlOWUuLjFmZTg2MDM5NDg5NTYwOGM2ODhhNDMxY2IxMGNhMTMxM2FjNzk4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRJbmxpbmVzLmgKQEAgLTM5LDcgKzM5LDcgQEAgaW5s
aW5lIFBBTDo6VGV4dEVuY29kaW5nIERvY3VtZW50Ojp0ZXh0RW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBQQUw6OlRleHRFbmNvZGluZygpOwogfQogCi1pbmxpbmUgQXRvbVN0cmluZyBEb2N1
bWVudDo6ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiB0ZXh0RW5jb2RpbmcoKS5kb21OYW1lKCk7
IH0KK2lubGluZSBBdG9tU3RyaW5nIERvY3VtZW50OjplbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IEF0b21TdHJpbmc6OmZyb21MYXRpbjEodGV4dEVuY29kaW5nKCkuZG9tTmFtZSgpKTsgfQogCiBp
bmxpbmUgU3RyaW5nIERvY3VtZW50OjpjaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gRG9jdW1lbnQ6
OmVuY29kaW5nKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGUwMGMxZjlhODk1NGVl
MGI4Y2JjMWQ4MmQzMGI2MDFkZmUxMzliZWMuLmVmZjgwYjU1ZjE3NTM0M2QyOTExYmI3ZjExZDQ1
MGViM2U5MzBlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMyMjQsNyArMzIyNCw3IEBA
IHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9j
dXNlZEVsZW1lbnQpCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VSZWFkeUV2ZW50
Rm9yVGVzdGluZygpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS53ZWJraXRJbWFn
ZVJlYWR5RXZlbnRFbmFibGVkKCkpCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5IiwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpZZXMpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KCJ3ZWJraXRJbWFnZUZyYW1lUmVhZHkiX3MsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6WWVzKSk7CiB9CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUZv
cmNlV2lsbEJlZ2luKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAppbmRleCA0MTNl
MzQ2NzJlYjY3NTZkODlhMGZlNGFmZDY3ZjllYTZjNjhiYzVjLi4zNmM4OTc3YjE2YjQ1ZjNhODdl
ZWQ5M2M4YWU0YjQ2ZDU1Njk2YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNl
dWRvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChQc2V1ZG9FbGVt
ZW50KTsKIAogY29uc3QgUXVhbGlmaWVkTmFtZSYgcHNldWRvRWxlbWVudFRhZ05hbWUoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCks
ICI8cHNldWRvPiIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFs
aWZpZWROYW1lPiBuYW1lKG51bGxBdG9tKCksICI8cHNldWRvPiJfcywgbnVsbEF0b20oKSk7CiAg
ICAgcmV0dXJuIG5hbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDdk
OWQ1OWJlMWMxNTJmMDk4NWY1ZjUxOGJiOWZjY2U1NmY4N2JjOWEuLjgwZmZkMWVjM2Y4MjBmMTY2
NzJhYjE4YjY0MjUwNDNiOWJmNGJmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApA
QCAtODIwLDcgKzgyMCw3IEBAIHN0YXRpYyBSZWY8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBUZXh0JiB0YWJUZXh0Tm9kZSkKICAgICBhdXRvIHNwYW5F
bGVtZW50ID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgc3BhbkVs
ZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBs
ZVRhYlNwYW5DbGFzcyk7Ci0gICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3aGl0ZS1zcGFjZTpwcmUiKTsKKyAgICBzcGFuRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIndoaXRlLXNwYWNlOnByZSJfcyk7CiAKICAgICBzcGFuRWxlbWVudC0+YXBwZW5kQ2hp
bGQodGFiVGV4dE5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjgwMzMx
YjI4ZjA3Y2Y1NDZlZTExYzViYTBmYzFjM2E5ZGZjOTg5ZS4uOTc0Nzg4YTNiM2FhODEzZWYwMWUy
ZDIxYmIyNzkyMmMyMGZiN2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTE3
OCw3ICsxMTc4LDcgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKENvbXBvc2l0ZUVkaXRD
b21tYW5kJiBjb21tYW5kKQogCiBib29sIEVkaXRvcjo6d2lsbFVuYXBwbHlFZGl0aW5nKGNvbnN0
IEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVy
biBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRh
YmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJo
aXN0b3J5VW5kbyIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBv
c2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdS
b290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9y
Ojp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpA
QCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoRWRpdENv
bW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihjb21wb3NpdGlvbi5zdGFydGluZ1NlbGVjdGlvbigpKTsKICAgICBjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSk7Ci0gICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5VW5kbyJfcyk7CiAKICAgICB1
cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZv
aWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBv
c2l0aW9uKQogCiBib29sIEVkaXRvcjo6d2lsbFJlYXBwbHlFZGl0aW5nKGNvbnN0IEVkaXRDb21t
YW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKSBjb25zdAogewotICAgIHJldHVybiBkaXNwYXRj
aEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVu
dCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVk
byIpOworICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUlucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyJfcyk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZWFwcGxp
ZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQpAQCAtMTIxNCw3
ICsxMjE0LDcgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21w
b3NpdGlvbiYgY29tcG9zaXRpb24pCiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjb21wb3NpdGlvbi5lbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRp
bmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgImhpc3RvcnlSZWRvIik7CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogICAgIAogICAgIHVwZGF0ZUVk
aXRvclVJTm93SWZTY2hlZHVsZWQoKTsKIApAQCAtMTU1MCw4ICsxNTUwLDggQEAgdm9pZCBFZGl0
b3I6OnBhc3RlRm9udChGcm9tTWVudU9yS2V5QmluZGluZyBmcm9tTWVudU9yS2V5QmluZGluZykK
IHZvaWQgRWRpdG9yOjpxdW90ZUZyYWdtZW50Rm9yUGFzdGluZyhEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkKIHsKICAgICBhdXRvIGJsb2NrUXVvdGUgPSBIVE1MUXVvdGVFbGVtZW50OjpjcmVh
dGUoYmxvY2txdW90ZVRhZywgZG9jdW1lbnQoKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgQXRvbVN0cmluZygiY2l0ZSIpKTsK
LSAgICBibG9ja1F1b3RlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNz
QXR0ciwgQXRvbVN0cmluZyhBcHBsZVBhc3RlQXNRdW90YXRpb24pKTsKKyAgICBibG9ja1F1b3Rl
LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHR5cGVBdHRyLCAiY2l0ZSJfcyk7
CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFz
c0F0dHIsIEFwcGxlUGFzdGVBc1F1b3RhdGlvbik7CiAKICAgICBhdXRvIGNoaWxkTm9kZSA9IGZy
YWdtZW50LmZpcnN0Q2hpbGQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9IVE1MSW50ZXJjaGFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hh
bmdlLmgKaW5kZXggZDRjNTA1YzhhNjcyYjJlMDhjZTg1ODMwZGE1OWUwOWYwMTQxNjExYi4uNWI2
ZjM3MDg5Y2VlZDU5NjZlMjUyY2U0YjQwNDExZWQ3MDcxMDE0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgVGV4dDsK
IAogI2RlZmluZSBBcHBsZUludGVyY2hhbmdlTmV3bGluZSAgICJBcHBsZS1pbnRlcmNoYW5nZS1u
ZXdsaW5lIgogI2RlZmluZSBBcHBsZUNvbnZlcnRlZFNwYWNlICAgICAgICJBcHBsZS1jb252ZXJ0
ZWQtc3BhY2UiCi0jZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxlLXBhc3Rl
LWFzLXF1b3RhdGlvbiIKLSNkZWZpbmUgQXBwbGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUt
c3R5bGUtc3BhbiIKLSNkZWZpbmUgQXBwbGVUYWJTcGFuQ2xhc3MgICAgICAgICAiQXBwbGUtdGFi
LXNwYW4iCi0jZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldlYktpdC1tc28tbGlz
dC1xdWlya3Mtc3R5bGUiCisjZGVmaW5lIEFwcGxlUGFzdGVBc1F1b3RhdGlvbiAgICAgIkFwcGxl
LXBhc3RlLWFzLXF1b3RhdGlvbiJfcworI2RlZmluZSBBcHBsZVN0eWxlU3BhbkNsYXNzICAgICAg
ICJBcHBsZS1zdHlsZS1zcGFuIl9zCisjZGVmaW5lIEFwcGxlVGFiU3BhbkNsYXNzICAgICAgICAg
IkFwcGxlLXRhYi1zcGFuIl9zCisjZGVmaW5lIFdlYktpdE1TT0xpc3RRdWlya3NTdHlsZSAgIldl
YktpdC1tc28tbGlzdC1xdWlya3Mtc3R5bGUiX3MKIAogLy8gQ29udHJvbHMgd2hldGhlciBhIHNw
ZWNpYWwgQlIgd2hpY2ggaXMgcmVtb3ZlZCB1cG9uIHBhc3RlIGluIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kIG5lZWRzIHRvIGJlIGluc2VydGVkCiAvLyBhbmQgbWFraW5nIHNlcXVlbmNlIG9mIHNw
YWNlcyBub3QgY29sbGFwc2libGUgYnkgaW5zZXJ0aW5nIG5vbi1icmVha2luZyBzcGFjZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCmluZGV4
IDNjNDYxNDNhNzgxYzM2ZWM3OTRlZjdlNzFiNTI4MjUxYjgxMDllMDYuLjE3YTQ4NzA4ZTJiZjg5
ZTUyYmNmN2YyY2Q4MWU2NmFiMDdlOGY2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29s
IGlzTGlzdE9ySW5kZW50QmxvY2txdW90ZShjb25zdCBOb2RlKiBub2RlKQogfQogCiBJbmRlbnRP
dXRkZW50Q29tbWFuZDo6SW5kZW50T3V0ZGVudENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBF
SW5kZW50VHlwZSB0eXBlT2ZBY3Rpb24pCi0gICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQo
ZG9jdW1lbnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9u
ZTsgcGFkZGluZzogMHB4OyIpCisgICAgOiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQoZG9jdW1l
bnQsIGJsb2NrcXVvdGVUYWcsICJtYXJnaW46IDAgMCAwIDQwcHg7IGJvcmRlcjogbm9uZTsgcGFk
ZGluZzogMHB4OyJfcykKICAgICAsIG1fdHlwZU9mQWN0aW9uKHR5cGVPZkFjdGlvbikKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCA0
YTMyNmU2Njg4MDk0MGZiNTM0ODVmOTNhMTMzOTlkMDJhNmNhMjY4Li5lZmVjNTcyZWRiMjgwZWUx
ZjNhNzM0ZTE3ZjFkNmFhMDI4NTliNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLm1tCkBAIC01OTUsNyArNTk1LDcgQEAgTlNBcnJheSAqRGF0YURl
dGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHRS
YW5nZSwgT3AKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVmPEhUTUxBbmNob3JFbGVtZW50
PiBhbmNob3JFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXRIcmVmKGNvcnJlc3BvbmRpbmdVUkwpOwotICAg
ICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0RGlyKCJsdHIiKTsKKyAgICAgICAgICAgIGFuY2hv
ckVsZW1lbnQtPnNldERpcigibHRyIl9zKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZFVzZUxp
Z2h0TGlua3MpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMmQ4ZjhiMzM1OTMwZDA3ZGQzMzI2
YjgxMDY1ZjJkNGZkODM1YWNhZS4uN2U1OTUyYjdhOTYyODcwNzBlODAzNzk4ZDU5ZDhmYzJmN2Iz
OWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTE3NCw3ICsxMTc0LDcgQEAg
UmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxl
UmFuZ2UmIGNvbnRleHQsIGNvbnN0IFMKIAogICAgIGF1dG8gY3JlYXRlSFRNTEJSRWxlbWVudCA9
IFsmZG9jdW1lbnRdKCkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBIVE1MQlJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOworICAgICAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwg
QXRvbVN0cmluZzo6ZnJvbUxhdGluMShBcHBsZUludGVyY2hhbmdlTmV3bGluZSkpOwogICAgICAg
ICByZXR1cm4gZWxlbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmNwcAppbmRleCA1MDQ5NWMxN2I5Y2E5NzkyMDNlZjk4NGJmMjgxNjM0ZTUyMGZhZTRj
Li5hOGMwMDMyMjllNDMxOGI4Nzc1ZTcyNjU4YjEyYWVhMDYzMzAwMzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxB
dWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2MKIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50Ojpj
cmVhdGVGb3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBB
dG9tU3RyaW5nJiBzcmMpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gY3JlYXRlKGF1ZGlvVGFnLCBk
b2N1bWVudCwgZmFsc2UpOwotICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24ocHJlbG9hZEF0dHIsICJhdXRvIik7CisgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVsb2FkQXR0ciwgImF1dG8iX3MpOwogICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3JjQXR0ciwgc3JjKTsKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAppbmRleCBiZjU0MzJhZjMxNmU1YTc0YWYyYWQyNzNmMTE1MjZlNGRiNDViMmNiLi42
OGJjMjM4ZWJkOTFhNDE3YmNiZDhjOTU4NjVjNzM1NTliZmQ1ZTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzdW1tYXJ5U2xv
dE5hbWUoKQogewotICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRv
bVN0cmluZz4gc3VtbWFyeVNsb3QoInN1bW1hcnlTbG90Iik7CisgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNs
b3QiX3MpOwogICAgIHJldHVybiBzdW1tYXJ5U2xvdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAppbmRleCAxYjM2ZDViMzZmMDAxYWQwN2U5ZTZhYTAyODY4MTYyNzIyNDY0ZDMw
Li42YjFkOGQzYzFkMTAzYTVmMDJiODAzMjAzZmVmZDgwYjA2Y2QwZDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNjk2LDcgKzY5Niw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6
OnRyYW5zbGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZShib29s
IGVuYWJsZSkKIHsKLSAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRyYW5z
bGF0ZUF0dHIsIGVuYWJsZSA/ICJ5ZXMiIDogIm5vIik7CisgICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIl9zIDogIm5vIl9z
KTsKIH0KIAogYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc0V2ZXJOZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjA5YjY4MjM5NjM5OWZlODA2
OWI5NGM4MjE5ZWU0Mzg2MWYwMWE3Mi4uYmFiNTExMWQyNmVhOTA5YTdmNWMwZDYzN2I3NTI4OTdk
Y2QyNWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0y
NjcwLDcgKzI2NzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZENvbnRp
bnVlQWZ0ZXJOZWVkS2V5KCkKIHsKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47
Ci0gICAgYm9vbCBzaG91bGRDb250aW51ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKCJ3ZWJraXRuZWVk
a2V5IikgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
KSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBv
cnRRdWlyaygpKTsKKyAgICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCkgfHwgKGRvY3VtZW50KCkuc2V0dGluZ3Mo
KS5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSAmJiAhZG9jdW1lbnQoKS5xdWlya3MoKS5oYXNC
cm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnRRdWlyaygpKTsKICAgICBtX3BsYXllci0+c2V0
U2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZChzaG91bGRDb250aW51ZSk7CiB9CiAjZW5kaWYK
QEAgLTI2ODUsNyArMjY4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJL
ZXlOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKICAgICBpZiAoIWRvY3VtZW50
KCkuc2V0dGluZ3MoKS5sZWdhY3lFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygid2Via2l0bmVlZGtleSIpCisg
ICAgaWYgKCFoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50
KQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgICAgIC8vIE9ubHkgZmlyZSBhbiBl
cnJvciBpZiBFTkNSWVBURURfTUVESUEgaXMgbm90IGVuYWJsZWQsIHRvIGdpdmUgY2xpZW50cyBv
ZiB0aGUKICAgICAgICAgLy8gImVuY3J5cHRlZCIgZXZlbnQgYSBjaGFuY2UgdG8gaGFuZGxlIGl0
IHdpdGhvdXQgcmVzdWx0aW5nIGluIGEgc3ludGhldGljIGVycm9yLgpAQCAtNDcwNSw3ICs0NzA1
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpsYXlvdXRTaXplQ2hhbmdlZCgpCiB7CiAgICAg
YXV0byB0YXNrID0gW3RoaXNdIHsKICAgICAgICAgaWYgKGF1dG8gcm9vdCA9IHVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZSgicmVzaXplIiwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5v
KSk7CisgICAgICAgICAgICByb290LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnJlc2l6ZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKICAgICB9OwogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TWVkaWFFbGVtZW50LCBXVEZNb3ZlKHRhc2spKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggOGNlYjg4YTNiMTA3YmRmNjQ5YTVm
MjJhMDBhODJlOTQyNGNlMmVhNy4uYmQ0NGUyZDAyOGE3MDA4ODYzNmZmMjY2MDYzNzdlYmVkZGY5
NzdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0xOTAs
MTUgKzE5MCwxNSBAQCBzdGF0aWMgdm9pZCBzZXRWYWx1ZUNsYXNzKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbiBnYQogewogICAgIHN3aXRjaCAoZ2F1
Z2VSZWdpb24pIHsKICAgICBjYXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uT3B0aW11
bToKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJv
cHRpbXVtIik7CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAib3B0aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVk
b0lkczo6d2Via2l0TWV0ZXJPcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uU3Vib3B0aW1hbDoKLSAgICAgICAgZWxl
bWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVtIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAic3Vib3B0
aW11bSJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJTdWJvcHRpbXVtVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhU
TUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9uRXZlbkxlc3NHb29kOgotICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgImV2ZW4tbGVzcy1nb29kIik7Cisg
ICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZXZlbi1s
ZXNzLWdvb2QiX3MpOwogICAgICAgICBlbGVtZW50LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6
OndlYmtpdE1ldGVyRXZlbkxlc3NHb29kVmFsdWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgpAQCAtMjM0LDE3ICsyMzQsMTcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpkaWRB
ZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmIHJvb3QpCiAKICAgICAvLyBQc2V1ZG9z
IGFyZSBzZXQgdG8gYWxsb3cgYXV0aG9yIHN0eWxpbmcuCiAgICAgYXV0byBpbm5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgaW5uZXItPnNldElkQXR0cmlidXRl
KCJpbm5lciIpOworICAgIGlubmVyLT5zZXRJZEF0dHJpYnV0ZSgiaW5uZXIiX3MpOwogICAgIGlu
bmVyLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlcklubmVyRWxlbWVudCgp
KTsKICAgICByb290LmFwcGVuZENoaWxkKGlubmVyKTsKIAogICAgIGF1dG8gYmFyID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBiYXItPnNldElkQXR0cmlidXRlKCJi
YXIiKTsKKyAgICBiYXItPnNldElkQXR0cmlidXRlKCJiYXIiX3MpOwogICAgIGJhci0+c2V0UHNl
dWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJCYXIoKSk7CiAgICAgaW5uZXItPmFwcGVu
ZENoaWxkKGJhcik7CiAKICAgICBtX3ZhbHVlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKLSAgICBtX3ZhbHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiKTsKKyAgICBtX3Zh
bHVlLT5zZXRJZEF0dHJpYnV0ZSgidmFsdWUiX3MpOwogICAgIGJhci0+YXBwZW5kQ2hpbGQoKm1f
dmFsdWUpOwogCiAgICAgZGlkRWxlbWVudFN0YXRlQ2hhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcAppbmRleCA4MDQxZWE0MmMzYmE3OTU1NzVmM2EwMmI1ZTI2MzliNTdl
YTQ0MDQ1Li4zOTZmOWRjOTY4ODEwMzYxOTY0YWQyOGVlMjhmOWI1MGI1ZGMxOGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIzMCwxNiArMjMwLDE2IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIHJvb3RFbGVtZW50
LT5hcHBlbmRDaGlsZChoZWFkKTsKIAogICAgIGF1dG8gYm9keSA9IEhUTUxCb2R5RWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKLSAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2lu
OiAwcHgiKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAibWFyZ2luOiAwcHgi
X3MpOwogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKGRvY3VtZW50KCku
bG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgIGJvZHktPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJ3aGl0ZSJfcyk7CiAgICAg
cm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGJvZHkpOwogICAgIAogICAgIGF1dG8gaW1hZ2VFbGVt
ZW50ID0gSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgaWYgKG1fc2hv
dWxkU2hyaW5rSW1hZ2UpCi0gICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxl
QXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgZGlzcGxheTpibG9jazsgbWFyZ2luOmF1
dG87IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQt
cmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxl
ZnQpOyIpOworICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICIt
d2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvOyBwYWRk
aW5nOmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBl
bnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3Mp
OwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRy
LCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5nOmVudihzYWZlLWFyZWEtaW5zZXQt
dG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRv
bSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBwYWRkaW5n
OmVudihzYWZlLWFyZWEtaW5zZXQtdG9wKSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYo
c2FmZS1hcmVhLWluc2V0LWJvdHRvbSkgZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiX3MpOwog
ICAgIGltYWdlRWxlbWVudC0+c2V0TG9hZE1hbnVhbGx5KHRydWUpOwogICAgIGltYWdlRWxlbWVu
dC0+c2V0U3JjKHVybCgpLnN0cmluZygpKTsKICAgICBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCktPnNldFJlc3BvbnNlKGxvYWRlcigpLT5yZXNwb25zZSgpKTsKQEAgLTI1Myw4ICsyNTMsOCBA
QCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICNlbHNlCiAg
ICAgICAgIGF1dG8gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgICAgIGlmIChSZWZQdHI8RE9NV2luZG93PiB3aW5kb3cgPSB0aGlzLT5kb21XaW5kb3co
KSkKLSAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVu
ZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOworICAgICAgICAgICAgd2lu
ZG93LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgbGlzdGVuZXIu
Y29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKICNl
bmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcAppbmRleCA0ZTE5NDYx
NmVjZTI1M2M5NDEyNGNmYmU3MjQ1OGFiYmJkODUzYjBkLi41OWRmYjAyMTI4NjUwMGM1NWU3YjJi
ZDU5NWNkODQzN2NkMTY4ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJl
KCkKICAgICAvLyBEZXNjcmlwdGlvbiBvZiBwYXJhbWV0ZXJzOgogICAgIC8vIC0gYCNwYWdlbW9k
ZT1ub25lYCBwcmV2ZW50cyB0aGUgc2lkZWJhciBmcm9tIHNob3dpbmcgb24gbG9hZC4KICAgICAv
LyAtIEVtcHR5IGA/ZmlsZT1gIHBhcmFtZXRlciBwcmV2ZW50cyBkZWZhdWx0IHBkZiBmcm9tIGxv
YWRpbmcuCi0gICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpz
L3dlYi92aWV3ZXIuaHRtbD9maWxlPSNwYWdlbW9kZT1ub25lIjsKKyAgICBhdXRvIHZpZXdlclVS
TCA9ICJ3ZWJraXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9I3Bh
Z2Vtb2RlPW5vbmUiX3M7CiAgICAgYXV0byByb290RWxlbWVudCA9IEhUTUxIdG1sRWxlbWVudDo6
Y3JlYXRlKCp0aGlzKTsKICAgICBhcHBlbmRDaGlsZChyb290RWxlbWVudCk7CiAgICAgcm9vdEVs
ZW1lbnQtPmluc2VydGVkQnlQYXJzZXIoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFBERkRv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgbV9pZnJhbWUtPnNldEF0dHJp
YnV0ZShzdHlsZUF0dHIsIEF0b21TdHJpbmcoIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJv
cmRlcjogMDsgZGlzcGxheTogYmxvY2s7IiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKIAogICAgIG1fbGlzdGVuZXIgPSBQREZEb2N1bWVudEV2ZW50TGlzdGVuZXI6OmNyZWF0
ZSgqdGhpcyk7Ci0gICAgbV9pZnJhbWUtPmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAqbV9saXN0
ZW5lciwgZmFsc2UpOworICAgIG1faWZyYW1lLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQsICptX2xpc3RlbmVyLCBmYWxzZSk7CiAKICAgICBib2R5LT5hcHBlbmRDaGls
ZCgqbV9pZnJhbWUpOwogfQpAQCAtMjIzLDkgKzIyMyw5IEBAIHZvaWQgUERGRG9jdW1lbnQ6Omlu
amVjdFN0eWxlQW5kQ29udGVudFNjcmlwdCgpCiAKICAgICBBU1NFUlQoY29udGVudERvY3VtZW50
LT5ib2R5KCkpOwogICAgIGF1dG8gc2NyaXB0ID0gSFRNTFNjcmlwdEVsZW1lbnQ6OmNyZWF0ZShz
Y3JpcHRUYWcsICpjb250ZW50RG9jdW1lbnQsIGZhbHNlKTsKLSAgICBzY3JpcHQtPmFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKKyAg
ICBzY3JpcHQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgbV9saXN0
ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7CiAKLSAgICBzY3JpcHQtPnNldEF0dHJpYnV0
ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNj
cmlwdC5qcyIpOworICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsICJ3ZWJraXQtcGRm
anMtdmlld2VyOi8vcGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIl9zKTsKICAgICBjb250
ZW50RG9jdW1lbnQtPmJvZHkoKS0+YXBwZW5kQ2hpbGQoc2NyaXB0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAppbmRleCBlMDFkZjM5MjkzNmU4MjA5Y2ViZDRkNjQ4NGJmZmUyOGUwNDJiNGVh
Li4wMDNhOTAxZTA0M2UzN2M4ZTNjMDY2OGM2MzM3MjQwZjZjZGU2MWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcApAQCAtODUsNyArODUsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSk7CiBzdGF0aWMgY29uc3RleHByIEltYWdlU21v
b3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVhbGl0eSA9IEltYWdlU21vb3RoaW5nUXVh
bGl0eTo6TG93OwogCiBjb25zdCBpbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6RGVm
YXVsdEZvbnRTaXplID0gMTA7Ci1jb25zdCBjaGFyKiBjb25zdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9ICJzYW5zLXNlcmlmIjsKK2NvbnN0IEFTQ0lJ
TGl0ZXJhbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udEZhbWlseSA9
ICJzYW5zLXNlcmlmIl9zOwogc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgRGVmYXVsdEZv
bnQgPSAiMTBweCBzYW5zLXNlcmlmIl9zOwogCiBzdGF0aWMgQ2FudmFzTGluZUNhcCB0b0NhbnZh
c0xpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDRhN2E0M2E3
Y2ZmZTgyNmFmODRiNzAxMzIwMmYyYjkzZTQ4NmRiNGEuLjViZjViNTMzOGFjYjIwN2NiM2IxNDkz
MDZlZTg0MTA3ODA2OGZlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTI5Niw3ICsyOTYsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRGb250
U2l6ZTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgRGVmYXVsdEZvbnRGYW1pbHk7Cisg
ICAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJhbCBEZWZhdWx0Rm9udEZhbWlseTsKIAogICAgIGNv
bnN0IFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVTdGFjay5sYXN0KCk7IH0K
ICAgICB2b2lkIHJlYWxpemVTYXZlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggYTFmMTY3Y2IwODNjOTk4NDM2MTgzNDExODAyOWYy
ODVlNDFjMDAwNS4uZWRjYzZhZmQ2YzZmMDM4Yjg0YzRlNzFmNTc4YTY4ODg0MjdjNzEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC01
NDQsNyArNTQ0LDcgQEAgc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBjcmVhdGUKICAgICBhZGROYW1lc1dpdGhQ
cmVmaXgobWFwLCB4bWxBdG9tKCksIFhNTE5hbWVzOjpnZXRYTUxBdHRycygpLCBYTUxOYW1lczo6
WE1MQXR0cnNDb3VudCk7CiAKICAgICBtYXAuYWRkKHhtbG5zQXRvbSgpLCBYTUxOU05hbWVzOjp4
bWxuc0F0dHIpOwotICAgIG1hcC5hZGQoInhtbG5zOnhsaW5rIiwgUXVhbGlmaWVkTmFtZSh4bWxu
c0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSSkpOworICAg
IG1hcC5hZGQoInhtbG5zOnhsaW5rIl9zLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlu
a05hbWUsIFhNTE5TTmFtZXM6OnhtbG5zTmFtZXNwYWNlVVJJKSk7CiAKICAgICByZXR1cm4gbWFw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggNDcwNmYyNmU4NDQwOWVlODEzY2QxM2JjNWY0ZTBhY2NmNjc0YTg2Ny4uNzhl
MTFmYzJjMTA4ZDc3ZmY4YzJhOTJhYTkyNWVmYzUyZTQzOTEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCgpCiAgICAg
Ly8gV2UgY3JlYXRlIGEgZmFrZSB0b2tlbiBhbmQgZ2l2ZSBpdCB0byB0aGUgdHJlZSBidWlsZGVy
IHJhdGhlciB0aGFuCiAgICAgLy8gc2VuZGluZyBmYWtlIGJ5dGVzIHRocm91Z2ggdGhlIGZyb250
LWVuZCBvZiB0aGUgcGFyc2VyIHRvIGF2b2lkCiAgICAgLy8gZGlzdHJ1YmluZyB0aGUgbGluZS9j
b2x1bW4gbnVtYmVyIGNhbGN1bGF0aW9ucy4KLSAgICBBdHRyaWJ1dGUgYXR0cmlidXRlKHN0eWxl
QXR0ciwgIndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyIpOwor
ICAgIEF0dHJpYnV0ZSBhdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3Jk
OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Il9zKTsKICAgICBBdG9tSFRNTFRva2VuIGZha2VQcmUo
SFRNTFRva2VuOjpTdGFydFRhZywgcHJlVGFnLT5sb2NhbE5hbWUoKSwgeyBXVEZNb3ZlKGF0dHJp
YnV0ZSkgfSk7CiAgICAgdHJlZUJ1aWxkZXIoKS5jb25zdHJ1Y3RUcmVlKFdURk1vdmUoZmFrZVBy
ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggODQ5Y2Q1
OTRhN2I5YTM5OGIwYzMxZmE5MGZjNjdkN2Y2ZDY3NmEyZi4uMTBmNGQxZGFlMGE5OTAyNWI1ZDQw
ZjIzOGRkNTVlYTZjMzY5ZDcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcApAQCAtODgsMTMgKzg4LDEzIEBAIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBmb3JjZWRL
ZXl3b3JkKCkKIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpCiB7
Ci0gICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwg
Im9mZiBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgb2ZmID0gVGV4dFRyYWNrOjpjcmVhdGUo
bnVsbHB0ciwgIm9mZiBtZW51IGl0ZW0iX3MsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1w
dHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gb2ZmOwogfQogCiBUZXh0VHJhY2smIFRl
eHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRy
YWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAiYXV0b21hdGljIG1l
bnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBhdXRvbWF0aWMgPSBUZXh0VHJhY2s6OmNyZWF0ZShu
dWxscHRyLCAiYXV0b21hdGljIG1lbnUgaXRlbSJfcywgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgp
LCBlbXB0eUF0b20oKSkubGVha1JlZigpOwogICAgIHJldHVybiBhdXRvbWF0aWM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCBiY2Y4ZTE3MmE2
NzMyMGY2Njg4MTIwNzQ3OWRmN2E4MGFiYWMxN2VlLi43N2M2YTE2MGJhOTViZDVhMjg2YzVkYTc0
OTM5ODM1ZTUxYjlhZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRl
eHRUcmFja0N1ZUJveCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVBdHRyaWJ1
dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVU
YWcobnVsbEF0b20oKSwgImN1ZSIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxRdWFsaWZpZWROYW1lPiBjdWVUYWcobnVsbEF0b20oKSwgImN1ZSJfcywgbnVsbEF0b20o
KSk7CiAgICAgcmV0dXJuIGN1ZVRhZzsKIH0KIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBjdWVCYWNrZ3JvdW5kVGFnKG51bGxBdG9tKCksICJjdWViYWNrZ3Jv
dW5kIiwgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGN1ZUJhY2tncm91bmRUYWcobnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiX3MsIG51bGxB
dG9tKCkpOwogICAgIHJldHVybiBjdWVCYWNrZ3JvdW5kVGFnOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCA5MzZkMjdiM2IyNzM3YzAwNzYx
OTM5NTIyNzFlNjg3Y2I1YzQ2NjU1Li4xOGIwNmYyOGRhYzUwNGEzY2ViMjVhYTk3OGFmMjg5NjAy
NWRjMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAK
QEAgLTQxLDE0ICs0MSwxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViVlRURWxl
bWVudCk7CiAKIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFnTmFtZShX
ZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2VGFnKG51bGxBdG9tKCksICJ2IiwgbnVs
bEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdU
YWcobnVsbEF0b20oKSwgImxhbmciLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiIsIG51bGxBdG9tKCkpOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tKCks
ICJ1IiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IGlUYWcobnVsbEF0b20oKSwgImkiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgpLCAicnVieSIsIG51bGxB
dG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhu
dWxsQXRvbSgpLCAicnQiLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gY1RhZyhudWxsQXRvbSgpLCAiYyJfcywgbnVsbEF0b20oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZUYWcobnVsbEF0b20oKSwgInYi
X3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1l
PiBsYW5nVGFnKG51bGxBdG9tKCksICJsYW5nIl9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gYlRhZyhudWxsQXRvbSgpLCAiYiJfcywgbnVs
bEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHVUYWco
bnVsbEF0b20oKSwgInUiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBpVGFnKG51bGxBdG9tKCksICJpIl9zLCBudWxsQXRvbSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnVieVRhZyhudWxsQXRvbSgp
LCAicnVieSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxp
ZmllZE5hbWU+IHJ0VGFnKG51bGxBdG9tKCksICJydCJfcywgbnVsbEF0b20oKSk7CiAgICAgc3dp
dGNoIChub2RlVHlwZSkgewogICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVDbGFzczoKICAgICAgICAg
cmV0dXJuIGNUYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCmlu
ZGV4IGRlY2JlMTdhYmJmMWQ5YTQzZTQ4MGRjNzhjZDcyMzg1ZWI2MDk3NmQuLjFjNWM4NWUzMmIy
ODk0NWU2ZTJmMDExOGM3MWFjYzJmNGNkNWUyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5oCkBAIC02MywxMyArNjMsMTMgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxB
dG9tKCksICJ2b2ljZSIsIG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tKCksICJ2b2ljZSJfcywgbnVsbEF0
b20oKSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCiAgICAgewotICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9t
KCksICJsYW5nIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgImxhbmciX3MsIG51bGxBdG9tKCkp
OwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCA2YWE2MTI2ZGQ3Y2FjNjgwMTE3YjI3N2I0NGE2YzE4NmVjMzcwNTM4Li5m
YTE4NDRhNmZmMWZlNWFhNTI4YWIyNTVjYzgxY2M0MjZlZWI5YjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9u
YWw8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpDb21wdXRlZFByb3BlcnRpZXM+
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGFyaWFSZWxldmFudFRleHQgPSAidGV4dCJfczsKIAog
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJp
YVJlbGV2YW50QXR0clZhbHVlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmNv
bnRhaW5zKCJhbGwiKSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFs
bCJfcykpIHsKICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChh
cmlhUmVsZXZhbnRBZGRpdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVs
ZXZhbnQuYXBwZW5kKGFyaWFSZWxldmFudFJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAg
bGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChhcmlhUmVsZXZhbnRUZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKaW5kZXggNzNh
ZjgzNmVmNzQ2YzZiYjgwMzMyODc0OGM4ZmVjZWJkYTY3MjVmZC4uZjYxMTQ3MWE4NWUzZmU2OTNk
ZDZmM2FjYTYzZTIwMjQ4MjY1Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSW5zcGVjdG9y
T3ZlcmxheUxhYmVsOjpJbnNwZWN0b3JPdmVybGF5TGFiZWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBG
bG9hdFBvaW50IGxvY2EKIHN0YXRpYyBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KCkKIHsKICAgICBG
b250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRp
b24uc2V0RmFtaWxpZXMoeyAic3lzdGVtLXVpIiB9KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
RmFtaWxpZXMoeyAic3lzdGVtLXVpIl9zIH0pOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWln
aHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21w
dXRlZFNpemUoMTIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKaW5kZXggMTdhMjk3YjVhYjM0NGM2YjIxODBkZDBmYTlhOTQ0MmZkYTMz
ZTM5Ny4uMjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTU5
Myw3ICsxNTkzLDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGEKICAgICAsIG1faXNTdHlsZVRl
eHRWYWxpZChmYWxzZSkKIHsKICAgICBtX2luc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6
OmNyZWF0ZShJbnNwZWN0b3JDU1NJZChpZCwgMCksIGlubGluZVN0eWxlKCksIHRoaXMpOwotICAg
IG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7
CisgICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0
eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCkKQEAgLTE2NjksNyArMTY2OSw3IEBA
IENTU1N0eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
aW5saW5lU3R5bGUoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6ZWxlbWVudFN0eWxlVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKCJzdHlsZSIpLnN0cmluZygpOworICAgIHJldHVybiBtX2Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0cikuc3RyaW5nKCk7CiB9CiAK
IFJlZjxDU1NSdWxlU291cmNlRGF0YT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
OjpydWxlU291cmNlRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQzODllYzA3YWU4N2JjOTVi
NTY4MDllOGRiODI1OTA4OGUwNTJhMDYuLjA2YzQ3MjNmNTcwMDcwNTFlYzYxOTA5YWM3MTlkZjNi
OGNiMmRjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMjI5LDcgKzIyMjksNyBAQCBSZWY8UHJvdG9jb2w6
OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvckFjYwogICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiB2
YWx1ZXMgPSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEBhcmlhLXJlbGV2YW50PSJhbGwiIGlzIGV4cG9zZWQgYXMg
WyJhZGRpdGlvbnMiLCJyZW1vdmFscyIsInRleHQiXSwgaW4gb3JkZXIuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgb3JkZXIgaXMgY29udHJvbGxlZCBpbiBXZWJDb3JlIGFuZCBleHBlY3Rl
ZCBpbiBXZWJJbnNwZWN0b3JVSS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250
YWlucygiYWxsIikpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygi
YWxsIl9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5h
ZGRJdGVtKGFyaWFSZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBs
aXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50UmVtb3ZhbHMpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5hZGRJdGVtKGFyaWFSZWxldmFu
dFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IDlmMTdjMTI4YTMx
ODE2YTZhOTM5OGI1ZDJiMTQ1Njg1NGM1ZDlhNTEuLjM2ZmViYmVkY2UwZGUxODkxYWU0YTkyZDM5
NDI5NzkyMDNlYTFkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTI2
Myw3ICsyNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4g
TGlua0xvYWRlcjo6cHJlbG9hZElmTmVlZGVkKGNvbnN0IExpbgogICAgIG9wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSBwYXJhbXMucmVmZXJyZXJQb2xpY3k7CiAgICAgYXV0byBsaW5rUmVxdWVzdCA9
IGNyZWF0ZVBvdGVudGlhbEFjY2Vzc0NvbnRyb2xSZXF1ZXN0KHVybCwgV1RGTW92ZShvcHRpb25z
KSwgZG9jdW1lbnQsIHBhcmFtcy5jcm9zc09yaWdpbik7CiAgICAgbGlua1JlcXVlc3Quc2V0UHJp
b3JpdHkoRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5Ojpmb3JSZXNvdXJjZVR5cGUodHlwZS52
YWx1ZSgpKSk7Ci0gICAgbGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CisgICAgbGlu
a1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIl9zKTsKICAgICBsaW5rUmVxdWVzdC5zZXRJZ25v
cmVGb3JSZXF1ZXN0Q291bnQodHJ1ZSk7CiAgICAgbGlua1JlcXVlc3Quc2V0SXNMaW5rUHJlbG9h
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudC5jcHAKaW5kZXggNjViMjZjYzliZDU3NWViMWEwMTVmNDVjYzVkZTY1Y2NkNTUzNTM3
Yi4uNTEwMjJjNjc1ZDI0ZjBiYjhhNTNiMTk1ZmU4OGIxYWYwM2QxMzcwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIGJvb2wgTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29u
dGVudChjb25zdCBOb2RlJiBub2RlKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6cFRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnByZVRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNlY3Rpb25UYWcpCi0gICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6c3R5bGVUYWcpICYmIGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZSgic2NvcGVkIikpCisg
ICAgICAgIHx8IChodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWcpICYm
IGh0bWxFbGVtZW50Lmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OnNjb3BlZEF0dHIpKQogICAgICAg
ICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dGFibGVUYWcpCiAgICAgICAg
IHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp1bFRhZyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDI1OWM3MjI1MzY3MWI1YTBh
ZTA4NWJjMDcxMmE0YjE1ZWIyNzk1ZDYuLmU5NGJkZmY4YTkzMzg1NGQ3ZDlmZGIwYmZjNmExODgx
YWQ1OTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRy
YXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICBGbG9hdFJlY3Qg
bGVnZW5kUmVjdCA9IHsgYm91bmRzLm1heFgoKSAtIDMwLjBmLCAxMCwgMjAsIDIwIH07CiAgICAg
CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERl
c2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3Bl
Y2lmaWVkU2l6ZSgxMik7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7
CkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdT
ZXR0aW5ncyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgfQogCiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
SGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZSgxMik7
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7CiAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5jcHAKaW5kZXggZGRiYTgzNWVmODkyMDNhYWVhZGExZDMwM2IyMzY5NDU4ZDQ3MjgxMi4uNWZh
OTQyYzk4ZGYwYjUzNjliZjY3Y2QzNzBlMWM2MWJlZjMwY2EyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRUb29sdGlwUHJldmVu
dEZyb21Qcm9jZWVkaW5nV2l0aENsaWNrKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBp
ZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50
KCkudXJsKCkuaG9zdCgpLCAiY292aWQuY2RjLmdvdiIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5j
b250YWlucygidG9vbHRpcCIpOworICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYgZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInRvb2x0aXAiX3MpOwogfQogCiAvLyBGSVhNRTog
UmVtb3ZlIGFmdGVyIHRoZSBzaXRlIGlzIGZpeGVkLCA8cmRhcjovL3Byb2JsZW0vNzU3OTI5MTM+
CkBAIC00NDYsNyArNDQ2LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZERpc3BhdGNoU2ltdWxhdGVk
TW91c2VFdmVudHMoRXZlbnRUYXJnZXQqIHRhcmdldCkgY29uc3QKICAgICBjYXNlIFNob3VsZERp
c3BhdGNoU2ltdWxhdGVkTW91c2VFdmVudHM6OkRlcGVuZGluZ09uVGFyZ2V0Rm9yX215YmluZGVy
X29yZzoKICAgICAgICAgaWYgKGlzPE5vZGU+KHRhcmdldCkpIHsKICAgICAgICAgICAgIGZvciAo
YXV0byogbm9kZSA9IGRvd25jYXN0PE5vZGU+KHRhcmdldCk7IG5vZGU7IG5vZGUgPSBub2RlLT5w
YXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaXM8RWxlbWVudD4obm9kZSkgJiYg
ZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJsbS1Eb2NrUGFu
ZWwtdGFiQmFyIikpCisgICAgICAgICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpICYmIGRv
d25jYXN0PEVsZW1lbnQ+KCpub2RlKS5jbGFzc0xpc3QoKS5jb250YWlucygibG0tRG9ja1BhbmVs
LXRhYkJhciJfcykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC00NzYsNyArNDc2LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZERp
c3BhdGNoZWRTaW11bGF0ZWRNb3VzZUV2ZW50c0Fzc3VtZURlZmF1bHRQcmV2ZW50ZWQoRXZlbnRU
YXIKICAgICB9CiAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9kb2N1
bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCksICJzb3VuZGNsb3VkLmNvbSIpICYmIGlz
PEVsZW1lbnQ+KHRhcmdldCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50PigqdGFy
Z2V0KS5jbGFzc0xpc3QoKS5jb250YWlucygic2NlbmVMYXllciIpOworICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RWxlbWVudD4oKnRhcmdldCkuY2xhc3NMaXN0KCkuY29udGFpbnMoInNjZW5lTGF5
ZXIiX3MpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNDg4LDcgKzQ4OCw3IEBAIHN0ZDo6
b3B0aW9uYWw8RXZlbnQ6OklzQ2FuY2VsYWJsZT4gUXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50
VHlwZUZvclRhcmdldChFdmVuCiAKICAgICAvLyBPbiBHb29nbGUgTWFwcywgd2Ugd2FudCB0byBs
aW1pdCBzaW11bGF0ZWQgbW91c2UgZXZlbnRzIHRvIGRyYWdnaW5nIHRoZSBsaXR0bGUgbWFuIHRo
YXQgYWxsb3dzIGVudGVyaW5nIGludG8gU3RyZWV0IFZpZXcuCiAgICAgaWYgKGlzR29vZ2xlTWFw
cygpKSB7Ci0gICAgICAgIGlmIChpczxFbGVtZW50Pih0YXJnZXQpICYmIGRvd25jYXN0PEVsZW1l
bnQ+KHRhcmdldCktPmdldEF0dHJpYnV0ZSgiY2xhc3MiKSA9PSAid2lkZ2V0LWV4cGFuZC1idXR0
b24tcGVnbWFuLWljb24iKQorICAgICAgICBpZiAoaXM8RWxlbWVudD4odGFyZ2V0KSAmJiBkb3du
Y2FzdDxFbGVtZW50Pih0YXJnZXQpLT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIp
ID09ICJ3aWRnZXQtZXhwYW5kLWJ1dHRvbi1wZWdtYW4taWNvbiIpCiAgICAgICAgICAgICByZXR1
cm4gRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
QEAgLTUwMSw3ICs1MDEsNyBAQCBzdGQ6Om9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IFF1
aXJrczo6c2ltdWxhdGVkTW91c2VFdmVudFR5cGVGb3JUYXJnZXQoRXZlbgogICAgICAgICAvLyBX
ZSB3YW50IHRvIGxpbWl0IHNpbXVsYXRlZCBtb3VzZSBldmVudHMgdG8gZWxlbWVudHMgdW5kZXIg
PGRpdiBpZD0icGFuZUNvbnRhaW5lciI+IHRvIGFsbG93IGZvciBjb2x1bW4gcmUtb3JkZXJpbmcg
YW5kIG11bHRpcGxlIGNlbGwgc2VsZWN0aW9uLgogICAgICAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0
KSkgewogICAgICAgICAgICAgYXV0byogbm9kZSA9IGRvd25jYXN0PE5vZGU+KHRhcmdldCk7Ci0g
ICAgICAgICAgICBpZiAoYXV0byogcGFuZUNvbnRhaW5lciA9IG5vZGUtPnRyZWVTY29wZSgpLmdl
dEVsZW1lbnRCeUlkKEF0b21TdHJpbmcoInBhbmVDb250YWluZXIiKSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBwYW5lQ29udGFpbmVyID0gbm9kZS0+dHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5
SWQoQXRvbVN0cmluZygicGFuZUNvbnRhaW5lciJfcykpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHBhbmVDb250YWluZXItPmNvbnRhaW5zKG5vZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzOwogICAgICAgICAgICAgfQpAQCAtNTIzLDcgKzUy
Myw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRNYWtlVG91Y2hFdmVudE5vbkNhbmNlbGFibGVGb3JU
YXJnZXQoRXZlbnRUYXJnZXQqIHRhcmdldCkgY29uCiAgICAgICAgIGlmIChpczxFbGVtZW50Pih0
YXJnZXQpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBkZXB0aCA9IDM7CiAgICAgICAgICAgICBm
b3IgKGF1dG8qIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpOyBlbGVtZW50ICYm
IGRlcHRoOyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpLCAtLWRlcHRoKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmxvY2FsTmFtZSgpID09ICJwYXBlci1pdGVtIiAm
JiBlbGVtZW50LT5jbGFzc0xpc3QoKS5jb250YWlucygieXQtZHJvcGRvd24tbWVudSIpKQorICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50LT5sb2NhbE5hbWUoKSA9PSAicGFwZXItaXRlbSIgJiYg
ZWxlbWVudC0+Y2xhc3NMaXN0KCkuY29udGFpbnMoInl0LWRyb3Bkb3duLW1lbnUiX3MpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNTQ4LDcgKzU0OCw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRQcmV2ZW50RGlzcGF0Y2hPZlRv
dWNoRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdG91Y2hFdmVudFR5cGUsCiAKICAgICBpZiAoaXM8
RWxlbWVudD4odGFyZ2V0KSAmJiB0b3VjaEV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudG91Y2hl
bmRFdmVudCAmJiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RvY3VtZW50LT50b3BE
b2N1bWVudCgpLnVybCgpLmhvc3QoKSwgInNpdGVzLmdvb2dsZS5jb20iKSkgewogICAgICAgICBh
dXRvJiBjbGFzc0xpc3QgPSBkb3duY2FzdDxFbGVtZW50PigqdGFyZ2V0KS5jbGFzc0xpc3QoKTsK
LSAgICAgICAgcmV0dXJuIGNsYXNzTGlzdC5jb250YWlucygiRFB2d1ljIikgJiYgY2xhc3NMaXN0
LmNvbnRhaW5zKCJzbThzQ2YiKTsKKyAgICAgICAgcmV0dXJuIGNsYXNzTGlzdC5jb250YWlucygi
RFB2d1ljIl9zKSAmJiBjbGFzc0xpc3QuY29udGFpbnMoInNtOHNDZiJfcyk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjMxLDggKzYzMSw4IEBAIGJvb2wgUXVpcmtzOjpuZWVkc0lu
cHV0TW9kZU5vbmVJbXBsaWNpdGx5KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSBjb25zdAog
ICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpIHsKICAgICAg
ICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RvY3VtZW50LT51cmwoKS5o
b3N0KCksICJjYWxlbmRhci5nb29nbGUuY29tIikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBkYXRhSW5pdGlh
bFZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1pbml0aWFsLXZhbHVlIiwgbnVsbEF0b20oKSk7
Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBkYXRhUHJldmlv
dXNWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtcHJldmlvdXMtdmFsdWUiLCBudWxsQXRvbSgp
KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGRhdGFJbml0
aWFsVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLWluaXRpYWwtdmFsdWUiX3MsIG51bGxBdG9t
KCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gZGF0YVBy
ZXZpb3VzVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLXByZXZpb3VzLXZhbHVlIl9zLCBudWxs
QXRvbSgpKTsKIAogICAgICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
ZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6YXV0b2Nv
bXBsZXRlQXR0ciksICJvZmYiKQogICAgICAgICAgICAgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGRhdGFJbml0aWFsVmFsdWVBdHRyKQpAQCAtNjQ3LDcgKzY0
Nyw3IEBAIGJvb2wgUXVpcmtzOjpuZWVkc0lucHV0TW9kZU5vbmVJbXBsaWNpdGx5KGNvbnN0IEhU
TUxFbGVtZW50JiBlbGVtZW50KSBjb25zdAogICAgIGlmICghaG9zdC5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKCIuZGVzbW9zLmNvbSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50KCkt
PmNsYXNzTmFtZXMoKS5jb250YWlucygiZGNnLW1xLXRleHRhcmVhIik7CisgICAgcmV0dXJuIGVs
ZW1lbnQucGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05h
bWVzKCkuY29udGFpbnMoImRjZy1tcS10ZXh0YXJlYSJfcyk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShlbGVtZW50KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIzLDEwICsxMDIzLDEwIEBA
IHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKICAgICAvLyBzcGFuIHdpdGggdGhlc2UgY2xhc3MgbmFtZXMsIG9yIHRoZSBzdmcsIG9y
IHRoZSBzdmcncyBwYXRoLgogICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkpIHsKICAgICAgICAg
YXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAgICBpZiAoY2xh
c3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dpbiIpCi0gICAgICAgICAg
ICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiIpCi0gICAgICAg
ICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJzYy0xaWwzdXJ1LTMiKSB8fCBjbGFzc05hbWVz
LmNvbnRhaW5zKCJjSWhLZmQiKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygi
aXl2bjM0LTAiKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJiWUlqdGwiKSkKKyAgICAgICAgaWYg
KGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJuZXItbG9naW4iX3MpCisgICAg
ICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiJfcykK
KyAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInNjLTFpbDN1cnUtMyJfcykgfHwg
Y2xhc3NOYW1lcy5jb250YWlucygiY0loS2ZkIl9zKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1l
cy5jb250YWlucygiaXl2bjM0LTAiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImJZSWp0bCJf
cykpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTEwMzcsNyArMTAzNyw3
IEBAIHN0YXRpYyBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKICAgICAgICAgc3ZnRWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpOwog
CiAgICAgaWYgKHN2Z0VsZW1lbnQgJiYgc3ZnRWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7Ci0g
ICAgICAgIGF1dG8gYXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXRO
YW1lZEl0ZW0oImFyaWEtbGFiZWwiKTsKKyAgICAgICAgYXV0byBhcmlhTGFiZWxBdHRyID0gc3Zn
RWxlbWVudC0+YXR0cmlidXRlcygpLmdldE5hbWVkSXRlbSgiYXJpYS1sYWJlbCJfcyk7CiAgICAg
ICAgIGlmIChhcmlhTGFiZWxBdHRyICYmIGFyaWFMYWJlbEF0dHItPnZhbHVlKCkgPT0gIlVzZXJG
aWxsZWQgaWNvbiIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDU2LDI0
ICsxMDU2LDI0IEBAIHN0YXRpYyBib29sIGlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxl
bWVudChjb25zdCBVUkwmIHVybCwgY29uc3QgRWxlbWVudCYKICAgICAvLyBGSVhNRSgyMTg3Nzkp
OiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIG1pY3Jvc29mdC5jb20gY29tcGxldGVzIHRoZWlyIGxv
Z2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gInd3dy5taWNyb3NvZnQu
Y29tIl9zKSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAgICAgICAgJiYg
KGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJnbHlwaF9zaWduSW5fY2lyY2xlIikKLSAg
ICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXJ0ZXh0
IikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9oZWFk
ZXIiKSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiZ2x5cGhf
c2lnbkluX2NpcmNsZSJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFp
bnMoIm1lY3RybF9oZWFkZXJ0ZXh0Il9zKQorICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMo
KS5jb250YWlucygibWVjdHJsX2hlYWRlciJfcykpOwogICAgIH0KICAgICAvLyBTa3lwZSBjYXNl
LgogICAgIC8vIEZJWE1FKDIyMDEwNSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgU2t5cGUgdW5k
ZXIgb3V0bG9vay5saXZlLmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4K
ICAgICBpZiAodXJsLmhvc3QoKSA9PSAib3V0bG9vay5saXZlLmNvbSJfcykgewogICAgICAgICBy
ZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMo
KS5jb250YWlucygiXzNpb0VwMlJHUjV2YjBncVJEc2FGUGEiKQotICAgICAgICB8fCBlbGVtZW50
LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3kiKSk7CisgICAg
ICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiXzNpb0VwMlJHUjV2YjBncVJE
c2FGUGEiX3MpCisgICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJfMkFt
Mmp2VGFCejE3VUo4WG5meEZPeSJfcykpOwogICAgIH0KICAgICAvLyBTb255IE5ldHdvcmsgRW50
ZXJ0YWlubWVudCBsb2dpbiBjYXNlLgogICAgIC8vIEZJWE1FKDIxODc2MCk6IFJlbW92ZSB0aGlz
IHF1aXJrIG9uY2UgcGxheXN0YXRpb24uY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJl
ZGVzaWduLgogICAgIGlmICh1cmwuaG9zdCgpID09ICJ3d3cucGxheXN0YXRpb24uY29tIl9zIHx8
IHVybC5ob3N0KCkgPT0gIm15LnBsYXlzdGF0aW9uLmNvbSJfcykgewogICAgICAgICByZXR1cm4g
ZWxlbWVudC5oYXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250
YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24iKQotICAgICAgICB8fCBlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24tbGFiZWwiKQot
ICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2lnbmluLWJ1dHRv
biIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9v
bGJhcl9fc2lnbmluLWJ1dHRvbiJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCku
Y29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uLWxhYmVsIl9zKQorICAgICAgICB8
fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygic2Itc2lnbmluLWJ1dHRvbiJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTIsNyArMTExMiw3IEBAIHN0YXRpYyBi
b29sIGlzQkJDUG9wVXBQbGF5ZXJFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
aWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQoKSB8fCAhZWxlbWVudC5wYXJlbnRFbGVtZW50KCkt
Pmhhc0NsYXNzKCkgfHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSB8fCAhcGFyZW50
RWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5oYXNDbGFzcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5j
b250YWlucygicF9hdWRpb0J1dHRvbl9idXR0b25Jbm5lciIpICYmIHBhcmVudEVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iKTsKKyAgICByZXR1
cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygicF9hdWRp
b0J1dHRvbl9idXR0b25Jbm5lciJfcykgJiYgcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgp
LT5jbGFzc05hbWVzKCkuY29udGFpbnMoImhpZGRlbiJfcyk7CiB9CiAKIFF1aXJrczo6U3RvcmFn
ZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQW5kSGFuZGxlQ2xpY2so
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGREaXNwYXRjaENsaWNrKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgY29uc3QKQEAgLTExODUsMTQgKzExODUsMTQgQEAgUXVpcmtzOjpTdG9yYWdlQWNj
ZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1l
bnQmIGUKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVc2VyU2NyaXB0PiBraW5qYUxvZ2lu
VXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyTG9naW5Gb3JtKCkgeyBsZXQgZWxlbWVudHMg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdqc19oZWFkZXItdXNlcmJ1dHRvbicp
OyBpZiAoZWxlbWVudHMgJiYgZWxlbWVudHNbMF0pIHsgZWxlbWVudHNbMF0uY2xpY2soKTsgY2xl
YXJJbnRlcnZhbChpbnRlcnZhbCk7IH0gfSBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh0cmln
Z2VyTG9naW5Gb3JtLCAyMDApOyJfcywgVVJMKGFib3V0QmxhbmtVUkwoKSksIFZlY3RvcjxTdHJp
bmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOjpEb2N1bWVu
dEVuZCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5Ub3BGcmFtZU9ubHksIFdh
aXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc6OlllcyB9OwogCi0gICAgaWYgKGV2ZW50
VHlwZSA9PSAiY2xpY2siKSB7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCkgewogICAgICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm4g
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKIAogICAg
ICAgICAvLyBFbWJlZGRlZCBZb3VUdWJlIGNhc2UuCiAgICAgICAgIGlmIChlbGVtZW50Lmhhc0Ns
YXNzKCkgJiYgZG9tYWluID09IHlvdVR1YmVEb21haW4gJiYgIW1fZG9jdW1lbnQtPmlzVG9wRG9j
dW1lbnQoKSAmJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKHlvdVR1YmVEb21haW4pKSB7CiAgICAgICAgICAgICBhdXRvJiBjbGFzc05hbWVzID0g
ZWxlbWVudC5jbGFzc05hbWVzKCk7Ci0gICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlu
cygieXRwLXdhdGNoLWxhdGVyLWljb24iKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0
Y2gtbGF0ZXItaWNvbiIpKSB7CisgICAgICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygi
eXRwLXdhdGNoLWxhdGVyLWljb24iX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRj
aC1sYXRlci1pY29uIl9zKSkgewogICAgICAgICAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21haW4pKSB7CiAg
ICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JEb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBbXShTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCkgeyB9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFj
Y2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tCmluZGV4IDE5NzQxZjYyZjZiNjZhMWJlMDc3N2RlZTZhM2FhMzlkYjAyODBlZGMu
LjEzNmY3Y2Q1MmQzNDNlODBiYTdjYzIwOTBmNmY2ODdhM2I2MDlkNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Lm1tCkBAIC0yMDYsNyArMjA2LDcgQEAgU3Bhbjxjb25zdCBBdG9t
U3RyaW5nPiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5h
bWVzKCkKIAogY29uc3QgQXRvbVN0cmluZyYgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQ6OmV2ZW50TmFtZUFsbCgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9tU3RyaW5nPiBzRXZlbnROYW1lQWxsID0gImFsbEV2ZW50cyI7CisgICAgc3Rh
dGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzRXZlbnROYW1l
QWxsID0gImFsbEV2ZW50cyJfczsKICAgICByZXR1cm4gc0V2ZW50TmFtZUFsbDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggZWMzMWM1MzgwMDgzMjAwYjkwMGQyZWE1Y2Y1NDBhMzY4
OTdjZTY1NC4uNDIzN2NmNjA1OTg0ZGM2ZDUzNjA0NzQ2NzM1NWQzODQ2NzMxYWI4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zMDY3LDcgKzMwNjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nlc3NNZXRhZGF0YVRyYWNrKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9tZXRhZGF0YVRyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGOjpjcmVhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZDo6TWV0YWRhdGEs
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdDo6RGF0YSk7Ci0gICAgbV9tZXRhZGF0
YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCJjb20uYXBwbGUuc3Ry
ZWFtaW5nIik7CisgICAgbV9tZXRhZGF0YVRyYWNrLT5zZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlz
cGF0Y2hUeXBlKCJjb20uYXBwbGUuc3RyZWFtaW5nIl9zKTsKICAgICBwbGF5ZXIoKS0+YWRkVGV4
dFRyYWNrKCptX21ldGFkYXRhVHJhY2spOwogfQogCkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRUZXh0VHJhY2so
SW5iYW5kVGV4dFRyYWNrUHJpdgogICAgIGlmIChtX2N1cnJlbnRUZXh0VHJhY2sgPT0gdHJhY2sp
CiAgICAgICAgIHJldHVybjsKIAotICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzZWxlY3Rp
bmcgdHJhY2sgd2l0aCBsYW5ndWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFnZSgpIDogIiIp
OworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzZWxlY3RpbmcgdHJhY2sgd2l0aCBsYW5n
dWFnZSAiLCB0cmFjayA/IHRyYWNrLT5sYW5ndWFnZSgpIDogZW1wdHlBdG9tKCkpOwogCiAgICAg
bV9jdXJyZW50VGV4dFRyYWNrID0gdHJhY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGNmYTI5YjExMmVhMzI5NzNm
Yzg1NjM1YjY1ZTQyMWVhZmJmOTE0MDcuLjAxZjJjNjk3MTZmNjE4YWE0OGQyOGVlMTY1ZjExODBm
MGY0YmI5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
d2hpY2ggaXMgcHJlc3VtYWJseSBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9jb2RlYykKLSAgICAgICAgICAgIG1fY29k
ZWMgPSBBdG9tU3RyaW5nKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkpOworICAgICAg
ICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEobV9vcmlnaW5hbENvZGVjLnN0
cmluZygpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAqbV9jb2RlYzsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuY3BwCmluZGV4IDg1MjM0NmY2YjVjNTY3ZGUyOWYzNTE3N2RjNDg3MjM2NWRmMjdkNDAuLmIw
ODY5ZjgwMDQ1NjE5ZTY5NjU4NjFjYjE3Mjk4MWVlZTFmMzFjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApA
QCAtOTMsNyArOTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0
b3IoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFBsYQogICAgIFRleHRSdW4gdGV4
dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKIAogICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZl
dGljYSJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUp
OwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDY3ZDcwY2JjZjcy
MzIzZTIwOTM5MjQwZDRkNDcwYzQzODExNjYwNmMuLmM3NmRkM2QyOWVkMzQ2OTZmZTFmNTA5MGQ3
MThmYzdmMGYxMWI2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OmZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyhjb25zdCBHU3RyZWFtZXJSZWcKICAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG1pbWVUeXBlIDogY3VycmVudC53ZWJraXRNaW1l
VHlwZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChtaW1l
VHlwZSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZyhjdXJyZW50LmNhcHNTdHJpbmcpKTsKKyAgICAgICAgICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZzo6ZnJvbUxhdGluMShjdXJy
ZW50LmNhcHNTdHJpbmcpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI2MiwyNiArMjYyLDI2
IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fw
c01hcHBpbmcoY29uc3QgR1N0cmVhbWVyUmVnCiB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxl
bWVudEZhY3RvcmllcyYgZmFjdG9yaWVzKQogewogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRp
by9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBtX2RlY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOwotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7Ci0gICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwotICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIikpOwotICAg
ICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBmYWxzZSk7Ci0g
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMi
X3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8veC1tNGEiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL21wZWciX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyJfcykpOworICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygibXBlZyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIl9zKSwgZmFsc2UpOwogICAgIH0KIAogICAgIGF1
dG8gb3B1c1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtb3B1cyIpOwogICAgIGlm
IChvcHVzU3VwcG9ydGVkICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvUGFyc2VyLCAiYXVk
aW8veC1vcHVzIikpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOworICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBh
dXRvIHZvcmJpc1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtdm9yYmlzIik7CiAg
ICAgaWYgKHZvcmJpc1N1cHBvcnRlZCAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb1BhcnNl
ciwgImF1ZGlvL3gtdm9yYmlzIikpKSB7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ2b3JiaXMiKSwgZmFsc2UpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygieC12b3JiaXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIl9zKSwgZmFsc2UpOworICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiX3MpLCBmYWxzZSk7CiAgICAgfQog
CiAgICAgYm9vbCBtYXRyb3NrYVN1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby94LW1hdHJvc2th
Iik7CkBAIC0yOTAsMjEgKzI5MCwyMSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgICAg
ICBhdXRvIHZwOURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LXZwOSIs
IEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogCiAgICAg
ICAgIGlmICh2cDhEZWNvZGVyQXZhaWxhYmxlIHx8IHZwOURlY29kZXJBdmFpbGFibGUpCi0gICAg
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSIp
KTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRl
by93ZWJtIl9zKSk7CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUpIHsKLSAgICAg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiKSwgdnA4RGVjb2Rl
ckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtdnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2
cDguMCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4Il9zKSwgdnA4RGVjb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdnA4Il9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZw
OC4wIl9zKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICB9
CiAgICAgICAgIGlmICh2cDlEZWNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJ4LXZwOSIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAg
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiKSwgdnA5RGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ2cDkiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAg
ICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiX3MpLCB2cDlEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidnAwOSoiX3MpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIl9zKSk7CiAgICAg
fQogCiAgICAgYm9vbCBzaG91bGRBZGRNUDRDb250YWluZXIgPSBmYWxzZTsKQEAgLTMxMiwzNSAr
MzEyLDM1IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2Rl
cnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgYXV0byBoMjY0RGVjb2RlckF2
YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3RyaW5nKXsg
Y29uc3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50RmFjdG9yaWVz
OjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NERlY29kZXJBdmFp
bGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9QYXJzZXIsICJ2aWRlby94LWgyNjQi
KSkpIHsKICAgICAgICAgc2hvdWxkQWRkTVA0Q29udGFpbmVyID0gdHJ1ZTsKLSAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RGVjb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygiYXZjKiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwot
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioiKSwgaDI2NERl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCJfcyksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJh
dmMqIl9zKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIl9zKSwgaDI2NERlY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBhdXRvIGgyNjVEZWNvZGVy
QXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjY1IiwgRWxlbWVudEZhY3Rvcmll
czo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAgaWYgKGgyNjVEZWNvZGVyQXZh
aWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvUGFyc2VyLCAidmlkZW8veC1oMjY1
IikpKSB7CiAgICAgICAgIHNob3VsZEFkZE1QNENvbnRhaW5lciA9IHRydWU7Ci0gICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjUiKSwgaDI2NURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImh2YzEqIiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJoZXYxKiIpLCBoMjY1
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY1Il9zKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
Imh2YzEqIl9zKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAg
ICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImhldjEqIl9zKSwgaDI2NURlY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAoc2hvdWxkQWRk
TVA0Q29udGFpbmVyKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJ2aWRlby9tcDQiKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJ2aWRlby94LW00diIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoInZpZGVvL21wNCJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiX3MpKTsKICAgICB9CiAKICAgICBhdXRvIGF2
MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIsIEVsZW1lbnRG
YWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAgIGlmICgobWF0cm9z
a2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRl
Y29kaW5nLCAidmlkZW8vbXA0Il9zKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewotICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
LSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIl9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5n
SGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYx
Il9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiX3MpLCBhdjFEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgVmVjdG9yPEdzdENhcHNXZWJLaXRN
YXBwaW5nPiBtc2VDb21wYXRpYmxlTWFwcGluZyA9IHsKLSAgICAgICAgeyBFbGVtZW50RmFjdG9y
aWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWFjMyIsIHsgfSwgeyJ4LWFjMyIsICJh
Yy0zIiwgImFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9E
ZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyJhdWRpby94LWFjMyJ9LCAgeyJ4LWVhYzMiLCAiZWMz
IiwgImVjLTMiLCAiZWFjMyJ9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1mbGFjIiwgeyJhdWRpby94LWZsYWMiLCAiYXVkaW8vZmxh
YyJ9LCB7IngtZmxhYyIsICJmbGFjIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6
VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1hYzMiLCB7IH0sIHsgIngtYWMzIl9zLCAiYWMt
MyJfcywgImFjMyJfcyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVk
aW9EZWNvZGVyLCAiYXVkaW8veC1lYWMzIiwgeyAiYXVkaW8veC1hYzMiX3MgfSwgIHsgIngtZWFj
MyJfcywgImVjMyJfcywgImVjLTMiX3MsICJlYWMzIl9zIH0gfSwKKyAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWZsYWMiLCB7ICJhdWRpby94
LWZsYWMiX3MsICJhdWRpby9mbGFjIl9zIH0sIHsieC1mbGFjIl9zLCAiZmxhYyJfcyB9IH0sCiAg
ICAgfTsKICAgICBmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoZmFjdG9yaWVzLCBtc2VD
b21wYXRpYmxlTWFwcGluZyk7CiAKQEAgLTM1MCw3NiArMzUwLDc2IEBAIHZvaWQgR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyCiAgICAgLy8gVGhlIG1pbWUtdHlwZXMgaW5pdGlhbGl6ZWQgYmVsb3cgYXJlIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIE1TRSBiYWNrZW5kLgogCiAgICAgVmVjdG9yPEdzdENhcHNXZWJL
aXRNYXBwaW5nPiBtYXBwaW5nID0gewotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21pZGkiLCB7ICJhdWRpby9taWRpIiwgImF1ZGlvL3JpZmYt
bWlkaSIgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9E
ZWNvZGVyLCAiYXVkaW8vbWlkaSIsIHsgImF1ZGlvL21pZGkiX3MsICJhdWRpby9yaWZmLW1pZGki
X3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNv
ZGVyLCAiYXVkaW8veC1kdHMiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc2JjIiwgeyB9LCB7IH0gfSwKICAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNpZCIs
IHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNv
ZGVyLCAiYXVkaW8veC1zcGVleCIsIHsgImF1ZGlvL3NwZWV4IiwgImF1ZGlvL3gtc3BlZXgiIH0s
IHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2Rlciwg
ImF1ZGlvL3gtd2F2cGFjayIsIHsgImF1ZGlvL3gtd2F2cGFjayIgfSwgeyB9IH0sCi0gICAgICAg
IHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8vbXBlZywgbXBl
Z3ZlcnNpb249KGludCl7MSwyfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNlIiwgeyAidmlk
ZW8vbXBlZyIgfSwgeyAibXBlZyIgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5
cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVleCJfcywgImF1
ZGlvL3gtc3BlZXgiX3MgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC13YXZwYWNrIiwgeyAiYXVkaW8veC13YXZwYWNrIl9z
IH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0cmVhbT0oYm9v
bGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciX3MgfSwgeyAibXBlZyJfcyB9IH0sCiAgICAgICAg
IHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8vbXBlZ3RzIiwg
eyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29k
ZXIsICJ2aWRlby94LWRpcmFjIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9y
aWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwgeyAidmlkZW8v
Zmx2IiwgInZpZGVvL3gtZmx2IiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWZsYXNoLXZpZGVvIiwgeyAidmlkZW8vZmx2
Il9zLCAidmlkZW8veC1mbHYiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjYzIiwgeyB9LCB7IH0gfSwKLSAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LW1zdmlk
ZW9jb2RlYyIsIHsgInZpZGVvL3gtbXN2aWRlbyIgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVvY29kZWMiLCB7
ICJ2aWRlby94LW1zdmlkZW8iX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEiLCB7IH0sIHsg
fSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNh
dGlvbi94LTNncCIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtaGxzIiwgeyAiYXBwbGljYXRpb24vdm5kLmFwcGxl
Lm1wZWd1cmwiLCAiYXBwbGljYXRpb24veC1tcGVndXJsIiB9LCB7IH0gfSwKKyAgICAgICAgeyBF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC1obHMiLCB7ICJh
cHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJfcywgImFwcGxpY2F0aW9uL3gtbXBlZ3VybCJf
cyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAi
YXBwbGljYXRpb24veC1wbi1yZWFsYXVkaW8iLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi9kYXNoK3htbCIsIHsgfSwg
eyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImF1ZGlv
L3gtYWlmZiIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiLCAiYXVkaW8vd2F2IiwgImF1
ZGlvL3ZuZC53YXZlIiB9LCB7ICIxIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6
VHlwZTo6RGVtdXhlciwgImF1ZGlvL3gtd2F2IiwgeyAiYXVkaW8veC13YXYiX3MsICJhdWRpby93
YXYiX3MsICJhdWRpby92bmQud2F2ZSJfcyB9LCB7ICIxIl9zIH0gfSwKICAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lIiwgeyB9LCB7IH0g
fSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8vcXVp
Y2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVvLzNncHAiIH0sIHsgfSB9LAor
ICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby9xdWlja3Rp
bWUsIHZhcmlhbnQ9KHN0cmluZykzZ3BwIiwgeyAidmlkZW8vM2dwcCJfcyB9LCB7IH0gfSwKICAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAidmlkZW8veC1tcy1hc2Yi
LCB7IH0sIHsgfSB9LAogICAgIH07CiAgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5n
KGZhY3RvcmllcywgbWFwcGluZyk7CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL29n
ZyIpKSB7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhcHBs
aWNhdGlvbi9vZ2ciKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3Ry
aW5nKCJhcHBsaWNhdGlvbi9vZ2ciX3MpKTsKIAogICAgICAgICBpZiAodm9yYmlzU3VwcG9ydGVk
KSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vb2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL3gtdm9yYmlzK29nZyIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBl
U2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ciX3MpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNwZWV4IikpIHsK
LSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9v
Z2ciKSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygic3Bl
ZXgiKSwgZmFsc2UpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL29nZyJfcykpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoInNwZWV4Il9zKSwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdGhlb3JhIikpIHsKLSAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9vZ2ciKSk7Ci0gICAgICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidGhlb3JhIiksIGZhbHNlKTsKKyAgICAg
ICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9vZ2ciX3Mp
KTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ0aGVvcmEi
X3MpLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGF1ZGlvTXBlZ1N1cHBv
cnRlZCA9IGZhbHNlOwogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVy
c2lvbj0oaW50KTEsIGxheWVyPShpbnQpWzEsIDNdIikpIHsKICAgICAgICAgYXVkaW9NcGVnU3Vw
cG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL21wMSIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL21wMyIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL3gtbXAzIikpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXVkaW8vbXAzIiksIGZhbHNlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIm1wMyIpLCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJfcykpOworICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcDMiX3MpKTsKKyAgICAg
ICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyJfcyksIGZhbHNl
KTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wMyJfcyksIGZh
bHNlKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUo
RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbXBlZywgbXBlZ3Zl
cnNpb249KGludCkyIikpIHsKICAgICAgICAgYXVkaW9NcGVnU3VwcG9ydGVkID0gdHJ1ZTsKLSAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsK
KyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiJf
cykpOwogICAgIH0KIAogICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlm
IChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIl9zKSk7CisgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciX3MpKTsKICAgICB9CiAK
ICAgICBpZiAobWF0cm9za2FTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbWF0cm9za2EiKSk7CisgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2thIl9zKSk7CiAKICAg
ICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3Jp
ZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtdnAxMCIpKQotICAgICAgICAgICAgbV9k
ZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSJfcykp
OwogICAgIH0KIH0KIApAQCAtNDMxLDc2ICs0MzEsNzYgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXIKIAogICAgIGF1dG8gYWFjU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVkaW8vbXBlZywg
bXBlZ3ZlcnNpb249KGludCk0Iik7CiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL21wZWcs
IG1wZWd2ZXJzaW9uPShpbnQpNCIpKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJtcGVnIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoIm1wNGEqIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIm1wZWciX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBhdXRv
IG9wdXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJhdWRpby94LW9wdXMiKTsKICAgICBpZiAo
b3B1c1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
Zygib3B1cyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygib3B1cyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoIngtb3B1cyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBhdXRvIHZvcmJp
c1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL3gtdm9yYmlzIik7CiAgICAgaWYgKHZv
cmJpc1N1cHBvcnRlZCkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
Zygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoInZvcmJpcyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIl9zKSwgZmFsc2UpOwogICAgIH0KIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3QgeyAiYXYxZW5jIl9zIH07CiAg
ICAgYXV0byBhdjFFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVyLCAidmlkZW8veC1hdjEi
LCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzLCBzdGQ6Om1h
a2Vfb3B0aW9uYWwoV1RGTW92ZShhdjFFbmNvZGVyc0Rpc2FsbG93ZWRMaXN0KSkpOwogICAgIGlm
IChhdjFFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJhdjAxKiIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygieC1hdjEiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygiYXYwMSoiX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZW5jb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZW5jb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSJfcyksIGZhbHNlKTsKICAgICB9CiAKICAg
ICBhdXRvIHZwOEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRlby94LXZwOCIs
IEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAgIGlm
ICh2cDhFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ2cDgiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwot
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiKSwgdnA4RW5j
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4Il9z
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiX3MpLCB2cDhFbmNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJ2cDguMCJfcyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAg
ICB9CiAKICAgICBhdXRvIHZwOUVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRl
by94LXZwOSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwogICAgIGlmICh2cDlFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDki
KSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5LjAiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidnAwOSoiKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5Il9zKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygieC12cDkiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkuMCJfcyks
IHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIl9zKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVvL3dlYm0iKSAm
JiAodnA4RW5jb2RlckF2YWlsYWJsZSB8fCB2cDlFbmNvZGVyQXZhaWxhYmxlIHx8IGF2MUVuY29k
ZXJBdmFpbGFibGUpKQotICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmlu
ZygidmlkZW8vd2VibSIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlvL3dlYm0iKSkg
ewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOwotICAgICAgICBtX2VuY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1f
ZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9zKSk7CisgICAg
ICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIl9zKSk7
CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAiYXVkaW8vb2dnIikgJiYgKHZvcmJpc1N1cHBvcnRl
ZCB8fCBvcHVzU3VwcG9ydGVkKSkKLSAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOwogCiAgICAgYXV0byBoMjY0RW5jb2RlckF2YWls
YWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6
OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtaDI2NCwgcHJvZmlsZT0oc3RyaW5nKXsgY29u
c3RyYWluZWQtYmFzZWxpbmUsIGJhc2VsaW5lLCBoaWdoIH0iLCBFbGVtZW50RmFjdG9yaWVzOjpD
aGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2NEVuY29kZXJBdmFpbGFi
bGUpIHsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImgyNjQiKSwg
aDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NCIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygiYXZjKiIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioiKSwgaDI2NEVuY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoImgyNjQiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdh
cmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0Il9z
KSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygibXA0dioiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwog
ICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgInZpZGVvL3F1aWNrdGltZSIpKSB7CiAgICAgICAgIGlm
IChvcHVzU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyJfcykpOwogICAgICAgICBpZiAoYWFjU3VwcG9y
dGVkKSB7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vYWFjIikpOwotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL21wNCIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSIpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMiX3MpKTsKKyAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiX3MpKTsKKyAgICAgICAg
ICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSJfcykp
OwogICAgICAgICB9CiAgICAgICAgIGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkgewotICAgICAg
ICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCIpKTsK
LSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94
LW00diIpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJ2aWRlby9tcDQiX3MpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJ2aWRlby94LW00diJfcykpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IDdiMjAyNzk1ZWQxNWZmMjQyODg5ZDhkODFmYzYyMWU4YmFkYzI0MDIuLjYyNzZjYTkwOTVkYjVk
M2JjZDE3YjZjMTY0OThkMGYxNzYwMjliZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
cih1bnNpZ25lZCBpbmRleCwKICAgICA6IEluYmFuZFRleHRUcmFja1ByaXZhdGUoQ3VlRm9ybWF0
OjpXZWJWVFQpCiAgICAgLCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OlRyYWNrVHlwZTo6VGV4dCwgdGhpcywgaW5kZXgsIFdURk1vdmUoc3RyZWFt
KSkKIHsKLSAgICBtX2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3RyZWFtLmdldCgp
KTsKKyAgICBtX2lkID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShnc3Rfc3RyZWFtX2dldF9zdHJl
YW1faWQobV9zdHJlYW0uZ2V0KCkpKTsKICAgICBHU1RfSU5GTygiVHJhY2sgJWQgZ290IHN0cmVh
bSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIG1faWQuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKICAgICBHU1RfREVCVUcoIlN0cmVhbSAlIiBHU1RfUFRSX0ZPUk1BVCwgbV9zdHJl
YW0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCAwMWZlZmVhMzJkMjEzNmRmZDFlMWYzYzI1YjgxNjI2OTY5MGZiZDE0Li4yMDk4
MDM1ZGE4MGIwYjkzOTM1ZTQ2NjkxZjAyNTc1ZWU3ODg4NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTQ2NCw3ICsxNDY0LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZVRyYWNrcyhjb25zdCBHUmVm
UHRyPEdzdFN0cmVhbUNvbGxlY3Rpb24KICAgICAgICAgICAgIENSRUFURV9UUkFDSyh2aWRlbywg
VmlkZW8pOwogICAgICAgICBlbHNlIGlmICh0eXBlICYgR1NUX1NUUkVBTV9UWVBFX1RFWFQgJiYg
IXVzZU1lZGlhU291cmNlKSB7CiAgICAgICAgICAgICBhdXRvIHRyYWNrID0gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlKHRleHRUcmFja0luZGV4KyssIFdURk1vdmUoc3Ry
ZWFtKSk7Ci0gICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKHN0cmVhbUlkLCB0cmFjay5jb3B5
UmVmKCkpOworICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFkZChBdG9tU3RyaW5nOjpmcm9tTGF0
aW4xKHN0cmVhbUlkKSwgdHJhY2suY29weVJlZigpKTsKICAgICAgICAgICAgIG1fcGxheWVyLT5h
ZGRUZXh0VHJhY2sodHJhY2suZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEdT
VF9XQVJOSU5HKCJVbmtub3duIHRyYWNrIHR5cGUgZm91bmQgZm9yIHN0cmVhbSAlcyIsIHN0cmVh
bUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRl
eCAyOTU3YmNlZjNkMGQwZTE4MjhlZjVkZjdiZjhiY2U1ZGVjMmY4ZDlhLi45YWIxNWRmYWVjMmI0
ZTU4MThlNWEzZWY5ZTEyNzA5ODBjMDg2YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXI6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJhY2tUeXBlIHR5cGUsIFRyYWNr
UHJpdmF0CiAgICAgLCBtX293bmVyKG93bmVyKQogewogICAgIEFTU0VSVChtX3N0cmVhbSk7Ci0g
ICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQoKSk7CisgICAg
bV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEoZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1f
c3RyZWFtLmdldCgpKSk7CiAKICAgICAvLyBXZSBjYW4ndCBjYWxsIG5vdGlmeVRyYWNrT2ZUYWdz
Q2hhbmdlZCgpIGRpcmVjdGx5LCBiZWNhdXNlIHdlIG5lZWQgdGFnc0NoYW5nZWQoKSB0byBzZXR1
cCBtX3RhZ3MuCiAgICAgdGFnc0NoYW5nZWQoKTsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFRy
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Om5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgR1NUX0lORk8oIlRyYWNrICVkIGdvdCBzdHJlYW0gc3RhcnQg
Zm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBzdHJlYW1JZC5nZXQoKSk7Ci0gICAgbV9pZCA9IHN0
cmVhbUlkLmdldCgpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHN0cmVhbUlk
LmdldCgpKTsKIH0KIAogdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpzdHJlYW1DaGFu
Z2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IGJjNTM5YTg3NDc4MDI4MTgxM2Y2
YWYzMDBhZTJlMDJiNzZhZTYxYmMuLjQ4OTAyMjkzNjkxOWQ3MzlkMDBlYTFjY2MzMjY2ZmRhZWYy
ODY3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMTQ3LDEwICsxNDcsMTAgQEAg
VmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0ZWRJbml0RGF0YVR5
cGVzKCkgY29uc3QKICAgICBzdGF0aWMgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXRE
YXRhVHlwZXM7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgc3Vw
cG9ydGVkSW5pdERhdGFUeXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDQpOwotICAgICAgICBz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJrZXlpZHMi
KSk7Ci0gICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKEF0b21T
dHJpbmcoImNlbmMiKSk7Ci0gICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2Vk
QXBwZW5kKEF0b21TdHJpbmcoIndlYm0iKSk7Ci0gICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlw
ZXMudW5jaGVja2VkQXBwZW5kKEF0b21TdHJpbmcoImNiY3MiKSk7CisgICAgICAgIHN1cHBvcnRl
ZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKCJrZXlpZHMiX3MpOworICAgICAgICBzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZCgiY2VuYyJfcyk7CisgICAgICAgIHN1
cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKCJ3ZWJtIl9zKTsKKyAgICAgICAg
c3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoImNiY3MiX3MpOwogICAgIH0p
OwogICAgIHJldHVybiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogfQpAQCAtMTcwLDkgKzE3MCw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjCiAKIFZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2
YXRlVGh1bmRlcjo6c3VwcG9ydGVkUm9idXN0bmVzc2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
eyBlbXB0eUF0b20oKSwKLSAgICAgICAgIlNXX1NFQ1VSRV9ERUNPREUiLAotICAgICAgICAiU1df
U0VDVVJFX0NSWVBUTyIgfTsKKyAgICByZXR1cm4geyBlbXB0eUF0b20oKSwgIlNXX1NFQ1VSRV9E
RUNPREUiX3MsICJTV19TRUNVUkVfQ1JZUFRPIl9zIH07CiB9CiAKIENETVJlcXVpcmVtZW50IENE
TVByaXZhdGVUaHVuZGVyOjpkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IENETVJlc3RyaWN0aW9ucyYpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IDBiYjIyZDUyNTkwZWRlMjU3
OGYwNGYyNmE2MTZmOTE2MGM0NGIzZGUuLmMyNmE5YjUzNTY2OTM0ODhiNDI1ZjZlOTdjNDgxYjE1
YjI3N2E1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC03MTMsNyAr
NzEzLDcgQEAgQXBwZW5kUGlwZWxpbmU6OlRyYWNrKiBBcHBlbmRQaXBlbGluZTo6dHJ5TWF0Y2hQ
YWRUb0V4aXN0aW5nVHJhY2soR3N0UGFkICpkZW11eGUKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX2hhc1JlY2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21l
bnQpOwotICAgIEF0b21TdHJpbmcgdHJhY2tJZCA9IEdTVF9QQURfTkFNRShkZW11eGVyU3JjUGFk
KTsKKyAgICBhdXRvIHRyYWNrSWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKEdTVF9QQURfTkFN
RShkZW11eGVyU3JjUGFkKSk7CiAgICAgYXV0byBbcGFyc2VkQ2Fwcywgc3RyZWFtVHlwZSwgcHJl
c2VudGF0aW9uU2l6ZV0gPSBwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKGFkb3B0R1JlZihnc3RfcGFk
X2dldF9jdXJyZW50X2NhcHMoZGVtdXhlclNyY1BhZCkpLmdldCgpKTsKIAogICAgIC8vIFRyeSB0
byBmaW5kIGEgbWF0Y2hpbmcgcHJlLWV4aXN0aW5nIHRyYWNrLiBJZGVhbGx5LCB0cmFja3Mgc2hv
dWxkIGJlIG1hdGNoZWQgYnkgdHJhY2sgSUQsIGJ1dCBtYXRjaGluZyBieSB0eXBlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCmluZGV4IDNlNGUwZTkzNDI1ZTY4MGI5MDM2MjdiZTk5ZmI0M2YyYTIzYzJlMGYuLjQ2
MjQxZDEyNDE5M2FlZWFlMmVkZWQ0MDVjYTI4NWMzOTNhMzE1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1Rl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIHVuc2lnbmVkIGhvdXJzID0gbWludXRl
cyAvIDYwICUgNjA7CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
bjsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJDb3VyaWVyIik7CisgICAgZm9u
dERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiQ291cmllciJfcyk7CiAgICAgZm9udERlc2NyaXB0
aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CiAKICAgICBmb250RGVzY3Jp
cHRpb24uc2V0U3BlY2lmaWVkU2l6ZShtX2Jhc2VGb250U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCBhNTMx
MDYwN2EzMDQ5OTk1M2U0OTVkYWU2MzQ1ZjhlNTJmZGYwNzJlLi45Nzc4YzE3NWYzNGQ0NmQwYjZm
NTAxMTZlN2U4ZDNhNTU0OTQ0NDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTY3LDggKzY3LDkgQEAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpCiB7CiAgICAgc3Rh
dGljIGJvb2wgZGlkUmVnaXN0ZXIgPSBmYWxzZTsKICAgICBpZiAoIWRpZFJlZ2lzdGVyKSB7Ci0g
ICAgICAgIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3RvcigiYmxvYiIs
IGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZSk7Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpyZWdp
c3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcigiYmxvYiIsIGxvYWRCbG9iUmVzb3VyY2VTeW5j
aHJvbm91c2x5KTsKKyAgICAgICAgQXRvbVN0cmluZyBibG9iID0gImJsb2IiX3M7CisgICAgICAg
IFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5Db25zdHJ1Y3RvcihibG9iLCBjcmVhdGVC
bG9iUmVzb3VyY2VIYW5kbGUpOworICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWls
dGluU3luY2hyb25vdXNMb2FkZXIoYmxvYiwgbG9hZEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzbHkp
OwogICAgICAgICBkaWRSZWdpc3RlciA9IHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGEzZmVmYWQwNmE2YjI3MmIxYWYxYjU5
MDQzNjk4MmExNjg1M2IxYWYuLjQ4NWNlNzNkOWMzNGEwYzlhMzQyZDNjZmU3MGE1NWU0NDZmY2Ey
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTYz
Myw3ICs2MzMsNyBAQCB2b2lkIHNob3dDb3VudGVyUmVuZGVyZXJUcmVlKGNvbnN0IFdlYkNvcmU6
OlJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IGNoYXIqCiAgICAgd2hpbGUgKHJvb3QtPnBh
cmVudCgpKQogICAgICAgICByb290ID0gcm9vdC0+cGFyZW50KCk7CiAKLSAgICBBdG9tU3RyaW5n
IGlkZW50aWZpZXIoY291bnRlck5hbWUpOworICAgIGF1dG8gaWRlbnRpZmllciA9IEF0b21TdHJp
bmc6OmZyb21MYXRpbjEoY291bnRlck5hbWUpOwogICAgIGZvciAoYXV0byogY3VycmVudCA9IHJv
b3Q7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0SW5QcmVPcmRlcigpKSB7CiAgICAg
ICAgIGlmICghaXM8V2ViQ29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJlbnQpKQogICAgICAgICAg
ICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IDI2M2FjNzVhYzdlNGQyYTNkMjM1OTE0NmFhYzNkZjdjZjQ5YmI5MjIu
LmQ5Nzc4OTVhZmRjMTc4ZTYzZjNhNGNkYTkxMjBmNjYzYWI1ZTE5ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzMwLDcgKzMz
MzAsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0
ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBHcmFwaGljc0NvbnRleHQm
IGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAKICAgICAgICAgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3Bl
Y2lmaWVkU2l6ZSgxMCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUo
MTApOwogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1
ZSg1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRmVuY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRmVuY2VkLmNwcAppbmRleCAyMWQ5YzdlMmM3MmVkMTA0YTg1ZWQ5OWQwNTE2Yjdj
YWQ2YjE4ZTc3Li5jMGMzNDc4YzI4YjlhODU0YTgxMjYzNGFjYWFlMzI4NGVmNTRmMjg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNl
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
ZW5jZWQuY3BwCkBAIC00NSw4ICs0NSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck1hdGhNTEZlbmNlZCk7CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBnT3BlbmluZ0JyYWNlQ2hhciA9ICIoIjsKLXN0YXRpYyBjb25zdCBj
aGFyKiBnQ2xvc2luZ0JyYWNlQ2hhciA9ICIpIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBnT3Bl
bmluZ0JyYWNlQ2hhciA9ICIoIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdDbG9zaW5nQnJh
Y2VDaGFyID0gIikiX3M7CiAKIFJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVyTWF0aE1MRmVuY2Vk
KE1hdGhNTFJvd0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJNYXRoTUxSb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXggMzMxODliZDY0Y2Fj
YmVkZjkzNjhkMzRmYTlmYjU2NGQ1OGJkMWYzNi4uOGFjNmVkZWMyZmUwYjYxNjcxODgyYTVmOWZm
ZDY0N2Y0MDZiY2Y0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlRm9yRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckRvY3VtZW50LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVG
b3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgICAgIGlmIChyZW5kZXJW
aWV3Lm11bHRpQ29sdW1uRmxvdygpKQogICAgICAgICAgICAgcmVuZGVyVmlldy51cGRhdGVDb2x1
bW5Qcm9ncmVzc2lvbkZyb21TdHlsZShkb2N1bWVudFN0eWxlKTsKICAgICAgICAgaWYgKHJlbmRl
clZpZXcucGFnZSgpLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoKSkgewotICAgICAgICAgICAg
ZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZhdWx0LXBhZ2luYXRpb24tZ3Jp
ZCIpOworICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lR3JpZCgiLXdlYmtpdC1kZWZh
dWx0LXBhZ2luYXRpb24tZ3JpZCJfcyk7CiAgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExp
bmVTbmFwKExpbmVTbmFwOjpDb250YWluKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKaW5kZXggM2FkMjRlNWZjYzkxY2Iy
Zjg4ZTIwMjU0YWJhZDYwMTQ4NzE5Mjg4ZC4uNjNiY2QxYTgwZWY3ODUzMzk0MjQyMTMwZGQyZGY4
OTA5YzIyM2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJp
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVu
dC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgUmVmPENTU0ZvbnRGYWNlU3JjVmFsdWU+IFNWR0ZvbnRG
YWNlVXJpRWxlbWVudDo6c3JjVmFsdWUoKSBjb25zdAogewogICAgIGF1dG8gc3JjID0gQ1NTRm9u
dEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGdldEF0dHJpYnV0ZShTVkdOYW1lczo6aHJlZkF0dHIsIFhM
aW5rTmFtZXM6OmhyZWZBdHRyKSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOwogICAgIEF0
b21TdHJpbmcgdmFsdWUoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtYXRBdHRy
KSk7Ci0gICAgc3JjLmdldCgpLnNldEZvcm1hdCh2YWx1ZS5pc0VtcHR5KCkgPyAic3ZnIiA6IHZh
bHVlKTsgLy8gRGVmYXVsdCBmb3JtYXQKKyAgICBzcmMuZ2V0KCkuc2V0Rm9ybWF0KHZhbHVlLmlz
RW1wdHkoKSA/ICJzdmciX3MgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0CiAgICAgcmV0dXJu
IHNyYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IGEwMWY2YmFk
YTFjMWQ2YzI1ZjgyMGY3MjZjOGVjZWU4MTgyZWNiNmEuLjZlNWM3Yzc0YzhlN2NjZTdkOTgzNzU4
YWRkNDUyYmZlZmE0YTAxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAg
LTE0Myw4ICsxNDMsOCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0
ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogICAgICAgICAvLyBJZiBh
dHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBl
bGVtZW50LCB0aGVuIHRoZXNlIGF0dHJpYnV0ZXMKICAgICAgICAgLy8gd2lsbCBiZSB0cmFuc2Zl
cnJlZCB0byB0aGUgZ2VuZXJhdGVkICdzdmcnLiBJZiBhdHRyaWJ1dGVzIHdpZHRoIGFuZC9vciBo
ZWlnaHQgYXJlIG5vdCBzcGVjaWZpZWQsCiAgICAgICAgIC8vIHRoZSBnZW5lcmF0ZWQgJ3N2Zycg
ZWxlbWVudCB3aWxsIHVzZSB2YWx1ZXMgb2YgMTAwJSBmb3IgdGhlc2UgYXR0cmlidXRlcy4KLSAg
ICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgd2lk
dGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcod2lkdGgoKS52YWx1ZUFz
U3RyaW5nKCkpIDogIjEwMCUiKTsKLSAgICAgICAgc2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8g
QXRvbVN0cmluZyhoZWlnaHQoKS52YWx1ZUFzU3RyaW5nKCkpIDogIjEwMCUiKTsKKyAgICAgICAg
c2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0ciwgd2lkdGgoKS52
YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcod2lkdGgoKS52YWx1ZUFzU3RyaW5n
KCkpIDogIjEwMCUiX3MpOworICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdO
YW1lczo6aGVpZ2h0QXR0ciwgaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9t
U3RyaW5nKGhlaWdodCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSJfcyk7CiAgICAgfSBlbHNl
IGlmIChpczxTVkdTVkdFbGVtZW50PihzaGFkb3dFbGVtZW50KSkgewogICAgICAgICAvLyBTcGVj
ICg8dXNlPiBvbiA8c3ZnPik6IElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUg
cHJvdmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UKICAgICAgICAgLy8gdmFs
dWVzIHdpbGwgb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBvbiB0aGUgJ3N2
ZycgaW4gdGhlIGdlbmVyYXRlZCB0cmVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL0ZldGNoRXZlbnQuY3BwCmluZGV4IGU3YWUxYThjNjhiMDAxNzEzZDE3NzVhMjQyZTk0YmM2
MTYwZmZkNWYuLjFkYTExOTRiYThlZmQwZWEwNGFmMjUzZDQxOWIyNjkxNGFkMGY4MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJGZXRjaEV2ZW50LmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZVJlcXVlc3RJbml0aWF0b3JzLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKQEAgLTQyLDcgKzQzLDcgQEAgUmVmPEZldGNoRXZlbnQ+IEZldGNoRXZl
bnQ6OmNyZWF0ZUZvclRlc3RpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBGZXRjaEV2ZW50OjpJbml0IGluaXQ7CiAgICAgaW5pdC5yZXF1ZXN0ID0gRmV0Y2hSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRl
cnM6Okd1YXJkOjpJbW11dGFibGUsIHsgfSksIHsgfSwgeyB9LCB7IH0pOwotICAgIHJldHVybiBG
ZXRjaEV2ZW50OjpjcmVhdGUoKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksICJmZXRjaCIsIFdURk1v
dmUoaW5pdCksIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CisgICAgcmV0dXJuIEZldGNoRXZlbnQ6
OmNyZWF0ZSgqY29udGV4dC5nbG9iYWxPYmplY3QoKSwgZXZlbnROYW1lcygpLmZldGNoRXZlbnQs
IFdURk1vdmUoaW5pdCksIEV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgUmVmPERPTVByb21pc2U+IHJldHJpZXZlSGFuZGxlZFByb21pc2UoSlNDOjpKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBSZWZQdHI8RE9NUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MRXJyb3JzLmNwcAppbmRleCA2ZGYzZjBjOTNlZjQ1NjBiMjk3NjNkOGIxNGZkMjg1NzI4
ZGJjNzY4Li5lZjRjZGVhYmRlNDlkZWM0MDQyYTZmODMyNTBiNmUyZjc3MjYwMTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MRXJyb3JzLmNwcApAQCAtODMsMTAgKzgzLDEwIEBAIHZvaWQgWE1MRXJyb3JzOjph
cHBlbmRFcnJvck1lc3NhZ2UoQVNDSUlMaXRlcmFsIHR5cGVTdHJpbmcsIFRleHRQb3NpdGlvbiBw
b3NpdGlvCiAKIHN0YXRpYyBpbmxpbmUgUmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJy
b3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZXMp
CiB7Ci0gICAgUmVmPEVsZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgInBhcnNlcmVycm9yIiwgeGh0bWxOYW1lc3Bh
Y2VVUkkpLCB0cnVlKTsKKyAgICBSZWY8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCAicGFyc2VyZXJyb3IiX3Ms
IHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CiAKICAgICBWZWN0b3I8QXR0cmlidXRlPiByZXBv
cnRBdHRyaWJ1dGVzOwotICAgIHJlcG9ydEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHls
ZUF0dHIsICJkaXNwbGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29s
aWQgI2M3NzsgcGFkZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNv
bG9yOiAjZmRkOyBjb2xvcjogYmxhY2siKSk7CisgICAgcmVwb3J0QXR0cmlidXRlcy5hcHBlbmQo
QXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTogcHJlOyBi
b3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2luOiAxZW07
IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayJfcykpOwogICAgIHJlcG9ydEVs
ZW1lbnQtPnBhcnNlclNldEF0dHJpYnV0ZXMocmVwb3J0QXR0cmlidXRlcyk7CiAKICAgICBhdXRv
IGgzID0gSFRNTEhlYWRpbmdFbGVtZW50OjpjcmVhdGUoaDNUYWcsIGRvY3VtZW50KTsKQEAgLTk1
LDcgKzk1LDcgQEAgc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJF
cnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnMKIAogICAgIGF1dG8gZml4ZWQgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBWZWN0b3I8QXR0cmlidXRlPiBm
aXhlZEF0dHJpYnV0ZXM7Ci0gICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5
bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4IikpOworICAgIGZp
eGVkQXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImZvbnQtZmFtaWx5Om1v
bm9zcGFjZTtmb250LXNpemU6MTJweCJfcykpOwogICAgIGZpeGVkLT5wYXJzZXJTZXRBdHRyaWJ1
dGVzKGZpeGVkQXR0cmlidXRlcyk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hp
bGQoZml4ZWQpOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBYTUxFcnJvcnM6Omluc2VydEVy
cm9yTWVzc2FnZUJsb2NrKCkKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9kb2N1bWVudC50
cmFuc2Zvcm1Tb3VyY2VEb2N1bWVudCgpKSB7CiAgICAgICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGF0
dHJpYnV0ZXM7Ci0gICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3aGl0ZS1zcGFjZTogbm9ybWFsIikpOworICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRy
aWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCJfcykpOwogICAgICAgICBhdXRv
IHBhcmFncmFwaCA9IEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAg
ICAgICAgIHBhcmFncmFwaC0+cGFyc2VyU2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICAg
ICAgcGFyYWdyYXBoLT5wYXJzZXJBcHBlbmRDaGlsZChtX2RvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJUaGlzIGRvY3VtZW50IHdhcyBjcmVhdGVkIGFzIHRoZSByZXN1bHQgb2YgYW4gWFNMIHRyYW5z
Zm9ybWF0aW9uLiBUaGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgZ2l2ZW4gYXJlIGZyb20gdGhl
IHRyYW5zZm9ybWVkIHJlc3VsdC4iX3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNw
cAppbmRleCAyMzVmYTM4NWRhZDYxZTVjYjdhYmFiMDE5YTg5OWIzMWQzYTBiMzY5Li4wMmVlOTkw
Y2UwN2RhMGJmMzkzMDRhYjFkYjcyYWUwNzRlMWMxYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRy
ZWVWaWV3ZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgWE1MVHJlZVZpZXdlcjo6dHJhbnNm
b3JtRG9jdW1lbnRUb1RyZWVWaWV3KCkKIHsKICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2pzLCBzaXplb2YoWE1MVmll
d2VyX2pzKSk7CiAgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9y
aW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U3RyaW5nKSk7Ci0gICAgbV9kb2N1
bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNv
dXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmls
ZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRl
ZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsiKSkpOworICAg
IG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihT
Y3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMg
WE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxlIGluZm9ybWF0aW9uIGFz
c29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hvd24gYmVsb3cuJyk7Il9z
KSkpOwogCiAgICAgU3RyaW5nIGNzc1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKFhNTFZpZXdlcl9jc3MsIHNpemVvZihYTUxWaWV3ZXJfY3NzKSk7CiAgICAgYXV0byB0
ZXh0ID0gbV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3NTdHJpbmcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmll
bGQubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFz
c3dvcmRGaWVsZC5tbQppbmRleCBmNjJkYzdjODM3ZjAyZjcwMTBjODJkOTc5MGUyYmFhZjIxNGUx
ZDIxLi42YjI4NTgwNTk0ZWUzNWUxNTI5M2NjMzdkZjAwODMwYzFlMWJhM2U2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRG
aWVsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luUGFzc3dvcmRGaWVsZC5tbQpAQCAtNTQsNyArNTQsNyBAQCBQREZQbHVnaW5QYXNzd29yZEZp
ZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgpCiBSZWY8RWxlbWVudD4gUERGUGx1Z2luUGFz
c3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewogICAgIGF1dG8gZWxlbWVu
dCA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwot
ICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7CisgICAgZWxl
bWVudC0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCAicGFzc3dvcmQiX3MpOwogICAgIGVsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVy
KCksIGZhbHNlKTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggNzNmYzAxMzQyYzhi
N2Y0MTRjYzhkYzE1YzhiYzdkNWQ5OWI0NzVjNC4uNThmYTNlNDIxYzcxMGRlZGVmZmYzMWRlMjRj
ZGVjNDhiOWVlYmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIEpTVmFsdWVSZWYgSlNJ
UEM6Om1lc3NhZ2VzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBKU1N0cmluCiAgICAgICAgIGRpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaXNTeW5jSWRlbnQs
IEpTQzo6anNCb29sZWFuKG1lc3NhZ2VJc1N5bmMobmFtZSkpKTsgICAgICAgICAgICAKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCkpOwogCi0gICAgICAgIG1lc3NhZ2VzT2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbUNTdHJpbmcodm0sIGRlc2NyaXB0aW9uKG5hbWUpKSwgZGljdGlvbmFyeSk7Cisg
ICAgICAgIG1lc3NhZ2VzT2JqZWN0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bUxhdGluMSh2bSwgZGVzY3JpcHRpb24obmFtZSkpLCBkaWN0aW9uYXJ5KTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQppbmRleCAxNDBlY2FkYmE3ZjdjZWE2NjBhMTE3MGE1OWE4MTVlNGU3MDZmNWU0
Li40ZTJlOWJhODI1YjBiYWJiNDk3YzBkOTlmYzg5NWM1ZDAwMzU3YWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzQ0
Miw3ICszNDQyLDcgQEAgc3RkOjpvcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBX
ZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkKICAgICAgICAgZWxzZSBpZiAoZWxl
bWVudC5pc1RlbGVwaG9uZUZpZWxkKCkpCiAgICAgICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50
VHlwZSA9IElucHV0VHlwZTo6UGhvbmU7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNOdW1i
ZXJGaWVsZCgpKQotICAgICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBlbGVtZW50
LmdldEF0dHJpYnV0ZSgicGF0dGVybiIpID09ICJcXGQqIiB8fCBlbGVtZW50LmdldEF0dHJpYnV0
ZSgicGF0dGVybiIpID09ICJbMC05XSoiID8gSW5wdXRUeXBlOjpOdW1iZXJQYWQgOiBJbnB1dFR5
cGU6Ok51bWJlcjsKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gZWxlbWVu
dC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpwYXR0ZXJuQXR0cikgPT0gIlxcZCoiIHx8IGVsZW1l
bnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6cGF0dGVybkF0dHIpID09ICJbMC05XSoiID8gSW5w
dXRUeXBlOjpOdW1iZXJQYWQgOiBJbnB1dFR5cGU6Ok51bWJlcjsKICAgICAgICAgZWxzZSBpZiAo
ZWxlbWVudC5pc0RhdGVUaW1lTG9jYWxGaWVsZCgpKQogICAgICAgICAgICAgaW5mb3JtYXRpb24u
ZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw7CiAgICAgICAgIGVsc2UgaWYg
KGVsZW1lbnQuaXNEYXRlRmllbGQoKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBkNjdjZWI5YmExYTI2NWNjOTUzN2ZhMGYwODJmMGE5YzgxNDc2
MDEyLi4wMjViYjA1MTVkNmNhOGJkNTRlYzlmYTdkNjU2NWY0YTQxNmNmOTk1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMjItMDQtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIEF0b21TdHJpbmcoY29uc3QgY2hhciopIHdpdGggQXRvbVN0cmluZzo6ZnJvbUxhdGlu
MShjb25zdCBjaGFyKikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzOTEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdPcGVyYXRvcnMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHND
Ry5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMi0wNC0xMSAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1MgaVBob25lIDEyIF0g
ZmFzdC9oaWRwaSAmIGZhc3QvbGF5ZXJzL2hpZHBpIHRlc3RzIGFyZSBmbGFreSB0ZXh0L2ltYWdl
IGZhaWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21T
dHJpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAK
aW5kZXggYmU3NDE1NGUzODhiYTdjNTY0NjFlYzk2YmE3MDAzZTFkOTJiNjhlYS4uMDNmMTliMDQx
MzJlNWI1MGMzZDg0ZmZmZWU4N2E2YWE1OGVjOWJkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgVEVTVChXVEYsIEF0
b21TdHJpbmdDcmVhdGlvbkZyb21MaXRlcmFsVW5pcXVlbmVzcykKICAgICBBdG9tU3RyaW5nIHN0
cmluZzIoIlRlbXBsYXRlIExpdGVyYWwiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CiAgICAgQVNTRVJUX0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmcyLmltcGwoKSk7CiAKLSAg
ICBBdG9tU3RyaW5nIHN0cmluZzMoIlRlbXBsYXRlIExpdGVyYWwiKTsKKyAgICBBdG9tU3RyaW5n
IHN0cmluZzMoIlRlbXBsYXRlIExpdGVyYWwiX3MpOwogICAgIEFTU0VSVF9FUShzdHJpbmcxLmlt
cGwoKSwgc3RyaW5nMy5pbXBsKCkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAppbmRleCBiNDQyZTQzNjhjMDNkYjdiYTYzMGM3
YWVhMmE5ODM1ZDM0OGI0NGI4Li4wMmI2MTY0YmQ1OWU5ZjIxZmQ0Y2Y4Nzk2ZjhmY2I0OWZlNmJi
ZWZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVy
YXRvcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJh
dG9ycy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVT
VChXVEYsIFN0cmluZ09wZXJhdG9ycykKIHsKICAgICBTdHJpbmcgc3RyaW5nKCJTdHJpbmciX3Mp
OwotICAgIEF0b21TdHJpbmcgYXRvbVN0cmluZygiQXRvbVN0cmluZyIpOworICAgIEF0b21TdHJp
bmcgYXRvbVN0cmluZygiQXRvbVN0cmluZyJfcyk7CiAgICAgQVNDSUlMaXRlcmFsIGxpdGVyYWwg
eyAiQVNDSUlMaXRlcmFsIl9zIH07CiAKICAgICBTdHJpbmcgc3RyaW5nVmlld0JhY2tpbmcgeyAi
U3RyaW5nVmlldyJfcyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBiY2YwMzI5NTViZTJl
YmRmZmU2OTNkOGE4YmJkODJiZjk0MmY5ZDk5Li4zODBmMzQwYjFhNDMxZjI0NzJjMDJhMTFiOTU4
YThiZGE2OTJmMDc0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VX
aXRoTGVmdFJ1bkluUlRMKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRp
b247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0
aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAg
ICAgZm9udC51cGRhdGUoKTsKQEAgLTk0LDcgKzk0LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29u
dHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQogewogICAgIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFt
aWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwog
ICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9u
dChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTEzOCw3ICsx
MzgsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJ
blJUTCkKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdp
dGhMZWZ0UnVuSW5MVFIpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5kZSIpOworICAgIGRl
c2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIl9zKTsKICAgICBkZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNj
cmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0xODEsNyArMTgxLDcgQEAgVEVTVF9G
KENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxU
UikKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluTFRS
KQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFHcmFuZGUiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRP
bmVGYW1pbHkoIkx1Y2lkYUdyYW5kZSJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAg
ICBmb250LnVwZGF0ZSgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluTFRSKQogVEVTVF9GKENvbXBsZXhUZXh0Q29u
dHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiB7CiAgICAgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAg
ICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDQ4KTsKICAgICBGb250Q2FzY2FkZSBmb250
KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtMjY0LDcgKzI2
NCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUlu
UlRMTm9PcmlnaW5zKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBh
bnNpb24pCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBk
ZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25l
RmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDQ4KTsK
ICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVw
ZGF0ZSgpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJU
ZXN0LCBMZWZ0RXhwYW5zaW9uKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZl
cnRpY2FsQWR2YW5jZXMpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKDQ4KTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAg
ICBmb250LnVwZGF0ZSgpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJv
bGxlclRlc3QsIFRvdGFsV2lkdGhXaXRoSnVzdGlmaWNhdGlvbikKIHsKICAgICBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
VGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBk
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RG
TW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAppbmRleCAyZjI4ZDRlNjY1MzMwZmM2ODYz
ZTQxZTA3ZWQ3YmM3YmRiMGU0NDY0Li40MDZkMDg3M2FkZjlkNmIzMWUxYmFhZThjNzVhMGQ3ZGU3
NGFkMjRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5j
cHAKQEAgLTk4LDcgKzk4LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMs
IFRleHQpCiAgICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjdHgocHJpbWFyeUNvbnRleHQs
IHNlY29uZGFyeUNvbnRleHQpOwogCiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlw
dGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0
ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsK
ICAgICBmb250LnVwZGF0ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457348</attachid>
            <date>2022-04-12 10:57:46 -0700</date>
            <delta_ts>2022-04-12 13:09:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412105745.patch</filename>
            <type>text/plain</type>
            <size>116664</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uZjM4NzcxMTIxN2YwZjNlMDFh
ZjI3MTM3ZTcwYmIzNTE3OTRkMmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KEF0b21TdHJpbmc6OmZyb21MYXRpbjEoIiIpKTsKIAogICAgICAgICAvLyBXaGVu
IHN0YXJ0aW5nIFdlYlRocmVhZCB2aWEgU3RhcnRXZWJUaHJlYWQgZnVuY3Rpb24sIHdlIGhhdmUg
c3BlY2lhbCBwZXJpb2QgYmV0d2VlbiB0aGUgcHJvbG9ndWUgb2YgU3RhcnRXZWJUaHJlYWQgYW5k
IHNwYXduaW5nIFdlYlRocmVhZCBhY3R1YWxseS4KICAgICAgICAgLy8gSW4gdGhpcyBwZXJpb2Qs
IGBpc01haW5UaHJlYWQoKWAgcmV0dXJucyBmYWxzZSBldmVuIGlmIHRoaXMgaXMgY2FsbGVkIG9u
IHRoZSBtYWluIHRocmVhZCBzaW5jZSBXZWJUaHJlYWQgaXMgbm93IGVuYWJsZWQgYW5kIHdlIGFy
ZSBub3QgdGFraW5nIGEgV2ViVGhyZWFkIGxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmlu
ZGV4IDM1MDYzOWRjNWQ2ZmEyODMxNzRlNWMxNDYxYjdkNDVjYjQyMDU3NTkuLjA2OWFmNmQzMjU5
ZDMyYjI0Yzk1YTI1NDAzYWEzZmFjMGQ4MGI1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
CkBAIC0zOSwxMSArMzksMTIgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZygpOwogICAgIEF0
b21TdHJpbmcoY29uc3QgTENoYXIqKTsKLSAgICBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAg
ICBBdG9tU3RyaW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3Ry
aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0
IFVDaGFyKik7CiAKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3RyaW5nIGZyb21MYXRp
bjEoY29uc3QgY2hhciogY2hhcmFjdGVycykgeyByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJz
KTsgfQorCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGV4cGxpY2l0
IEF0b21TdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGNoYXJhY3Rl
cnMpCiAgICAgICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZChjaGFyYWN0ZXJzLmRh
dGEoKSwgY2hhcmFjdGVycy5zaXplKCkpKQpAQCAtMTY3LDYgKzE2OCw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgorICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOworCiAgICAgZW51
bSBjbGFzcyBDYXNlQ29udmVydFR5cGUgeyBVcHBlciwgTG93ZXIgfTsKICAgICB0ZW1wbGF0ZTxD
YXNlQ29udmVydFR5cGU+IEF0b21TdHJpbmcgY29udmVydEFTQ0lJQ2FzZSgpIGNvbnN0OwogCkBA
IC0xODAsNiArMTgzLDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykgPT0gc2l6
ZW9mKFN0cmluZyksICJBdG9tU3RyaW5nIGFuZCBTdHJpbmcgbXVzdAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVy
biBhLmltcGwoKSA9PSBiLmltcGwoKTsgfQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3Ry
aW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBXVEY6OmVxdWFsKGEuaW1wbCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF0b21TdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBiKSB7IHJldHVybiBXVEY6OmVxdWFs
KGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBW
ZWN0b3I8VUNoYXI+JiBiKSB7IHJldHVybiBhLmltcGwoKSAmJiBlcXVhbChhLmltcGwoKSwgYi5k
YXRhKCksIGIuc2l6ZSgpKTsgfSAgICAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRv
bVN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5p
bXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBB
dG9tU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KQEAgLTE5Miw2ICsxOTYsNyBAQCBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsg
cmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3Ry
aW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBs
KCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0
IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShi
ID09IGEpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0ZXJhbCBhLCBjb25zdCBB
dG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwo
YS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0
b3I8VUNoYXI+JiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggOGNkYmNhNzdhZjM4MzA3YjJiNGMwYTRkMjVhMWYw
ZTkxMWFiYjFkZS4uNjI0OTJhOTA2MDU0YjVkMmNmOGU1OTIxYmI5YzQ4ZWY3M2YzNGE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwCkBAIC0yMjYsOSArMjI2LDkgQEAgSW5pdERhdGFSZWdpc3RyeSYg
SW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkKIAogSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFS
ZWdpc3RyeSgpCiB7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyIsIHsgc2FuaXRp
emVLZXlpZHMsIGV4dHJhY3RLZXlJRHNLZXlpZHMgfSk7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5
cGUoImNlbmMiLCB7IHNhbml0aXplQ2VuYywgZXh0cmFjdEtleUlEc0NlbmMgfSk7Ci0gICAgcmVn
aXN0ZXJJbml0RGF0YVR5cGUoIndlYm0iLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dl
Yk0gfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyJfcywgeyBzYW5pdGl6ZUtl
eWlkcywgZXh0cmFjdEtleUlEc0tleWlkcyB9KTsKKyAgICByZWdpc3RlckluaXREYXRhVHlwZSgi
Y2VuYyJfcywgeyBzYW5pdGl6ZUNlbmMsIGV4dHJhY3RLZXlJRHNDZW5jIH0pOworICAgIHJlZ2lz
dGVySW5pdERhdGFUeXBlKCJ3ZWJtIl9zLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dl
Yk0gfSk7CiB9CiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYTZkMzEwMmM4ODJhNjA5OGY0NzkyYjdiY2Qw
NmJhMjZkNDI4N2Q4YS4uMDA1MGRlMTZjMGNiZDdmMDY1NzY5YmM1ODI2NGI2MTE2OGVkY2Q5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNzg2LDcgKzE3ODYsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdAogICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBkb3duY2FzdDxFbGVtZW50
Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSJfcyA6
ICJmYWxzZSJfcyk7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBjYjJh
ZjFmNjZiZjQxZTU2ZDAwMmZlZjAwMGZlMTEwZDMyMDQzM2QxLi5jZGE0MDFlYjBmNWM0YzBmNzBm
ZWI2MTA4OTNjZjE0ZGYwNWYyYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgpAQCAtMTQ3
NCw3ICsxNDc1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpjb21taXRTdHls
ZXMoKQogCiAgICAgYXV0byBjb21wdXRlZFN0eWxlRXh0cmFjdG9yID0gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcigmc3R5bGVkRWxlbWVudCk7CiAgICAgYXV0byBpbmxpbmVTdHlsZSA9IHN0eWxlZEVs
ZW1lbnQuZG9jdW1lbnQoKS5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgaW5saW5l
U3R5bGUtPnNldENzc1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpOwor
ICAgIGlubGluZVN0eWxlLT5zZXRDc3NUZXh0KHN0eWxlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6c3R5bGVBdHRyKSk7CiAKICAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0gc3R5bGVk
RWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKTsKICAgICAv
LyBEdXJpbmcgaXRlcmF0aW9uIHJlc29sdmUoKSBjb3VsZCBjbGVhciB0aGUgdW5kZXJseWluZyBw
cm9wZXJ0aWVzIHNvIHdlIHVzZSBhIGNvcHkKQEAgLTE1MDcsNyArMTUwOCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlubGlu
ZVN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBjc3NWYWx1ZS0+Y3NzVGV4dCgp
LCBmYWxzZSk7CiAgICAgfQogCi0gICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxl
IiwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIGlubGluZVN0eWxlLT5jc3NUZXh0KCkpOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElu
bGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAppbmRleCA3YzFl
ZjdjNjNjNGMzNTc3ZDE5ZWVlYTM5ZmYyYWEwMzg2ZjhiZTllLi4xZmU4NjAzOTQ4OTU2MDhjNjg4
YTQzMWNiMTBjYTEzMTNhYzc5ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5o
CkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBQQUw6OlRleHRFbmNvZGluZyBEb2N1bWVudDo6dGV4
dEVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gUEFMOjpUZXh0RW5jb2RpbmcoKTsKIH0KIAot
aW5saW5lIEF0b21TdHJpbmcgRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gdGV4
dEVuY29kaW5nKCkuZG9tTmFtZSgpOyB9CitpbmxpbmUgQXRvbVN0cmluZyBEb2N1bWVudDo6ZW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHRleHRFbmNvZGlu
ZygpLmRvbU5hbWUoKSk7IH0KIAogaW5saW5lIFN0cmluZyBEb2N1bWVudDo6Y2hhcnNldCgpIGNv
bnN0IHsgcmV0dXJuIERvY3VtZW50OjplbmNvZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBlMDBjMWY5YTg5NTRlZTBiOGNiYzFkODJkMzBiNjAxZGZlMTM5YmVjLi5lZmY4MGI1
NWYxNzUzNDNkMjkxMWJiN2YxMWQ0NTBlYjNlOTMwZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0zMjI0LDcgKzMyMjQsNyBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQogdm9pZCBFbGVtZW50OjpkaXNwYXRj
aFdlYktpdEltYWdlUmVhZHlFdmVudEZvclRlc3RpbmcoKQogewogICAgIGlmIChkb2N1bWVudCgp
LnNldHRpbmdzKCkud2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIEV2ZW50OjpD
YW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5Il9zLCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwogfQogCiBib29sIEVs
ZW1lbnQ6OmRpc3BhdGNoTW91c2VGb3JjZVdpbGxCZWdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRv
RWxlbWVudC5jcHAKaW5kZXggNDEzZTM0NjcyZWI2NzU2ZDg5YTBmZTRhZmQ2N2Y5ZWE2YzY4YmM1
Yy4uMzZjODk3N2IxNmI0NWYzYTg3ZWVkOTNjOGFlNGI0NmQ1NTY5NmI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoUHNldWRvRWxlbWVudCk7CiAKIGNvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVk
b0VsZW1lbnRUYWdOYW1lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVkbz4iLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVk
bz4iX3MsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmNwcAppbmRleCA3ZDlkNTliZTFjMTUyZjA5ODVmNWY1MThiYjlmY2NlNTZmODdi
YzlhLi44MGZmZDFlYzNmODIwZjE2NjcyYWIxOGI2NDI1MDQzYjliZjRiZjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgUmVmPEVsZW1l
bnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4
dE5vZGUpCiAgICAgYXV0byBzcGFuRWxlbWVudCA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKIAogICAgIHNwYW5FbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGNsYXNzQXR0ciwgQXBwbGVUYWJTcGFuQ2xhc3MpOwotICAgIHNwYW5FbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6cHJlIik7CisgICAgc3BhbkVsZW1l
bnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTpwcmUiX3MpOwogCiAgICAg
c3BhbkVsZW1lbnQtPmFwcGVuZENoaWxkKHRhYlRleHROb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IGI4MDMzMWIyOGYwN2NmNTQ2ZWUxMWM1YmEwZmMxYzNhOWRmYzk4OWUu
Ljk3NDc4OGEzYjNhYTgxM2VmMDFlMmQyMWJiMjc5MjJjMjBmYjdkY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTExNzgsNyArMTE3OCw3IEBAIHZvaWQgRWRpdG9yOjphcHBsaWVk
RWRpdGluZyhDb21wb3NpdGVFZGl0Q29tbWFuZCYgY29tbWFuZCkKIAogYm9vbCBFZGl0b3I6Ondp
bGxVbmFwcGx5RWRpdGluZyhjb25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlv
bikgY29uc3QKIHsKLSAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hC
ZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQo
KSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8i
X3MpOwogfQogCiB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBv
c2l0aW9uJiBjb21wb3NpdGlvbikKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgRWRpdG9yOjp1
bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uc3RhcnRpbmdTZWxl
Y3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwg
RnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkpOwotICAgIGRpc3Bh
dGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCks
IGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlVbmRvIik7
CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJs
ZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlz
dG9yeVVuZG8iX3MpOwogCiAgICAgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOwogCkBA
IC0xMjAzLDcgKzEyMDMsNyBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29t
bWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKIAogYm9vbCBFZGl0b3I6OndpbGxSZWFwcGx5
RWRpdGluZyhjb25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikgY29uc3QK
IHsKLSAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFy
dGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxl
RWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1
dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9z
aXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogfQog
CiB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBj
b21wb3NpdGlvbikKQEAgLTEyMTQsNyArMTIxNCw3IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRF
ZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uZW5kaW5nU2VsZWN0aW9uKCkpOwog
ICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0
aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpKTsKLSAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyIpOworICAgIGRpc3Bh
dGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCks
IGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlSZWRvIl9z
KTsKICAgICAKICAgICB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTE1NTAs
OCArMTU1MCw4IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUZvbnQoRnJvbU1lbnVPcktleUJpbmRpbmcg
ZnJvbU1lbnVPcktleUJpbmRpbmcpCiB2b2lkIEVkaXRvcjo6cXVvdGVGcmFnbWVudEZvclBhc3Rp
bmcoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpCiB7CiAgICAgYXV0byBibG9ja1F1b3RlID0g
SFRNTFF1b3RlRWxlbWVudDo6Y3JlYXRlKGJsb2NrcXVvdGVUYWcsIGRvY3VtZW50KCkpOwotICAg
IGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIs
IEF0b21TdHJpbmcoImNpdGUiKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIsIEF0b21TdHJpbmcoQXBwbGVQYXN0ZUFzUXVvdGF0
aW9uKSk7CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bih0eXBlQXR0ciwgImNpdGUiX3MpOworICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBsZVBhc3RlQXNRdW90YXRpb24pOwogCiAg
ICAgYXV0byBjaGlsZE5vZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCmluZGV4IGQ0YzUwNWM4YTY3MmIyZTA4Y2U4NTgz
MGRhNTllMDlmMDE0MTYxMWIuLjViNmYzNzA4OWNlZWQ1OTY2ZTI1MmNlNGI0MDQxMWVkNzA3MTAx
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaApAQCAtMzMsMTAg
KzMzLDEwIEBAIGNsYXNzIFRleHQ7CiAKICNkZWZpbmUgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUg
ICAiQXBwbGUtaW50ZXJjaGFuZ2UtbmV3bGluZSIKICNkZWZpbmUgQXBwbGVDb252ZXJ0ZWRTcGFj
ZSAgICAgICAiQXBwbGUtY29udmVydGVkLXNwYWNlIgotI2RlZmluZSBBcHBsZVBhc3RlQXNRdW90
YXRpb24gICAgICJBcHBsZS1wYXN0ZS1hcy1xdW90YXRpb24iCi0jZGVmaW5lIEFwcGxlU3R5bGVT
cGFuQ2xhc3MgICAgICAgIkFwcGxlLXN0eWxlLXNwYW4iCi0jZGVmaW5lIEFwcGxlVGFiU3BhbkNs
YXNzICAgICAgICAgIkFwcGxlLXRhYi1zcGFuIgotI2RlZmluZSBXZWJLaXRNU09MaXN0UXVpcmtz
U3R5bGUgICJXZWJLaXQtbXNvLWxpc3QtcXVpcmtzLXN0eWxlIgorI2RlZmluZSBBcHBsZVBhc3Rl
QXNRdW90YXRpb24gICAgICJBcHBsZS1wYXN0ZS1hcy1xdW90YXRpb24iX3MKKyNkZWZpbmUgQXBw
bGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUtc3R5bGUtc3BhbiJfcworI2RlZmluZSBBcHBs
ZVRhYlNwYW5DbGFzcyAgICAgICAgICJBcHBsZS10YWItc3BhbiJfcworI2RlZmluZSBXZWJLaXRN
U09MaXN0UXVpcmtzU3R5bGUgICJXZWJLaXQtbXNvLWxpc3QtcXVpcmtzLXN0eWxlIl9zCiAKIC8v
IENvbnRyb2xzIHdoZXRoZXIgYSBzcGVjaWFsIEJSIHdoaWNoIGlzIHJlbW92ZWQgdXBvbiBwYXN0
ZSBpbiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZCBuZWVkcyB0byBiZSBpbnNlcnRlZAogLy8gYW5k
IG1ha2luZyBzZXF1ZW5jZSBvZiBzcGFjZXMgbm90IGNvbGxhcHNpYmxlIGJ5IGluc2VydGluZyBu
b24tYnJlYWtpbmcgc3BhY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91
dGRlbnRDb21tYW5kLmNwcAppbmRleCAzYzQ2MTQzYTc4MWMzNmVjNzk0ZWY3ZTcxYjUyODI1MWI4
MTA5ZTA2Li4xN2E0ODcwOGUyYmY4OWU1MmJjZjdmMmNkODFlNjZhYjA3ZThmNjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgYm9vbCBpc0xpc3RPckluZGVudEJsb2NrcXVvdGUoY29uc3QgTm9k
ZSogbm9kZSkKIH0KIAogSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5k
KERvY3VtZW50JiBkb2N1bWVudCwgRUluZGVudFR5cGUgdHlwZU9mQWN0aW9uKQotICAgIDogQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kKGRvY3VtZW50LCBibG9ja3F1b3RlVGFnLCAibWFyZ2luOiAw
IDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiKQorICAgIDogQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kKGRvY3VtZW50LCBibG9ja3F1b3RlVGFnLCAibWFyZ2luOiAwIDAgMCA0
MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiX3MpCiAgICAgLCBtX3R5cGVPZkFjdGlv
bih0eXBlT2ZBY3Rpb24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KaW5kZXggNGEzMjZlNjY4ODA5NDBmYjUzNDg1ZjkzYTEzMzk5ZDAyYTZj
YTI2OC4uZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2YxZDZhYTAyODU5YjRkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTk1LDcgKzU5
NSw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiBjb250ZXh0UmFuZ2UsIE9wCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJlZjxIVE1MQW5jaG9yRWxlbWVudD4gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihj
b3JyZXNwb25kaW5nVVJMKTsKLSAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldERpcigibHRy
Iik7CisgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXREaXIoImx0ciJfcyk7CiAKICAgICAg
ICAgICAgIGlmIChzaG91bGRVc2VMaWdodExpbmtzKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4
IDJkOGY4YjMzNTkzMGQwN2RkMzMyNmI4MTA2NWYyZDRmZDgzNWFjYWUuLjdlNTk1MmI3YTk2Mjg3
MDcwZTgwMzc5OGQ1OWQ4ZmMyZjdiMzliOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
QEAgLTExNzQsNyArMTE3NCw3IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTCiAKICAgICBhdXRv
IGNyZWF0ZUhUTUxCUkVsZW1lbnQgPSBbJmRvY3VtZW50XSgpIHsKICAgICAgICAgYXV0byBlbGVt
ZW50ID0gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgZWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIsIEFwcGxlSW50ZXJj
aGFuZ2VOZXdsaW5lKTsKKyAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihjbGFzc0F0dHIsIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUpKTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggNTA0OTVjMTdiOWNhOTc5MjAz
ZWY5ODRiZjI4MTYzNGU1MjBmYWU0Yy4uYThjMDAzMjI5ZTQzMThiODc3NWU3MjY1OGIxMmFlYTA2
MzMwMDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgc3JjKQogewogICAgIGF1dG8gZWxlbWVu
dCA9IGNyZWF0ZShhdWRpb1RhZywgZG9jdW1lbnQsIGZhbHNlKTsKLSAgICBlbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCAiYXV0byIpOworICAg
IGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIs
ICJhdXRvIl9zKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHNyY0F0dHIsIHNyYyk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggYmY1NDMyYWYzMTZlNWE3NGFmMmFk
MjczZjExNTI2ZTRkYjQ1YjJjYi4uNjhiYzIzOGViZDkxYTQxN2JjYmQ4Yzk1ODY1YzczNTU5YmZk
NWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAt
NDcsNyArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgc3VtbWFyeVNsb3ROYW1lKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1bW1hcnlTbG90KCJzdW1tYXJ5U2xvdCIp
OworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
c3VtbWFyeVNsb3QoInN1bW1hcnlTbG90Il9zKTsKICAgICByZXR1cm4gc3VtbWFyeVNsb3Q7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMWIzNmQ1YjM2ZjAwMWFkMDdl
OWU2YWEwMjg2ODE2MjcyMjQ2NGQzMC4uNmIxZDhkM2MxZDEwM2E1ZjAyYjgwMzIwM2ZlZmQ4MGIw
NmNkMGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTY5Niw3ICs2OTYs
NyBAQCBib29sIEhUTUxFbGVtZW50Ojp0cmFuc2xhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVt
ZW50OjpzZXRUcmFuc2xhdGUoYm9vbCBlbmFibGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIiA6ICJubyIpOwor
ICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHJhbnNsYXRlQXR0ciwgZW5h
YmxlID8gInllcyJfcyA6ICJubyJfcyk7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVy
SXNFdmVyTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDIwOWI2ODIzOTYzOTlmZTgwNjliOTRjODIxOWVlNDM4NjFmMDFhNzIuLmJhYjUxMTFkMjZl
YTkwOWE3ZjVjMGQ2MzdiNzUyODk3ZGNkMjVlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMjY3MCw3ICsyNjcwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpCiB7CiAgICAgaWYgKCFtX3Bs
YXllcikKICAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBoYXNFdmVu
dExpc3RlbmVycygid2Via2l0bmVlZGtleSIpIHx8IChkb2N1bWVudCgpLnNldHRpbmdzKCkuZW5j
cnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2Vu
RW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgYm9vbCBzaG91bGRDb250aW51
ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpIHx8
IChkb2N1bWVudCgpLnNldHRpbmdzKCkuZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRv
Y3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmso
KSk7CiAgICAgbV9wbGF5ZXItPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxk
Q29udGludWUpOwogfQogI2VuZGlmCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCiAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFB
UElFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGFzRXZlbnRMaXN0ZW5l
cnMoIndlYmtpdG5lZWRrZXkiKQorICAgIGlmICghaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1l
cygpLndlYmtpdG5lZWRrZXlFdmVudCkKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
ICAgICAvLyBPbmx5IGZpcmUgYW4gZXJyb3IgaWYgRU5DUllQVEVEX01FRElBIGlzIG5vdCBlbmFi
bGVkLCB0byBnaXZlIGNsaWVudHMgb2YgdGhlCiAgICAgICAgIC8vICJlbmNyeXB0ZWQiIGV2ZW50
IGEgY2hhbmNlIHRvIGhhbmRsZSBpdCB3aXRob3V0IHJlc3VsdGluZyBpbiBhIHN5bnRoZXRpYyBl
cnJvci4KQEAgLTQ3MDUsNyArNDcwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bGF5b3V0
U2l6ZUNoYW5nZWQoKQogewogICAgIGF1dG8gdGFzayA9IFt0aGlzXSB7CiAgICAgICAgIGlmIChh
dXRvIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkpCi0gICAgICAgICAgICByb290LT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoInJlc2l6ZSIsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfTsKICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgV1RGTW92
ZSh0YXNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4
IDhjZWI4OGEzYjEwN2JkZjY0OWE1ZjIyYTAwYTgyZTk0MjRjZTJlYTcuLmJkNDRlMmQwMjhhNzAw
ODg2MzZmZjI2NjA2Mzc3ZWJlZGRmOTc3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgc3RhdGljIHZvaWQgc2V0VmFsdWVD
bGFzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb24g
Z2EKIHsKICAgICBzd2l0Y2ggKGdhdWdlUmVnaW9uKSB7CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVt
ZW50OjpHYXVnZVJlZ2lvbk9wdGltdW06Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6Y2xhc3NBdHRyLCAib3B0aW11bSIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgIm9wdGltdW0iX3MpOwogICAgICAgICBlbGVtZW50
LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyT3B0aW11bVZhbHVlKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvblN1
Ym9wdGltYWw6Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAic3Vib3B0aW11bSIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgInN1Ym9wdGltdW0iX3MpOwogICAgICAgICBlbGVtZW50LnNldFBzZXVk
byhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyU3Vib3B0aW11bVZhbHVlKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbkV2ZW5MZXNz
R29vZDoKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIs
ICJldmVuLWxlc3MtZ29vZCIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgImV2ZW4tbGVzcy1nb29kIl9zKTsKICAgICAgICAgZWxlbWVudC5zZXRQ
c2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTIzNCwxNyArMjM0LDE3IEBAIHZvaWQg
SFRNTE1ldGVyRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JiBy
b290KQogCiAgICAgLy8gUHNldWRvcyBhcmUgc2V0IHRvIGFsbG93IGF1dGhvciBzdHlsaW5nLgog
ICAgIGF1dG8gaW5uZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAg
IGlubmVyLT5zZXRJZEF0dHJpYnV0ZSgiaW5uZXIiKTsKKyAgICBpbm5lci0+c2V0SWRBdHRyaWJ1
dGUoImlubmVyIl9zKTsKICAgICBpbm5lci0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJJbm5lckVsZW1lbnQoKSk7CiAgICAgcm9vdC5hcHBlbmRDaGlsZChpbm5lcik7CiAK
ICAgICBhdXRvIGJhciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAg
YmFyLT5zZXRJZEF0dHJpYnV0ZSgiYmFyIik7CisgICAgYmFyLT5zZXRJZEF0dHJpYnV0ZSgiYmFy
Il9zKTsKICAgICBiYXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyQmFy
KCkpOwogICAgIGlubmVyLT5hcHBlbmRDaGlsZChiYXIpOwogCiAgICAgbV92YWx1ZSA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgbV92YWx1ZS0+c2V0SWRBdHRyaWJ1
dGUoInZhbHVlIik7CisgICAgbV92YWx1ZS0+c2V0SWRBdHRyaWJ1dGUoInZhbHVlIl9zKTsKICAg
ICBiYXItPmFwcGVuZENoaWxkKCptX3ZhbHVlKTsKIAogICAgIGRpZEVsZW1lbnRTdGF0ZUNoYW5n
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggODA0MWVhNDJjM2Jh
Nzk1NTc1ZjNhMDJiNWUyNjM5YjU3ZWE0NDA0NS4uMzk2ZjlkYzk2ODgxMDM2MTk2NGFkMjhlZTI4
ZjliNTBiNWRjMThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0y
MzAsMTYgKzIzMCwxNiBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0
dXJlKCkKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoaGVhZCk7CiAKICAgICBhdXRvIGJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgYm9keS0+c2V0QXR0cmli
dXRlKHN0eWxlQXR0ciwgIm1hcmdpbjogMHB4Iik7CisgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0
eWxlQXR0ciwgIm1hcmdpbjogMHB4Il9zKTsKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZNSU1FVHlwZShkb2N1bWVudCgpLmxvYWRlcigpLT5yZXNwb25zZU1JTUVUeXBlKCkpKQogICAg
ICAgICBib2R5LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAid2hpdGUiX3MpOwogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5KTsKICAg
ICAKICAgICBhdXRvIGltYWdlRWxlbWVudCA9IEltYWdlRG9jdW1lbnRFbGVtZW50OjpjcmVhdGUo
KnRoaXMpOwogICAgIGlmIChtX3Nob3VsZFNocmlua0ltYWdlKQotICAgICAgICBpbWFnZUVsZW1l
bnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IGRp
c3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvOyBwYWRkaW5nOmVudihzYWZlLWFyZWEtaW5zZXQtdG9w
KSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkg
ZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRB
dHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBkaXNwbGF5OmJs
b2NrOyBtYXJnaW46YXV0bzsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNh
ZmUtYXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZl
LWFyZWEtaW5zZXQtbGVmdCk7Il9zKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlRWxlbWVudC0+
c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgcGFkZGlu
ZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkgZW52
KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7Iik7Cisg
ICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNl
ci1zZWxlY3Q6bm9uZTsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNhZmUt
YXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZlLWFy
ZWEtaW5zZXQtbGVmdCk7Il9zKTsKICAgICBpbWFnZUVsZW1lbnQtPnNldExvYWRNYW51YWxseSh0
cnVlKTsKICAgICBpbWFnZUVsZW1lbnQtPnNldFNyYyh1cmwoKS5zdHJpbmcoKSk7CiAgICAgaW1h
Z2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5zZXRSZXNwb25zZShsb2FkZXIoKS0+cmVzcG9uc2Uo
KSk7CkBAIC0yNTMsOCArMjUzLDggQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVu
dFN0cnVjdHVyZSgpCiAjZWxzZQogICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VFdmVudExp
c3RlbmVyOjpjcmVhdGUoKnRoaXMpOwogICAgICAgICBpZiAoUmVmUHRyPERPTVdpbmRvdz4gd2lu
ZG93ID0gdGhpcy0+ZG9tV2luZG93KCkpCi0gICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlz
dGVuZXIoInJlc2l6ZSIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwotICAgICAgICBpbWFn
ZUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV1RGTW92ZShsaXN0ZW5lciksIGZh
bHNlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
cmVzaXplRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICBpbWFnZUVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIFdURk1vdmUo
bGlzdGVuZXIpLCBmYWxzZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1
bWVudC5jcHAKaW5kZXggNGUxOTQ2MTZlY2UyNTNjOTQxMjRjZmJlNzI0NThhYmJiZDg1M2IwZC4u
NTlkZmIwMjEyODY1MDBjNTVlN2IyYmQ1OTVjZDg0MzdjZDE2OGU0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9QREZEb2N1bWVudC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFBERkRvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgLy8gRGVzY3JpcHRpb24gb2YgcGFyYW1ldGVy
czoKICAgICAvLyAtIGAjcGFnZW1vZGU9bm9uZWAgcHJldmVudHMgdGhlIHNpZGViYXIgZnJvbSBz
aG93aW5nIG9uIGxvYWQuCiAgICAgLy8gLSBFbXB0eSBgP2ZpbGU9YCBwYXJhbWV0ZXIgcHJldmVu
dHMgZGVmYXVsdCBwZGYgZnJvbSBsb2FkaW5nLgotICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtp
dC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0jcGFnZW1vZGU9bm9u
ZSI7CisgICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL3dl
Yi92aWV3ZXIuaHRtbD9maWxlPSNwYWdlbW9kZT1ub25lIl9zOwogICAgIGF1dG8gcm9vdEVsZW1l
bnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9v
dEVsZW1lbnQpOwogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CkBAIC0xNjEs
NyArMTYxLDcgQEAgdm9pZCBQREZEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQog
ICAgIG1faWZyYW1lLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJ3aWR0aDog
MTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7IGRpc3BsYXk6IGJsb2NrOyIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBtX2xpc3RlbmVyID0gUERGRG9jdW1l
bnRFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIG1faWZyYW1lLT5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgKm1fbGlzdGVuZXIsIGZhbHNlKTsKKyAgICBtX2lmcmFtZS0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCAqbV9saXN0ZW5lciwgZmFsc2UpOwog
CiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoKm1faWZyYW1lKTsKIH0KQEAgLTIyMyw5ICsyMjMsOSBA
QCB2b2lkIFBERkRvY3VtZW50OjppbmplY3RTdHlsZUFuZENvbnRlbnRTY3JpcHQoKQogCiAgICAg
QVNTRVJUKGNvbnRlbnREb2N1bWVudC0+Ym9keSgpKTsKICAgICBhdXRvIHNjcmlwdCA9IEhUTUxT
Y3JpcHRFbGVtZW50OjpjcmVhdGUoc2NyaXB0VGFnLCAqY29udGVudERvY3VtZW50LCBmYWxzZSk7
Ci0gICAgc2NyaXB0LT5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgbV9saXN0ZW5lci5yZWxlYXNl
Tm9uTnVsbCgpLCBmYWxzZSk7CisgICAgc2NyaXB0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5sb2FkRXZlbnQsIG1fbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgZmFsc2UpOwogCi0g
ICAgc2NyaXB0LT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9w
ZGZqcy9leHRyYXMvY29udGVudC1zY3JpcHQuanMiKTsKKyAgICBzY3JpcHQtPnNldEF0dHJpYnV0
ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNj
cmlwdC5qcyJfcyk7CiAgICAgY29udGVudERvY3VtZW50LT5ib2R5KCktPmFwcGVuZENoaWxkKHNj
cmlwdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggZTAxZGYzOTI5MzZlODIwOWNl
YmQ0ZDY0ODRiZmZlMjhlMDQyYjRlYS4uMDAzYTkwMWUwNDNlMzdjOGUzYzA2NjhjNjMzNzI0MGY2
Y2RlNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UpOwogc3Rh
dGljIGNvbnN0ZXhwciBJbWFnZVNtb290aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxp
dHkgPSBJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKIAogY29uc3QgaW50IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OkRlZmF1bHRGb250U2l6ZSA9IDEwOwotY29uc3QgY2hhciogY29u
c3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6RGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fu
cy1zZXJpZiI7Citjb25zdCBBU0NJSUxpdGVyYWwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6RGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fucy1zZXJpZiJfczsKIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsIERlZmF1bHRGb250ID0gIjEwcHggc2Fucy1zZXJpZiJfczsKIAogc3RhdGlj
IENhbnZhc0xpbmVDYXAgdG9DYW52YXNMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuaAppbmRleCA0YTdhNDNhN2NmZmU4MjZhZjg0YjcwMTMyMDJmMmI5M2U0ODZkYjRhLi41
YmY1YjUzMzhhY2IyMDdjYjNiMTQ5MzA2ZWU4NDEwNzgwNjhmZWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oCkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGNvbnN0IGludCBEZWZhdWx0Rm9udFNpemU7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IERlZmF1bHRGb250RmFtaWx5OworICAgIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgRGVmYXVs
dEZvbnRGYW1pbHk7CiAKICAgICBjb25zdCBTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlU3RhY2subGFzdCgpOyB9CiAgICAgdm9pZCByZWFsaXplU2F2ZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGExZjE2N2Ni
MDgzYzk5ODQzNjE4MzQxMTgwMjlmMjg1ZTQxYzAwMDUuLmVkY2M2YWZkNmM2ZjAzOGI4NGM0ZTcx
ZjU3OGE2ODg4NDI3YzcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gY3Jl
YXRlCiAgICAgYWRkTmFtZXNXaXRoUHJlZml4KG1hcCwgeG1sQXRvbSgpLCBYTUxOYW1lczo6Z2V0
WE1MQXR0cnMoKSwgWE1MTmFtZXM6OlhNTEF0dHJzQ291bnQpOwogCiAgICAgbWFwLmFkZCh4bWxu
c0F0b20oKSwgWE1MTlNOYW1lczo6eG1sbnNBdHRyKTsKLSAgICBtYXAuYWRkKCJ4bWxuczp4bGlu
ayIsIFF1YWxpZmllZE5hbWUoeG1sbnNBdG9tKCksIHhsaW5rTmFtZSwgWE1MTlNOYW1lczo6eG1s
bnNOYW1lc3BhY2VVUkkpKTsKKyAgICBtYXAuYWRkKCJ4bWxuczp4bGluayJfcywgUXVhbGlmaWVk
TmFtZSh4bWxuc0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVS
SSkpOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDQ3MDZmMjZlODQ0MDllZTgxM2NkMTNi
YzVmNGUwYWNjZjY3NGE4NjcuLjc4ZTExZmMyYzEwOGQ3N2ZmOGMyYTkyYWE5MjVlZmM1MmU0Mzkx
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFy
c2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0
RmFrZVByZUVsZW1lbnQoKQogICAgIC8vIFdlIGNyZWF0ZSBhIGZha2UgdG9rZW4gYW5kIGdpdmUg
aXQgdG8gdGhlIHRyZWUgYnVpbGRlciByYXRoZXIgdGhhbgogICAgIC8vIHNlbmRpbmcgZmFrZSBi
eXRlcyB0aHJvdWdoIHRoZSBmcm9udC1lbmQgb2YgdGhlIHBhcnNlciB0byBhdm9pZAogICAgIC8v
IGRpc3RydWJpbmcgdGhlIGxpbmUvY29sdW1uIG51bWJlciBjYWxjdWxhdGlvbnMuCi0gICAgQXR0
cmlidXRlIGF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsiKTsKKyAgICBBdHRyaWJ1dGUgYXR0cmlidXRlKHN0eWxlQXR0ciwg
IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyJfcyk7CiAgICAg
QXRvbUhUTUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRhZy0+bG9jYWxO
YW1lKCksIHsgV1RGTW92ZShhdHRyaWJ1dGUpIH0pOwogICAgIHRyZWVCdWlsZGVyKCkuY29uc3Ry
dWN0VHJlZShXVEZNb3ZlKGZha2VQcmUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCmluZGV4IDg0OWNkNTk0YTdiOWEzOThiMGMzMWZhOTBmYzY3ZDdmNmQ2NzZhMmYu
LjEwZjRkMWRhZTBhOTkwMjViNWQ0MGYyMzhkZDU1ZWE2YzM2OWQ3MGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTg4LDEzICs4OCwxMyBAQCBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgZm9yY2VkS2V5d29yZCgpCiAKIFRleHRUcmFjayYgVGV4dFRyYWNrOjpj
YXB0aW9uTWVudU9mZkl0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIG9mZiA9IFRleHRU
cmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBpdGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5
QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOworICAgIHN0YXRpYyBUZXh0VHJhY2smIG9m
ZiA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBpdGVtIl9zLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIG9m
ZjsKIH0KIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgp
CiB7Ci0gICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGljID0gVGV4dFRyYWNrOjpjcmVhdGUo
bnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCks
IGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGlj
ID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iX3MsIGVt
cHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1
cm4gYXV0b21hdGljOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKaW5kZXggYmNmOGUxNzJhNjczMjBmNjY4ODEyMDc0NzlkZjdhODBhYmFjMTdlZS4uNzdj
NmExNjBiYTk1YmQ1YTI4NmM1ZGE3NDkzOTgzNWU1MWI5YWQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtNjcsMTMgKzY3LDEzIEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tDdWVCb3gpOwogCiBzdGF0aWMgY29uc3QgUXVh
bGlmaWVkTmFtZSYgY3VlQXR0cmlidXROYW1lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlVGFnKG51bGxBdG9tKCksICJjdWUiLCBudWxsQXRvbSgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlVGFnKG51bGxBdG9t
KCksICJjdWUiX3MsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBjdWVUYWc7CiB9CiAKIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlQmFja2dyb3VuZFRhZyhu
dWxsQXRvbSgpLCAiY3VlYmFja2dyb3VuZCIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVCYWNrZ3JvdW5kVGFnKG51bGxBdG9tKCksICJj
dWViYWNrZ3JvdW5kIl9zLCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gY3VlQmFja2dyb3VuZFRh
ZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5k
ZXggOTM2ZDI3YjNiMjczN2MwMDc2MTkzOTUyMjcxZTY4N2NiNWM0NjY1NS4uMThiMDZmMjhkYWM1
MDRhM2NlYjI1YWE5NzhhZjI4OTYwMjVkYzFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYlZUVEVsZW1lbnQpOwogCiBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbm9kZVR5cGVUb1RhZ05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20oKSwgImMiLCBu
dWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdlRh
ZyhudWxsQXRvbSgpLCAidiIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBsYW5nVGFnKG51bGxBdG9tKCksICJsYW5nIiwgbnVsbEF0b20oKSk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWcobnVsbEF0b20o
KSwgImIiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gdVRhZyhudWxsQXRvbSgpLCAidSIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBpVGFnKG51bGxBdG9tKCksICJpIiwgbnVsbEF0b20o
KSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHJ1YnlUYWcobnVs
bEF0b20oKSwgInJ1YnkiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gcnRUYWcobnVsbEF0b20oKSwgInJ0IiwgbnVsbEF0b20oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20oKSwgImMi
X3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1l
PiB2VGFnKG51bGxBdG9tKCksICJ2Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbGFuZ1RhZyhudWxsQXRvbSgpLCAibGFuZyJfcywgbnVs
bEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWco
bnVsbEF0b20oKSwgImIiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tKCksICJ1Il9zLCBudWxsQXRvbSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRhZyhudWxsQXRvbSgpLCAi
aSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IHJ1YnlUYWcobnVsbEF0b20oKSwgInJ1YnkiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRvbSgpLCAicnQiX3Ms
IG51bGxBdG9tKCkpOwogICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdlYlZUVE5v
ZGVUeXBlQ2xhc3M6CiAgICAgICAgIHJldHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCBkZWNiZTE3YWJiZjFkOWE0M2U0ODBkYzc4Y2Q3MjM4
NWViNjA5NzZkLi4xYzVjODVlMzJiMjg5NDVlNmUyZjAxMThjNzFhY2MyZjRjZDVlMjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtNjMsMTMgKzYzLDEz
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0dHJp
YnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmll
ZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAidm9pY2UiLCBudWxsQXRvbSgpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRv
bSgpLCAidm9pY2UiX3MsIG51bGxBdG9tKCkpOwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwog
ICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFuZ0F0dHJpYnV0
ZU5hbWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAibGFuZyIsIG51bGxBdG9tKCkpOworICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tKCks
ICJsYW5nIl9zLCBudWxsQXRvbSgpKTsKICAgICAgICAgcmV0dXJuIHZvaWNlQXR0cjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNmFhNjEyNmRkN2NhYzY4MDExN2Iy
NzdiNDRhNmMxODZlYzM3MDUzOC4uZmExODQ0YTZmZjFmZTVhYTUyOGFiMjU1Y2M4MWNjNDI2ZWVi
OWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBF
eGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6Q29tcHV0ZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZh
bnRUZXh0ID0gInRleHQiX3M7CiAKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZXMg
PSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygiYWxsIikpIHsKKyAgICAgICAgICAgICAgICBp
ZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiX3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpdmVS
ZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2YW50QWRkaXRpb25zKTsKICAgICAgICAgICAg
ICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChhcmlhUmVsZXZhbnRSZW1vdmFscyk7
CiAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2
YW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheUxhYmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5TGFiZWwuY3BwCmluZGV4IDczYWY4MzZlZjc0NmM2YmI4MDMzMjg3NDhjOGZlY2ViZGE2NzI1
ZmQuLmY2MTE0NzFhODVlM2ZlNjkzZGQ2ZjNhY2E2M2UyMDI0ODI2NTc4NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIEluc3BlY3Rvck92ZXJsYXlMYWJlbDo6SW5zcGVjdG9yT3ZlcmxheUxhYmVs
KGNvbnN0IFN0cmluZyYgdGV4dCwgRmxvYXRQb2ludCBsb2NhCiBzdGF0aWMgRm9udENhc2NhZGUg
c3lzdGVtRm9udCgpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVzKHsgInN5c3RlbS11aSIgfSk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVzKHsgInN5c3RlbS11aSJfcyB9KTsKICAgICBm
b250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKICAgICBm
b250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDE3YTI5N2I1YWIzNDRj
NmIyMTgwZGQwZmE5YTk0NDJmZGEzM2UzOTcuLjI2ZTE4ZWMwNGFhNmY3ZGFmM2M3YjQzM2E5NmIy
NjFiYjkwMjQ5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKQEAgLTE1OTMsNyArMTU5Myw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3Rv
clBhCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7CiAgICAgbV9pbnNwZWN0b3JT
dHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxp
bmVTdHlsZSgpLCB0aGlzKTsKLSAgICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+Z2V0QXR0cmli
dXRlKCJzdHlsZSIpLnN0cmluZygpOworICAgIG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpLnN0cmluZygpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0ZSgp
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QKIAogY29uc3QgU3RyaW5n
JiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1lbnRTdHlsZVRleHQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJp
bmcoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIpLnN0cmluZygpOwogfQogCiBSZWY8Q1NTUnVsZVNvdXJjZURhdGE+IEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6cnVsZVNvdXJjZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCBkMzg5ZWMwN2FlODdiYzk1YjU2ODA5ZThkYjgyNTkwODhlMDUyYTA2Li4wNmM0NzIzZjU3
MDA3MDUxZWM2MTkwOWFjNzE5ZGYzYjhjYjJkY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjIyOSw3ICsy
MjI5LDcgQEAgUmVmPFByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2MKICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3BhY2VTcGxpdFN0cmluZyYgdmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZh
bnRBdHRyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAvLyBAYXJpYS1yZWxldmFu
dD0iYWxsIiBpcyBleHBvc2VkIGFzIFsiYWRkaXRpb25zIiwicmVtb3ZhbHMiLCJ0ZXh0Il0sIGlu
IG9yZGVyLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9yZGVyIGlzIGNvbnRyb2xsZWQg
aW4gV2ViQ29yZSBhbmQgZXhwZWN0ZWQgaW4gV2ViSW5zcGVjdG9yVUkuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCIpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCJfcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpdmVSZWdpb25SZWxldmFudC0+YWRkSXRlbShhcmlhUmVsZXZhbnRBZGRpdGlvbnMpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5hZGRJdGVtKGFyaWFSZWxl
dmFudFJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFu
dC0+YWRkSXRlbShhcmlhUmVsZXZhbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcAppbmRleCA5ZjE3YzEyOGEzMTgxNmE2YTkzOThiNWQyYjE0NTY4NTRjNWQ5YTUxLi4zNmZl
YmJlZGNlMGRlMTg5MWFlNGE5MmQzOTQyOTc5MjAzZWExZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQ
cmVsb2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBM
aW4KICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcGFyYW1zLnJlZmVycmVyUG9saWN5Owog
ICAgIGF1dG8gbGlua1JlcXVlc3QgPSBjcmVhdGVQb3RlbnRpYWxBY2Nlc3NDb250cm9sUmVxdWVz
dCh1cmwsIFdURk1vdmUob3B0aW9ucyksIGRvY3VtZW50LCBwYXJhbXMuY3Jvc3NPcmlnaW4pOwog
ICAgIGxpbmtSZXF1ZXN0LnNldFByaW9yaXR5KERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eTo6
Zm9yUmVzb3VyY2VUeXBlKHR5cGUudmFsdWUoKSkpOwotICAgIGxpbmtSZXF1ZXN0LnNldEluaXRp
YXRvcigibGluayIpOworICAgIGxpbmtSZXF1ZXN0LnNldEluaXRpYXRvcigibGluayJfcyk7CiAg
ICAgbGlua1JlcXVlc3Quc2V0SWdub3JlRm9yUmVxdWVzdENvdW50KHRydWUpOwogICAgIGxpbmtS
ZXF1ZXN0LnNldElzTGlua1ByZWxvYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IDY1YjI2Y2M5YmQ1NzVlYjFh
MDE1ZjQ1Y2M1ZGU2NWNjZDU1MzUzN2IuLjUxMDIyYzY3NWQyNGYwYmI4YTUzYjE5NWZlODhiMWFm
MDNkMTM3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudC5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIE1hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQ6OmlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYgbm9kZSkKICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnBUYWcpCiAgICAgICAgIHx8IGh0bWxF
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwcmVUYWcpCiAgICAgICAgIHx8IGh0bWxFbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWN0aW9uVGFnKQotICAgICAgICB8fCAoaHRtbEVs
ZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnN0eWxlVGFnKSAmJiBodG1sRWxlbWVudC5oYXNB
dHRyaWJ1dGUoInNjb3BlZCIpKQorICAgICAgICB8fCAoaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OnN0eWxlVGFnKSAmJiBodG1sRWxlbWVudC5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVz
OjpzY29wZWRBdHRyKSkKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnRhYmxlVGFnKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dWxUYWcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApp
bmRleCAyNTljNzIyNTM2NzFiNWEwYWUwODViYzA3MTJhNGIxNWViMjc5NWQ2Li5lOTRiZGZmOGE5
MzM4NTRkN2Q5ZmRiMGJmYzZhMTg4MWFkNTkxNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTm9uRmFzdFNjcm9s
bGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIEdy
YXBoaWNzCiAgICAgRmxvYXRSZWN0IGxlZ2VuZFJlY3QgPSB7IGJvdW5kcy5tYXhYKCkgLSAzMC4w
ZiwgMTAsIDIwLCAyMCB9OwogICAgIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIp
OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFNlbGVjdGlvblZhbHVlKDUwMCkpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3U2V0dGluZ3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ICAgIH0KIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldFNwZWNpZmllZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVl
KDUwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IGRkYmE4MzVlZjg5MjAzYWFlYWRhMWQz
MDNiMjM2OTQ1OGQ0NzI4MTIuLjVmYTk0MmM5OGRmMGI1MzY5YmY2N2NkMzcwZTFjNjFiZWYzMGNh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIFF1aXJr
czo6c2hvdWxkVG9vbHRpcFByZXZlbnRGcm9tUHJvY2VlZGluZ1dpdGhDbGljayhjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
X2RvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpLmhvc3QoKSwgImNvdmlkLmNkYy5nb3YiKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYg
ZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInRvb2x0aXAiKTsKKyAgICByZXR1cm4gZWxl
bWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ0b29sdGlw
Il9zKTsKIH0KIAogLy8gRklYTUU6IFJlbW92ZSBhZnRlciB0aGUgc2l0ZSBpcyBmaXhlZCwgPHJk
YXI6Ly9wcm9ibGVtLzc1NzkyOTEzPgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgUXVpcmtzOjpz
aG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzKEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNv
bnN0CiAgICAgY2FzZSBTaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzOjpEZXBlbmRp
bmdPblRhcmdldEZvcl9teWJpbmRlcl9vcmc6CiAgICAgICAgIGlmIChpczxOb2RlPih0YXJnZXQp
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIG5vZGUgPSBkb3duY2FzdDxOb2RlPih0YXJnZXQp
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzPEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5jbGFzc0xpc3Qo
KS5jb250YWlucygibG0tRG9ja1BhbmVsLXRhYkJhciIpKQorICAgICAgICAgICAgICAgIGlmIChp
czxFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuY2xhc3NMaXN0KCku
Y29udGFpbnMoImxtLURvY2tQYW5lbC10YWJCYXIiX3MpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDc2LDcgKzQ3Niw3IEBA
IGJvb2wgUXVpcmtzOjpzaG91bGREaXNwYXRjaGVkU2ltdWxhdGVkTW91c2VFdmVudHNBc3N1bWVE
ZWZhdWx0UHJldmVudGVkKEV2ZW50VGFyCiAgICAgfQogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCkuaG9zdCgpLCAi
c291bmRjbG91ZC5jb20iKSAmJiBpczxFbGVtZW50Pih0YXJnZXQpKQotICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RWxlbWVudD4oKnRhcmdldCkuY2xhc3NMaXN0KCkuY29udGFpbnMoInNjZW5lTGF5
ZXIiKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KCp0YXJnZXQpLmNsYXNzTGlz
dCgpLmNvbnRhaW5zKCJzY2VuZUxheWVyIl9zKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAg
LTQ4OCw3ICs0ODgsNyBAQCBzdGQ6Om9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IFF1aXJr
czo6c2ltdWxhdGVkTW91c2VFdmVudFR5cGVGb3JUYXJnZXQoRXZlbgogCiAgICAgLy8gT24gR29v
Z2xlIE1hcHMsIHdlIHdhbnQgdG8gbGltaXQgc2ltdWxhdGVkIG1vdXNlIGV2ZW50cyB0byBkcmFn
Z2luZyB0aGUgbGl0dGxlIG1hbiB0aGF0IGFsbG93cyBlbnRlcmluZyBpbnRvIFN0cmVldCBWaWV3
LgogICAgIGlmIChpc0dvb2dsZU1hcHMoKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4odGFy
Z2V0KSAmJiBkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpLT5nZXRBdHRyaWJ1dGUoImNsYXNzIikg
PT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21hbi1pY29uIikKKyAgICAgICAgaWYgKGlzPEVs
ZW1lbnQ+KHRhcmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6Y2xhc3NBdHRyKSA9PSAid2lkZ2V0LWV4cGFuZC1idXR0b24tcGVnbWFuLWlj
b24iKQogICAgICAgICAgICAgcmV0dXJuIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllczsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC01MDEsNyArNTAxLDcgQEAgc3RkOjpvcHRpb25hbDxF
dmVudDo6SXNDYW5jZWxhYmxlPiBRdWlya3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFy
Z2V0KEV2ZW4KICAgICAgICAgLy8gV2Ugd2FudCB0byBsaW1pdCBzaW11bGF0ZWQgbW91c2UgZXZl
bnRzIHRvIGVsZW1lbnRzIHVuZGVyIDxkaXYgaWQ9InBhbmVDb250YWluZXIiPiB0byBhbGxvdyBm
b3IgY29sdW1uIHJlLW9yZGVyaW5nIGFuZCBtdWx0aXBsZSBjZWxsIHNlbGVjdGlvbi4KICAgICAg
ICAgaWYgKGlzPE5vZGU+KHRhcmdldCkpIHsKICAgICAgICAgICAgIGF1dG8qIG5vZGUgPSBkb3du
Y2FzdDxOb2RlPih0YXJnZXQpOwotICAgICAgICAgICAgaWYgKGF1dG8qIHBhbmVDb250YWluZXIg
PSBub2RlLT50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChBdG9tU3RyaW5nKCJwYW5lQ29udGFp
bmVyIikpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcGFuZUNvbnRhaW5lciA9IG5vZGUtPnRy
ZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKEF0b21TdHJpbmcoInBhbmVDb250YWluZXIiX3MpKSkg
ewogICAgICAgICAgICAgICAgIGlmIChwYW5lQ29udGFpbmVyLT5jb250YWlucyhub2RlKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllczsKICAgICAg
ICAgICAgIH0KQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIFF1aXJrczo6c2hvdWxkTWFrZVRvdWNo
RXZlbnROb25DYW5jZWxhYmxlRm9yVGFyZ2V0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNvbgogICAg
ICAgICBpZiAoaXM8RWxlbWVudD4odGFyZ2V0KSkgewogICAgICAgICAgICAgdW5zaWduZWQgZGVw
dGggPSAzOwogICAgICAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVu
dD4odGFyZ2V0KTsgZWxlbWVudCAmJiBkZXB0aDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSwgLS1kZXB0aCkgewotICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5sb2NhbE5h
bWUoKSA9PSAicGFwZXItaXRlbSIgJiYgZWxlbWVudC0+Y2xhc3NMaXN0KCkuY29udGFpbnMoInl0
LWRyb3Bkb3duLW1lbnUiKSkKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+bG9jYWxOYW1l
KCkgPT0gInBhcGVyLWl0ZW0iICYmIGVsZW1lbnQtPmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJ5dC1k
cm9wZG93bi1tZW51Il9zKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU0OCw3ICs1NDgsNyBAQCBib29sIFF1aXJrczo6c2hv
dWxkUHJldmVudERpc3BhdGNoT2ZUb3VjaEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHRvdWNoRXZl
bnRUeXBlLAogCiAgICAgaWYgKGlzPEVsZW1lbnQ+KHRhcmdldCkgJiYgdG91Y2hFdmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCksICJzaXRlcy5nb29n
bGUuY29tIikpIHsKICAgICAgICAgYXV0byYgY2xhc3NMaXN0ID0gZG93bmNhc3Q8RWxlbWVudD4o
KnRhcmdldCkuY2xhc3NMaXN0KCk7Ci0gICAgICAgIHJldHVybiBjbGFzc0xpc3QuY29udGFpbnMo
IkRQdndZYyIpICYmIGNsYXNzTGlzdC5jb250YWlucygic204c0NmIik7CisgICAgICAgIHJldHVy
biBjbGFzc0xpc3QuY29udGFpbnMoIkRQdndZYyJfcykgJiYgY2xhc3NMaXN0LmNvbnRhaW5zKCJz
bThzQ2YiX3MpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMSw4ICs2MzEsOCBA
QCBib29sIFF1aXJrczo6bmVlZHNJbnB1dE1vZGVOb25lSW1wbGljaXRseShjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCkgY29uc3QKICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW5wdXRUYWcpKSB7CiAgICAgICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobV9kb2N1bWVudC0+dXJsKCkuaG9zdCgpLCAiY2FsZW5kYXIuZ29vZ2xlLmNvbSIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gZGF0YUluaXRpYWxWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtaW5pdGlh
bC12YWx1ZSIsIG51bGxBdG9tKCkpOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gZGF0YVByZXZpb3VzVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLXByZXZp
b3VzLXZhbHVlIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiBkYXRhSW5pdGlhbFZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1pbml0
aWFsLXZhbHVlIl9zLCBudWxsQXRvbSgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFF1YWxpZmllZE5hbWU+IGRhdGFQcmV2aW91c1ZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1w
cmV2aW91cy12YWx1ZSJfcywgbnVsbEF0b20oKSk7CiAKICAgICAgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmF1dG9jb21wbGV0ZUF0dHIpLCAib2ZmIikKICAgICAgICAgICAgICYm
IGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkYXRhSW5pdGlhbFZh
bHVlQXR0cikKQEAgLTY0Nyw3ICs2NDcsNyBAQCBib29sIFF1aXJrczo6bmVlZHNJbnB1dE1vZGVO
b25lSW1wbGljaXRseShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgY29uc3QKICAgICBpZiAo
IWhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmRlc21vcy5jb20iKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpICYmIGVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImRjZy1tcS10ZXh0
YXJlYSIpOworICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKSAmJiBlbGVtZW50LnBh
cmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJkY2ctbXEtdGV4dGFyZWEiX3Mp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTAyMywxMCArMTAyMywxMCBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gc3BhbiB3aXRoIHRoZXNlIGNsYXNz
IG5hbWVzLCBvciB0aGUgc3ZnLCBvciB0aGUgc3ZnJ3MgcGF0aC4KICAgICBpZiAoZWxlbWVudC5o
YXNDbGFzcygpKSB7CiAgICAgICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFt
ZXMoKTsKLSAgICAgICAgaWYgKGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJu
ZXItbG9naW4iKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygianNfaGVhZGVy
LXVzZXJidXR0b24iKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygic2MtMWls
M3VydS0zIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygiY0loS2ZkIikKLSAgICAgICAgICAgIHx8
IGNsYXNzTmFtZXMuY29udGFpbnMoIml5dm4zNC0wIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygi
YllJanRsIikpCisgICAgICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19zd2l0Y2gtdG8t
YnVybmVyLWxvZ2luIl9zKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygianNf
aGVhZGVyLXVzZXJidXR0b24iX3MpCisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5z
KCJzYy0xaWwzdXJ1LTMiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImNJaEtmZCJfcykKKyAg
ICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoIml5dm4zNC0wIl9zKSB8fCBjbGFzc05h
bWVzLmNvbnRhaW5zKCJiWUlqdGwiX3MpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJF
bGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHN2Z0VsZW1lbnQgPSBlbGVt
ZW50LnBhcmVudEVsZW1lbnQoKTsKIAogICAgIGlmIChzdmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQt
Pmhhc0F0dHJpYnV0ZXMoKSkgewotICAgICAgICBhdXRvIGFyaWFMYWJlbEF0dHIgPSBzdmdFbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0TmFtZWRJdGVtKCJhcmlhLWxhYmVsIik7CisgICAgICAgIGF1
dG8gYXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXROYW1lZEl0ZW0o
ImFyaWEtbGFiZWwiX3MpOwogICAgICAgICBpZiAoYXJpYUxhYmVsQXR0ciAmJiBhcmlhTGFiZWxB
dHRyLT52YWx1ZSgpID09ICJVc2VyRmlsbGVkIGljb24iKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTA1NiwyNCArMTA1NiwyNCBAQCBzdGF0aWMgYm9vbCBpc1N0b3JhZ2VB
Y2Nlc3NRdWlya0RvbWFpbkFuZEVsZW1lbnQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEVsZW1lbnQm
CiAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3ZlIHRoaXMgcXVpcmsgb25jZSBtaWNyb3NvZnQu
Y29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9z
dCgpID09ICJ3d3cubWljcm9zb2Z0LmNvbSJfcykgewogICAgICAgICByZXR1cm4gZWxlbWVudC5o
YXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiZ2x5
cGhfc2lnbkluX2NpcmNsZSIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJtZWN0cmxfaGVhZGVydGV4dCIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygp
LmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVyIikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05h
bWVzKCkuY29udGFpbnMoImdseXBoX3NpZ25Jbl9jaXJjbGUiX3MpCisgICAgICAgIHx8IGVsZW1l
bnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVydGV4dCJfcykKKyAgICAgICAg
fHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXIiX3MpKTsKICAg
ICB9CiAgICAgLy8gU2t5cGUgY2FzZS4KICAgICAvLyBGSVhNRSgyMjAxMDUpOiBSZW1vdmUgdGhp
cyBxdWlyayBvbmNlIFNreXBlIHVuZGVyIG91dGxvb2subGl2ZS5jb20gY29tcGxldGVzIHRoZWly
IGxvZ2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gIm91dGxvb2subGl2
ZS5jb20iX3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKQotICAgICAgICAm
JiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIl8zaW9FcDJSR1I1dmIwZ3FSRHNhRlBh
IikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIl8yQW0yanZUYUJ6
MTdVSjhYbmZ4Rk95IikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFp
bnMoIl8zaW9FcDJSR1I1dmIwZ3FSRHNhRlBhIl9zKQorICAgICAgICB8fCBlbGVtZW50LmNsYXNz
TmFtZXMoKS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3kiX3MpKTsKICAgICB9CiAg
ICAgLy8gU29ueSBOZXR3b3JrIEVudGVydGFpbm1lbnQgbG9naW4gY2FzZS4KICAgICAvLyBGSVhN
RSgyMTg3NjApOiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIHBsYXlzdGF0aW9uLmNvbSBjb21wbGV0
ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICBpZiAodXJsLmhvc3QoKSA9PSAid3d3
LnBsYXlzdGF0aW9uLmNvbSJfcyB8fCB1cmwuaG9zdCgpID09ICJteS5wbGF5c3RhdGlvbi5jb20i
X3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKQotICAgICAgICAmJiAoZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uIikK
LSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19z
aWduaW4tYnV0dG9uLWxhYmVsIikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29u
dGFpbnMoInNiLXNpZ25pbi1idXR0b24iKSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFt
ZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24iX3MpCisgICAgICAgIHx8
IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRv
bi1sYWJlbCJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInNi
LXNpZ25pbi1idXR0b24iX3MpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTEy
LDcgKzExMTIsNyBAQCBzdGF0aWMgYm9vbCBpc0JCQ1BvcFVwUGxheWVyRWxlbWVudChjb25zdCBF
bGVtZW50JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgfHwgIWVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5oYXNDbGFzcygpIHx8ICFwYXJlbnRFbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkgfHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+aGFzQ2xhc3Mo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxl
bWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0b25fYnV0dG9uSW5uZXIi
KSAmJiBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlu
cygiaGlkZGVuIik7CisgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05h
bWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0b25fYnV0dG9uSW5uZXIiX3MpICYmIHBhcmVudEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iX3Mp
OwogfQogCiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0FuZEhhbmRsZUNsaWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkRGlzcGF0
Y2hDbGljayk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CkBAIC0xMTg1LDE0ICsxMTg1LDE0
IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0
b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2lu
Rm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgn
anNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYgKGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7IGVs
ZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGludGVy
dmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwgMjAwKTsiX3MsIFVSTChhYm91dEJs
YW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZ
ZXMgfTsKIAotICAgIGlmIChldmVudFR5cGUgPT0gImNsaWNrIikgeworICAgIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50
KQogICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxk
Tm90Q2FuY2VsRXZlbnQ7CiAKICAgICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgogICAg
ICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGRvbWFpbiA9PSB5b3VUdWJlRG9tYWluICYm
ICFtX2RvY3VtZW50LT5pc1RvcERvY3VtZW50KCkgJiYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgewogICAgICAgICAg
ICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAgICAgICAg
aWYgKGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikgfHwgY2xhc3NO
YW1lcy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSkgeworICAgICAgICAgICAgaWYg
KGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIl9zKSB8fCBjbGFzc05h
bWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiJfcykpIHsKICAgICAgICAgICAgICAg
ICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlv
bih5b3VUdWJlRG9tYWluKSkgewogICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyaygqbV9kb2N1bWVudCwg
W10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAxOTc0MWY2MmY2YjY2YTFiZTA3
NzdkZWU2YTNhYTM5ZGIwMjgwZWRjLi4xMzZmN2NkNTJkMzQzZTgwYmE3Y2MyMDkwZjZmNjg3YTNi
NjA5ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjA2LDcgKzIw
Niw3IEBAIFNwYW48Y29uc3QgQXRvbVN0cmluZz4gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1lcygpCiAKIGNvbnN0IEF0b21TdHJpbmcmIFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwoKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc0V2ZW50TmFtZUFsbCA9
ICJhbGxFdmVudHMiOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc0V2ZW50TmFtZUFsbCA9ICJhbGxFdmVudHMiX3M7CiAgICAgcmV0dXJuIHNF
dmVudE5hbWVBbGw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGVjMzFjNTM4MDA4
MzIwMGI5MDBkMmVhNWNmNTQwYTM2ODk3Y2U2NTQuLjQyMzdjZjYwNTk4NGRjNmQ1MzYwNDc0Njcz
NTVkMzg0NjczMWFiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzA2Nyw3ICszMDY3
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwcm9jZXNzTWV0
YWRhdGFUcmFjaygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWV0YWRhdGFUcmFjayA9IElu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKEluYmFuZFRleHRUcmFja1By
aXZhdGU6OktpbmQ6Ok1ldGFkYXRhLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6
OkRhdGEpOwotICAgIG1fbWV0YWRhdGFUcmFjay0+c2V0SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3Bh
dGNoVHlwZSgiY29tLmFwcGxlLnN0cmVhbWluZyIpOworICAgIG1fbWV0YWRhdGFUcmFjay0+c2V0
SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgiY29tLmFwcGxlLnN0cmVhbWluZyJfcyk7
CiAgICAgcGxheWVyKCktPmFkZFRleHRUcmFjaygqbV9tZXRhZGF0YVRyYWNrKTsKIH0KIApAQCAt
MzA5Niw3ICszMDk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRDdXJyZW50VGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXYKICAgICBpZiAobV9jdXJy
ZW50VGV4dFRyYWNrID09IHRyYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAic2VsZWN0aW5nIHRyYWNrIHdpdGggbGFuZ3VhZ2UgIiwgdHJhY2sgPyB0
cmFjay0+bGFuZ3VhZ2UoKSA6ICIiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2Vs
ZWN0aW5nIHRyYWNrIHdpdGggbGFuZ3VhZ2UgIiwgdHJhY2sgPyB0cmFjay0+bGFuZ3VhZ2UoKSA6
IGVtcHR5QXRvbSgpKTsKIAogICAgIG1fY3VycmVudFRleHRUcmFjayA9IHRyYWNrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpp
bmRleCBjZmEyOWIxMTJlYTMyOTczZmM4NTYzNWI2NWU0MjFlYWZiZjkxNDA3Li4wMWYyYzY5NzE2
ZjYxOGFhNDhkMjhlZTE2NWYxMTgwZjBmNGJiOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTE3Nyw3ICsxNzcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fY29k
ZWMpCi0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhtX29yaWdpbmFsQ29kZWMuc3Ry
aW5nKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nOjpmcm9tTGF0
aW4xKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gKm1f
Y29kZWM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA4NTIzNDZmNmI1YzU2N2RlMjlmMzUx
NzdkYzQ4NzIzNjVkZjI3ZDQwLi5iMDg2OWY4MDA0NTYxOWU2OTY1ODYxY2IxNzI5ODFlZWUxZjMx
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBQbGEKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KSk7
CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250
RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRT
cGVjaWZpZWRTaXplKGZvbnRTaXplKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKGZvbnRTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
LmNwcAppbmRleCA2N2Q3MGNiY2Y3MjMyM2UyMDkzOTI0MGQ0ZDQ3MGM0MzgxMTY2MDZjLi5jNzZk
ZDNkMjllZDM0Njk2ZmUxZjUwOTBkNzE4ZmM3ZjBmMTFiNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoY29u
c3QgR1N0cmVhbWVyUmVnCiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtaW1lVHlw
ZSA6IGN1cnJlbnQud2Via2l0TWltZVR5cGVzKQogICAgICAgICAgICAgICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQobWltZVR5cGUpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoY3VycmVudC5jYXBz
U3RyaW5nKSk7CisgICAgICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmc6OmZyb21MYXRpbjEoY3VycmVudC5jYXBzU3RyaW5nKSk7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0yNjIsMjYgKzI2MiwyNiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
ZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKGNvbnN0IEdTdHJlYW1lclJlZwogdm9pZCBH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0b3JpZXMmIGZhY3RvcmllcykKIHsKICAgICBp
ZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKLSAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyIpKTsK
LSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCIp
KTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gt
bTRhIikpOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXBlZyIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmco
ImF1ZGlvL3gtbXBlZyIpKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIm1wZWciKSwgZmFsc2UpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygibXA0YSoiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygiYXVkaW8vYWFjIl9zKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbTRhIl9zKSk7CisgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIl9zKSk7CisgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciX3MpKTsKKyAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciX3MpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiJfcyksIGZh
bHNlKTsKICAgICB9CiAKICAgICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJh
dWRpby94LW9wdXMiKTsKICAgICBpZiAob3B1c1N1cHBvcnRlZCAmJiAoIW1faXNNZWRpYVNvdXJj
ZSB8fCBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb1BhcnNlciwgImF1ZGlvL3gtb3B1cyIpKSkgewotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIpKTsKLSAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiKSwgZmFsc2UpOwotICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIiksIGZhbHNlKTsKKyAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiX3MpKTsKKyAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiX3MpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiX3MpLCBm
YWxzZSk7CiAgICAgfQogCiAgICAgYXV0byB2b3JiaXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIs
ICJhdWRpby94LXZvcmJpcyIpOwogICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVk
aWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6QXVkaW9QYXJzZXIsICJhdWRpby94LXZvcmJpcyIpKSkgewotICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAg
ICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyJfcyksIGZh
bHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlz
Il9zKSwgZmFsc2UpOwogICAgIH0KIAogICAgIGJvb2wgbWF0cm9za2FTdXBwb3J0ZWQgPSBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11
eGVyLCAidmlkZW8veC1tYXRyb3NrYSIpOwpAQCAtMjkwLDIxICsyOTAsMjEgQEAgdm9pZCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXIKICAgICAgICAgYXV0byB2cDlEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9y
aWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9E
ZWNvZGVyLCAidmlkZW8veC12cDkiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xh
c3NpZmllcjo6WWVzKTsKIAogICAgICAgICBpZiAodnA4RGVjb2RlckF2YWlsYWJsZSB8fCB2cDlE
ZWNvZGVyQXZhaWxhYmxlKQotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSJfcykpOwogCiAgICAgICAgIGlmICh2cDhEZWNv
ZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygidnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCIpLCB2cDhEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5n
SGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InZwOCJfcyksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCJfcyksIHZwOERlY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDguMCJfcyksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKICAgICAgICAgfQogICAgICAgICBpZiAodnA5RGVjb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSIpLCB2
cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwOS4wIiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAg
ICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiIpLCB2cDlE
ZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5Il9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIngtdnA5Il9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAg
ICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIl9zKSwgdnA5
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIl9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQot
ICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dl
Ym0iKSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vd2VibSJfcykpOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkQWRkTVA0Q29udGFpbmVy
ID0gZmFsc2U7CkBAIC0zMTIsMzUgKzMxMiwzNSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgog
ICAgIGF1dG8gaDI2NERlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWgy
NjQsIHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGln
aCB9IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAg
ICAgaWYgKGgyNjREZWNvZGVyQXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
UGFyc2VyLCAidmlkZW8veC1oMjY0IikpKSB7CiAgICAgICAgIHNob3VsZEFkZE1QNENvbnRhaW5l
ciA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgy
NjQiKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NERlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIm1wNHYqIiksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiX3MpLCBoMjY0
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXZjKiJfcyksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJt
cDR2KiJfcyksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQog
CiAgICAgYXV0byBoMjY1RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gt
aDI2NSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwog
ICAgIGlmIChoMjY1RGVjb2RlckF2YWlsYWJsZSAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRl
b1BhcnNlciwgInZpZGVvL3gtaDI2NSIpKSkgewogICAgICAgICBzaG91bGRBZGRNUDRDb250YWlu
ZXIgPSB0cnVlOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1o
MjY1IiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJodmMxKiIpLCBoMjY1RGVjb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygiaGV2MSoiKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NSJfcyksIGgy
NjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJodmMxKiJfcyksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJoZXYxKiJfcyksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAg
fQogCiAgICAgaWYgKHNob3VsZEFkZE1QNENvbnRhaW5lcikgewotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0IikpOwotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiX3MpKTsKKyAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2Il9zKSk7
CiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAi
dmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
WWVzKTsKICAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBv
cnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiJfcyksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImF2MSJfcyksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYx
Il9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAg
IFZlY3RvcjxHc3RDYXBzV2ViS2l0TWFwcGluZz4gbXNlQ29tcGF0aWJsZU1hcHBpbmcgPSB7Ci0g
ICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1h
YzMiLCB7IH0sIHsieC1hYzMiLCAiYWMtMyIsICJhYzMifSB9LAotICAgICAgICB7IEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZWFjMyIsIHsiYXVkaW8veC1h
YzMifSwgIHsieC1lYWMzIiwgImVjMyIsICJlYy0zIiwgImVhYzMifSB9LAotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZmxhYyIsIHsiYXVk
aW8veC1mbGFjIiwgImF1ZGlvL2ZsYWMifSwgeyJ4LWZsYWMiLCAiZmxhYyIgfSB9LAorICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtYWMzIiwg
eyB9LCB7ICJ4LWFjMyJfcywgImFjLTMiX3MsICJhYzMiX3MgfSB9LAorICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZWFjMyIsIHsgImF1ZGlv
L3gtYWMzIl9zIH0sICB7ICJ4LWVhYzMiX3MsICJlYzMiX3MsICJlYy0zIl9zLCAiZWFjMyJfcyB9
IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVk
aW8veC1mbGFjIiwgeyAiYXVkaW8veC1mbGFjIl9zLCAiYXVkaW8vZmxhYyJfcyB9LCB7IngtZmxh
YyJfcywgImZsYWMiX3MgfSB9LAogICAgIH07CiAgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNN
YXBwaW5nKGZhY3RvcmllcywgbXNlQ29tcGF0aWJsZU1hcHBpbmcpOwogCkBAIC0zNTAsNzYgKzM1
MCw3NiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJz
KGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgIC8vIFRoZSBtaW1lLXR5cGVzIGlu
aXRpYWxpemVkIGJlbG93IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBNU0UgYmFja2VuZC4KIAog
ICAgIFZlY3RvcjxHc3RDYXBzV2ViS2l0TWFwcGluZz4gbWFwcGluZyA9IHsKLSAgICAgICAgeyBF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9taWRpIiwgeyAiYXVk
aW8vbWlkaSIsICJhdWRpby9yaWZmLW1pZGkiIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21pZGkiLCB7ICJhdWRpby9taWRp
Il9zLCAiYXVkaW8vcmlmZi1taWRpIl9zIH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZHRzIiwgeyB9LCB7IH0gfSwKICAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNi
YyIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9E
ZWNvZGVyLCAiYXVkaW8veC1zaWQiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVl
eCIsICJhdWRpby94LXNwZWV4IiB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXdhdnBhY2siLCB7ICJhdWRpby94LXdhdnBh
Y2siIH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVj
b2RlciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0cmVhbT0o
Ym9vbGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciIH0sIHsgIm1wZWciIH0gfSwKKyAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNwZWV4Iiwg
eyAiYXVkaW8vc3BlZXgiX3MsICJhdWRpby94LXNwZWV4Il9zIH0sIHsgfSB9LAorICAgICAgICB7
IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtd2F2cGFjayIs
IHsgImF1ZGlvL3gtd2F2cGFjayJfcyB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9y
aWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KXsx
LDJ9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFsc2UiLCB7ICJ2aWRlby9tcGVnIl9zIH0sIHsg
Im1wZWciX3MgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVj
b2RlciwgInZpZGVvL21wZWd0cyIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1kaXJhYyIsIHsgfSwgeyB9IH0sCi0g
ICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1m
bGFzaC12aWRlbyIsIHsgInZpZGVvL2ZsdiIsICJ2aWRlby94LWZsdiIgfSwgeyB9IH0sCisgICAg
ICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1mbGFz
aC12aWRlbyIsIHsgInZpZGVvL2ZsdiJfcywgInZpZGVvL3gtZmx2Il9zIH0sIHsgfSB9LAogICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2
MyIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9E
ZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVvY29kZWMiLCB7ICJ2aWRlby94LW1zdmlkZW8iIH0sIHsg
fSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZp
ZGVvL3gtbXN2aWRlb2NvZGVjIiwgeyAidmlkZW8veC1tc3ZpZGVvIl9zIH0sIHsgfSB9LAogICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi92bmQu
cm4tcmVhbG1lZGlhIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC0zZ3AiLCB7IH0sIHsgfSB9LAotICAgICAgICB7
IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi94LWhscyIsIHsg
ImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIiwgImFwcGxpY2F0aW9uL3gtbXBlZ3VybCIg
fSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFw
cGxpY2F0aW9uL3gtaGxzIiwgeyAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwiX3MsICJh
cHBsaWNhdGlvbi94LW1wZWd1cmwiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtcG4tcmVhbGF1ZGlvIiwgeyB9LCB7
IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGlj
YXRpb24vZGFzaCt4bWwiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6
OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LWFpZmYiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LXdhdiIsIHsgImF1ZGlvL3gt
d2F2IiwgImF1ZGlvL3dhdiIsICJhdWRpby92bmQud2F2ZSIgfSwgeyAiMSIgfSB9LAorICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LXdhdiIsIHsgImF1
ZGlvL3gtd2F2Il9zLCAiYXVkaW8vd2F2Il9zLCAiYXVkaW8vdm5kLndhdmUiX3MgfSwgeyAiMSJf
cyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgInZpZGVv
L3F1aWNrdGltZSIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6RGVtdXhlciwgInZpZGVvL3F1aWNrdGltZSwgdmFyaWFudD0oc3RyaW5nKTNncHAiLCB7ICJ2
aWRlby8zZ3BwIiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVv
LzNncHAiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVt
dXhlciwgInZpZGVvL3gtbXMtYXNmIiwgeyB9LCB7IH0gfSwKICAgICB9OwogICAgIGZpbGxNaW1l
VHlwZVNldEZyb21DYXBzTWFwcGluZyhmYWN0b3JpZXMsIG1hcHBpbmcpOwogCiAgICAgaWYgKGZh
Y3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRl
bXV4ZXIsICJhcHBsaWNhdGlvbi9vZ2ciKSkgewotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXBwbGljYXRpb24vb2dnIikpOworICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXBwbGljYXRpb24vb2dnIl9zKSk7CiAKICAgICAg
ICAgaWYgKHZvcmJpc1N1cHBvcnRlZCkgewotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ciKSk7CisgICAgICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIl9zKSk7
CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC12b3JiaXMrb2dnIl9zKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVy
LCAiYXVkaW8veC1zcGVleCIpKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoInNwZWV4IiksIGZhbHNlKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKKyAgICAgICAgICAg
IG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJzcGVleCJfcyksIGZhbHNlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LXRoZW9yYSIpKSB7
Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
b2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInRo
ZW9yYSIpLCBmYWxzZSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygidmlkZW8vb2dnIl9zKSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygidGhlb3JhIl9zKSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCBhdWRpb01wZWdTdXBwb3J0ZWQgPSBmYWxzZTsKICAgICBpZiAoZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVy
LCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxLCBsYXllcj0oaW50KVsxLCAzXSIpKSB7
CiAgICAgICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiKSk7Ci0gICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDMiKSk7Ci0gICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wMyIpKTsKLSAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyIpLCBmYWxzZSk7Ci0g
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDMiKSwgZmFsc2UpOwor
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAxIl9z
KSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9t
cDMiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL3gtbXAzIl9zKSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJhdWRpby9tcDMiX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJtcDMiX3MpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2Rl
ciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMiIpKSB7CiAgICAgICAgIGF1ZGlvTXBl
Z1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9tcDIiKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiX3MpKTsKICAgICB9CiAKICAgICBhdWRpb01wZWdTdXBwb3J0
ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAi
YXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwotICAgICAg
ICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIikpOwor
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyJf
cykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC1tcGVnIl9zKSk7CiAgICAgfQogCiAgICAgaWYgKG1hdHJvc2thU3VwcG9ydGVkKSB7Ci0gICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2th
IikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
eC1tYXRyb3NrYSJfcykpOwogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LXZw
MTAiKSkKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2
aWRlby93ZWJtIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKICAgICB9CiB9CiAKQEAgLTQzMSw3NiArNDMxLDc2IEBA
IHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRW5jb2RlcnMoY29uc3Qg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAKICAgICBhdXRvIGFhY1N1cHBvcnRlZCA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlv
RW5jb2RlciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpOwogICAgIGlmIChmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRp
b0VuY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBmYWxzZSk7Ci0gICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIpLCBmYWxzZSk7CisgICAg
ICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIl9zKSwgZmFsc2UpOwor
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiX3MpLCBmYWxz
ZSk7CiAgICAgfQogCiAgICAgYXV0byBvcHVzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVk
aW8veC1vcHVzIik7CiAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIiksIGZhbHNlKTsKKyAgICAgICAgbV9l
bmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiX3MpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiX3MpLCBmYWxzZSk7CiAg
ICAgfQogCiAgICAgYXV0byB2b3JiaXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJhdWRpby94
LXZvcmJpcyIpOwogICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyIpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiX3MpLCBmYWxzZSk7Cisg
ICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyJfcyksIGZh
bHNlKTsKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhdjFFbmNvZGVyc0Rpc2FsbG93ZWRM
aXN0IHsgImF2MWVuYyJfcyB9OwogICAgIGF1dG8gYXYxRW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
RW5jb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNs
YXNzaWZpZXI6Olllcywgc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoYXYxRW5jb2RlcnNEaXNh
bGxvd2VkTGlzdCkpKTsKICAgICBpZiAoYXYxRW5jb2RlckF2YWlsYWJsZSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgZmFsc2UpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGZhbHNlKTsKLSAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGZhbHNlKTsKKyAg
ICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIl9zKSwgZmFsc2Up
OworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIl9zKSwgZmFs
c2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiX3Mp
LCBmYWxzZSk7CiAgICAgfQogCiAgICAgYXV0byB2cDhFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9y
aWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9F
bmNvZGVyLCAidmlkZW8veC12cDgiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xh
c3NpZmllcjo6WWVzKTsKICAgICBpZiAodnA4RW5jb2RlckF2YWlsYWJsZSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4IiksIHZwOEVuY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIngtdnA4IiksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAg
ICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOC4wIiksIHZwOEVuY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoInZwOCJfcyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4Il9z
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiX3MpLCB2cDhFbmNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgYXV0byB2cDlFbmNvZGVyQXZhaWxhYmxl
ID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6VmlkZW9FbmNvZGVyLCAidmlkZW8veC12cDkiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAodnA5RW5jb2RlckF2YWlsYWJsZSkgewot
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOUVuY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdnA5IiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIiks
IHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InZwOSJfcyksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA5Il9zKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnA5LjAiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiJfcyks
IHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAo
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
TXV4ZXIsICJ2aWRlby93ZWJtIikgJiYgKHZwOEVuY29kZXJBdmFpbGFibGUgfHwgdnA5RW5jb2Rl
ckF2YWlsYWJsZSB8fCBhdjFFbmNvZGVyQXZhaWxhYmxlKSkKLSAgICAgICAgbV9lbmNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIl9zKSk7CiAKICAgICBpZiAo
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
TXV4ZXIsICJhdWRpby93ZWJtIikpIHsKICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAg
ICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIp
KTsKLSAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dl
Ym0iKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vb3B1cyJfcykpOworICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8vd2VibSJfcykpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlvL29n
ZyIpICYmICh2b3JiaXNTdXBwb3J0ZWQgfHwgb3B1c1N1cHBvcnRlZCkpCi0gICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciKSk7CisgICAgICAgIG1f
ZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKIAogICAg
IGF1dG8gaDI2NEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRlby94LWgyNjQs
IHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGlnaCB9
IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAg
aWYgKGgyNjRFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJoMjY0IiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiKSwg
aDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
Im1wNHYqIiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJoMjY0Il9zKSwgaDI2NEVuY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoIngtaDI2NCJfcyksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIl9z
KSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIl9zKSwgaDI2NEVuY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6TXV4ZXIsICJ2aWRlby9xdWlj
a3RpbWUiKSkgewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOworICAgICAgICAg
ICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiX3MpKTsK
ICAgICAgICAgaWYgKGFhY1N1cHBvcnRlZCkgewotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiKSk7Ci0gICAgICAgICAgICBt
X2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7CisgICAg
ICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIl9z
KSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXA0Il9zKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8veC1tNGEiX3MpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaDI2NEVuY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJ2aWRlby9tcDQiKSk7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0Il9zKSk7CisgICAgICAgICAgICBtX2Vu
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiX3MpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3YjIwMjc5NWVkMTVmZjI0Mjg4OWQ4ZDgxZmM2MjFlOGJh
ZGMyNDAyLi42Mjc2Y2E5MDk1ZGI1ZDNiY2QxN2I2YzE2NDk4ZDBmMTc2MDI5YmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIodW5zaWduZWQgaW5kZXgsCiAgICAgOiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlKEN1ZUZvcm1hdDo6V2ViVlRUKQogICAgICwgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlRleHQsIHRoaXMs
IGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiB7Ci0gICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0
cmVhbV9pZChtX3N0cmVhbS5nZXQoKSk7CisgICAgbV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRp
bjEoZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgR1NUX0lO
Rk8oIlRyYWNrICVkIGdvdCBzdHJlYW0gc3RhcnQgZm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBt
X2lkLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgR1NUX0RFQlVHKCJTdHJlYW0gJSIg
R1NUX1BUUl9GT1JNQVQsIG1fc3RyZWFtLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDFmZWZlYTMyZDIxMzZkZmQxZTFmM2My
NWI4MTYyNjk2OTBmYmQxNC4uMjA5ODAzNWRhODBiMGI5MzkzNWU0NjY5MWYwMjU3NWVlNzg4ODZh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTE0NjQsNyArMTQ2NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVUcmFja3MoY29uc3QgR1JlZlB0cjxHc3RTdHJlYW1Db2xsZWN0aW9uCiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKTsKICAgICAgICAgZWxzZSBpZiAodHlwZSAmIEdT
VF9TVFJFQU1fVFlQRV9URVhUICYmICF1c2VNZWRpYVNvdXJjZSkgewogICAgICAgICAgICAgYXV0
byB0cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJh
Y2tJbmRleCsrLCBXVEZNb3ZlKHN0cmVhbSkpOwotICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFk
ZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5h
ZGQoQXRvbVN0cmluZzo6ZnJvbUxhdGluMShzdHJlYW1JZCksIHRyYWNrLmNvcHlSZWYoKSk7CiAg
ICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklORygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5k
IGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5jcHAKaW5kZXggMjk1N2JjZWYzZDBkMGUxODI4ZWY1ZGY3YmY4YmNlNWRl
YzJmOGQ5YS4uOWFiMTVkZmFlYzJiNGU1ODE4ZTVhM2VmOWUxMjcwOTgwYzA4NmEyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
KFRyYWNrVHlwZSB0eXBlLCBUcmFja1ByaXZhdAogICAgICwgbV9vd25lcihvd25lcikKIHsKICAg
ICBBU1NFUlQobV9zdHJlYW0pOwotICAgIG1faWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQo
bV9zdHJlYW0uZ2V0KCkpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGdzdF9z
dHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQoKSkpOwogCiAgICAgLy8gV2UgY2FuJ3Qg
Y2FsbCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKSBkaXJlY3RseSwgYmVjYXVzZSB3ZSBuZWVk
IHRhZ3NDaGFuZ2VkKCkgdG8gc2V0dXAgbV90YWdzLgogICAgIHRhZ3NDaGFuZ2VkKCk7CkBAIC0y
NTIsNyArMjUyLDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFj
a09mU3RyZWFtQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdTVF9JTkZPKCJUcmFj
ayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwgc3RyZWFtSWQu
Z2V0KCkpOwotICAgIG1faWQgPSBzdHJlYW1JZC5nZXQoKTsKKyAgICBtX2lkID0gQXRvbVN0cmlu
Zzo6ZnJvbUxhdGluMShzdHJlYW1JZC5nZXQoKSk7CiB9CiAKIHZvaWQgVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRl
eCBiYzUzOWE4NzQ3ODAyODE4MTNmNmFmMzAwYWUyZTAyYjc2YWU2MWJjLi40ODkwMjI5MzY5MTlk
NzM5ZDAwZWExY2NjMzI2NmZkYWVmMjg2NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAK
QEAgLTE0NywxMCArMTQ3LDEwIEBAIFZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlVGh1bmRl
cjo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiAgICAgc3RhdGljIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CiAgICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSg0KTsKLSAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBl
bmQoQXRvbVN0cmluZygia2V5aWRzIikpOwotICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
LnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJjZW5jIikpOwotICAgICAgICBzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJ3ZWJtIikpOwotICAgICAg
ICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJjYmNz
IikpOworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZCgia2V5
aWRzIl9zKTsKKyAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQo
ImNlbmMiX3MpOworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVu
ZCgid2VibSJfcyk7CisgICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBw
ZW5kKCJjYmNzIl9zKTsKICAgICB9KTsKICAgICByZXR1cm4gc3VwcG9ydGVkSW5pdERhdGFUeXBl
czsKIH0KQEAgLTE3MCw5ICsxNzAsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgYwogCiBWZWN0
b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRlZFJvYnVzdG5lc3Nlcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgZW1wdHlBdG9tKCksCi0gICAgICAgICJTV19TRUNVUkVf
REVDT0RFIiwKLSAgICAgICAgIlNXX1NFQ1VSRV9DUllQVE8iIH07CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCksICJTV19TRUNVUkVfREVDT0RFIl9zLCAiU1dfU0VDVVJFX0NSWVBUTyJfcyB9Owog
fQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlVGh1bmRlcjo6ZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApp
bmRleCAwYmIyMmQ1MjU5MGVkZTI1NzhmMDRmMjZhNjE2ZjkxNjBjNDRiM2RlLi5jMjZhOWI1MzU2
NjkzNDg4YjQyNWY2ZTk3YzQ4MWIxNWIyNzdhNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcApAQCAtNzEzLDcgKzcxMyw3IEBAIEFwcGVuZFBpcGVsaW5lOjpUcmFjayogQXBw
ZW5kUGlwZWxpbmU6OnRyeU1hdGNoUGFkVG9FeGlzdGluZ1RyYWNrKEdzdFBhZCAqZGVtdXhlCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9oYXNSZWNlaXZlZEZp
cnN0SW5pdGlhbGl6YXRpb25TZWdtZW50KTsKLSAgICBBdG9tU3RyaW5nIHRyYWNrSWQgPSBHU1Rf
UEFEX05BTUUoZGVtdXhlclNyY1BhZCk7CisgICAgYXV0byB0cmFja0lkID0gQXRvbVN0cmluZzo6
ZnJvbUxhdGluMShHU1RfUEFEX05BTUUoZGVtdXhlclNyY1BhZCkpOwogICAgIGF1dG8gW3BhcnNl
ZENhcHMsIHN0cmVhbVR5cGUsIHByZXNlbnRhdGlvblNpemVdID0gcGFyc2VEZW11eGVyU3JjUGFk
Q2FwcyhhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKGRlbXV4ZXJTcmNQYWQpKS5n
ZXQoKSk7CiAKICAgICAvLyBUcnkgdG8gZmluZCBhIG1hdGNoaW5nIHByZS1leGlzdGluZyB0cmFj
ay4gSWRlYWxseSwgdHJhY2tzIHNob3VsZCBiZSBtYXRjaGVkIGJ5IHRyYWNrIElELCBidXQgbWF0
Y2hpbmcgYnkgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCAzZTRlMGU5MzQyNWU2ODBiOTAzNjI3
YmU5OWZiNDNmMmEyM2MyZTBmLi40NjI0MWQxMjQxOTNhZWVhZTJlZGVkNDA1Y2EyODVjMzkzYTMx
NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB1
bnNpZ25lZCBob3VycyA9IG1pbnV0ZXMgLyA2MCAlIDYwOwogCiAgICAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiQ291cmllciIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkNvdXJpZXIi
X3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKDUw
MCkpOwogCiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUobV9iYXNlRm9udFNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKaW5kZXggYTUzMTA2MDdhMzA0OTk5NTNlNDk1ZGFlNjM0NWY4ZTUyZmRmMDcy
ZS4uOTc3OGMxNzVmMzRkNDZkMGI2ZjUwMTE2ZTdlOGQzYTU1NDk0NDQ0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBA
IC02Nyw4ICs2Nyw5IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29u
c3RydWN0b3IoKQogewogICAgIHN0YXRpYyBib29sIGRpZFJlZ2lzdGVyID0gZmFsc2U7CiAgICAg
aWYgKCFkaWRSZWdpc3RlcikgewotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWls
dGluQ29uc3RydWN0b3IoImJsb2IiLCBjcmVhdGVCbG9iUmVzb3VyY2VIYW5kbGUpOwotICAgICAg
ICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoImJsb2Ii
LCBsb2FkQmxvYlJlc291cmNlU3luY2hyb25vdXNseSk7CisgICAgICAgIEF0b21TdHJpbmcgYmxv
YiA9ICJibG9iIl9zOworICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluQ29u
c3RydWN0b3IoYmxvYiwgY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKTsKKyAgICAgICAgUmVzb3Vy
Y2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGJsb2IsIGxvYWRCbG9i
UmVzb3VyY2VTeW5jaHJvbm91c2x5KTsKICAgICAgICAgZGlkUmVnaXN0ZXIgPSB0cnVlOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBh
M2ZlZmFkMDZhNmIyNzJiMWFmMWI1OTA0MzY5ODJhMTY4NTNiMWFmLi40ODVjZTczZDljMzRhMGM5
YTM0MmQzY2ZlNzBhNTVlNDQ2ZmNhMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBzaG93Q291bnRlclJlbmRl
cmVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBjaGFy
KgogICAgIHdoaWxlIChyb290LT5wYXJlbnQoKSkKICAgICAgICAgcm9vdCA9IHJvb3QtPnBhcmVu
dCgpOwogCi0gICAgQXRvbVN0cmluZyBpZGVudGlmaWVyKGNvdW50ZXJOYW1lKTsKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvdW50ZXJOYW1lKTsKICAgICBm
b3IgKGF1dG8qIGN1cnJlbnQgPSByb290OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4
dEluUHJlT3JkZXIoKSkgewogICAgICAgICBpZiAoIWlzPFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ+
KCpjdXJyZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyNjNhYzc1YWM3ZTRkMmEzZDIz
NTkxNDZhYWMzZGY3Y2Y0OWJiOTIyLi5kOTc3ODk1YWZkYzE3OGU2M2YzYTRjZGE5MTIwZjY2M2Fi
NWUxOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcApAQCAtMzMzMCw3ICszMzMwLDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0
ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBGbG8KICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpOwogCiAgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwot
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoMTApOwogICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0Q29tcHV0ZWRTaXplKDEwKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKaW5kZXggMjFkOWM3ZTJj
NzJlZDEwNGE4NWVkOTlkMDUxNmI3Y2FkNmIxOGU3Ny4uYzBjMzQ3OGMyOGI5YTg1NGE4MTI2MzRh
Y2FhZTMyODRlZjU0ZjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcApAQCAtNDUsOCArNDUsOCBAQCB1c2luZyBu
YW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5k
ZXJNYXRoTUxGZW5jZWQpOwogCi1zdGF0aWMgY29uc3QgY2hhciogZ09wZW5pbmdCcmFjZUNoYXIg
PSAiKCI7Ci1zdGF0aWMgY29uc3QgY2hhciogZ0Nsb3NpbmdCcmFjZUNoYXIgPSAiKSI7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gZ09wZW5pbmdCcmFjZUNoYXIgPSAiKCJfczsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBnQ2xvc2luZ0JyYWNlQ2hhciA9ICIpIl9zOwogCiBSZW5kZXJNYXRoTUxGZW5j
ZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxSb3dFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQu
Y3BwCmluZGV4IDMzMTg5YmQ2NGNhY2JlZGY5MzY4ZDM0ZmE5ZmI1NjRkNThiZDFmMzYuLjhhYzZl
ZGVjMmZlMGI2MTY3MTg4MmE1ZjlmZmQ2NDdmNDA2YmNmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBA
QCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgICAgICBpZiAocmVuZGVyVmlldy5tdWx0aUNvbHVtbkZsb3coKSkKICAgICAgICAgICAg
IHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoZG9jdW1lbnRTdHls
ZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LnBhZ2UoKS5wYWdpbmF0aW9uTGluZUdyaWRFbmFi
bGVkKCkpIHsKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZUdyaWQoIi13ZWJraXQt
ZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0
TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiX3MpOwogICAgICAgICAg
ICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lU25hcChMaW5lU25hcDo6Q29udGFpbik7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3Bw
CmluZGV4IDNhZDI0ZTVmY2M5MWNiMmY4OGUyMDI1NGFiYWQ2MDE0ODcxOTI4OGQuLjYzYmNkMWE4
MGVmNzg1MzM5NDI0MjEzMGRkMmRmODkwOWMyMjNmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFJlZjxDU1NGb250
RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNyY1ZhbHVlKCkgY29uc3QKIHsK
ICAgICBhdXRvIHNyYyA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZShnZXRBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmhyZWZBdHRyLCBYTGlua05hbWVzOjpocmVmQXR0ciksIExvYWRlZEZyb21PcGFx
dWVTb3VyY2U6Ok5vKTsKICAgICBBdG9tU3RyaW5nIHZhbHVlKGF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZm9ybWF0QXR0cikpOwotICAgIHNyYy5nZXQoKS5zZXRGb3JtYXQodmFsdWUu
aXNFbXB0eSgpID8gInN2ZyIgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0CisgICAgc3JjLmdl
dCgpLnNldEZvcm1hdCh2YWx1ZS5pc0VtcHR5KCkgPyAic3ZnIl9zIDogdmFsdWUpOyAvLyBEZWZh
dWx0IGZvcm1hdAogICAgIHJldHVybiBzcmM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcAppbmRleCBhMDFmNmJhZGExYzFkNmMyNWY4MjBmNzI2YzhlY2VlODE4MmVjYjZhLi42
ZTVjN2M3NGM4ZTdjY2U3ZDk4Mzc1OGFkZDQ1MmJmZWZhNGEwMTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBTVkdVc2VFbGVtZW50
Ojp0cmFuc2ZlclNpemVBdHRyaWJ1dGVzVG9UYXJnZXRDbG9uZShTVkdFbGVtZW50JiBzaGFkb3dF
bGVtZW4KICAgICAgICAgLy8gSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBw
cm92aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZSBhdHRyaWJ1dGVzCiAgICAg
ICAgIC8vIHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIGdlbmVyYXRlZCAnc3ZnJy4gSWYgYXR0
cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBub3Qgc3BlY2lmaWVkLAogICAgICAgICAv
LyB0aGUgZ2VuZXJhdGVkICdzdmcnIGVsZW1lbnQgd2lsbCB1c2UgdmFsdWVzIG9mIDEwMCUgZm9y
IHRoZXNlIGF0dHJpYnV0ZXMuCi0gICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNW
R05hbWVzOjp3aWR0aEF0dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9t
U3RyaW5nKHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIik7Ci0gICAgICAgIHNoYWRv
d0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWlnaHQoKS52YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygp
KSA6ICIxMDAlIik7CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVz
Ojp3aWR0aEF0dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5n
KHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIl9zKTsKKyAgICAgICAgc2hhZG93RWxl
bWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdodCgpLnZhbHVlSW5T
cGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyhoZWlnaHQoKS52YWx1ZUFzU3RyaW5nKCkpIDog
IjEwMCUiX3MpOwogICAgIH0gZWxzZSBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oc2hhZG93RWxlbWVu
dCkpIHsKICAgICAgICAgLy8gU3BlYyAoPHVzZT4gb24gPHN2Zz4pOiBJZiBhdHRyaWJ1dGVzIHdp
ZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBlbGVtZW50LCB0aGVu
IHRoZXNlCiAgICAgICAgIC8vIHZhbHVlcyB3aWxsIG92ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5n
IGF0dHJpYnV0ZXMgb24gdGhlICdzdmcnIGluIHRoZSBnZW5lcmF0ZWQgdHJlZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAppbmRleCBlN2FlMWE4YzY4
YjAwMTcxM2QxNzc1YTI0MmU5NGJjNjE2MGZmZDVmLi4xZGExMTk0YmE4ZWZkMGVhMDRhZjI1M2Q0
MTliMjY5MTRhZDBmODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0Zl
dGNoRXZlbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRmV0Y2hFdmVudC5oIgog
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgorI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU0Zl
dGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00Miw3ICs0Myw3IEBAIFJl
ZjxGZXRjaEV2ZW50PiBGZXRjaEV2ZW50OjpjcmVhdGVGb3JUZXN0aW5nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgRmV0Y2hFdmVudDo6SW5pdCBpbml0OwogICAgIGlu
aXQucmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHsgfSwgRmV0Y2hIZWFk
ZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlLCB7IH0pLCB7IH0sIHsg
fSwgeyB9KTsKLSAgICByZXR1cm4gRmV0Y2hFdmVudDo6Y3JlYXRlKCpjb250ZXh0Lmdsb2JhbE9i
amVjdCgpLCAiZmV0Y2giLCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwor
ICAgIHJldHVybiBGZXRjaEV2ZW50OjpjcmVhdGUoKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCksIGV2
ZW50TmFtZXMoKS5mZXRjaEV2ZW50LCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNUcnVzdGVkOjpZ
ZXMpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZjxET01Qcm9taXNlPiByZXRyaWV2ZUhhbmRsZWRQ
cm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmUHRyPERPTVByb21p
c2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5kZXggNmRmM2YwYzkzZWY0
NTYwYjI5NzYzZDhiMTRmZDI4NTcyOGRiYzc2OC4uZWY0Y2RlYWJkZTQ5ZGVjNDA0MmE2ZjgzMjUw
YjZlMmY3NzI2MDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKQEAgLTgzLDEwICs4Mywx
MCBAQCB2b2lkIFhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKEFTQ0lJTGl0ZXJhbCB0eXBl
U3RyaW5nLCBUZXh0UG9zaXRpb24gcG9zaXRpbwogCiBzdGF0aWMgaW5saW5lIFJlZjxFbGVtZW50
PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2VzKQogewotICAgIFJlZjxFbGVtZW50PiByZXBvcnRFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksICJwYXJz
ZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CisgICAgUmVmPEVsZW1lbnQ+IHJl
cG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5hbWUobnVsbEF0
b20oKSwgInBhcnNlcmVycm9yIl9zLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUpOwogCiAgICAg
VmVjdG9yPEF0dHJpYnV0ZT4gcmVwb3J0QXR0cmlidXRlczsKLSAgICByZXBvcnRBdHRyaWJ1dGVz
LmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxvY2s7IHdoaXRlLXNwYWNl
OiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAgMWVtIDAgMWVtOyBtYXJn
aW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJsYWNrIikpOworICAgIHJl
cG9ydEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNwbGF5OiBibG9j
azsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFkZGluZzogMCAx
ZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBjb2xvcjogYmxh
Y2siX3MpKTsKICAgICByZXBvcnRFbGVtZW50LT5wYXJzZXJTZXRBdHRyaWJ1dGVzKHJlcG9ydEF0
dHJpYnV0ZXMpOwogCiAgICAgYXV0byBoMyA9IEhUTUxIZWFkaW5nRWxlbWVudDo6Y3JlYXRlKGgz
VGFnLCBkb2N1bWVudCk7CkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmPEVsZW1l
bnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
CiAKICAgICBhdXRvIGZpeGVkID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgVmVjdG9yPEF0dHJpYnV0ZT4gZml4ZWRBdHRyaWJ1dGVzOwotICAgIGZpeGVkQXR0cmlidXRl
cy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250
LXNpemU6MTJweCIpKTsKKyAgICBmaXhlZEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHls
ZUF0dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgiX3MpKTsKICAgICBm
aXhlZC0+cGFyc2VyU2V0QXR0cmlidXRlcyhmaXhlZEF0dHJpYnV0ZXMpOwogICAgIHJlcG9ydEVs
ZW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKGZpeGVkKTsKIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZv
aWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAjaWYgRU5BQkxFKFhTTFQp
CiAgICAgaWYgKG1fZG9jdW1lbnQudHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkgewogICAgICAg
ICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwotICAgICAgICBhdHRyaWJ1dGVzLmFwcGVu
ZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCIpKTsKKyAgICAgICAg
YXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3Jt
YWwiX3MpKTsKICAgICAgICAgYXV0byBwYXJhZ3JhcGggPSBIVE1MUGFyYWdyYXBoRWxlbWVudDo6
Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlclNldEF0dHJpYnV0
ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIHBhcmFncmFwaC0+cGFyc2VyQXBwZW5kQ2hpbGQobV9k
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGhpcyBkb2N1bWVudCB3YXMgY3JlYXRlZCBhcyB0aGUg
cmVzdWx0IG9mIGFuIFhTTCB0cmFuc2Zvcm1hdGlvbi4gVGhlIGxpbmUgYW5kIGNvbHVtbiBudW1i
ZXJzIGdpdmVuIGFyZSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCByZXN1bHQuIl9zKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMjM1ZmEzODVkYWQ2MWU1Y2I3YWJhYjAxOWE4
OTliMzFkM2EwYjM2OS4uMDJlZTk5MGNlMDdkYTBiZjM5MzA0YWIxZGI3MmFlMDc0ZTFjMWE1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lk
IFhNTFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpCiB7CiAgICAgU3Ry
aW5nIHNjcmlwdFN0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFhNTFZp
ZXdlcl9qcywgc2l6ZW9mKFhNTFZpZXdlcl9qcykpOwogICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+
c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKHNjcmlw
dFN0cmluZykpOwotICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25v
cmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBhcmVXZWJLaXRY
TUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYW55IHN0eWxl
IGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRyZWUgaXMgc2hv
d24gYmVsb3cuJyk7IikpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1
YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVwYXJl
V2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFu
eSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0cmVl
IGlzIHNob3duIGJlbG93LicpOyJfcykpKTsKIAogICAgIFN0cmluZyBjc3NTdHJpbmcgPSBTdHJp
bmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfY3NzLCBzaXplb2YoWE1MVmll
d2VyX2NzcykpOwogICAgIGF1dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3Nz
U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KaW5kZXggZjYyZGM3YzgzN2YwMmY3
MDEwYzgyZDk3OTBlMmJhYWYyMTRlMWQyMS4uNmIyODU4MDU5NGVlMzVlMTUyOTNjYzM3ZGYwMDgz
MGMxZTFiYTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAgLTU0LDcgKzU0LDcg
QEAgUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdpblBhc3N3b3JkRmllbGQoKQogUmVm
PEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRl
QW5ub3RhdGlvbkVsZW1lbnQoKTsKLSAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIs
ICJwYXNzd29yZCIpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3
b3JkIl9zKTsKICAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1
cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5n
QVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwCmluZGV4IDczZmMwMTM0MmM4YjdmNDE0Y2M4ZGMxNWM4YmM3ZDVkOTliNDc1YzQuLjU4ZmEz
ZTQyMWM3MTBkZWRlZmZmMzFkZTI0Y2RlYzQ4YjllZWJjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0yMDQzLDcgKzIw
NDMsNyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjptZXNzYWdlcyhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbgogICAgICAgICBkaWN0aW9uYXJ5LT5wdXRE
aXJlY3Qodm0sIGlzU3luY0lkZW50LCBKU0M6OmpzQm9vbGVhbihtZXNzYWdlSXNTeW5jKG5hbWUp
KSk7ICAgICAgICAgICAgCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKIAotICAgICAgICBtZXNzYWdlc09iamVjdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBkZXNjcmlwdGlvbihu
YW1lKSksIGRpY3Rpb25hcnkpOworICAgICAgICBtZXNzYWdlc09iamVjdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGRlc2NyaXB0aW9uKG5hbWUpKSwgZGlj
dGlvbmFyeSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMTQwZWNhZGJhN2Y3Y2VhNjYw
YTExNzBhNTlhODE1ZTRlNzA2ZjVlNC4uNGUyZTliYTgyNWIwYmFiYjQ5N2MwZDk5ZmM4OTVjNWQw
MDM1N2FhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KQEAgLTM0NDIsNyArMzQ0Miw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbigp
CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNUZWxlcGhvbmVGaWVsZCgpKQogICAgICAgICAg
ICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6OlBob25lOwogICAgICAgICBl
bHNlIGlmIChlbGVtZW50LmlzTnVtYmVyRmllbGQoKSkKLSAgICAgICAgICAgIGluZm9ybWF0aW9u
LmVsZW1lbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoInBhdHRlcm4iKSA9PSAiXFxkKiIg
fHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoInBhdHRlcm4iKSA9PSAiWzAtOV0qIiA/IElucHV0VHlw
ZTo6TnVtYmVyUGFkIDogSW5wdXRUeXBlOjpOdW1iZXI7CisgICAgICAgICAgICBpbmZvcm1hdGlv
bi5lbGVtZW50VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6cGF0dGVybkF0
dHIpID09ICJcXGQqIiB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnBhdHRlcm5B
dHRyKSA9PSAiWzAtOV0qIiA/IElucHV0VHlwZTo6TnVtYmVyUGFkIDogSW5wdXRUeXBlOjpOdW1i
ZXI7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNEYXRlVGltZUxvY2FsRmllbGQoKSkKICAg
ICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpEYXRlVGltZUxv
Y2FsOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzRGF0ZUZpZWxkKCkpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDY3Y2ViOWJhMWEyNjVj
Yzk1MzdmYTBmMDgyZjBhOWM4MTQ3NjAxMi4uMDI1YmIwNTE1ZDZjYThiZDU0ZWM5ZmE3ZDY1NjVm
NGE0MTZjZjk5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTA0LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRo
IEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0
b21TdHJpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisKIDIwMjItMDQtMTEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgaU9TIGlQaG9uZSAxMiBdIGZhc3QvaGlkcGkgJiBmYXN0L2xheWVycy9oaWRwaSB0ZXN0
cyBhcmUgZmxha3kgdGV4dC9pbWFnZSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0F0b21TdHJpbmcuY3BwCmluZGV4IGJlNzQxNTRlMzg4YmE3YzU2NDYxZWM5NmJhNzAw
M2UxZDkyYjY4ZWEuLjAzZjE5YjA0MTMyZTViNTBjM2Q4NGZmZmVlODdhNmFhNThlYzliZGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIFRFU1QoV1RGLCBBdG9tU3RyaW5nQ3JlYXRpb25Gcm9tTGl0ZXJhbFVuaXF1ZW5l
c3MpCiAgICAgQXRvbVN0cmluZyBzdHJpbmcyKCJUZW1wbGF0ZSBMaXRlcmFsIiwgQXRvbVN0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIEFTU0VSVF9FUShzdHJpbmcxLmltcGwoKSwg
c3RyaW5nMi5pbXBsKCkpOwogCi0gICAgQXRvbVN0cmluZyBzdHJpbmczKCJUZW1wbGF0ZSBMaXRl
cmFsIik7CisgICAgQXRvbVN0cmluZyBzdHJpbmczKCJUZW1wbGF0ZSBMaXRlcmFsIl9zKTsKICAg
ICBBU1NFUlRfRVEoc3RyaW5nMS5pbXBsKCksIHN0cmluZzMuaW1wbCgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKaW5kZXgg
YjQ0MmU0MzY4YzAzZGI3YmE2MzBjN2FlYTJhOTgzNWQzNDhiNDRiOC4uMDJiNjE2NGJkNTllOWYy
MWZkNGNmODc5NmY4ZmNiNDlmZTZiYmVmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV1RGLCBTdHJpbmdPcGVyYXRvcnMpCiB7CiAgICAgU3Ry
aW5nIHN0cmluZygiU3RyaW5nIl9zKTsKLSAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcoIkF0b21T
dHJpbmciKTsKKyAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcoIkF0b21TdHJpbmciX3MpOwogICAg
IEFTQ0lJTGl0ZXJhbCBsaXRlcmFsIHsgIkFTQ0lJTGl0ZXJhbCJfcyB9OwogCiAgICAgU3RyaW5n
IHN0cmluZ1ZpZXdCYWNraW5nIHsgIlN0cmluZ1ZpZXciX3MgfTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKaW5kZXggYmNmMDMyOTU1YmUyZWJkZmZlNjkzZDhhOGJiZDgyYmY5NDJmOWQ5OS4uMzgwZjM0
MGIxYTQzMWYyNDcyYzAyYTExYjk1OGE4YmRhNjkyZjA3NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKIHsKICAgICBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
VGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBk
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RG
TW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC05NCw3ICs5NCw3IEBA
IFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0
UnVuSW5SVEwpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFu
Y2VJblJUTCkKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAg
IGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRP
bmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODAp
OwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQu
dXBkYXRlKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVy
VGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQogewogICAgIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJM
dWNpZGFHcmFuZGUiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5k
ZSJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2Fz
Y2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAt
MTgxLDcgKzE4MSw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFs
QWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVz
dCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIik7
CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFHcmFuZGUiX3MpOwogICAgIGRl
c2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZN
b3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTIxOCw3ICsyMTgsNyBA
QCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikK
IFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMTm9P
cmlnaW5zKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAg
ZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg0OCk7
CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51
cGRhdGUoKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVy
VGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKIFRFU1RfRihDb21wbGV4VGV4dENv
bnRyb2xsZXJUZXN0LCBMZWZ0RXhwYW5zaW9uKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOwor
ICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZSg0OCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2Ny
aXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBURVNUX0Yo
Q29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lvbikKIFRFU1RfRihDb21wbGV4
VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQogewogICAgIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJU
aW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRl
c2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg0OCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZN
b3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTMzOCw3ICszMzgsNyBA
QCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVydGljYWxBZHZhbmNlcykKIFRF
U1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0aEp1c3RpZmljYXRp
b24pCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFt
aWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAg
ICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0
ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Jp
ZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKaW5k
ZXggMmYyOGQ0ZTY2NTMzMGZjNjg2M2U0MWUwN2VkN2JjN2JkYjBlNDQ2NC4uNDA2ZDA4NzNhZGY5
ZDZiMzFlMWJhYWU4Yzc1YTBkN2RlNzRhZDI0YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFRFU1QoQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0KQogICAgIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQgY3R4KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0KTsKIAogICAgIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5
KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAg
IGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9udChX
VEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsK
</data>
<flag name="commit-queue"
          id="485933"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457377</attachid>
            <date>2022-04-12 12:46:31 -0700</date>
            <delta_ts>2022-04-12 14:37:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412124630.patch</filename>
            <type>text/plain</type>
            <size>117471</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uZjM4NzcxMTIxN2YwZjNlMDFh
ZjI3MTM3ZTcwYmIzNTE3OTRkMmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KEF0b21TdHJpbmc6OmZyb21MYXRpbjEoIiIpKTsKIAogICAgICAgICAvLyBXaGVu
IHN0YXJ0aW5nIFdlYlRocmVhZCB2aWEgU3RhcnRXZWJUaHJlYWQgZnVuY3Rpb24sIHdlIGhhdmUg
c3BlY2lhbCBwZXJpb2QgYmV0d2VlbiB0aGUgcHJvbG9ndWUgb2YgU3RhcnRXZWJUaHJlYWQgYW5k
IHNwYXduaW5nIFdlYlRocmVhZCBhY3R1YWxseS4KICAgICAgICAgLy8gSW4gdGhpcyBwZXJpb2Qs
IGBpc01haW5UaHJlYWQoKWAgcmV0dXJucyBmYWxzZSBldmVuIGlmIHRoaXMgaXMgY2FsbGVkIG9u
IHRoZSBtYWluIHRocmVhZCBzaW5jZSBXZWJUaHJlYWQgaXMgbm93IGVuYWJsZWQgYW5kIHdlIGFy
ZSBub3QgdGFraW5nIGEgV2ViVGhyZWFkIGxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmlu
ZGV4IDM1MDYzOWRjNWQ2ZmEyODMxNzRlNWMxNDYxYjdkNDVjYjQyMDU3NTkuLjA2OWFmNmQzMjU5
ZDMyYjI0Yzk1YTI1NDAzYWEzZmFjMGQ4MGI1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
CkBAIC0zOSwxMSArMzksMTIgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZygpOwogICAgIEF0
b21TdHJpbmcoY29uc3QgTENoYXIqKTsKLSAgICBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAg
ICBBdG9tU3RyaW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3Ry
aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0
IFVDaGFyKik7CiAKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3RyaW5nIGZyb21MYXRp
bjEoY29uc3QgY2hhciogY2hhcmFjdGVycykgeyByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJz
KTsgfQorCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGV4cGxpY2l0
IEF0b21TdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGNoYXJhY3Rl
cnMpCiAgICAgICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZChjaGFyYWN0ZXJzLmRh
dGEoKSwgY2hhcmFjdGVycy5zaXplKCkpKQpAQCAtMTY3LDYgKzE2OCw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgorICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOworCiAgICAgZW51
bSBjbGFzcyBDYXNlQ29udmVydFR5cGUgeyBVcHBlciwgTG93ZXIgfTsKICAgICB0ZW1wbGF0ZTxD
YXNlQ29udmVydFR5cGU+IEF0b21TdHJpbmcgY29udmVydEFTQ0lJQ2FzZSgpIGNvbnN0OwogCkBA
IC0xODAsNiArMTgzLDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykgPT0gc2l6
ZW9mKFN0cmluZyksICJBdG9tU3RyaW5nIGFuZCBTdHJpbmcgbXVzdAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVy
biBhLmltcGwoKSA9PSBiLmltcGwoKTsgfQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3Ry
aW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBXVEY6OmVxdWFsKGEuaW1wbCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF0b21TdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBiKSB7IHJldHVybiBXVEY6OmVxdWFs
KGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBW
ZWN0b3I8VUNoYXI+JiBiKSB7IHJldHVybiBhLmltcGwoKSAmJiBlcXVhbChhLmltcGwoKSwgYi5k
YXRhKCksIGIuc2l6ZSgpKTsgfSAgICAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRv
bVN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5p
bXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBB
dG9tU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KQEAgLTE5Miw2ICsxOTYsNyBAQCBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsg
cmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3Ry
aW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBs
KCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0
IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShi
ID09IGEpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0ZXJhbCBhLCBjb25zdCBB
dG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwo
YS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0
b3I8VUNoYXI+JiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggOGNkYmNhNzdhZjM4MzA3YjJiNGMwYTRkMjVhMWYw
ZTkxMWFiYjFkZS4uNjI0OTJhOTA2MDU0YjVkMmNmOGU1OTIxYmI5YzQ4ZWY3M2YzNGE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwCkBAIC0yMjYsOSArMjI2LDkgQEAgSW5pdERhdGFSZWdpc3RyeSYg
SW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkKIAogSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFS
ZWdpc3RyeSgpCiB7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyIsIHsgc2FuaXRp
emVLZXlpZHMsIGV4dHJhY3RLZXlJRHNLZXlpZHMgfSk7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5
cGUoImNlbmMiLCB7IHNhbml0aXplQ2VuYywgZXh0cmFjdEtleUlEc0NlbmMgfSk7Ci0gICAgcmVn
aXN0ZXJJbml0RGF0YVR5cGUoIndlYm0iLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dl
Yk0gfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyJfcywgeyBzYW5pdGl6ZUtl
eWlkcywgZXh0cmFjdEtleUlEc0tleWlkcyB9KTsKKyAgICByZWdpc3RlckluaXREYXRhVHlwZSgi
Y2VuYyJfcywgeyBzYW5pdGl6ZUNlbmMsIGV4dHJhY3RLZXlJRHNDZW5jIH0pOworICAgIHJlZ2lz
dGVySW5pdERhdGFUeXBlKCJ3ZWJtIl9zLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dl
Yk0gfSk7CiB9CiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYTZkMzEwMmM4ODJhNjA5OGY0NzkyYjdiY2Qw
NmJhMjZkNDI4N2Q4YS4uMDA1MGRlMTZjMGNiZDdmMDY1NzY5YmM1ODI2NGI2MTE2OGVkY2Q5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNzg2LDcgKzE3ODYsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdAogICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBkb3duY2FzdDxFbGVtZW50
Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSJfcyA6
ICJmYWxzZSJfcyk7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBjYjJh
ZjFmNjZiZjQxZTU2ZDAwMmZlZjAwMGZlMTEwZDMyMDQzM2QxLi5jZGE0MDFlYjBmNWM0YzBmNzBm
ZWI2MTA4OTNjZjE0ZGYwNWYyYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgpAQCAtMTQ3
NCw3ICsxNDc1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpjb21taXRTdHls
ZXMoKQogCiAgICAgYXV0byBjb21wdXRlZFN0eWxlRXh0cmFjdG9yID0gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcigmc3R5bGVkRWxlbWVudCk7CiAgICAgYXV0byBpbmxpbmVTdHlsZSA9IHN0eWxlZEVs
ZW1lbnQuZG9jdW1lbnQoKS5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgaW5saW5l
U3R5bGUtPnNldENzc1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpOwor
ICAgIGlubGluZVN0eWxlLT5zZXRDc3NUZXh0KHN0eWxlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6c3R5bGVBdHRyKSk7CiAKICAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0gc3R5bGVk
RWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKTsKICAgICAv
LyBEdXJpbmcgaXRlcmF0aW9uIHJlc29sdmUoKSBjb3VsZCBjbGVhciB0aGUgdW5kZXJseWluZyBw
cm9wZXJ0aWVzIHNvIHdlIHVzZSBhIGNvcHkKQEAgLTE1MDcsNyArMTUwOCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlubGlu
ZVN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBjc3NWYWx1ZS0+Y3NzVGV4dCgp
LCBmYWxzZSk7CiAgICAgfQogCi0gICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxl
IiwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIGlubGluZVN0eWxlLT5jc3NUZXh0KCkpOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElu
bGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAppbmRleCA3YzFl
ZjdjNjNjNGMzNTc3ZDE5ZWVlYTM5ZmYyYWEwMzg2ZjhiZTllLi4xZmU4NjAzOTQ4OTU2MDhjNjg4
YTQzMWNiMTBjYTEzMTNhYzc5ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5o
CkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBQQUw6OlRleHRFbmNvZGluZyBEb2N1bWVudDo6dGV4
dEVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gUEFMOjpUZXh0RW5jb2RpbmcoKTsKIH0KIAot
aW5saW5lIEF0b21TdHJpbmcgRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gdGV4
dEVuY29kaW5nKCkuZG9tTmFtZSgpOyB9CitpbmxpbmUgQXRvbVN0cmluZyBEb2N1bWVudDo6ZW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHRleHRFbmNvZGlu
ZygpLmRvbU5hbWUoKSk7IH0KIAogaW5saW5lIFN0cmluZyBEb2N1bWVudDo6Y2hhcnNldCgpIGNv
bnN0IHsgcmV0dXJuIERvY3VtZW50OjplbmNvZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBlMDBjMWY5YTg5NTRlZTBiOGNiYzFkODJkMzBiNjAxZGZlMTM5YmVjLi5lZmY4MGI1
NWYxNzUzNDNkMjkxMWJiN2YxMWQ0NTBlYjNlOTMwZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0zMjI0LDcgKzMyMjQsNyBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQogdm9pZCBFbGVtZW50OjpkaXNwYXRj
aFdlYktpdEltYWdlUmVhZHlFdmVudEZvclRlc3RpbmcoKQogewogICAgIGlmIChkb2N1bWVudCgp
LnNldHRpbmdzKCkud2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIEV2ZW50OjpD
YW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5Il9zLCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwogfQogCiBib29sIEVs
ZW1lbnQ6OmRpc3BhdGNoTW91c2VGb3JjZVdpbGxCZWdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRv
RWxlbWVudC5jcHAKaW5kZXggNDEzZTM0NjcyZWI2NzU2ZDg5YTBmZTRhZmQ2N2Y5ZWE2YzY4YmM1
Yy4uMzZjODk3N2IxNmI0NWYzYTg3ZWVkOTNjOGFlNGI0NmQ1NTY5NmI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoUHNldWRvRWxlbWVudCk7CiAKIGNvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVk
b0VsZW1lbnRUYWdOYW1lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVkbz4iLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVk
bz4iX3MsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmNwcAppbmRleCA3ZDlkNTliZTFjMTUyZjA5ODVmNWY1MThiYjlmY2NlNTZmODdi
YzlhLi44MGZmZDFlYzNmODIwZjE2NjcyYWIxOGI2NDI1MDQzYjliZjRiZjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgUmVmPEVsZW1l
bnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4
dE5vZGUpCiAgICAgYXV0byBzcGFuRWxlbWVudCA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKIAogICAgIHNwYW5FbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGNsYXNzQXR0ciwgQXBwbGVUYWJTcGFuQ2xhc3MpOwotICAgIHNwYW5FbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6cHJlIik7CisgICAgc3BhbkVsZW1l
bnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTpwcmUiX3MpOwogCiAgICAg
c3BhbkVsZW1lbnQtPmFwcGVuZENoaWxkKHRhYlRleHROb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IGI4MDMzMWIyOGYwN2NmNTQ2ZWUxMWM1YmEwZmMxYzNhOWRmYzk4OWUu
Ljk3NDc4OGEzYjNhYTgxM2VmMDFlMmQyMWJiMjc5MjJjMjBmYjdkY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTExNzgsNyArMTE3OCw3IEBAIHZvaWQgRWRpdG9yOjphcHBsaWVk
RWRpdGluZyhDb21wb3NpdGVFZGl0Q29tbWFuZCYgY29tbWFuZCkKIAogYm9vbCBFZGl0b3I6Ondp
bGxVbmFwcGx5RWRpdGluZyhjb25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlv
bikgY29uc3QKIHsKLSAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hC
ZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQo
KSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8i
X3MpOwogfQogCiB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBv
c2l0aW9uJiBjb21wb3NpdGlvbikKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgRWRpdG9yOjp1
bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uc3RhcnRpbmdTZWxl
Y3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwg
RnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkpOwotICAgIGRpc3Bh
dGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCks
IGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlVbmRvIik7
CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJs
ZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlz
dG9yeVVuZG8iX3MpOwogCiAgICAgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOwogCkBA
IC0xMjAzLDcgKzEyMDMsNyBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29t
bWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKIAogYm9vbCBFZGl0b3I6OndpbGxSZWFwcGx5
RWRpdGluZyhjb25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikgY29uc3QK
IHsKLSAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFy
dGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxl
RWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1
dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9z
aXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogfQog
CiB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBj
b21wb3NpdGlvbikKQEAgLTEyMTQsNyArMTIxNCw3IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRF
ZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uZW5kaW5nU2VsZWN0aW9uKCkpOwog
ICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0
aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpKTsKLSAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyIpOworICAgIGRpc3Bh
dGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCks
IGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlSZWRvIl9z
KTsKICAgICAKICAgICB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTE1NTAs
OCArMTU1MCw4IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUZvbnQoRnJvbU1lbnVPcktleUJpbmRpbmcg
ZnJvbU1lbnVPcktleUJpbmRpbmcpCiB2b2lkIEVkaXRvcjo6cXVvdGVGcmFnbWVudEZvclBhc3Rp
bmcoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpCiB7CiAgICAgYXV0byBibG9ja1F1b3RlID0g
SFRNTFF1b3RlRWxlbWVudDo6Y3JlYXRlKGJsb2NrcXVvdGVUYWcsIGRvY3VtZW50KCkpOwotICAg
IGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIs
IEF0b21TdHJpbmcoImNpdGUiKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIsIEF0b21TdHJpbmcoQXBwbGVQYXN0ZUFzUXVvdGF0
aW9uKSk7CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bih0eXBlQXR0ciwgImNpdGUiX3MpOworICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBsZVBhc3RlQXNRdW90YXRpb24pOwogCiAg
ICAgYXV0byBjaGlsZE5vZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCmluZGV4IGQ0YzUwNWM4YTY3MmIyZTA4Y2U4NTgz
MGRhNTllMDlmMDE0MTYxMWIuLjViNmYzNzA4OWNlZWQ1OTY2ZTI1MmNlNGI0MDQxMWVkNzA3MTAx
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaApAQCAtMzMsMTAg
KzMzLDEwIEBAIGNsYXNzIFRleHQ7CiAKICNkZWZpbmUgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUg
ICAiQXBwbGUtaW50ZXJjaGFuZ2UtbmV3bGluZSIKICNkZWZpbmUgQXBwbGVDb252ZXJ0ZWRTcGFj
ZSAgICAgICAiQXBwbGUtY29udmVydGVkLXNwYWNlIgotI2RlZmluZSBBcHBsZVBhc3RlQXNRdW90
YXRpb24gICAgICJBcHBsZS1wYXN0ZS1hcy1xdW90YXRpb24iCi0jZGVmaW5lIEFwcGxlU3R5bGVT
cGFuQ2xhc3MgICAgICAgIkFwcGxlLXN0eWxlLXNwYW4iCi0jZGVmaW5lIEFwcGxlVGFiU3BhbkNs
YXNzICAgICAgICAgIkFwcGxlLXRhYi1zcGFuIgotI2RlZmluZSBXZWJLaXRNU09MaXN0UXVpcmtz
U3R5bGUgICJXZWJLaXQtbXNvLWxpc3QtcXVpcmtzLXN0eWxlIgorI2RlZmluZSBBcHBsZVBhc3Rl
QXNRdW90YXRpb24gICAgICJBcHBsZS1wYXN0ZS1hcy1xdW90YXRpb24iX3MKKyNkZWZpbmUgQXBw
bGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUtc3R5bGUtc3BhbiJfcworI2RlZmluZSBBcHBs
ZVRhYlNwYW5DbGFzcyAgICAgICAgICJBcHBsZS10YWItc3BhbiJfcworI2RlZmluZSBXZWJLaXRN
U09MaXN0UXVpcmtzU3R5bGUgICJXZWJLaXQtbXNvLWxpc3QtcXVpcmtzLXN0eWxlIl9zCiAKIC8v
IENvbnRyb2xzIHdoZXRoZXIgYSBzcGVjaWFsIEJSIHdoaWNoIGlzIHJlbW92ZWQgdXBvbiBwYXN0
ZSBpbiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZCBuZWVkcyB0byBiZSBpbnNlcnRlZAogLy8gYW5k
IG1ha2luZyBzZXF1ZW5jZSBvZiBzcGFjZXMgbm90IGNvbGxhcHNpYmxlIGJ5IGluc2VydGluZyBu
b24tYnJlYWtpbmcgc3BhY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91
dGRlbnRDb21tYW5kLmNwcAppbmRleCAzYzQ2MTQzYTc4MWMzNmVjNzk0ZWY3ZTcxYjUyODI1MWI4
MTA5ZTA2Li4xN2E0ODcwOGUyYmY4OWU1MmJjZjdmMmNkODFlNjZhYjA3ZThmNjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgYm9vbCBpc0xpc3RPckluZGVudEJsb2NrcXVvdGUoY29uc3QgTm9k
ZSogbm9kZSkKIH0KIAogSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5k
KERvY3VtZW50JiBkb2N1bWVudCwgRUluZGVudFR5cGUgdHlwZU9mQWN0aW9uKQotICAgIDogQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kKGRvY3VtZW50LCBibG9ja3F1b3RlVGFnLCAibWFyZ2luOiAw
IDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiKQorICAgIDogQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kKGRvY3VtZW50LCBibG9ja3F1b3RlVGFnLCAibWFyZ2luOiAwIDAgMCA0
MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiX3MpCiAgICAgLCBtX3R5cGVPZkFjdGlv
bih0eXBlT2ZBY3Rpb24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KaW5kZXggNGEzMjZlNjY4ODA5NDBmYjUzNDg1ZjkzYTEzMzk5ZDAyYTZj
YTI2OC4uZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2YxZDZhYTAyODU5YjRkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTk1LDcgKzU5
NSw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiBjb250ZXh0UmFuZ2UsIE9wCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJlZjxIVE1MQW5jaG9yRWxlbWVudD4gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihj
b3JyZXNwb25kaW5nVVJMKTsKLSAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldERpcigibHRy
Iik7CisgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXREaXIoImx0ciJfcyk7CiAKICAgICAg
ICAgICAgIGlmIChzaG91bGRVc2VMaWdodExpbmtzKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4
IDJkOGY4YjMzNTkzMGQwN2RkMzMyNmI4MTA2NWYyZDRmZDgzNWFjYWUuLjdlNTk1MmI3YTk2Mjg3
MDcwZTgwMzc5OGQ1OWQ4ZmMyZjdiMzliOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
QEAgLTExNzQsNyArMTE3NCw3IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTCiAKICAgICBhdXRv
IGNyZWF0ZUhUTUxCUkVsZW1lbnQgPSBbJmRvY3VtZW50XSgpIHsKICAgICAgICAgYXV0byBlbGVt
ZW50ID0gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgZWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIsIEFwcGxlSW50ZXJj
aGFuZ2VOZXdsaW5lKTsKKyAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihjbGFzc0F0dHIsIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUpKTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggNTA0OTVjMTdiOWNhOTc5MjAz
ZWY5ODRiZjI4MTYzNGU1MjBmYWU0Yy4uYThjMDAzMjI5ZTQzMThiODc3NWU3MjY1OGIxMmFlYTA2
MzMwMDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgc3JjKQogewogICAgIGF1dG8gZWxlbWVu
dCA9IGNyZWF0ZShhdWRpb1RhZywgZG9jdW1lbnQsIGZhbHNlKTsKLSAgICBlbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCAiYXV0byIpOworICAg
IGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIs
ICJhdXRvIl9zKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHNyY0F0dHIsIHNyYyk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggYmY1NDMyYWYzMTZlNWE3NGFmMmFk
MjczZjExNTI2ZTRkYjQ1YjJjYi4uNjhiYzIzOGViZDkxYTQxN2JjYmQ4Yzk1ODY1YzczNTU5YmZk
NWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAt
NDcsNyArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgc3VtbWFyeVNsb3ROYW1lKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1bW1hcnlTbG90KCJzdW1tYXJ5U2xvdCIp
OworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
c3VtbWFyeVNsb3QoInN1bW1hcnlTbG90Il9zKTsKICAgICByZXR1cm4gc3VtbWFyeVNsb3Q7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMWIzNmQ1YjM2ZjAwMWFkMDdl
OWU2YWEwMjg2ODE2MjcyMjQ2NGQzMC4uNmIxZDhkM2MxZDEwM2E1ZjAyYjgwMzIwM2ZlZmQ4MGIw
NmNkMGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTY5Niw3ICs2OTYs
NyBAQCBib29sIEhUTUxFbGVtZW50Ojp0cmFuc2xhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVt
ZW50OjpzZXRUcmFuc2xhdGUoYm9vbCBlbmFibGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIiA6ICJubyIpOwor
ICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHJhbnNsYXRlQXR0ciwgZW5h
YmxlID8gInllcyJfcyA6ICJubyJfcyk7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVy
SXNFdmVyTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDIwOWI2ODIzOTYzOTlmZTgwNjliOTRjODIxOWVlNDM4NjFmMDFhNzIuLmJhYjUxMTFkMjZl
YTkwOWE3ZjVjMGQ2MzdiNzUyODk3ZGNkMjVlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMjY3MCw3ICsyNjcwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpCiB7CiAgICAgaWYgKCFtX3Bs
YXllcikKICAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBoYXNFdmVu
dExpc3RlbmVycygid2Via2l0bmVlZGtleSIpIHx8IChkb2N1bWVudCgpLnNldHRpbmdzKCkuZW5j
cnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2Vu
RW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgYm9vbCBzaG91bGRDb250aW51
ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpIHx8
IChkb2N1bWVudCgpLnNldHRpbmdzKCkuZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRv
Y3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmso
KSk7CiAgICAgbV9wbGF5ZXItPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxk
Q29udGludWUpOwogfQogI2VuZGlmCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCiAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFB
UElFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGFzRXZlbnRMaXN0ZW5l
cnMoIndlYmtpdG5lZWRrZXkiKQorICAgIGlmICghaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1l
cygpLndlYmtpdG5lZWRrZXlFdmVudCkKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
ICAgICAvLyBPbmx5IGZpcmUgYW4gZXJyb3IgaWYgRU5DUllQVEVEX01FRElBIGlzIG5vdCBlbmFi
bGVkLCB0byBnaXZlIGNsaWVudHMgb2YgdGhlCiAgICAgICAgIC8vICJlbmNyeXB0ZWQiIGV2ZW50
IGEgY2hhbmNlIHRvIGhhbmRsZSBpdCB3aXRob3V0IHJlc3VsdGluZyBpbiBhIHN5bnRoZXRpYyBl
cnJvci4KQEAgLTQ3MDUsNyArNDcwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bGF5b3V0
U2l6ZUNoYW5nZWQoKQogewogICAgIGF1dG8gdGFzayA9IFt0aGlzXSB7CiAgICAgICAgIGlmIChh
dXRvIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkpCi0gICAgICAgICAgICByb290LT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoInJlc2l6ZSIsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfTsKICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgV1RGTW92
ZSh0YXNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4
IDhjZWI4OGEzYjEwN2JkZjY0OWE1ZjIyYTAwYTgyZTk0MjRjZTJlYTcuLmJkNDRlMmQwMjhhNzAw
ODg2MzZmZjI2NjA2Mzc3ZWJlZGRmOTc3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgc3RhdGljIHZvaWQgc2V0VmFsdWVD
bGFzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb24g
Z2EKIHsKICAgICBzd2l0Y2ggKGdhdWdlUmVnaW9uKSB7CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVt
ZW50OjpHYXVnZVJlZ2lvbk9wdGltdW06Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6Y2xhc3NBdHRyLCAib3B0aW11bSIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgIm9wdGltdW0iX3MpOwogICAgICAgICBlbGVtZW50
LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyT3B0aW11bVZhbHVlKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvblN1
Ym9wdGltYWw6Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAic3Vib3B0aW11bSIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgInN1Ym9wdGltdW0iX3MpOwogICAgICAgICBlbGVtZW50LnNldFBzZXVk
byhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyU3Vib3B0aW11bVZhbHVlKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbkV2ZW5MZXNz
R29vZDoKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIs
ICJldmVuLWxlc3MtZ29vZCIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgImV2ZW4tbGVzcy1nb29kIl9zKTsKICAgICAgICAgZWxlbWVudC5zZXRQ
c2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTIzNCwxNyArMjM0LDE3IEBAIHZvaWQg
SFRNTE1ldGVyRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JiBy
b290KQogCiAgICAgLy8gUHNldWRvcyBhcmUgc2V0IHRvIGFsbG93IGF1dGhvciBzdHlsaW5nLgog
ICAgIGF1dG8gaW5uZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAg
IGlubmVyLT5zZXRJZEF0dHJpYnV0ZSgiaW5uZXIiKTsKKyAgICBpbm5lci0+c2V0SWRBdHRyaWJ1
dGUoImlubmVyIl9zKTsKICAgICBpbm5lci0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJJbm5lckVsZW1lbnQoKSk7CiAgICAgcm9vdC5hcHBlbmRDaGlsZChpbm5lcik7CiAK
ICAgICBhdXRvIGJhciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAg
YmFyLT5zZXRJZEF0dHJpYnV0ZSgiYmFyIik7CisgICAgYmFyLT5zZXRJZEF0dHJpYnV0ZSgiYmFy
Il9zKTsKICAgICBiYXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyQmFy
KCkpOwogICAgIGlubmVyLT5hcHBlbmRDaGlsZChiYXIpOwogCiAgICAgbV92YWx1ZSA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgbV92YWx1ZS0+c2V0SWRBdHRyaWJ1
dGUoInZhbHVlIik7CisgICAgbV92YWx1ZS0+c2V0SWRBdHRyaWJ1dGUoInZhbHVlIl9zKTsKICAg
ICBiYXItPmFwcGVuZENoaWxkKCptX3ZhbHVlKTsKIAogICAgIGRpZEVsZW1lbnRTdGF0ZUNoYW5n
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggODA0MWVhNDJjM2Jh
Nzk1NTc1ZjNhMDJiNWUyNjM5YjU3ZWE0NDA0NS4uMzk2ZjlkYzk2ODgxMDM2MTk2NGFkMjhlZTI4
ZjliNTBiNWRjMThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0y
MzAsMTYgKzIzMCwxNiBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0
dXJlKCkKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoaGVhZCk7CiAKICAgICBhdXRvIGJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgYm9keS0+c2V0QXR0cmli
dXRlKHN0eWxlQXR0ciwgIm1hcmdpbjogMHB4Iik7CisgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0
eWxlQXR0ciwgIm1hcmdpbjogMHB4Il9zKTsKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZNSU1FVHlwZShkb2N1bWVudCgpLmxvYWRlcigpLT5yZXNwb25zZU1JTUVUeXBlKCkpKQogICAg
ICAgICBib2R5LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAid2hpdGUiX3MpOwogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5KTsKICAg
ICAKICAgICBhdXRvIGltYWdlRWxlbWVudCA9IEltYWdlRG9jdW1lbnRFbGVtZW50OjpjcmVhdGUo
KnRoaXMpOwogICAgIGlmIChtX3Nob3VsZFNocmlua0ltYWdlKQotICAgICAgICBpbWFnZUVsZW1l
bnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IGRp
c3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvOyBwYWRkaW5nOmVudihzYWZlLWFyZWEtaW5zZXQtdG9w
KSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkg
ZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRB
dHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBkaXNwbGF5OmJs
b2NrOyBtYXJnaW46YXV0bzsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNh
ZmUtYXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZl
LWFyZWEtaW5zZXQtbGVmdCk7Il9zKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlRWxlbWVudC0+
c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgcGFkZGlu
ZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkgZW52
KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7Iik7Cisg
ICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNl
ci1zZWxlY3Q6bm9uZTsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNhZmUt
YXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZlLWFy
ZWEtaW5zZXQtbGVmdCk7Il9zKTsKICAgICBpbWFnZUVsZW1lbnQtPnNldExvYWRNYW51YWxseSh0
cnVlKTsKICAgICBpbWFnZUVsZW1lbnQtPnNldFNyYyh1cmwoKS5zdHJpbmcoKSk7CiAgICAgaW1h
Z2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5zZXRSZXNwb25zZShsb2FkZXIoKS0+cmVzcG9uc2Uo
KSk7CkBAIC0yNTMsOCArMjUzLDggQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVu
dFN0cnVjdHVyZSgpCiAjZWxzZQogICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VFdmVudExp
c3RlbmVyOjpjcmVhdGUoKnRoaXMpOwogICAgICAgICBpZiAoUmVmUHRyPERPTVdpbmRvdz4gd2lu
ZG93ID0gdGhpcy0+ZG9tV2luZG93KCkpCi0gICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlz
dGVuZXIoInJlc2l6ZSIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwotICAgICAgICBpbWFn
ZUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV1RGTW92ZShsaXN0ZW5lciksIGZh
bHNlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
cmVzaXplRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICBpbWFnZUVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIFdURk1vdmUo
bGlzdGVuZXIpLCBmYWxzZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1
bWVudC5jcHAKaW5kZXggNGUxOTQ2MTZlY2UyNTNjOTQxMjRjZmJlNzI0NThhYmJiZDg1M2IwZC4u
NTlkZmIwMjEyODY1MDBjNTVlN2IyYmQ1OTVjZDg0MzdjZDE2OGU0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9QREZEb2N1bWVudC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFBERkRvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgLy8gRGVzY3JpcHRpb24gb2YgcGFyYW1ldGVy
czoKICAgICAvLyAtIGAjcGFnZW1vZGU9bm9uZWAgcHJldmVudHMgdGhlIHNpZGViYXIgZnJvbSBz
aG93aW5nIG9uIGxvYWQuCiAgICAgLy8gLSBFbXB0eSBgP2ZpbGU9YCBwYXJhbWV0ZXIgcHJldmVu
dHMgZGVmYXVsdCBwZGYgZnJvbSBsb2FkaW5nLgotICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtp
dC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0jcGFnZW1vZGU9bm9u
ZSI7CisgICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL3dl
Yi92aWV3ZXIuaHRtbD9maWxlPSNwYWdlbW9kZT1ub25lIl9zOwogICAgIGF1dG8gcm9vdEVsZW1l
bnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9v
dEVsZW1lbnQpOwogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CkBAIC0xNjEs
NyArMTYxLDcgQEAgdm9pZCBQREZEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQog
ICAgIG1faWZyYW1lLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJ3aWR0aDog
MTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7IGRpc3BsYXk6IGJsb2NrOyIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBtX2xpc3RlbmVyID0gUERGRG9jdW1l
bnRFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIG1faWZyYW1lLT5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgKm1fbGlzdGVuZXIsIGZhbHNlKTsKKyAgICBtX2lmcmFtZS0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCAqbV9saXN0ZW5lciwgZmFsc2UpOwog
CiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoKm1faWZyYW1lKTsKIH0KQEAgLTIyMyw5ICsyMjMsOSBA
QCB2b2lkIFBERkRvY3VtZW50OjppbmplY3RTdHlsZUFuZENvbnRlbnRTY3JpcHQoKQogCiAgICAg
QVNTRVJUKGNvbnRlbnREb2N1bWVudC0+Ym9keSgpKTsKICAgICBhdXRvIHNjcmlwdCA9IEhUTUxT
Y3JpcHRFbGVtZW50OjpjcmVhdGUoc2NyaXB0VGFnLCAqY29udGVudERvY3VtZW50LCBmYWxzZSk7
Ci0gICAgc2NyaXB0LT5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgbV9saXN0ZW5lci5yZWxlYXNl
Tm9uTnVsbCgpLCBmYWxzZSk7CisgICAgc2NyaXB0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5sb2FkRXZlbnQsIG1fbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgZmFsc2UpOwogCi0g
ICAgc2NyaXB0LT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9w
ZGZqcy9leHRyYXMvY29udGVudC1zY3JpcHQuanMiKTsKKyAgICBzY3JpcHQtPnNldEF0dHJpYnV0
ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNj
cmlwdC5qcyJfcyk7CiAgICAgY29udGVudERvY3VtZW50LT5ib2R5KCktPmFwcGVuZENoaWxkKHNj
cmlwdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggZTAxZGYzOTI5MzZlODIwOWNl
YmQ0ZDY0ODRiZmZlMjhlMDQyYjRlYS4uMDAzYTkwMWUwNDNlMzdjOGUzYzA2NjhjNjMzNzI0MGY2
Y2RlNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UpOwogc3Rh
dGljIGNvbnN0ZXhwciBJbWFnZVNtb290aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxp
dHkgPSBJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKIAogY29uc3QgaW50IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OkRlZmF1bHRGb250U2l6ZSA9IDEwOwotY29uc3QgY2hhciogY29u
c3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6RGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fu
cy1zZXJpZiI7Citjb25zdCBBU0NJSUxpdGVyYWwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6RGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fucy1zZXJpZiJfczsKIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsIERlZmF1bHRGb250ID0gIjEwcHggc2Fucy1zZXJpZiJfczsKIAogc3RhdGlj
IENhbnZhc0xpbmVDYXAgdG9DYW52YXNMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuaAppbmRleCA0YTdhNDNhN2NmZmU4MjZhZjg0YjcwMTMyMDJmMmI5M2U0ODZkYjRhLi41
YmY1YjUzMzhhY2IyMDdjYjNiMTQ5MzA2ZWU4NDEwNzgwNjhmZWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oCkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGNvbnN0IGludCBEZWZhdWx0Rm9udFNpemU7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IERlZmF1bHRGb250RmFtaWx5OworICAgIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgRGVmYXVs
dEZvbnRGYW1pbHk7CiAKICAgICBjb25zdCBTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlU3RhY2subGFzdCgpOyB9CiAgICAgdm9pZCByZWFsaXplU2F2ZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGExZjE2N2Ni
MDgzYzk5ODQzNjE4MzQxMTgwMjlmMjg1ZTQxYzAwMDUuLmVkY2M2YWZkNmM2ZjAzOGI4NGM0ZTcx
ZjU3OGE2ODg4NDI3YzcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gY3Jl
YXRlCiAgICAgYWRkTmFtZXNXaXRoUHJlZml4KG1hcCwgeG1sQXRvbSgpLCBYTUxOYW1lczo6Z2V0
WE1MQXR0cnMoKSwgWE1MTmFtZXM6OlhNTEF0dHJzQ291bnQpOwogCiAgICAgbWFwLmFkZCh4bWxu
c0F0b20oKSwgWE1MTlNOYW1lczo6eG1sbnNBdHRyKTsKLSAgICBtYXAuYWRkKCJ4bWxuczp4bGlu
ayIsIFF1YWxpZmllZE5hbWUoeG1sbnNBdG9tKCksIHhsaW5rTmFtZSwgWE1MTlNOYW1lczo6eG1s
bnNOYW1lc3BhY2VVUkkpKTsKKyAgICBtYXAuYWRkKCJ4bWxuczp4bGluayJfcywgUXVhbGlmaWVk
TmFtZSh4bWxuc0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVS
SSkpOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDQ3MDZmMjZlODQ0MDllZTgxM2NkMTNi
YzVmNGUwYWNjZjY3NGE4NjcuLjc4ZTExZmMyYzEwOGQ3N2ZmOGMyYTkyYWE5MjVlZmM1MmU0Mzkx
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFy
c2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0
RmFrZVByZUVsZW1lbnQoKQogICAgIC8vIFdlIGNyZWF0ZSBhIGZha2UgdG9rZW4gYW5kIGdpdmUg
aXQgdG8gdGhlIHRyZWUgYnVpbGRlciByYXRoZXIgdGhhbgogICAgIC8vIHNlbmRpbmcgZmFrZSBi
eXRlcyB0aHJvdWdoIHRoZSBmcm9udC1lbmQgb2YgdGhlIHBhcnNlciB0byBhdm9pZAogICAgIC8v
IGRpc3RydWJpbmcgdGhlIGxpbmUvY29sdW1uIG51bWJlciBjYWxjdWxhdGlvbnMuCi0gICAgQXR0
cmlidXRlIGF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsiKTsKKyAgICBBdHRyaWJ1dGUgYXR0cmlidXRlKHN0eWxlQXR0ciwg
IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyJfcyk7CiAgICAg
QXRvbUhUTUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRhZy0+bG9jYWxO
YW1lKCksIHsgV1RGTW92ZShhdHRyaWJ1dGUpIH0pOwogICAgIHRyZWVCdWlsZGVyKCkuY29uc3Ry
dWN0VHJlZShXVEZNb3ZlKGZha2VQcmUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCmluZGV4IDg0OWNkNTk0YTdiOWEzOThiMGMzMWZhOTBmYzY3ZDdmNmQ2NzZhMmYu
LjEwZjRkMWRhZTBhOTkwMjViNWQ0MGYyMzhkZDU1ZWE2YzM2OWQ3MGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTg4LDEzICs4OCwxMyBAQCBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgZm9yY2VkS2V5d29yZCgpCiAKIFRleHRUcmFjayYgVGV4dFRyYWNrOjpj
YXB0aW9uTWVudU9mZkl0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIG9mZiA9IFRleHRU
cmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBpdGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5
QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOworICAgIHN0YXRpYyBUZXh0VHJhY2smIG9m
ZiA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBpdGVtIl9zLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIG9m
ZjsKIH0KIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgp
CiB7Ci0gICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGljID0gVGV4dFRyYWNrOjpjcmVhdGUo
bnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCks
IGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGlj
ID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iX3MsIGVt
cHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1
cm4gYXV0b21hdGljOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKaW5kZXggYmNmOGUxNzJhNjczMjBmNjY4ODEyMDc0NzlkZjdhODBhYmFjMTdlZS4uNzdj
NmExNjBiYTk1YmQ1YTI4NmM1ZGE3NDkzOTgzNWU1MWI5YWQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtNjcsMTMgKzY3LDEzIEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tDdWVCb3gpOwogCiBzdGF0aWMgY29uc3QgUXVh
bGlmaWVkTmFtZSYgY3VlQXR0cmlidXROYW1lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlVGFnKG51bGxBdG9tKCksICJjdWUiLCBudWxsQXRvbSgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlVGFnKG51bGxBdG9t
KCksICJjdWUiX3MsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBjdWVUYWc7CiB9CiAKIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlQmFja2dyb3VuZFRhZyhu
dWxsQXRvbSgpLCAiY3VlYmFja2dyb3VuZCIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVCYWNrZ3JvdW5kVGFnKG51bGxBdG9tKCksICJj
dWViYWNrZ3JvdW5kIl9zLCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gY3VlQmFja2dyb3VuZFRh
ZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5k
ZXggOTM2ZDI3YjNiMjczN2MwMDc2MTkzOTUyMjcxZTY4N2NiNWM0NjY1NS4uMThiMDZmMjhkYWM1
MDRhM2NlYjI1YWE5NzhhZjI4OTYwMjVkYzFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYlZUVEVsZW1lbnQpOwogCiBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbm9kZVR5cGVUb1RhZ05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20oKSwgImMiLCBu
dWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdlRh
ZyhudWxsQXRvbSgpLCAidiIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBsYW5nVGFnKG51bGxBdG9tKCksICJsYW5nIiwgbnVsbEF0b20oKSk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWcobnVsbEF0b20o
KSwgImIiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gdVRhZyhudWxsQXRvbSgpLCAidSIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBpVGFnKG51bGxBdG9tKCksICJpIiwgbnVsbEF0b20o
KSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHJ1YnlUYWcobnVs
bEF0b20oKSwgInJ1YnkiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gcnRUYWcobnVsbEF0b20oKSwgInJ0IiwgbnVsbEF0b20oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20oKSwgImMi
X3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1l
PiB2VGFnKG51bGxBdG9tKCksICJ2Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbGFuZ1RhZyhudWxsQXRvbSgpLCAibGFuZyJfcywgbnVs
bEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWco
bnVsbEF0b20oKSwgImIiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tKCksICJ1Il9zLCBudWxsQXRvbSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRhZyhudWxsQXRvbSgpLCAi
aSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IHJ1YnlUYWcobnVsbEF0b20oKSwgInJ1YnkiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRvbSgpLCAicnQiX3Ms
IG51bGxBdG9tKCkpOwogICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdlYlZUVE5v
ZGVUeXBlQ2xhc3M6CiAgICAgICAgIHJldHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCBkZWNiZTE3YWJiZjFkOWE0M2U0ODBkYzc4Y2Q3MjM4
NWViNjA5NzZkLi4xYzVjODVlMzJiMjg5NDVlNmUyZjAxMThjNzFhY2MyZjRjZDVlMjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtNjMsMTMgKzYzLDEz
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0dHJp
YnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmll
ZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAidm9pY2UiLCBudWxsQXRvbSgpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRv
bSgpLCAidm9pY2UiX3MsIG51bGxBdG9tKCkpOwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwog
ICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFuZ0F0dHJpYnV0
ZU5hbWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAibGFuZyIsIG51bGxBdG9tKCkpOworICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tKCks
ICJsYW5nIl9zLCBudWxsQXRvbSgpKTsKICAgICAgICAgcmV0dXJuIHZvaWNlQXR0cjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNmFhNjEyNmRkN2NhYzY4MDExN2Iy
NzdiNDRhNmMxODZlYzM3MDUzOC4uZmExODQ0YTZmZjFmZTVhYTUyOGFiMjU1Y2M4MWNjNDI2ZWVi
OWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBF
eGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6Q29tcHV0ZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZh
bnRUZXh0ID0gInRleHQiX3M7CiAKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZXMg
PSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygiYWxsIikpIHsKKyAgICAgICAgICAgICAgICBp
ZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiX3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpdmVS
ZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2YW50QWRkaXRpb25zKTsKICAgICAgICAgICAg
ICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChhcmlhUmVsZXZhbnRSZW1vdmFscyk7
CiAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2
YW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheUxhYmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5TGFiZWwuY3BwCmluZGV4IDczYWY4MzZlZjc0NmM2YmI4MDMzMjg3NDhjOGZlY2ViZGE2NzI1
ZmQuLmY2MTE0NzFhODVlM2ZlNjkzZGQ2ZjNhY2E2M2UyMDI0ODI2NTc4NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIEluc3BlY3Rvck92ZXJsYXlMYWJlbDo6SW5zcGVjdG9yT3ZlcmxheUxhYmVs
KGNvbnN0IFN0cmluZyYgdGV4dCwgRmxvYXRQb2ludCBsb2NhCiBzdGF0aWMgRm9udENhc2NhZGUg
c3lzdGVtRm9udCgpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVzKHsgInN5c3RlbS11aSIgfSk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVzKHsgInN5c3RlbS11aSJfcyB9KTsKICAgICBm
b250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKICAgICBm
b250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDE3YTI5N2I1YWIzNDRj
NmIyMTgwZGQwZmE5YTk0NDJmZGEzM2UzOTcuLjI2ZTE4ZWMwNGFhNmY3ZGFmM2M3YjQzM2E5NmIy
NjFiYjkwMjQ5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKQEAgLTE1OTMsNyArMTU5Myw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3Rv
clBhCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7CiAgICAgbV9pbnNwZWN0b3JT
dHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxp
bmVTdHlsZSgpLCB0aGlzKTsKLSAgICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+Z2V0QXR0cmli
dXRlKCJzdHlsZSIpLnN0cmluZygpOworICAgIG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpLnN0cmluZygpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0ZSgp
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QKIAogY29uc3QgU3RyaW5n
JiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1lbnRTdHlsZVRleHQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJp
bmcoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIpLnN0cmluZygpOwogfQogCiBSZWY8Q1NTUnVsZVNvdXJjZURhdGE+IEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6cnVsZVNvdXJjZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCBkMzg5ZWMwN2FlODdiYzk1YjU2ODA5ZThkYjgyNTkwODhlMDUyYTA2Li4wNmM0NzIzZjU3
MDA3MDUxZWM2MTkwOWFjNzE5ZGYzYjhjYjJkY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjIyOSw3ICsy
MjI5LDcgQEAgUmVmPFByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2MKICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3BhY2VTcGxpdFN0cmluZyYgdmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZh
bnRBdHRyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAvLyBAYXJpYS1yZWxldmFu
dD0iYWxsIiBpcyBleHBvc2VkIGFzIFsiYWRkaXRpb25zIiwicmVtb3ZhbHMiLCJ0ZXh0Il0sIGlu
IG9yZGVyLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9yZGVyIGlzIGNvbnRyb2xsZWQg
aW4gV2ViQ29yZSBhbmQgZXhwZWN0ZWQgaW4gV2ViSW5zcGVjdG9yVUkuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCIpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCJfcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpdmVSZWdpb25SZWxldmFudC0+YWRkSXRlbShhcmlhUmVsZXZhbnRBZGRpdGlvbnMpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5hZGRJdGVtKGFyaWFSZWxl
dmFudFJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFu
dC0+YWRkSXRlbShhcmlhUmVsZXZhbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcAppbmRleCA5ZjE3YzEyOGEzMTgxNmE2YTkzOThiNWQyYjE0NTY4NTRjNWQ5YTUxLi4zNmZl
YmJlZGNlMGRlMTg5MWFlNGE5MmQzOTQyOTc5MjAzZWExZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQ
cmVsb2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBM
aW4KICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcGFyYW1zLnJlZmVycmVyUG9saWN5Owog
ICAgIGF1dG8gbGlua1JlcXVlc3QgPSBjcmVhdGVQb3RlbnRpYWxBY2Nlc3NDb250cm9sUmVxdWVz
dCh1cmwsIFdURk1vdmUob3B0aW9ucyksIGRvY3VtZW50LCBwYXJhbXMuY3Jvc3NPcmlnaW4pOwog
ICAgIGxpbmtSZXF1ZXN0LnNldFByaW9yaXR5KERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eTo6
Zm9yUmVzb3VyY2VUeXBlKHR5cGUudmFsdWUoKSkpOwotICAgIGxpbmtSZXF1ZXN0LnNldEluaXRp
YXRvcigibGluayIpOworICAgIGxpbmtSZXF1ZXN0LnNldEluaXRpYXRvcigibGluayJfcyk7CiAg
ICAgbGlua1JlcXVlc3Quc2V0SWdub3JlRm9yUmVxdWVzdENvdW50KHRydWUpOwogICAgIGxpbmtS
ZXF1ZXN0LnNldElzTGlua1ByZWxvYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IDY1YjI2Y2M5YmQ1NzVlYjFh
MDE1ZjQ1Y2M1ZGU2NWNjZDU1MzUzN2IuLjUxMDIyYzY3NWQyNGYwYmI4YTUzYjE5NWZlODhiMWFm
MDNkMTM3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudC5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIE1hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQ6OmlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYgbm9kZSkKICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnBUYWcpCiAgICAgICAgIHx8IGh0bWxF
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwcmVUYWcpCiAgICAgICAgIHx8IGh0bWxFbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWN0aW9uVGFnKQotICAgICAgICB8fCAoaHRtbEVs
ZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnN0eWxlVGFnKSAmJiBodG1sRWxlbWVudC5oYXNB
dHRyaWJ1dGUoInNjb3BlZCIpKQorICAgICAgICB8fCAoaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OnN0eWxlVGFnKSAmJiBodG1sRWxlbWVudC5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVz
OjpzY29wZWRBdHRyKSkKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnRhYmxlVGFnKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dWxUYWcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApp
bmRleCAyNTljNzIyNTM2NzFiNWEwYWUwODViYzA3MTJhNGIxNWViMjc5NWQ2Li5lOTRiZGZmOGE5
MzM4NTRkN2Q5ZmRiMGJmYzZhMTg4MWFkNTkxNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTm9uRmFzdFNjcm9s
bGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIEdy
YXBoaWNzCiAgICAgRmxvYXRSZWN0IGxlZ2VuZFJlY3QgPSB7IGJvdW5kcy5tYXhYKCkgLSAzMC4w
ZiwgMTAsIDIwLCAyMCB9OwogICAgIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIp
OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFNlbGVjdGlvblZhbHVlKDUwMCkpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3U2V0dGluZ3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ICAgIH0KIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldFNwZWNpZmllZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVl
KDUwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IGRkYmE4MzVlZjg5MjAzYWFlYWRhMWQz
MDNiMjM2OTQ1OGQ0NzI4MTIuLjVmYTk0MmM5OGRmMGI1MzY5YmY2N2NkMzcwZTFjNjFiZWYzMGNh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIFF1aXJr
czo6c2hvdWxkVG9vbHRpcFByZXZlbnRGcm9tUHJvY2VlZGluZ1dpdGhDbGljayhjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
X2RvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpLmhvc3QoKSwgImNvdmlkLmNkYy5nb3YiKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYg
ZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInRvb2x0aXAiKTsKKyAgICByZXR1cm4gZWxl
bWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ0b29sdGlw
Il9zKTsKIH0KIAogLy8gRklYTUU6IFJlbW92ZSBhZnRlciB0aGUgc2l0ZSBpcyBmaXhlZCwgPHJk
YXI6Ly9wcm9ibGVtLzc1NzkyOTEzPgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgUXVpcmtzOjpz
aG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzKEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNv
bnN0CiAgICAgY2FzZSBTaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzOjpEZXBlbmRp
bmdPblRhcmdldEZvcl9teWJpbmRlcl9vcmc6CiAgICAgICAgIGlmIChpczxOb2RlPih0YXJnZXQp
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIG5vZGUgPSBkb3duY2FzdDxOb2RlPih0YXJnZXQp
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzPEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5jbGFzc0xpc3Qo
KS5jb250YWlucygibG0tRG9ja1BhbmVsLXRhYkJhciIpKQorICAgICAgICAgICAgICAgIGlmIChp
czxFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuY2xhc3NMaXN0KCku
Y29udGFpbnMoImxtLURvY2tQYW5lbC10YWJCYXIiX3MpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDc2LDcgKzQ3Niw3IEBA
IGJvb2wgUXVpcmtzOjpzaG91bGREaXNwYXRjaGVkU2ltdWxhdGVkTW91c2VFdmVudHNBc3N1bWVE
ZWZhdWx0UHJldmVudGVkKEV2ZW50VGFyCiAgICAgfQogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCkuaG9zdCgpLCAi
c291bmRjbG91ZC5jb20iKSAmJiBpczxFbGVtZW50Pih0YXJnZXQpKQotICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RWxlbWVudD4oKnRhcmdldCkuY2xhc3NMaXN0KCkuY29udGFpbnMoInNjZW5lTGF5
ZXIiKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KCp0YXJnZXQpLmNsYXNzTGlz
dCgpLmNvbnRhaW5zKCJzY2VuZUxheWVyIl9zKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAg
LTQ4OCw3ICs0ODgsNyBAQCBzdGQ6Om9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IFF1aXJr
czo6c2ltdWxhdGVkTW91c2VFdmVudFR5cGVGb3JUYXJnZXQoRXZlbgogCiAgICAgLy8gT24gR29v
Z2xlIE1hcHMsIHdlIHdhbnQgdG8gbGltaXQgc2ltdWxhdGVkIG1vdXNlIGV2ZW50cyB0byBkcmFn
Z2luZyB0aGUgbGl0dGxlIG1hbiB0aGF0IGFsbG93cyBlbnRlcmluZyBpbnRvIFN0cmVldCBWaWV3
LgogICAgIGlmIChpc0dvb2dsZU1hcHMoKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4odGFy
Z2V0KSAmJiBkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpLT5nZXRBdHRyaWJ1dGUoImNsYXNzIikg
PT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21hbi1pY29uIikKKyAgICAgICAgaWYgKGlzPEVs
ZW1lbnQ+KHRhcmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6Y2xhc3NBdHRyKSA9PSAid2lkZ2V0LWV4cGFuZC1idXR0b24tcGVnbWFuLWlj
b24iKQogICAgICAgICAgICAgcmV0dXJuIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllczsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC01MDEsNyArNTAxLDcgQEAgc3RkOjpvcHRpb25hbDxF
dmVudDo6SXNDYW5jZWxhYmxlPiBRdWlya3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFy
Z2V0KEV2ZW4KICAgICAgICAgLy8gV2Ugd2FudCB0byBsaW1pdCBzaW11bGF0ZWQgbW91c2UgZXZl
bnRzIHRvIGVsZW1lbnRzIHVuZGVyIDxkaXYgaWQ9InBhbmVDb250YWluZXIiPiB0byBhbGxvdyBm
b3IgY29sdW1uIHJlLW9yZGVyaW5nIGFuZCBtdWx0aXBsZSBjZWxsIHNlbGVjdGlvbi4KICAgICAg
ICAgaWYgKGlzPE5vZGU+KHRhcmdldCkpIHsKICAgICAgICAgICAgIGF1dG8qIG5vZGUgPSBkb3du
Y2FzdDxOb2RlPih0YXJnZXQpOwotICAgICAgICAgICAgaWYgKGF1dG8qIHBhbmVDb250YWluZXIg
PSBub2RlLT50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChBdG9tU3RyaW5nKCJwYW5lQ29udGFp
bmVyIikpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcGFuZUNvbnRhaW5lciA9IG5vZGUtPnRy
ZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKEF0b21TdHJpbmcoInBhbmVDb250YWluZXIiX3MpKSkg
ewogICAgICAgICAgICAgICAgIGlmIChwYW5lQ29udGFpbmVyLT5jb250YWlucyhub2RlKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllczsKICAgICAg
ICAgICAgIH0KQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIFF1aXJrczo6c2hvdWxkTWFrZVRvdWNo
RXZlbnROb25DYW5jZWxhYmxlRm9yVGFyZ2V0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNvbgogICAg
ICAgICBpZiAoaXM8RWxlbWVudD4odGFyZ2V0KSkgewogICAgICAgICAgICAgdW5zaWduZWQgZGVw
dGggPSAzOwogICAgICAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVu
dD4odGFyZ2V0KTsgZWxlbWVudCAmJiBkZXB0aDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSwgLS1kZXB0aCkgewotICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5sb2NhbE5h
bWUoKSA9PSAicGFwZXItaXRlbSIgJiYgZWxlbWVudC0+Y2xhc3NMaXN0KCkuY29udGFpbnMoInl0
LWRyb3Bkb3duLW1lbnUiKSkKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+bG9jYWxOYW1l
KCkgPT0gInBhcGVyLWl0ZW0iICYmIGVsZW1lbnQtPmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJ5dC1k
cm9wZG93bi1tZW51Il9zKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU0OCw3ICs1NDgsNyBAQCBib29sIFF1aXJrczo6c2hv
dWxkUHJldmVudERpc3BhdGNoT2ZUb3VjaEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHRvdWNoRXZl
bnRUeXBlLAogCiAgICAgaWYgKGlzPEVsZW1lbnQ+KHRhcmdldCkgJiYgdG91Y2hFdmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCksICJzaXRlcy5nb29n
bGUuY29tIikpIHsKICAgICAgICAgYXV0byYgY2xhc3NMaXN0ID0gZG93bmNhc3Q8RWxlbWVudD4o
KnRhcmdldCkuY2xhc3NMaXN0KCk7Ci0gICAgICAgIHJldHVybiBjbGFzc0xpc3QuY29udGFpbnMo
IkRQdndZYyIpICYmIGNsYXNzTGlzdC5jb250YWlucygic204c0NmIik7CisgICAgICAgIHJldHVy
biBjbGFzc0xpc3QuY29udGFpbnMoIkRQdndZYyJfcykgJiYgY2xhc3NMaXN0LmNvbnRhaW5zKCJz
bThzQ2YiX3MpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMSw4ICs2MzEsOCBA
QCBib29sIFF1aXJrczo6bmVlZHNJbnB1dE1vZGVOb25lSW1wbGljaXRseShjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCkgY29uc3QKICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW5wdXRUYWcpKSB7CiAgICAgICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobV9kb2N1bWVudC0+dXJsKCkuaG9zdCgpLCAiY2FsZW5kYXIuZ29vZ2xlLmNvbSIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gZGF0YUluaXRpYWxWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtaW5pdGlh
bC12YWx1ZSIsIG51bGxBdG9tKCkpOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gZGF0YVByZXZpb3VzVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLXByZXZp
b3VzLXZhbHVlIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiBkYXRhSW5pdGlhbFZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1pbml0
aWFsLXZhbHVlIl9zLCBudWxsQXRvbSgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFF1YWxpZmllZE5hbWU+IGRhdGFQcmV2aW91c1ZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1w
cmV2aW91cy12YWx1ZSJfcywgbnVsbEF0b20oKSk7CiAKICAgICAgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmF1dG9jb21wbGV0ZUF0dHIpLCAib2ZmIikKICAgICAgICAgICAgICYm
IGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkYXRhSW5pdGlhbFZh
bHVlQXR0cikKQEAgLTY0Nyw3ICs2NDcsNyBAQCBib29sIFF1aXJrczo6bmVlZHNJbnB1dE1vZGVO
b25lSW1wbGljaXRseShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgY29uc3QKICAgICBpZiAo
IWhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmRlc21vcy5jb20iKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpICYmIGVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImRjZy1tcS10ZXh0
YXJlYSIpOworICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKSAmJiBlbGVtZW50LnBh
cmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJkY2ctbXEtdGV4dGFyZWEiX3Mp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTAyMywxMCArMTAyMywxMCBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gc3BhbiB3aXRoIHRoZXNlIGNsYXNz
IG5hbWVzLCBvciB0aGUgc3ZnLCBvciB0aGUgc3ZnJ3MgcGF0aC4KICAgICBpZiAoZWxlbWVudC5o
YXNDbGFzcygpKSB7CiAgICAgICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFt
ZXMoKTsKLSAgICAgICAgaWYgKGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJu
ZXItbG9naW4iKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygianNfaGVhZGVy
LXVzZXJidXR0b24iKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygic2MtMWls
M3VydS0zIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygiY0loS2ZkIikKLSAgICAgICAgICAgIHx8
IGNsYXNzTmFtZXMuY29udGFpbnMoIml5dm4zNC0wIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygi
YllJanRsIikpCisgICAgICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19zd2l0Y2gtdG8t
YnVybmVyLWxvZ2luIl9zKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygianNf
aGVhZGVyLXVzZXJidXR0b24iX3MpCisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5z
KCJzYy0xaWwzdXJ1LTMiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImNJaEtmZCJfcykKKyAg
ICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoIml5dm4zNC0wIl9zKSB8fCBjbGFzc05h
bWVzLmNvbnRhaW5zKCJiWUlqdGwiX3MpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJF
bGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHN2Z0VsZW1lbnQgPSBlbGVt
ZW50LnBhcmVudEVsZW1lbnQoKTsKIAogICAgIGlmIChzdmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQt
Pmhhc0F0dHJpYnV0ZXMoKSkgewotICAgICAgICBhdXRvIGFyaWFMYWJlbEF0dHIgPSBzdmdFbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0TmFtZWRJdGVtKCJhcmlhLWxhYmVsIik7CisgICAgICAgIGF1
dG8gYXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXROYW1lZEl0ZW0o
ImFyaWEtbGFiZWwiX3MpOwogICAgICAgICBpZiAoYXJpYUxhYmVsQXR0ciAmJiBhcmlhTGFiZWxB
dHRyLT52YWx1ZSgpID09ICJVc2VyRmlsbGVkIGljb24iKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTA1NiwyNCArMTA1NiwyNCBAQCBzdGF0aWMgYm9vbCBpc1N0b3JhZ2VB
Y2Nlc3NRdWlya0RvbWFpbkFuZEVsZW1lbnQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEVsZW1lbnQm
CiAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3ZlIHRoaXMgcXVpcmsgb25jZSBtaWNyb3NvZnQu
Y29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9z
dCgpID09ICJ3d3cubWljcm9zb2Z0LmNvbSJfcykgewogICAgICAgICByZXR1cm4gZWxlbWVudC5o
YXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiZ2x5
cGhfc2lnbkluX2NpcmNsZSIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJtZWN0cmxfaGVhZGVydGV4dCIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygp
LmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVyIikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05h
bWVzKCkuY29udGFpbnMoImdseXBoX3NpZ25Jbl9jaXJjbGUiX3MpCisgICAgICAgIHx8IGVsZW1l
bnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVydGV4dCJfcykKKyAgICAgICAg
fHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXIiX3MpKTsKICAg
ICB9CiAgICAgLy8gU2t5cGUgY2FzZS4KICAgICAvLyBGSVhNRSgyMjAxMDUpOiBSZW1vdmUgdGhp
cyBxdWlyayBvbmNlIFNreXBlIHVuZGVyIG91dGxvb2subGl2ZS5jb20gY29tcGxldGVzIHRoZWly
IGxvZ2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gIm91dGxvb2subGl2
ZS5jb20iX3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKQotICAgICAgICAm
JiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIl8zaW9FcDJSR1I1dmIwZ3FSRHNhRlBh
IikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIl8yQW0yanZUYUJ6
MTdVSjhYbmZ4Rk95IikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFp
bnMoIl8zaW9FcDJSR1I1dmIwZ3FSRHNhRlBhIl9zKQorICAgICAgICB8fCBlbGVtZW50LmNsYXNz
TmFtZXMoKS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3kiX3MpKTsKICAgICB9CiAg
ICAgLy8gU29ueSBOZXR3b3JrIEVudGVydGFpbm1lbnQgbG9naW4gY2FzZS4KICAgICAvLyBGSVhN
RSgyMTg3NjApOiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIHBsYXlzdGF0aW9uLmNvbSBjb21wbGV0
ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICBpZiAodXJsLmhvc3QoKSA9PSAid3d3
LnBsYXlzdGF0aW9uLmNvbSJfcyB8fCB1cmwuaG9zdCgpID09ICJteS5wbGF5c3RhdGlvbi5jb20i
X3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKQotICAgICAgICAmJiAoZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uIikK
LSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19z
aWduaW4tYnV0dG9uLWxhYmVsIikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29u
dGFpbnMoInNiLXNpZ25pbi1idXR0b24iKSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFt
ZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24iX3MpCisgICAgICAgIHx8
IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRv
bi1sYWJlbCJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInNi
LXNpZ25pbi1idXR0b24iX3MpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTEy
LDcgKzExMTIsNyBAQCBzdGF0aWMgYm9vbCBpc0JCQ1BvcFVwUGxheWVyRWxlbWVudChjb25zdCBF
bGVtZW50JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgfHwgIWVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5oYXNDbGFzcygpIHx8ICFwYXJlbnRFbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkgfHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+aGFzQ2xhc3Mo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxl
bWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0b25fYnV0dG9uSW5uZXIi
KSAmJiBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlu
cygiaGlkZGVuIik7CisgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05h
bWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0b25fYnV0dG9uSW5uZXIiX3MpICYmIHBhcmVudEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iX3Mp
OwogfQogCiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0FuZEhhbmRsZUNsaWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkRGlzcGF0
Y2hDbGljayk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CkBAIC0xMTg1LDE0ICsxMTg1LDE0
IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0
b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2lu
Rm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgn
anNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYgKGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7IGVs
ZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGludGVy
dmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwgMjAwKTsiX3MsIFVSTChhYm91dEJs
YW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZ
ZXMgfTsKIAotICAgIGlmIChldmVudFR5cGUgPT0gImNsaWNrIikgeworICAgIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50
KQogICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxk
Tm90Q2FuY2VsRXZlbnQ7CiAKICAgICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgogICAg
ICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGRvbWFpbiA9PSB5b3VUdWJlRG9tYWluICYm
ICFtX2RvY3VtZW50LT5pc1RvcERvY3VtZW50KCkgJiYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgewogICAgICAgICAg
ICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAgICAgICAg
aWYgKGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikgfHwgY2xhc3NO
YW1lcy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSkgeworICAgICAgICAgICAgaWYg
KGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIl9zKSB8fCBjbGFzc05h
bWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiJfcykpIHsKICAgICAgICAgICAgICAg
ICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlv
bih5b3VUdWJlRG9tYWluKSkgewogICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyaygqbV9kb2N1bWVudCwg
W10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAxOTc0MWY2MmY2YjY2YTFiZTA3
NzdkZWU2YTNhYTM5ZGIwMjgwZWRjLi4xMzZmN2NkNTJkMzQzZTgwYmE3Y2MyMDkwZjZmNjg3YTNi
NjA5ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjA2LDcgKzIw
Niw3IEBAIFNwYW48Y29uc3QgQXRvbVN0cmluZz4gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1lcygpCiAKIGNvbnN0IEF0b21TdHJpbmcmIFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwoKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc0V2ZW50TmFtZUFsbCA9
ICJhbGxFdmVudHMiOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc0V2ZW50TmFtZUFsbCA9ICJhbGxFdmVudHMiX3M7CiAgICAgcmV0dXJuIHNF
dmVudE5hbWVBbGw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGVjMzFjNTM4MDA4
MzIwMGI5MDBkMmVhNWNmNTQwYTM2ODk3Y2U2NTQuLjQyMzdjZjYwNTk4NGRjNmQ1MzYwNDc0Njcz
NTVkMzg0NjczMWFiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzA2Nyw3ICszMDY3
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwcm9jZXNzTWV0
YWRhdGFUcmFjaygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWV0YWRhdGFUcmFjayA9IElu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKEluYmFuZFRleHRUcmFja1By
aXZhdGU6OktpbmQ6Ok1ldGFkYXRhLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6
OkRhdGEpOwotICAgIG1fbWV0YWRhdGFUcmFjay0+c2V0SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3Bh
dGNoVHlwZSgiY29tLmFwcGxlLnN0cmVhbWluZyIpOworICAgIG1fbWV0YWRhdGFUcmFjay0+c2V0
SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgiY29tLmFwcGxlLnN0cmVhbWluZyJfcyk7
CiAgICAgcGxheWVyKCktPmFkZFRleHRUcmFjaygqbV9tZXRhZGF0YVRyYWNrKTsKIH0KIApAQCAt
MzA5Niw3ICszMDk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRDdXJyZW50VGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXYKICAgICBpZiAobV9jdXJy
ZW50VGV4dFRyYWNrID09IHRyYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAic2VsZWN0aW5nIHRyYWNrIHdpdGggbGFuZ3VhZ2UgIiwgdHJhY2sgPyB0
cmFjay0+bGFuZ3VhZ2UoKSA6ICIiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2Vs
ZWN0aW5nIHRyYWNrIHdpdGggbGFuZ3VhZ2UgIiwgdHJhY2sgPyB0cmFjay0+bGFuZ3VhZ2UoKSA6
IGVtcHR5QXRvbSgpKTsKIAogICAgIG1fY3VycmVudFRleHRUcmFjayA9IHRyYWNrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpp
bmRleCBjZmEyOWIxMTJlYTMyOTczZmM4NTYzNWI2NWU0MjFlYWZiZjkxNDA3Li4wMWYyYzY5NzE2
ZjYxOGFhNDhkMjhlZTE2NWYxMTgwZjBmNGJiOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTE3Nyw3ICsxNzcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fY29k
ZWMpCi0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhtX29yaWdpbmFsQ29kZWMuc3Ry
aW5nKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nOjpmcm9tTGF0
aW4xKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gKm1f
Y29kZWM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA4NTIzNDZmNmI1YzU2N2RlMjlmMzUx
NzdkYzQ4NzIzNjVkZjI3ZDQwLi5iMDg2OWY4MDA0NTYxOWU2OTY1ODYxY2IxNzI5ODFlZWUxZjMx
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBQbGEKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KSk7
CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250
RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRT
cGVjaWZpZWRTaXplKGZvbnRTaXplKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKGZvbnRTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
LmNwcAppbmRleCA2N2Q3MGNiY2Y3MjMyM2UyMDkzOTI0MGQ0ZDQ3MGM0MzgxMTY2MDZjLi5jNzZk
ZDNkMjllZDM0Njk2ZmUxZjUwOTBkNzE4ZmM3ZjBmMTFiNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoY29u
c3QgR1N0cmVhbWVyUmVnCiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtaW1lVHlw
ZSA6IGN1cnJlbnQud2Via2l0TWltZVR5cGVzKQogICAgICAgICAgICAgICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQobWltZVR5cGUpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoY3VycmVudC5jYXBz
U3RyaW5nKSk7CisgICAgICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmc6OmZyb21MYXRpbjEoY3VycmVudC5jYXBzU3RyaW5nKSk7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0yNjIsMjYgKzI2MiwyNiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
ZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKGNvbnN0IEdTdHJlYW1lclJlZwogdm9pZCBH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0b3JpZXMmIGZhY3RvcmllcykKIHsKICAgICBp
ZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKLSAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyIpKTsK
LSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCIp
KTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gt
bTRhIikpOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXBlZyIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmco
ImF1ZGlvL3gtbXBlZyIpKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIm1wZWciKSwgZmFsc2UpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygibXA0YSoiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygiYXVkaW8vYWFjIl9zKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbTRhIl9zKSk7CisgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIl9zKSk7CisgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciX3MpKTsKKyAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciX3MpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiJfcyksIGZh
bHNlKTsKICAgICB9CiAKICAgICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJh
dWRpby94LW9wdXMiKTsKICAgICBpZiAob3B1c1N1cHBvcnRlZCAmJiAoIW1faXNNZWRpYVNvdXJj
ZSB8fCBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb1BhcnNlciwgImF1ZGlvL3gtb3B1cyIpKSkgewotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIpKTsKLSAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiKSwgZmFsc2UpOwotICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIiksIGZhbHNlKTsKKyAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiX3MpKTsKKyAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiX3MpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiX3MpLCBm
YWxzZSk7CiAgICAgfQogCiAgICAgYXV0byB2b3JiaXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIs
ICJhdWRpby94LXZvcmJpcyIpOwogICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVk
aWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6QXVkaW9QYXJzZXIsICJhdWRpby94LXZvcmJpcyIpKSkgewotICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAg
ICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyJfcyksIGZh
bHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlz
Il9zKSwgZmFsc2UpOwogICAgIH0KIAogICAgIGJvb2wgbWF0cm9za2FTdXBwb3J0ZWQgPSBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11
eGVyLCAidmlkZW8veC1tYXRyb3NrYSIpOwpAQCAtMjkwLDIxICsyOTAsMjEgQEAgdm9pZCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXIKICAgICAgICAgYXV0byB2cDlEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9y
aWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9E
ZWNvZGVyLCAidmlkZW8veC12cDkiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xh
c3NpZmllcjo6WWVzKTsKIAogICAgICAgICBpZiAodnA4RGVjb2RlckF2YWlsYWJsZSB8fCB2cDlE
ZWNvZGVyQXZhaWxhYmxlKQotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSJfcykpOwogCiAgICAgICAgIGlmICh2cDhEZWNv
ZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygidnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCIpLCB2cDhEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5n
SGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InZwOCJfcyksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCJfcyksIHZwOERlY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDguMCJfcyksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKICAgICAgICAgfQogICAgICAgICBpZiAodnA5RGVjb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSIpLCB2
cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwOS4wIiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAg
ICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiIpLCB2cDlE
ZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5Il9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIngtdnA5Il9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAg
ICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIl9zKSwgdnA5
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIl9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQot
ICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dl
Ym0iKSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vd2VibSJfcykpOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkQWRkTVA0Q29udGFpbmVy
ID0gZmFsc2U7CkBAIC0zMTIsMzUgKzMxMiwzNSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgog
ICAgIGF1dG8gaDI2NERlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWgy
NjQsIHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGln
aCB9IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAg
ICAgaWYgKGgyNjREZWNvZGVyQXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
UGFyc2VyLCAidmlkZW8veC1oMjY0IikpKSB7CiAgICAgICAgIHNob3VsZEFkZE1QNENvbnRhaW5l
ciA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgy
NjQiKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NERlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIm1wNHYqIiksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiX3MpLCBoMjY0
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXZjKiJfcyksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJt
cDR2KiJfcyksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQog
CiAgICAgYXV0byBoMjY1RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gt
aDI2NSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwog
ICAgIGlmIChoMjY1RGVjb2RlckF2YWlsYWJsZSAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRl
b1BhcnNlciwgInZpZGVvL3gtaDI2NSIpKSkgewogICAgICAgICBzaG91bGRBZGRNUDRDb250YWlu
ZXIgPSB0cnVlOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1o
MjY1IiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJodmMxKiIpLCBoMjY1RGVjb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygiaGV2MSoiKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NSJfcyksIGgy
NjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJodmMxKiJfcyksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJoZXYxKiJfcyksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAg
fQogCiAgICAgaWYgKHNob3VsZEFkZE1QNENvbnRhaW5lcikgewotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0IikpOwotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiX3MpKTsKKyAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2Il9zKSk7
CiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAi
dmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
WWVzKTsKICAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBv
cnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiJfcyksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImF2MSJfcyksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYx
Il9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAg
IFZlY3RvcjxHc3RDYXBzV2ViS2l0TWFwcGluZz4gbXNlQ29tcGF0aWJsZU1hcHBpbmcgPSB7Ci0g
ICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1h
YzMiLCB7IH0sIHsieC1hYzMiLCAiYWMtMyIsICJhYzMifSB9LAotICAgICAgICB7IEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZWFjMyIsIHsiYXVkaW8veC1h
YzMifSwgIHsieC1lYWMzIiwgImVjMyIsICJlYy0zIiwgImVhYzMifSB9LAotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZmxhYyIsIHsiYXVk
aW8veC1mbGFjIiwgImF1ZGlvL2ZsYWMifSwgeyJ4LWZsYWMiLCAiZmxhYyIgfSB9LAorICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtYWMzIiwg
eyB9LCB7ICJ4LWFjMyJfcywgImFjLTMiX3MsICJhYzMiX3MgfSB9LAorICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZWFjMyIsIHsgImF1ZGlv
L3gtYWMzIl9zIH0sICB7ICJ4LWVhYzMiX3MsICJlYzMiX3MsICJlYy0zIl9zLCAiZWFjMyJfcyB9
IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVk
aW8veC1mbGFjIiwgeyAiYXVkaW8veC1mbGFjIl9zLCAiYXVkaW8vZmxhYyJfcyB9LCB7IngtZmxh
YyJfcywgImZsYWMiX3MgfSB9LAogICAgIH07CiAgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNN
YXBwaW5nKGZhY3RvcmllcywgbXNlQ29tcGF0aWJsZU1hcHBpbmcpOwogCkBAIC0zNTAsNzYgKzM1
MCw3NiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJz
KGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgIC8vIFRoZSBtaW1lLXR5cGVzIGlu
aXRpYWxpemVkIGJlbG93IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBNU0UgYmFja2VuZC4KIAog
ICAgIFZlY3RvcjxHc3RDYXBzV2ViS2l0TWFwcGluZz4gbWFwcGluZyA9IHsKLSAgICAgICAgeyBF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9taWRpIiwgeyAiYXVk
aW8vbWlkaSIsICJhdWRpby9yaWZmLW1pZGkiIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21pZGkiLCB7ICJhdWRpby9taWRp
Il9zLCAiYXVkaW8vcmlmZi1taWRpIl9zIH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZHRzIiwgeyB9LCB7IH0gfSwKICAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNi
YyIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9E
ZWNvZGVyLCAiYXVkaW8veC1zaWQiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVl
eCIsICJhdWRpby94LXNwZWV4IiB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXdhdnBhY2siLCB7ICJhdWRpby94LXdhdnBh
Y2siIH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVj
b2RlciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0cmVhbT0o
Ym9vbGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciIH0sIHsgIm1wZWciIH0gfSwKKyAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNwZWV4Iiwg
eyAiYXVkaW8vc3BlZXgiX3MsICJhdWRpby94LXNwZWV4Il9zIH0sIHsgfSB9LAorICAgICAgICB7
IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtd2F2cGFjayIs
IHsgImF1ZGlvL3gtd2F2cGFjayJfcyB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9y
aWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KXsx
LDJ9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFsc2UiLCB7ICJ2aWRlby9tcGVnIl9zIH0sIHsg
Im1wZWciX3MgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVj
b2RlciwgInZpZGVvL21wZWd0cyIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1kaXJhYyIsIHsgfSwgeyB9IH0sCi0g
ICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1m
bGFzaC12aWRlbyIsIHsgInZpZGVvL2ZsdiIsICJ2aWRlby94LWZsdiIgfSwgeyB9IH0sCisgICAg
ICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1mbGFz
aC12aWRlbyIsIHsgInZpZGVvL2ZsdiJfcywgInZpZGVvL3gtZmx2Il9zIH0sIHsgfSB9LAogICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2
MyIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9E
ZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVvY29kZWMiLCB7ICJ2aWRlby94LW1zdmlkZW8iIH0sIHsg
fSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZp
ZGVvL3gtbXN2aWRlb2NvZGVjIiwgeyAidmlkZW8veC1tc3ZpZGVvIl9zIH0sIHsgfSB9LAogICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi92bmQu
cm4tcmVhbG1lZGlhIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC0zZ3AiLCB7IH0sIHsgfSB9LAotICAgICAgICB7
IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi94LWhscyIsIHsg
ImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIiwgImFwcGxpY2F0aW9uL3gtbXBlZ3VybCIg
fSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFw
cGxpY2F0aW9uL3gtaGxzIiwgeyAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwiX3MsICJh
cHBsaWNhdGlvbi94LW1wZWd1cmwiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtcG4tcmVhbGF1ZGlvIiwgeyB9LCB7
IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGlj
YXRpb24vZGFzaCt4bWwiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6
OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LWFpZmYiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LXdhdiIsIHsgImF1ZGlvL3gt
d2F2IiwgImF1ZGlvL3dhdiIsICJhdWRpby92bmQud2F2ZSIgfSwgeyAiMSIgfSB9LAorICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LXdhdiIsIHsgImF1
ZGlvL3gtd2F2Il9zLCAiYXVkaW8vd2F2Il9zLCAiYXVkaW8vdm5kLndhdmUiX3MgfSwgeyAiMSJf
cyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgInZpZGVv
L3F1aWNrdGltZSIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6RGVtdXhlciwgInZpZGVvL3F1aWNrdGltZSwgdmFyaWFudD0oc3RyaW5nKTNncHAiLCB7ICJ2
aWRlby8zZ3BwIiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVv
LzNncHAiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVt
dXhlciwgInZpZGVvL3gtbXMtYXNmIiwgeyB9LCB7IH0gfSwKICAgICB9OwogICAgIGZpbGxNaW1l
VHlwZVNldEZyb21DYXBzTWFwcGluZyhmYWN0b3JpZXMsIG1hcHBpbmcpOwogCiAgICAgaWYgKGZh
Y3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRl
bXV4ZXIsICJhcHBsaWNhdGlvbi9vZ2ciKSkgewotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXBwbGljYXRpb24vb2dnIikpOworICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXBwbGljYXRpb24vb2dnIl9zKSk7CiAKICAgICAg
ICAgaWYgKHZvcmJpc1N1cHBvcnRlZCkgewotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ciKSk7CisgICAgICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIl9zKSk7
CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC12b3JiaXMrb2dnIl9zKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVy
LCAiYXVkaW8veC1zcGVleCIpKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoInNwZWV4IiksIGZhbHNlKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKKyAgICAgICAgICAg
IG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJzcGVleCJfcyksIGZhbHNlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LXRoZW9yYSIpKSB7
Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
b2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInRo
ZW9yYSIpLCBmYWxzZSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygidmlkZW8vb2dnIl9zKSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygidGhlb3JhIl9zKSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCBhdWRpb01wZWdTdXBwb3J0ZWQgPSBmYWxzZTsKICAgICBpZiAoZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVy
LCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxLCBsYXllcj0oaW50KVsxLCAzXSIpKSB7
CiAgICAgICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiKSk7Ci0gICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDMiKSk7Ci0gICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wMyIpKTsKLSAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyIpLCBmYWxzZSk7Ci0g
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDMiKSwgZmFsc2UpOwor
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAxIl9z
KSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9t
cDMiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL3gtbXAzIl9zKSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJhdWRpby9tcDMiX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJtcDMiX3MpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2Rl
ciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMiIpKSB7CiAgICAgICAgIGF1ZGlvTXBl
Z1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9tcDIiKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiX3MpKTsKICAgICB9CiAKICAgICBhdWRpb01wZWdTdXBwb3J0
ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAi
YXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwotICAgICAg
ICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIikpOwor
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyJf
cykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC1tcGVnIl9zKSk7CiAgICAgfQogCiAgICAgaWYgKG1hdHJvc2thU3VwcG9ydGVkKSB7Ci0gICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2th
IikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
eC1tYXRyb3NrYSJfcykpOwogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LXZw
MTAiKSkKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2
aWRlby93ZWJtIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKICAgICB9CiB9CiAKQEAgLTQzMSw3NiArNDMxLDc2IEBA
IHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRW5jb2RlcnMoY29uc3Qg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAKICAgICBhdXRvIGFhY1N1cHBvcnRlZCA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlv
RW5jb2RlciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpOwogICAgIGlmIChmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRp
b0VuY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBmYWxzZSk7Ci0gICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIpLCBmYWxzZSk7CisgICAg
ICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIl9zKSwgZmFsc2UpOwor
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiX3MpLCBmYWxz
ZSk7CiAgICAgfQogCiAgICAgYXV0byBvcHVzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVk
aW8veC1vcHVzIik7CiAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIiksIGZhbHNlKTsKKyAgICAgICAgbV9l
bmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiX3MpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiX3MpLCBmYWxzZSk7CiAg
ICAgfQogCiAgICAgYXV0byB2b3JiaXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJhdWRpby94
LXZvcmJpcyIpOwogICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyIpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiX3MpLCBmYWxzZSk7Cisg
ICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyJfcyksIGZh
bHNlKTsKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhdjFFbmNvZGVyc0Rpc2FsbG93ZWRM
aXN0IHsgImF2MWVuYyJfcyB9OwogICAgIGF1dG8gYXYxRW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
RW5jb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNs
YXNzaWZpZXI6Olllcywgc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoYXYxRW5jb2RlcnNEaXNh
bGxvd2VkTGlzdCkpKTsKICAgICBpZiAoYXYxRW5jb2RlckF2YWlsYWJsZSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgZmFsc2UpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGZhbHNlKTsKLSAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGZhbHNlKTsKKyAg
ICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIl9zKSwgZmFsc2Up
OworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIl9zKSwgZmFs
c2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiX3Mp
LCBmYWxzZSk7CiAgICAgfQogCiAgICAgYXV0byB2cDhFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9y
aWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9F
bmNvZGVyLCAidmlkZW8veC12cDgiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xh
c3NpZmllcjo6WWVzKTsKICAgICBpZiAodnA4RW5jb2RlckF2YWlsYWJsZSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4IiksIHZwOEVuY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIngtdnA4IiksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAg
ICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOC4wIiksIHZwOEVuY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoInZwOCJfcyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4Il9z
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiX3MpLCB2cDhFbmNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgYXV0byB2cDlFbmNvZGVyQXZhaWxhYmxl
ID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6VmlkZW9FbmNvZGVyLCAidmlkZW8veC12cDkiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAodnA5RW5jb2RlckF2YWlsYWJsZSkgewot
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOUVuY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdnA5IiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIiks
IHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InZwOSJfcyksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA5Il9zKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnA5LjAiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiJfcyks
IHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAo
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
TXV4ZXIsICJ2aWRlby93ZWJtIikgJiYgKHZwOEVuY29kZXJBdmFpbGFibGUgfHwgdnA5RW5jb2Rl
ckF2YWlsYWJsZSB8fCBhdjFFbmNvZGVyQXZhaWxhYmxlKSkKLSAgICAgICAgbV9lbmNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIl9zKSk7CiAKICAgICBpZiAo
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
TXV4ZXIsICJhdWRpby93ZWJtIikpIHsKICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAg
ICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIp
KTsKLSAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dl
Ym0iKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vb3B1cyJfcykpOworICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8vd2VibSJfcykpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlvL29n
ZyIpICYmICh2b3JiaXNTdXBwb3J0ZWQgfHwgb3B1c1N1cHBvcnRlZCkpCi0gICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciKSk7CisgICAgICAgIG1f
ZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKIAogICAg
IGF1dG8gaDI2NEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRlby94LWgyNjQs
IHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGlnaCB9
IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAg
aWYgKGgyNjRFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJoMjY0IiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiKSwg
aDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
Im1wNHYqIiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJoMjY0Il9zKSwgaDI2NEVuY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoIngtaDI2NCJfcyksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIl9z
KSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIl9zKSwgaDI2NEVuY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6TXV4ZXIsICJ2aWRlby9xdWlj
a3RpbWUiKSkgewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOworICAgICAgICAg
ICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiX3MpKTsK
ICAgICAgICAgaWYgKGFhY1N1cHBvcnRlZCkgewotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiKSk7Ci0gICAgICAgICAgICBt
X2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7CisgICAg
ICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIl9z
KSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXA0Il9zKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8veC1tNGEiX3MpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaDI2NEVuY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJ2aWRlby9tcDQiKSk7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0Il9zKSk7CisgICAgICAgICAgICBtX2Vu
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiX3MpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3YjIwMjc5NWVkMTVmZjI0Mjg4OWQ4ZDgxZmM2MjFlOGJh
ZGMyNDAyLi42Mjc2Y2E5MDk1ZGI1ZDNiY2QxN2I2YzE2NDk4ZDBmMTc2MDI5YmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIodW5zaWduZWQgaW5kZXgsCiAgICAgOiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlKEN1ZUZvcm1hdDo6V2ViVlRUKQogICAgICwgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlRleHQsIHRoaXMs
IGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiB7Ci0gICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0
cmVhbV9pZChtX3N0cmVhbS5nZXQoKSk7CisgICAgbV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRp
bjEoZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgR1NUX0lO
Rk8oIlRyYWNrICVkIGdvdCBzdHJlYW0gc3RhcnQgZm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBt
X2lkLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgR1NUX0RFQlVHKCJTdHJlYW0gJSIg
R1NUX1BUUl9GT1JNQVQsIG1fc3RyZWFtLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDFmZWZlYTMyZDIxMzZkZmQxZTFmM2My
NWI4MTYyNjk2OTBmYmQxNC4uMjA5ODAzNWRhODBiMGI5MzkzNWU0NjY5MWYwMjU3NWVlNzg4ODZh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTE0NjQsNyArMTQ2NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVUcmFja3MoY29uc3QgR1JlZlB0cjxHc3RTdHJlYW1Db2xsZWN0aW9uCiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKTsKICAgICAgICAgZWxzZSBpZiAodHlwZSAmIEdT
VF9TVFJFQU1fVFlQRV9URVhUICYmICF1c2VNZWRpYVNvdXJjZSkgewogICAgICAgICAgICAgYXV0
byB0cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJh
Y2tJbmRleCsrLCBXVEZNb3ZlKHN0cmVhbSkpOwotICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFk
ZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5h
ZGQoQXRvbVN0cmluZzo6ZnJvbUxhdGluMShzdHJlYW1JZCksIHRyYWNrLmNvcHlSZWYoKSk7CiAg
ICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklORygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5k
IGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5jcHAKaW5kZXggMjk1N2JjZWYzZDBkMGUxODI4ZWY1ZGY3YmY4YmNlNWRl
YzJmOGQ5YS4uOWFiMTVkZmFlYzJiNGU1ODE4ZTVhM2VmOWUxMjcwOTgwYzA4NmEyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
KFRyYWNrVHlwZSB0eXBlLCBUcmFja1ByaXZhdAogICAgICwgbV9vd25lcihvd25lcikKIHsKICAg
ICBBU1NFUlQobV9zdHJlYW0pOwotICAgIG1faWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQo
bV9zdHJlYW0uZ2V0KCkpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGdzdF9z
dHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQoKSkpOwogCiAgICAgLy8gV2UgY2FuJ3Qg
Y2FsbCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKSBkaXJlY3RseSwgYmVjYXVzZSB3ZSBuZWVk
IHRhZ3NDaGFuZ2VkKCkgdG8gc2V0dXAgbV90YWdzLgogICAgIHRhZ3NDaGFuZ2VkKCk7CkBAIC0y
NTIsNyArMjUyLDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFj
a09mU3RyZWFtQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdTVF9JTkZPKCJUcmFj
ayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwgc3RyZWFtSWQu
Z2V0KCkpOwotICAgIG1faWQgPSBzdHJlYW1JZC5nZXQoKTsKKyAgICBtX2lkID0gQXRvbVN0cmlu
Zzo6ZnJvbUxhdGluMShzdHJlYW1JZC5nZXQoKSk7CiB9CiAKIHZvaWQgVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRl
eCBiYzUzOWE4NzQ3ODAyODE4MTNmNmFmMzAwYWUyZTAyYjc2YWU2MWJjLi40ODkwMjI5MzY5MTlk
NzM5ZDAwZWExY2NjMzI2NmZkYWVmMjg2NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAK
QEAgLTE0NywxMCArMTQ3LDEwIEBAIFZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlVGh1bmRl
cjo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiAgICAgc3RhdGljIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CiAgICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSg0KTsKLSAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBl
bmQoQXRvbVN0cmluZygia2V5aWRzIikpOwotICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
LnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJjZW5jIikpOwotICAgICAgICBzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJ3ZWJtIikpOwotICAgICAg
ICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJjYmNz
IikpOworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZCgia2V5
aWRzIl9zKTsKKyAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQo
ImNlbmMiX3MpOworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVu
ZCgid2VibSJfcyk7CisgICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBw
ZW5kKCJjYmNzIl9zKTsKICAgICB9KTsKICAgICByZXR1cm4gc3VwcG9ydGVkSW5pdERhdGFUeXBl
czsKIH0KQEAgLTE3MCw5ICsxNzAsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgYwogCiBWZWN0
b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRlZFJvYnVzdG5lc3Nlcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgZW1wdHlBdG9tKCksCi0gICAgICAgICJTV19TRUNVUkVf
REVDT0RFIiwKLSAgICAgICAgIlNXX1NFQ1VSRV9DUllQVE8iIH07CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCksICJTV19TRUNVUkVfREVDT0RFIl9zLCAiU1dfU0VDVVJFX0NSWVBUTyJfcyB9Owog
fQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlVGh1bmRlcjo6ZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApp
bmRleCAwYmIyMmQ1MjU5MGVkZTI1NzhmMDRmMjZhNjE2ZjkxNjBjNDRiM2RlLi5jMjZhOWI1MzU2
NjkzNDg4YjQyNWY2ZTk3YzQ4MWIxNWIyNzdhNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcApAQCAtNzEzLDcgKzcxMyw3IEBAIEFwcGVuZFBpcGVsaW5lOjpUcmFjayogQXBw
ZW5kUGlwZWxpbmU6OnRyeU1hdGNoUGFkVG9FeGlzdGluZ1RyYWNrKEdzdFBhZCAqZGVtdXhlCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9oYXNSZWNlaXZlZEZp
cnN0SW5pdGlhbGl6YXRpb25TZWdtZW50KTsKLSAgICBBdG9tU3RyaW5nIHRyYWNrSWQgPSBHU1Rf
UEFEX05BTUUoZGVtdXhlclNyY1BhZCk7CisgICAgYXV0byB0cmFja0lkID0gQXRvbVN0cmluZzo6
ZnJvbUxhdGluMShHU1RfUEFEX05BTUUoZGVtdXhlclNyY1BhZCkpOwogICAgIGF1dG8gW3BhcnNl
ZENhcHMsIHN0cmVhbVR5cGUsIHByZXNlbnRhdGlvblNpemVdID0gcGFyc2VEZW11eGVyU3JjUGFk
Q2FwcyhhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKGRlbXV4ZXJTcmNQYWQpKS5n
ZXQoKSk7CiAKICAgICAvLyBUcnkgdG8gZmluZCBhIG1hdGNoaW5nIHByZS1leGlzdGluZyB0cmFj
ay4gSWRlYWxseSwgdHJhY2tzIHNob3VsZCBiZSBtYXRjaGVkIGJ5IHRyYWNrIElELCBidXQgbWF0
Y2hpbmcgYnkgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCAzZTRlMGU5MzQyNWU2ODBiOTAzNjI3
YmU5OWZiNDNmMmEyM2MyZTBmLi40NjI0MWQxMjQxOTNhZWVhZTJlZGVkNDA1Y2EyODVjMzkzYTMx
NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB1
bnNpZ25lZCBob3VycyA9IG1pbnV0ZXMgLyA2MCAlIDYwOwogCiAgICAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiQ291cmllciIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkNvdXJpZXIi
X3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKDUw
MCkpOwogCiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUobV9iYXNlRm9udFNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKaW5kZXggYTUzMTA2MDdhMzA0OTk5NTNlNDk1ZGFlNjM0NWY4ZTUyZmRmMDcy
ZS4uOTc3OGMxNzVmMzRkNDZkMGI2ZjUwMTE2ZTdlOGQzYTU1NDk0NDQ0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBA
IC02Nyw4ICs2Nyw5IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29u
c3RydWN0b3IoKQogewogICAgIHN0YXRpYyBib29sIGRpZFJlZ2lzdGVyID0gZmFsc2U7CiAgICAg
aWYgKCFkaWRSZWdpc3RlcikgewotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWls
dGluQ29uc3RydWN0b3IoImJsb2IiLCBjcmVhdGVCbG9iUmVzb3VyY2VIYW5kbGUpOwotICAgICAg
ICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoImJsb2Ii
LCBsb2FkQmxvYlJlc291cmNlU3luY2hyb25vdXNseSk7CisgICAgICAgIEF0b21TdHJpbmcgYmxv
YiA9ICJibG9iIl9zOworICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluQ29u
c3RydWN0b3IoYmxvYiwgY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKTsKKyAgICAgICAgUmVzb3Vy
Y2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGJsb2IsIGxvYWRCbG9i
UmVzb3VyY2VTeW5jaHJvbm91c2x5KTsKICAgICAgICAgZGlkUmVnaXN0ZXIgPSB0cnVlOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBh
M2ZlZmFkMDZhNmIyNzJiMWFmMWI1OTA0MzY5ODJhMTY4NTNiMWFmLi40ODVjZTczZDljMzRhMGM5
YTM0MmQzY2ZlNzBhNTVlNDQ2ZmNhMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBzaG93Q291bnRlclJlbmRl
cmVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBjaGFy
KgogICAgIHdoaWxlIChyb290LT5wYXJlbnQoKSkKICAgICAgICAgcm9vdCA9IHJvb3QtPnBhcmVu
dCgpOwogCi0gICAgQXRvbVN0cmluZyBpZGVudGlmaWVyKGNvdW50ZXJOYW1lKTsKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvdW50ZXJOYW1lKTsKICAgICBm
b3IgKGF1dG8qIGN1cnJlbnQgPSByb290OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4
dEluUHJlT3JkZXIoKSkgewogICAgICAgICBpZiAoIWlzPFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ+
KCpjdXJyZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyNjNhYzc1YWM3ZTRkMmEzZDIz
NTkxNDZhYWMzZGY3Y2Y0OWJiOTIyLi5kOTc3ODk1YWZkYzE3OGU2M2YzYTRjZGE5MTIwZjY2M2Fi
NWUxOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcApAQCAtMzMzMCw3ICszMzMwLDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0
ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBGbG8KICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpOwogCiAgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwot
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoMTApOwogICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0Q29tcHV0ZWRTaXplKDEwKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBmMzc1OTQwN2E2MGExN2YwYzhmOGJiN2E3ZGIxYzE1
MjA2OThlOTQ2Li5jNWM0MTZkMmMwNjM2MWRjYWFhY2EwOGY4MWNhNzQyMWQ2OTAyYmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0
aW9uKENTU1ZhbHVlSUQsIEZvbnRDYXNjYWRlRGUKICAgICBpZiAoIXBhbmdvRGVzY3JpcHRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkocGFu
Z29fZm9udF9kZXNjcmlwdGlvbl9nZXRfZmFtaWx5KHBhbmdvRGVzY3JpcHRpb24pKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KEF0b21TdHJpbmc6OmZyb21MYXRpbjEocGFuZ29f
Zm9udF9kZXNjcmlwdGlvbl9nZXRfZmFtaWx5KHBhbmdvRGVzY3JpcHRpb24pKSk7CiAKICAgICBp
bnQgc2l6ZSA9IHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZ2V0X3NpemUocGFuZ29EZXNjcmlwdGlv
bikgLyBQQU5HT19TQ0FMRTsKICAgICAvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgZm9udCBpcyBpbiBw
b2ludHMsIHdlIG5lZWQgdG8gY29udmVydCBpdCB0byBwaXhlbHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKaW5kZXgg
MjFkOWM3ZTJjNzJlZDEwNGE4NWVkOTlkMDUxNmI3Y2FkNmIxOGU3Ny4uYzBjMzQ3OGMyOGI5YTg1
NGE4MTI2MzRhY2FhZTMyODRlZjU0ZjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcApAQCAtNDUsOCArNDUsOCBA
QCB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChSZW5kZXJNYXRoTUxGZW5jZWQpOwogCi1zdGF0aWMgY29uc3QgY2hhciogZ09wZW5pbmdC
cmFjZUNoYXIgPSAiKCI7Ci1zdGF0aWMgY29uc3QgY2hhciogZ0Nsb3NpbmdCcmFjZUNoYXIgPSAi
KSI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gZ09wZW5pbmdCcmFjZUNoYXIgPSAiKCJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBnQ2xvc2luZ0JyYWNlQ2hhciA9ICIpIl9zOwogCiBSZW5kZXJN
YXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxSb3dFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlRm9yRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCmluZGV4IDMzMTg5YmQ2NGNhY2JlZGY5MzY4ZDM0ZmE5ZmI1NjRkNThiZDFm
MzYuLjhhYzZlZGVjMmZlMGI2MTY3MTg4MmE1ZjlmZmQ2NDdmNDA2YmNmNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKQEAgLTEwMCw3
ICsxMDAsNyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgICAgICBpZiAocmVuZGVyVmlldy5tdWx0aUNvbHVtbkZsb3coKSkKICAg
ICAgICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoZG9j
dW1lbnRTdHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LnBhZ2UoKS5wYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZUdyaWQo
Ii13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50
U3R5bGUuc2V0TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiX3MpOwog
ICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lU25hcChMaW5lU25hcDo6Q29udGFpbik7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVs
ZW1lbnQuY3BwCmluZGV4IDNhZDI0ZTVmY2M5MWNiMmY4OGUyMDI1NGFiYWQ2MDE0ODcxOTI4OGQu
LjYzYmNkMWE4MGVmNzg1MzM5NDI0MjEzMGRkMmRmODkwOWMyMjNmZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFJl
ZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNyY1ZhbHVlKCkg
Y29uc3QKIHsKICAgICBhdXRvIHNyYyA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZShnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmhyZWZBdHRyLCBYTGlua05hbWVzOjpocmVmQXR0ciksIExvYWRl
ZEZyb21PcGFxdWVTb3VyY2U6Ok5vKTsKICAgICBBdG9tU3RyaW5nIHZhbHVlKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWF0QXR0cikpOwotICAgIHNyYy5nZXQoKS5zZXRGb3Jt
YXQodmFsdWUuaXNFbXB0eSgpID8gInN2ZyIgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0Cisg
ICAgc3JjLmdldCgpLnNldEZvcm1hdCh2YWx1ZS5pc0VtcHR5KCkgPyAic3ZnIl9zIDogdmFsdWUp
OyAvLyBEZWZhdWx0IGZvcm1hdAogICAgIHJldHVybiBzcmM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAppbmRleCBhMDFmNmJhZGExYzFkNmMyNWY4MjBmNzI2YzhlY2VlODE4
MmVjYjZhLi42ZTVjN2M3NGM4ZTdjY2U3ZDk4Mzc1OGFkZDQ1MmJmZWZhNGEwMTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBTVkdV
c2VFbGVtZW50Ojp0cmFuc2ZlclNpemVBdHRyaWJ1dGVzVG9UYXJnZXRDbG9uZShTVkdFbGVtZW50
JiBzaGFkb3dFbGVtZW4KICAgICAgICAgLy8gSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVp
Z2h0IGFyZSBwcm92aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZSBhdHRyaWJ1
dGVzCiAgICAgICAgIC8vIHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIGdlbmVyYXRlZCAnc3Zn
Jy4gSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBub3Qgc3BlY2lmaWVkLAog
ICAgICAgICAvLyB0aGUgZ2VuZXJhdGVkICdzdmcnIGVsZW1lbnQgd2lsbCB1c2UgdmFsdWVzIG9m
IDEwMCUgZm9yIHRoZXNlIGF0dHJpYnV0ZXMuCi0gICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0
cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRz
KCkgPyBBdG9tU3RyaW5nKHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIik7Ci0gICAg
ICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWln
aHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVB
c1N0cmluZygpKSA6ICIxMDAlIik7CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRl
KFNWR05hbWVzOjp3aWR0aEF0dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBB
dG9tU3RyaW5nKHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIl9zKTsKKyAgICAgICAg
c2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdodCgp
LnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyhoZWlnaHQoKS52YWx1ZUFzU3Ry
aW5nKCkpIDogIjEwMCUiX3MpOwogICAgIH0gZWxzZSBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oc2hh
ZG93RWxlbWVudCkpIHsKICAgICAgICAgLy8gU3BlYyAoPHVzZT4gb24gPHN2Zz4pOiBJZiBhdHRy
aWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBlbGVt
ZW50LCB0aGVuIHRoZXNlCiAgICAgICAgIC8vIHZhbHVlcyB3aWxsIG92ZXJyaWRlIHRoZSBjb3Jy
ZXNwb25kaW5nIGF0dHJpYnV0ZXMgb24gdGhlICdzdmcnIGluIHRoZSBnZW5lcmF0ZWQgdHJlZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAppbmRleCBl
N2FlMWE4YzY4YjAwMTcxM2QxNzc1YTI0MmU5NGJjNjE2MGZmZDVmLi4xZGExMTk0YmE4ZWZkMGVh
MDRhZjI1M2Q0MTliMjY5MTRhZDBmODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRmV0Y2hF
dmVudC5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNs
dWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00Miw3ICs0
Myw3IEBAIFJlZjxGZXRjaEV2ZW50PiBGZXRjaEV2ZW50OjpjcmVhdGVGb3JUZXN0aW5nKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgRmV0Y2hFdmVudDo6SW5pdCBpbml0
OwogICAgIGluaXQucmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHsgfSwg
RmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlLCB7IH0p
LCB7IH0sIHsgfSwgeyB9KTsKLSAgICByZXR1cm4gRmV0Y2hFdmVudDo6Y3JlYXRlKCpjb250ZXh0
Lmdsb2JhbE9iamVjdCgpLCAiZmV0Y2giLCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNUcnVzdGVk
OjpZZXMpOworICAgIHJldHVybiBGZXRjaEV2ZW50OjpjcmVhdGUoKmNvbnRleHQuZ2xvYmFsT2Jq
ZWN0KCksIGV2ZW50TmFtZXMoKS5mZXRjaEV2ZW50LCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNU
cnVzdGVkOjpZZXMpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZjxET01Qcm9taXNlPiByZXRyaWV2
ZUhhbmRsZWRQcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmUHRy
PERPTVByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5kZXggNmRm
M2YwYzkzZWY0NTYwYjI5NzYzZDhiMTRmZDI4NTcyOGRiYzc2OC4uZWY0Y2RlYWJkZTQ5ZGVjNDA0
MmE2ZjgzMjUwYjZlMmY3NzI2MDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKQEAgLTgz
LDEwICs4MywxMCBAQCB2b2lkIFhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKEFTQ0lJTGl0
ZXJhbCB0eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24gcG9zaXRpbwogCiBzdGF0aWMgaW5saW5lIFJl
ZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2VzKQogewotICAgIFJlZjxFbGVtZW50PiByZXBv
cnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9t
KCksICJwYXJzZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CisgICAgUmVmPEVs
ZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5h
bWUobnVsbEF0b20oKSwgInBhcnNlcmVycm9yIl9zLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUp
OwogCiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gcmVwb3J0QXR0cmlidXRlczsKLSAgICByZXBvcnRB
dHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxvY2s7IHdo
aXRlLXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAgMWVtIDAg
MWVtOyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJsYWNrIikp
OworICAgIHJlcG9ydEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNw
bGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFk
ZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBj
b2xvcjogYmxhY2siX3MpKTsKICAgICByZXBvcnRFbGVtZW50LT5wYXJzZXJTZXRBdHRyaWJ1dGVz
KHJlcG9ydEF0dHJpYnV0ZXMpOwogCiAgICAgYXV0byBoMyA9IEhUTUxIZWFkaW5nRWxlbWVudDo6
Y3JlYXRlKGgzVGFnLCBkb2N1bWVudCk7CkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBpbmxpbmUg
UmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zCiAKICAgICBhdXRvIGZpeGVkID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gZml4ZWRBdHRyaWJ1dGVzOwotICAgIGZpeGVk
QXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImZvbnQtZmFtaWx5Om1vbm9z
cGFjZTtmb250LXNpemU6MTJweCIpKTsKKyAgICBmaXhlZEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJp
YnV0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgiX3Mp
KTsKICAgICBmaXhlZC0+cGFyc2VyU2V0QXR0cmlidXRlcyhmaXhlZEF0dHJpYnV0ZXMpOwogICAg
IHJlcG9ydEVsZW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKGZpeGVkKTsKIApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHZvaWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAjaWYgRU5B
QkxFKFhTTFQpCiAgICAgaWYgKG1fZG9jdW1lbnQudHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkg
ewogICAgICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwotICAgICAgICBhdHRyaWJ1
dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCIpKTsK
KyAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNw
YWNlOiBub3JtYWwiX3MpKTsKICAgICAgICAgYXV0byBwYXJhZ3JhcGggPSBIVE1MUGFyYWdyYXBo
RWxlbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlclNl
dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIHBhcmFncmFwaC0+cGFyc2VyQXBwZW5k
Q2hpbGQobV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGhpcyBkb2N1bWVudCB3YXMgY3JlYXRl
ZCBhcyB0aGUgcmVzdWx0IG9mIGFuIFhTTCB0cmFuc2Zvcm1hdGlvbi4gVGhlIGxpbmUgYW5kIGNv
bHVtbiBudW1iZXJzIGdpdmVuIGFyZSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCByZXN1bHQuIl9zKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMjM1ZmEzODVkYWQ2MWU1Y2I3
YWJhYjAxOWE4OTliMzFkM2EwYjM2OS4uMDJlZTk5MGNlMDdkYTBiZjM5MzA0YWIxZGI3MmFlMDc0
ZTFjMWE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIFhNTFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpCiB7
CiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKFhNTFZpZXdlcl9qcywgc2l6ZW9mKFhNTFZpZXdlcl9qcykpOwogICAgIG1fZG9jdW1lbnQu
ZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VD
b2RlKHNjcmlwdFN0cmluZykpOwotICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZh
bHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBh
cmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUg
YW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRy
ZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlw
dCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5n
KCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0
byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1
bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyJfcykpKTsKIAogICAgIFN0cmluZyBjc3NTdHJp
bmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfY3NzLCBzaXpl
b2YoWE1MVmlld2VyX2NzcykpOwogICAgIGF1dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoY3NzU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KaW5kZXggZjYyZGM3
YzgzN2YwMmY3MDEwYzgyZDk3OTBlMmJhYWYyMTRlMWQyMS4uNmIyODU4MDU5NGVlMzVlMTUyOTNj
YzM3ZGYwMDgzMGMxZTFiYTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAgLTU0
LDcgKzU0LDcgQEAgUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdpblBhc3N3b3JkRmll
bGQoKQogUmVmPEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCkKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKLSAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUo
dHlwZUF0dHIsICJwYXNzd29yZCIpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0
ciwgInBhc3N3b3JkIl9zKTsKICAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5rZXl1cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAgICAgcmV0dXJuIGVs
ZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwCmluZGV4IDczZmMwMTM0MmM4YjdmNDE0Y2M4ZGMxNWM4YmM3ZDVkOTliNDc1
YzQuLjU4ZmEzZTQyMWM3MTBkZWRlZmZmMzFkZTI0Y2RlYzQ4YjllZWJjNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0y
MDQzLDcgKzIwNDMsNyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjptZXNzYWdlcyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbgogICAgICAgICBkaWN0aW9u
YXJ5LT5wdXREaXJlY3Qodm0sIGlzU3luY0lkZW50LCBKU0M6OmpzQm9vbGVhbihtZXNzYWdlSXNT
eW5jKG5hbWUpKSk7ICAgICAgICAgICAgCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKIAotICAgICAgICBtZXNzYWdlc09i
amVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBkZXNj
cmlwdGlvbihuYW1lKSksIGRpY3Rpb25hcnkpOworICAgICAgICBtZXNzYWdlc09iamVjdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGRlc2NyaXB0aW9uKG5h
bWUpKSwgZGljdGlvbmFyeSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMTQwZWNhZGJh
N2Y3Y2VhNjYwYTExNzBhNTlhODE1ZTRlNzA2ZjVlNC4uNGUyZTliYTgyNWIwYmFiYjQ5N2MwZDk5
ZmM4OTVjNWQwMDM1N2FhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTM0NDIsNyArMzQ0Miw3IEBAIHN0ZDo6b3B0aW9u
YWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbigpCiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNUZWxlcGhvbmVGaWVsZCgpKQog
ICAgICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6OlBob25lOwog
ICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzTnVtYmVyRmllbGQoKSkKLSAgICAgICAgICAgIGlu
Zm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoInBhdHRlcm4iKSA9
PSAiXFxkKiIgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoInBhdHRlcm4iKSA9PSAiWzAtOV0qIiA/
IElucHV0VHlwZTo6TnVtYmVyUGFkIDogSW5wdXRUeXBlOjpOdW1iZXI7CisgICAgICAgICAgICBp
bmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
cGF0dGVybkF0dHIpID09ICJcXGQqIiB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6
OnBhdHRlcm5BdHRyKSA9PSAiWzAtOV0qIiA/IElucHV0VHlwZTo6TnVtYmVyUGFkIDogSW5wdXRU
eXBlOjpOdW1iZXI7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNEYXRlVGltZUxvY2FsRmll
bGQoKSkKICAgICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpE
YXRlVGltZUxvY2FsOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzRGF0ZUZpZWxkKCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDY3Y2Vi
OWJhMWEyNjVjYzk1MzdmYTBmMDgyZjBhOWM4MTQ3NjAxMi4uMDI1YmIwNTE1ZDZjYThiZDU0ZWM5
ZmE3ZDY1NjVmNGE0MTZjZjk5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTA0LTEyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0IGNo
YXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0F0b21TdHJpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMjItMDQtMTEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFsgaU9TIGlQaG9uZSAxMiBdIGZhc3QvaGlkcGkgJiBmYXN0L2xheWVycy9o
aWRwaSB0ZXN0cyBhcmUgZmxha3kgdGV4dC9pbWFnZSBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCmluZGV4IGJlNzQxNTRlMzg4YmE3YzU2NDYx
ZWM5NmJhNzAwM2UxZDkyYjY4ZWEuLjAzZjE5YjA0MTMyZTViNTBjM2Q4NGZmZmVlODdhNmFhNThl
YzliZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21TdHJp
bmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21TdHJpbmcuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIFRFU1QoV1RGLCBBdG9tU3RyaW5nQ3JlYXRpb25Gcm9tTGl0ZXJh
bFVuaXF1ZW5lc3MpCiAgICAgQXRvbVN0cmluZyBzdHJpbmcyKCJUZW1wbGF0ZSBMaXRlcmFsIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIEFTU0VSVF9FUShzdHJpbmcx
LmltcGwoKSwgc3RyaW5nMi5pbXBsKCkpOwogCi0gICAgQXRvbVN0cmluZyBzdHJpbmczKCJUZW1w
bGF0ZSBMaXRlcmFsIik7CisgICAgQXRvbVN0cmluZyBzdHJpbmczKCJUZW1wbGF0ZSBMaXRlcmFs
Il9zKTsKICAgICBBU1NFUlRfRVEoc3RyaW5nMS5pbXBsKCksIHN0cmluZzMuaW1wbCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0
b3JzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5j
cHAKaW5kZXggYjQ0MmU0MzY4YzAzZGI3YmE2MzBjN2FlYTJhOTgzNWQzNDhiNDRiOC4uMDJiNjE2
NGJkNTllOWYyMWZkNGNmODc5NmY4ZmNiNDlmZTZiYmVmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCkBAIC00Myw3ICs0Myw3IEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV1RGLCBTdHJpbmdPcGVyYXRvcnMpCiB7
CiAgICAgU3RyaW5nIHN0cmluZygiU3RyaW5nIl9zKTsKLSAgICBBdG9tU3RyaW5nIGF0b21TdHJp
bmcoIkF0b21TdHJpbmciKTsKKyAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcoIkF0b21TdHJpbmci
X3MpOwogICAgIEFTQ0lJTGl0ZXJhbCBsaXRlcmFsIHsgIkFTQ0lJTGl0ZXJhbCJfcyB9OwogCiAg
ICAgU3RyaW5nIHN0cmluZ1ZpZXdCYWNraW5nIHsgIlN0cmluZ1ZpZXciX3MgfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAKaW5kZXggYmNmMDMyOTU1YmUyZWJkZmZlNjkzZDhhOGJiZDgyYmY5NDJmOWQ5
OS4uMzgwZjM0MGIxYTQzMWYyNDcyYzAyYTExYjk1OGE4YmRhNjkyZjA3NCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkKIHsKICAgICBG
b250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9z
KTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRl
IGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC05NCw3
ICs5NCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5j
ZVdpdGhMZWZ0UnVuSW5SVEwpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5p
dGlhbEFkdmFuY2VJblJUTCkKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0
aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlw
dGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRl
ZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwog
ICAgIGZvbnQudXBkYXRlKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0
Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCiBURVNUX0YoQ29tcGxleFRleHRD
b250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQogewogICAgIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25l
RmFtaWx5KCJMdWNpZGFHcmFuZGUiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1
Y2lkYUdyYW5kZSJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAg
ICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0
ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0
LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCiBURVNUX0YoQ29tcGxleFRleHRDb250
cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKIHsKICAgICBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRh
R3JhbmRlIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFHcmFuZGUiX3Mp
OwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUg
Zm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTIxOCw3
ICsyMTgsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFu
Y2VJbkxUUikKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5j
ZUluUlRMTm9PcmlnaW5zKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRp
b247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0
aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZSg0OCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAg
ICAgZm9udC51cGRhdGUoKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBURVNUX0YoQ29tcGxleFRleHRD
b250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBMZWZ0RXhwYW5zaW9uKQogewogICAgIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJU
aW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRl
c2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg0OCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZN
b3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTI5NCw3ICsyOTQsNyBA
QCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lvbikKIFRFU1Rf
RihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQogewogICAgIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25l
RmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3Mp
OwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg0OCk7CiAgICAgRm9udENhc2NhZGUg
Zm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTMzOCw3
ICszMzgsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVydGljYWxBZHZh
bmNlcykKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0aEp1
c3RpZmljYXRpb24pCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsK
LSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24u
c2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXpl
KDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBm
b250LnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHND
Ry5jcHAKaW5kZXggMmYyOGQ0ZTY2NTMzMGZjNjg2M2U0MWUwN2VkN2JjN2JkYjBlNDQ2NC4uNDA2
ZDA4NzNhZGY5ZDZiMzFlMWJhYWU4Yzc1YTBkN2RlNzRhZDI0YyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRU
ZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFRFU1Qo
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0KQogICAgIEJpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQgY3R4KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0KTsKIAogICAg
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0
T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMi
X3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2Nh
ZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsK
</data>
<flag name="commit-queue"
          id="486097"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457410</attachid>
            <date>2022-04-12 13:43:59 -0700</date>
            <delta_ts>2022-04-12 19:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412134358.patch</filename>
            <type>text/plain</type>
            <size>119817</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5iOWQxN2YyNmU5NjkxOTMy
Mzc1NjM1NWM2Mjg3ZTEyNTA1Zjg1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5
VXNhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZp
ZXI6OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVk
U3RhdGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRi
ZmE0N2NiOGEyYWYyYjI0MDIzNDVhYS4uZGQ3OGE4ZDdiMmY5YTNhOWNmM2M0ZGZkZjliYzIxNGZl
MTEwOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3Rl
eHQvQXRvbVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdU
Rjo6b3BlcmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0
ZDNmYmY1YmUwNzIxYzJlZmJlNDljNjNjLi4xN2U1YWY5YzE1ZDk5ZDAyMTYyODJiNmZlYTkzMTRj
OTQ1OWJkN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAq
IGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2Vi
S2l0SW1hZ2VSZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFu
RWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2ls
bFJlYXBwbHlFZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQ
YXN0aW5nKToKKyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dW1tYXJ5U2xvdE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZVNob3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0
bWwvUERGRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0
ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50Ojppbmpl
Y3RTdHlsZUFuZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXAp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2s6OmNhcHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFt
ZSk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJv
cGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1l
bnRTdHlsZVRleHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5r
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRl
ZCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0
aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmlzU3RvcmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjppc0JCQ1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3Vy
cmVudFRleHRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNv
dXJjZUhhbmRsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHA6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJu
Rm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6
ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvRmV0Y2hFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVG
b3JUZXN0aW5nKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVW
aWV3ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9j
dW1lbnRUb1RyZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVl
IHRvIHRoZSBJREwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRi
M2VkYWNlOS4uYjUyYzRiOTc2Y2E0ZTRiMTAxODc3NzAwMjEyYmVhYjI2NzJlMDQ0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBB
dG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6
OkpTSVBDOjptZXNzYWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAy
NzVlYmY0NjhmN2NkZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBj
ZTcyNzZhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyAr
MjA3LDcgQEAgSlNPYmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0
UmVmIGN0eCkKICAgICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMo
KTsKICAgICBKU09iamVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAg
ICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBpdC5rZXkpLCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291
bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpz
TnVtYmVyKGl0LnZhbHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBi
ZTUyNjUxYjMzM2QwMmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUz
MDNhZDRhNzY4NTYyYTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGlj
IElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFj
dGVycykgeyByZXR1cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3Rl
cnMuc2l6ZSgpKTsgfQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29u
c3QgY2hhciopOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBj
aGFyKik7CiAKICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRl
TmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4u
OTY3MDZkNmNlZTNlOTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSAr
MTIwLDkgQEAgaW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0s
IFN5bWJvbEltcGwqIHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJv
bEltcGwpOwogfQogCi1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhW
TSYgdm0sIGNvbnN0IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9t
TGF0aW4xKFZNJiB2bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2
bSwgQXRvbVN0cmluZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6
OmZyb21MYXRpbjEocykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVl
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4
ZGNlZDZiMmQyZDhkOTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1
LDcgKzI2NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
Kmhhc2hUYWJsZSkgewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAg
ICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsK
KyAgICAgICAgICAgIGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUu
bV9rZXkpOwogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zm
c2V0KHZtLCBrZXksIGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRh
YmxlLT5jbGFzc0ZvclRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2
MDZiYTRlYTk1YWM1M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1
NzIwZDhiNjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3RJbmxpbmVzLmgKQEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmpl
Y3Q6OmdldE5vblJlaWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQog
CiAgICAgICAgIGZvciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUt
PmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFj
NmY1MjM3MjIwMDJlMDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uZjM4NzcxMTIxN2YwZjNlMDFh
ZjI3MTM3ZTcwYmIzNTE3OTRkMmYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9tU3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJU
KGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAg
ICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVjdCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEu
Y29uc3RydWN0KEF0b21TdHJpbmc6OmZyb21MYXRpbjEoIiIpKTsKIAogICAgICAgICAvLyBXaGVu
IHN0YXJ0aW5nIFdlYlRocmVhZCB2aWEgU3RhcnRXZWJUaHJlYWQgZnVuY3Rpb24sIHdlIGhhdmUg
c3BlY2lhbCBwZXJpb2QgYmV0d2VlbiB0aGUgcHJvbG9ndWUgb2YgU3RhcnRXZWJUaHJlYWQgYW5k
IHNwYXduaW5nIFdlYlRocmVhZCBhY3R1YWxseS4KICAgICAgICAgLy8gSW4gdGhpcyBwZXJpb2Qs
IGBpc01haW5UaHJlYWQoKWAgcmV0dXJucyBmYWxzZSBldmVuIGlmIHRoaXMgaXMgY2FsbGVkIG9u
IHRoZSBtYWluIHRocmVhZCBzaW5jZSBXZWJUaHJlYWQgaXMgbm93IGVuYWJsZWQgYW5kIHdlIGFy
ZSBub3QgdGFraW5nIGEgV2ViVGhyZWFkIGxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmlu
ZGV4IDM1MDYzOWRjNWQ2ZmEyODMxNzRlNWMxNDYxYjdkNDVjYjQyMDU3NTkuLjA2OWFmNmQzMjU5
ZDMyYjI0Yzk1YTI1NDAzYWEzZmFjMGQ4MGI1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
CkBAIC0zOSwxMSArMzksMTIgQEAgcHVibGljOgogCiAgICAgQXRvbVN0cmluZygpOwogICAgIEF0
b21TdHJpbmcoY29uc3QgTENoYXIqKTsKLSAgICBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAg
ICBBdG9tU3RyaW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3Ry
aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0
IFVDaGFyKik7CiAKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBBdG9tU3RyaW5nIGZyb21MYXRp
bjEoY29uc3QgY2hhciogY2hhcmFjdGVycykgeyByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJz
KTsgfQorCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgogICAgIGV4cGxpY2l0
IEF0b21TdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGNoYXJhY3Rl
cnMpCiAgICAgICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZChjaGFyYWN0ZXJzLmRh
dGEoKSwgY2hhcmFjdGVycy5zaXplKCkpKQpAQCAtMTY3LDYgKzE2OCw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiBwcml2YXRlOgorICAgIEF0b21TdHJpbmcoY29uc3QgY2hhciopOworCiAgICAgZW51
bSBjbGFzcyBDYXNlQ29udmVydFR5cGUgeyBVcHBlciwgTG93ZXIgfTsKICAgICB0ZW1wbGF0ZTxD
YXNlQ29udmVydFR5cGU+IEF0b21TdHJpbmcgY29udmVydEFTQ0lJQ2FzZSgpIGNvbnN0OwogCkBA
IC0xODAsNiArMTgzLDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykgPT0gc2l6
ZW9mKFN0cmluZyksICJBdG9tU3RyaW5nIGFuZCBTdHJpbmcgbXVzdAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVy
biBhLmltcGwoKSA9PSBiLmltcGwoKTsgfQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3Ry
aW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBXVEY6OmVxdWFsKGEuaW1wbCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF0b21TdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBiKSB7IHJldHVybiBXVEY6OmVxdWFs
KGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBW
ZWN0b3I8VUNoYXI+JiBiKSB7IHJldHVybiBhLmltcGwoKSAmJiBlcXVhbChhLmltcGwoKSwgYi5k
YXRhKCksIGIuc2l6ZSgpKTsgfSAgICAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRv
bVN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5p
bXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBB
dG9tU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KQEAgLTE5Miw2ICsxOTYsNyBAQCBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsg
cmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3Ry
aW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBs
KCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0
IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShi
ID09IGEpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0ZXJhbCBhLCBjb25zdCBB
dG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwo
YS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0
b3I8VUNoYXI+JiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggOGNkYmNhNzdhZjM4MzA3YjJiNGMwYTRkMjVhMWYw
ZTkxMWFiYjFkZS4uNjI0OTJhOTA2MDU0YjVkMmNmOGU1OTIxYmI5YzQ4ZWY3M2YzNGE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuY3BwCkBAIC0yMjYsOSArMjI2LDkgQEAgSW5pdERhdGFSZWdpc3RyeSYg
SW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkKIAogSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFS
ZWdpc3RyeSgpCiB7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyIsIHsgc2FuaXRp
emVLZXlpZHMsIGV4dHJhY3RLZXlJRHNLZXlpZHMgfSk7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5
cGUoImNlbmMiLCB7IHNhbml0aXplQ2VuYywgZXh0cmFjdEtleUlEc0NlbmMgfSk7Ci0gICAgcmVn
aXN0ZXJJbml0RGF0YVR5cGUoIndlYm0iLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dl
Yk0gfSk7CisgICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyJfcywgeyBzYW5pdGl6ZUtl
eWlkcywgZXh0cmFjdEtleUlEc0tleWlkcyB9KTsKKyAgICByZWdpc3RlckluaXREYXRhVHlwZSgi
Y2VuYyJfcywgeyBzYW5pdGl6ZUNlbmMsIGV4dHJhY3RLZXlJRHNDZW5jIH0pOworICAgIHJlZ2lz
dGVySW5pdERhdGFUeXBlKCJ3ZWJtIl9zLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dl
Yk0gfSk7CiB9CiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYTZkMzEwMmM4ODJhNjA5OGY0NzkyYjdiY2Qw
NmJhMjZkNDI4N2Q4YS4uMDA1MGRlMTZjMGNiZDdmMDY1NzY5YmM1ODI2NGI2MTE2OGVkY2Q5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xNzg2LDcgKzE3ODYsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdAogICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBkb3duY2FzdDxFbGVtZW50
Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSJfcyA6
ICJmYWxzZSJfcyk7CiB9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVs
ZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBjYjJh
ZjFmNjZiZjQxZTU2ZDAwMmZlZjAwMGZlMTEwZDMyMDQzM2QxLi5jZGE0MDFlYjBmNWM0YzBmNzBm
ZWI2MTA4OTNjZjE0ZGYwNWYyYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNs
dWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgpAQCAtMTQ3
NCw3ICsxNDc1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpjb21taXRTdHls
ZXMoKQogCiAgICAgYXV0byBjb21wdXRlZFN0eWxlRXh0cmFjdG9yID0gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcigmc3R5bGVkRWxlbWVudCk7CiAgICAgYXV0byBpbmxpbmVTdHlsZSA9IHN0eWxlZEVs
ZW1lbnQuZG9jdW1lbnQoKS5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgaW5saW5l
U3R5bGUtPnNldENzc1RleHQoc3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpOwor
ICAgIGlubGluZVN0eWxlLT5zZXRDc3NUZXh0KHN0eWxlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6c3R5bGVBdHRyKSk7CiAKICAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0gc3R5bGVk
RWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKTsKICAgICAv
LyBEdXJpbmcgaXRlcmF0aW9uIHJlc29sdmUoKSBjb3VsZCBjbGVhciB0aGUgdW5kZXJseWluZyBw
cm9wZXJ0aWVzIHNvIHdlIHVzZSBhIGNvcHkKQEAgLTE1MDcsNyArMTUwOCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlubGlu
ZVN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBjc3NWYWx1ZS0+Y3NzVGV4dCgp
LCBmYWxzZSk7CiAgICAgfQogCi0gICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxl
IiwgaW5saW5lU3R5bGUtPmNzc1RleHQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIGlubGluZVN0eWxlLT5jc3NUZXh0KCkpOwogCiAgICAg
cmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElu
bGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAppbmRleCA3YzFl
ZjdjNjNjNGMzNTc3ZDE5ZWVlYTM5ZmYyYWEwMzg2ZjhiZTllLi4xZmU4NjAzOTQ4OTU2MDhjNjg4
YTQzMWNiMTBjYTEzMTNhYzc5ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5o
CkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBQQUw6OlRleHRFbmNvZGluZyBEb2N1bWVudDo6dGV4
dEVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gUEFMOjpUZXh0RW5jb2RpbmcoKTsKIH0KIAot
aW5saW5lIEF0b21TdHJpbmcgRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gdGV4
dEVuY29kaW5nKCkuZG9tTmFtZSgpOyB9CitpbmxpbmUgQXRvbVN0cmluZyBEb2N1bWVudDo6ZW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHRleHRFbmNvZGlu
ZygpLmRvbU5hbWUoKSk7IH0KIAogaW5saW5lIFN0cmluZyBEb2N1bWVudDo6Y2hhcnNldCgpIGNv
bnN0IHsgcmV0dXJuIERvY3VtZW50OjplbmNvZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAppbmRleCBlMDBjMWY5YTg5NTRlZTBiOGNiYzFkODJkMzBiNjAxZGZlMTM5YmVjLi5lZmY4MGI1
NWYxNzUzNDNkMjkxMWJiN2YxMWQ0NTBlYjNlOTMwZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC0zMjI0LDcgKzMyMjQsNyBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFJl
ZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQogdm9pZCBFbGVtZW50OjpkaXNwYXRj
aFdlYktpdEltYWdlUmVhZHlFdmVudEZvclRlc3RpbmcoKQogewogICAgIGlmIChkb2N1bWVudCgp
LnNldHRpbmdzKCkud2Via2l0SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIEV2ZW50OjpD
YW5CdWJibGU6OlllcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5Il9zLCBFdmVudDo6
Q2FuQnViYmxlOjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwogfQogCiBib29sIEVs
ZW1lbnQ6OmRpc3BhdGNoTW91c2VGb3JjZVdpbGxCZWdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRv
RWxlbWVudC5jcHAKaW5kZXggNDEzZTM0NjcyZWI2NzU2ZDg5YTBmZTRhZmQ2N2Y5ZWE2YzY4YmM1
Yy4uMzZjODk3N2IxNmI0NWYzYTg3ZWVkOTNjOGFlNGI0NmQ1NTY5NmI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoUHNldWRvRWxlbWVudCk7CiAKIGNvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVk
b0VsZW1lbnRUYWdOYW1lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVkbz4iLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVk
bz4iX3MsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmNwcAppbmRleCA3ZDlkNTliZTFjMTUyZjA5ODVmNWY1MThiYjlmY2NlNTZmODdi
YzlhLi44MGZmZDFlYzNmODIwZjE2NjcyYWIxOGI2NDI1MDQzYjliZjRiZjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgUmVmPEVsZW1l
bnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4
dE5vZGUpCiAgICAgYXV0byBzcGFuRWxlbWVudCA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKIAogICAgIHNwYW5FbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGNsYXNzQXR0ciwgQXBwbGVUYWJTcGFuQ2xhc3MpOwotICAgIHNwYW5FbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6cHJlIik7CisgICAgc3BhbkVsZW1l
bnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTpwcmUiX3MpOwogCiAgICAg
c3BhbkVsZW1lbnQtPmFwcGVuZENoaWxkKHRhYlRleHROb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IGI4MDMzMWIyOGYwN2NmNTQ2ZWUxMWM1YmEwZmMxYzNhOWRmYzk4OWUu
Ljk3NDc4OGEzYjNhYTgxM2VmMDFlMmQyMWJiMjc5MjJjMjBmYjdkY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTExNzgsNyArMTE3OCw3IEBAIHZvaWQgRWRpdG9yOjphcHBsaWVk
RWRpdGluZyhDb21wb3NpdGVFZGl0Q29tbWFuZCYgY29tbWFuZCkKIAogYm9vbCBFZGl0b3I6Ondp
bGxVbmFwcGx5RWRpdGluZyhjb25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlv
bikgY29uc3QKIHsKLSAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3Np
dGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9v
dEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hC
ZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQo
KSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8i
X3MpOwogfQogCiB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBv
c2l0aW9uJiBjb21wb3NpdGlvbikKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgRWRpdG9yOjp1
bmFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uc3RhcnRpbmdTZWxl
Y3Rpb24oKSk7CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwg
RnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkpOwotICAgIGRpc3Bh
dGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCks
IGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlVbmRvIik7
CisgICAgZGlzcGF0Y2hJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJs
ZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlz
dG9yeVVuZG8iX3MpOwogCiAgICAgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOwogCkBA
IC0xMjAzLDcgKzEyMDMsNyBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29t
bWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKIAogYm9vbCBFZGl0b3I6OndpbGxSZWFwcGx5
RWRpdGluZyhjb25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikgY29uc3QK
IHsKLSAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFy
dGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxl
RWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1
dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9z
aXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogfQog
CiB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBj
b21wb3NpdGlvbikKQEAgLTEyMTQsNyArMTIxNCw3IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRF
ZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uZW5kaW5nU2VsZWN0aW9uKCkpOwog
ICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0
aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpKTsKLSAgICBkaXNwYXRjaElucHV0RXZl
bnRzKGNvbXBvc2l0aW9uLnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlv
bi5lbmRpbmdSb290RWRpdGFibGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyIpOworICAgIGRpc3Bh
dGNoSW5wdXRFdmVudHMoY29tcG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCks
IGNvbXBvc2l0aW9uLmVuZGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlSZWRvIl9z
KTsKICAgICAKICAgICB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTE1NTAs
OCArMTU1MCw4IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZUZvbnQoRnJvbU1lbnVPcktleUJpbmRpbmcg
ZnJvbU1lbnVPcktleUJpbmRpbmcpCiB2b2lkIEVkaXRvcjo6cXVvdGVGcmFnbWVudEZvclBhc3Rp
bmcoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpCiB7CiAgICAgYXV0byBibG9ja1F1b3RlID0g
SFRNTFF1b3RlRWxlbWVudDo6Y3JlYXRlKGJsb2NrcXVvdGVUYWcsIGRvY3VtZW50KCkpOwotICAg
IGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIs
IEF0b21TdHJpbmcoImNpdGUiKSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIsIEF0b21TdHJpbmcoQXBwbGVQYXN0ZUFzUXVvdGF0
aW9uKSk7CisgICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bih0eXBlQXR0ciwgImNpdGUiX3MpOworICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBsZVBhc3RlQXNRdW90YXRpb24pOwogCiAg
ICAgYXV0byBjaGlsZE5vZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oCmluZGV4IGQ0YzUwNWM4YTY3MmIyZTA4Y2U4NTgz
MGRhNTllMDlmMDE0MTYxMWIuLjViNmYzNzA4OWNlZWQ1OTY2ZTI1MmNlNGI0MDQxMWVkNzA3MTAx
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaApAQCAtMzMsMTAg
KzMzLDEwIEBAIGNsYXNzIFRleHQ7CiAKICNkZWZpbmUgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUg
ICAiQXBwbGUtaW50ZXJjaGFuZ2UtbmV3bGluZSIKICNkZWZpbmUgQXBwbGVDb252ZXJ0ZWRTcGFj
ZSAgICAgICAiQXBwbGUtY29udmVydGVkLXNwYWNlIgotI2RlZmluZSBBcHBsZVBhc3RlQXNRdW90
YXRpb24gICAgICJBcHBsZS1wYXN0ZS1hcy1xdW90YXRpb24iCi0jZGVmaW5lIEFwcGxlU3R5bGVT
cGFuQ2xhc3MgICAgICAgIkFwcGxlLXN0eWxlLXNwYW4iCi0jZGVmaW5lIEFwcGxlVGFiU3BhbkNs
YXNzICAgICAgICAgIkFwcGxlLXRhYi1zcGFuIgotI2RlZmluZSBXZWJLaXRNU09MaXN0UXVpcmtz
U3R5bGUgICJXZWJLaXQtbXNvLWxpc3QtcXVpcmtzLXN0eWxlIgorI2RlZmluZSBBcHBsZVBhc3Rl
QXNRdW90YXRpb24gICAgICJBcHBsZS1wYXN0ZS1hcy1xdW90YXRpb24iX3MKKyNkZWZpbmUgQXBw
bGVTdHlsZVNwYW5DbGFzcyAgICAgICAiQXBwbGUtc3R5bGUtc3BhbiJfcworI2RlZmluZSBBcHBs
ZVRhYlNwYW5DbGFzcyAgICAgICAgICJBcHBsZS10YWItc3BhbiJfcworI2RlZmluZSBXZWJLaXRN
U09MaXN0UXVpcmtzU3R5bGUgICJXZWJLaXQtbXNvLWxpc3QtcXVpcmtzLXN0eWxlIl9zCiAKIC8v
IENvbnRyb2xzIHdoZXRoZXIgYSBzcGVjaWFsIEJSIHdoaWNoIGlzIHJlbW92ZWQgdXBvbiBwYXN0
ZSBpbiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZCBuZWVkcyB0byBiZSBpbnNlcnRlZAogLy8gYW5k
IG1ha2luZyBzZXF1ZW5jZSBvZiBzcGFjZXMgbm90IGNvbGxhcHNpYmxlIGJ5IGluc2VydGluZyBu
b24tYnJlYWtpbmcgc3BhY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91
dGRlbnRDb21tYW5kLmNwcAppbmRleCAzYzQ2MTQzYTc4MWMzNmVjNzk0ZWY3ZTcxYjUyODI1MWI4
MTA5ZTA2Li4xN2E0ODcwOGUyYmY4OWU1MmJjZjdmMmNkODFlNjZhYjA3ZThmNjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgYm9vbCBpc0xpc3RPckluZGVudEJsb2NrcXVvdGUoY29uc3QgTm9k
ZSogbm9kZSkKIH0KIAogSW5kZW50T3V0ZGVudENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5k
KERvY3VtZW50JiBkb2N1bWVudCwgRUluZGVudFR5cGUgdHlwZU9mQWN0aW9uKQotICAgIDogQXBw
bHlCbG9ja0VsZW1lbnRDb21tYW5kKGRvY3VtZW50LCBibG9ja3F1b3RlVGFnLCAibWFyZ2luOiAw
IDAgMCA0MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiKQorICAgIDogQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kKGRvY3VtZW50LCBibG9ja3F1b3RlVGFnLCAibWFyZ2luOiAwIDAgMCA0
MHB4OyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDBweDsiX3MpCiAgICAgLCBtX3R5cGVPZkFjdGlv
bih0eXBlT2ZBY3Rpb24pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KaW5kZXggNGEzMjZlNjY4ODA5NDBmYjUzNDg1ZjkzYTEzMzk5ZDAyYTZj
YTI2OC4uZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2YxZDZhYTAyODU5YjRkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTk1LDcgKzU5
NSw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiBjb250ZXh0UmFuZ2UsIE9wCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IFJlZjxIVE1MQW5jaG9yRWxlbWVudD4gYW5jaG9yRWxlbWVudCA9IEhUTUxBbmNob3JFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0SHJlZihj
b3JyZXNwb25kaW5nVVJMKTsKLSAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldERpcigibHRy
Iik7CisgICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXREaXIoImx0ciJfcyk7CiAKICAgICAg
ICAgICAgIGlmIChzaG91bGRVc2VMaWdodExpbmtzKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4
IDJkOGY4YjMzNTkzMGQwN2RkMzMyNmI4MTA2NWYyZDRmZDgzNWFjYWUuLjdlNTk1MmI3YTk2Mjg3
MDcwZTgwMzc5OGQ1OWQ4ZmMyZjdiMzliOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
QEAgLTExNzQsNyArMTE3NCw3IEBAIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZyb21UZXh0KGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0LCBjb25zdCBTCiAKICAgICBhdXRv
IGNyZWF0ZUhUTUxCUkVsZW1lbnQgPSBbJmRvY3VtZW50XSgpIHsKICAgICAgICAgYXV0byBlbGVt
ZW50ID0gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgZWxlbWVudC0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjbGFzc0F0dHIsIEFwcGxlSW50ZXJj
aGFuZ2VOZXdsaW5lKTsKKyAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihjbGFzc0F0dHIsIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoQXBwbGVJbnRlcmNo
YW5nZU5ld2xpbmUpKTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggNTA0OTVjMTdiOWNhOTc5MjAz
ZWY5ODRiZjI4MTYzNGU1MjBmYWU0Yy4uYThjMDAzMjI5ZTQzMThiODc3NWU3MjY1OGIxMmFlYTA2
MzMwMDMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIFJlZjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBSZWY8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbVN0cmluZyYgc3JjKQogewogICAgIGF1dG8gZWxlbWVu
dCA9IGNyZWF0ZShhdWRpb1RhZywgZG9jdW1lbnQsIGZhbHNlKTsKLSAgICBlbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRyLCAiYXV0byIpOworICAg
IGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocHJlbG9hZEF0dHIs
ICJhdXRvIl9zKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHNyY0F0dHIsIHNyYyk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggYmY1NDMyYWYzMTZlNWE3NGFmMmFk
MjczZjExNTI2ZTRkYjQ1YjJjYi4uNjhiYzIzOGViZDkxYTQxN2JjYmQ4Yzk1ODY1YzczNTU5YmZk
NWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAt
NDcsNyArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgc3VtbWFyeVNsb3ROYW1lKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHN1bW1hcnlTbG90KCJzdW1tYXJ5U2xvdCIp
OworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4g
c3VtbWFyeVNsb3QoInN1bW1hcnlTbG90Il9zKTsKICAgICByZXR1cm4gc3VtbWFyeVNsb3Q7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMWIzNmQ1YjM2ZjAwMWFkMDdl
OWU2YWEwMjg2ODE2MjcyMjQ2NGQzMC4uNmIxZDhkM2MxZDEwM2E1ZjAyYjgwMzIwM2ZlZmQ4MGIw
NmNkMGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTY5Niw3ICs2OTYs
NyBAQCBib29sIEhUTUxFbGVtZW50Ojp0cmFuc2xhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxFbGVt
ZW50OjpzZXRUcmFuc2xhdGUoYm9vbCBlbmFibGUpCiB7Ci0gICAgc2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih0cmFuc2xhdGVBdHRyLCBlbmFibGUgPyAieWVzIiA6ICJubyIpOwor
ICAgIHNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHJhbnNsYXRlQXR0ciwgZW5h
YmxlID8gInllcyJfcyA6ICJubyJfcyk7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnJlbmRlcmVy
SXNFdmVyTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDIwOWI2ODIzOTYzOTlmZTgwNjliOTRjODIxOWVlNDM4NjFmMDFhNzIuLmJhYjUxMTFkMjZl
YTkwOWE3ZjVjMGQ2MzdiNzUyODk3ZGNkMjVlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtMjY3MCw3ICsyNjcwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVTaG91bGRDb250aW51ZUFmdGVyTmVlZEtleSgpCiB7CiAgICAgaWYgKCFtX3Bs
YXllcikKICAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBoYXNFdmVu
dExpc3RlbmVycygid2Via2l0bmVlZGtleSIpIHx8IChkb2N1bWVudCgpLnNldHRpbmdzKCkuZW5j
cnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRvY3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2Vu
RW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmsoKSk7CisgICAgYm9vbCBzaG91bGRDb250aW51
ZSA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpIHx8
IChkb2N1bWVudCgpLnNldHRpbmdzKCkuZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkgJiYgIWRv
Y3VtZW50KCkucXVpcmtzKCkuaGFzQnJva2VuRW5jcnlwdGVkTWVkaWFBUElTdXBwb3J0UXVpcmso
KSk7CiAgICAgbV9wbGF5ZXItPnNldFNob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQoc2hvdWxk
Q29udGludWUpOwogfQogI2VuZGlmCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCiAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubGVnYWN5RW5jcnlwdGVkTWVkaWFB
UElFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGFzRXZlbnRMaXN0ZW5l
cnMoIndlYmtpdG5lZWRrZXkiKQorICAgIGlmICghaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1l
cygpLndlYmtpdG5lZWRrZXlFdmVudCkKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAg
ICAgICAvLyBPbmx5IGZpcmUgYW4gZXJyb3IgaWYgRU5DUllQVEVEX01FRElBIGlzIG5vdCBlbmFi
bGVkLCB0byBnaXZlIGNsaWVudHMgb2YgdGhlCiAgICAgICAgIC8vICJlbmNyeXB0ZWQiIGV2ZW50
IGEgY2hhbmNlIHRvIGhhbmRsZSBpdCB3aXRob3V0IHJlc3VsdGluZyBpbiBhIHN5bnRoZXRpYyBl
cnJvci4KQEAgLTQ3MDUsNyArNDcwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bGF5b3V0
U2l6ZUNoYW5nZWQoKQogewogICAgIGF1dG8gdGFzayA9IFt0aGlzXSB7CiAgICAgICAgIGlmIChh
dXRvIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkpCi0gICAgICAgICAgICByb290LT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoInJlc2l6ZSIsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworICAgICAgICAgICAgcm9vdC0+ZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgfTsKICAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgV1RGTW92
ZSh0YXNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4
IDhjZWI4OGEzYjEwN2JkZjY0OWE1ZjIyYTAwYTgyZTk0MjRjZTJlYTcuLmJkNDRlMmQwMjhhNzAw
ODg2MzZmZjI2NjA2Mzc3ZWJlZGRmOTc3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcApAQCAtMTkwLDE1ICsxOTAsMTUgQEAgc3RhdGljIHZvaWQgc2V0VmFsdWVD
bGFzcyhIVE1MRWxlbWVudCYgZWxlbWVudCwgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb24g
Z2EKIHsKICAgICBzd2l0Y2ggKGdhdWdlUmVnaW9uKSB7CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVt
ZW50OjpHYXVnZVJlZ2lvbk9wdGltdW06Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6Y2xhc3NBdHRyLCAib3B0aW11bSIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgIm9wdGltdW0iX3MpOwogICAgICAgICBlbGVtZW50
LnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyT3B0aW11bVZhbHVlKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvblN1
Ym9wdGltYWw6Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NB
dHRyLCAic3Vib3B0aW11bSIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgInN1Ym9wdGltdW0iX3MpOwogICAgICAgICBlbGVtZW50LnNldFBzZXVk
byhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyU3Vib3B0aW11bVZhbHVlKCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lvbkV2ZW5MZXNz
R29vZDoKLSAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIs
ICJldmVuLWxlc3MtZ29vZCIpOworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgImV2ZW4tbGVzcy1nb29kIl9zKTsKICAgICAgICAgZWxlbWVudC5zZXRQ
c2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlckV2ZW5MZXNzR29vZFZhbHVlKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTIzNCwxNyArMjM0LDE3IEBAIHZvaWQg
SFRNTE1ldGVyRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290JiBy
b290KQogCiAgICAgLy8gUHNldWRvcyBhcmUgc2V0IHRvIGFsbG93IGF1dGhvciBzdHlsaW5nLgog
ICAgIGF1dG8gaW5uZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAg
IGlubmVyLT5zZXRJZEF0dHJpYnV0ZSgiaW5uZXIiKTsKKyAgICBpbm5lci0+c2V0SWRBdHRyaWJ1
dGUoImlubmVyIl9zKTsKICAgICBpbm5lci0+c2V0UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Vi
a2l0TWV0ZXJJbm5lckVsZW1lbnQoKSk7CiAgICAgcm9vdC5hcHBlbmRDaGlsZChpbm5lcik7CiAK
ICAgICBhdXRvIGJhciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAg
YmFyLT5zZXRJZEF0dHJpYnV0ZSgiYmFyIik7CisgICAgYmFyLT5zZXRJZEF0dHJpYnV0ZSgiYmFy
Il9zKTsKICAgICBiYXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6OndlYmtpdE1ldGVyQmFy
KCkpOwogICAgIGlubmVyLT5hcHBlbmRDaGlsZChiYXIpOwogCiAgICAgbV92YWx1ZSA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgbV92YWx1ZS0+c2V0SWRBdHRyaWJ1
dGUoInZhbHVlIik7CisgICAgbV92YWx1ZS0+c2V0SWRBdHRyaWJ1dGUoInZhbHVlIl9zKTsKICAg
ICBiYXItPmFwcGVuZENoaWxkKCptX3ZhbHVlKTsKIAogICAgIGRpZEVsZW1lbnRTdGF0ZUNoYW5n
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggODA0MWVhNDJjM2Jh
Nzk1NTc1ZjNhMDJiNWUyNjM5YjU3ZWE0NDA0NS4uMzk2ZjlkYzk2ODgxMDM2MTk2NGFkMjhlZTI4
ZjliNTBiNWRjMThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0y
MzAsMTYgKzIzMCwxNiBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0
dXJlKCkKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoaGVhZCk7CiAKICAgICBhdXRvIGJv
ZHkgPSBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgYm9keS0+c2V0QXR0cmli
dXRlKHN0eWxlQXR0ciwgIm1hcmdpbjogMHB4Iik7CisgICAgYm9keS0+c2V0QXR0cmlidXRlKHN0
eWxlQXR0ciwgIm1hcmdpbjogMHB4Il9zKTsKICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZNSU1FVHlwZShkb2N1bWVudCgpLmxvYWRlcigpLT5yZXNwb25zZU1JTUVUeXBlKCkpKQogICAg
ICAgICBib2R5LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAid2hpdGUiX3MpOwogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRDaGlsZChib2R5KTsKICAg
ICAKICAgICBhdXRvIGltYWdlRWxlbWVudCA9IEltYWdlRG9jdW1lbnRFbGVtZW50OjpjcmVhdGUo
KnRoaXMpOwogICAgIGlmIChtX3Nob3VsZFNocmlua0ltYWdlKQotICAgICAgICBpbWFnZUVsZW1l
bnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IGRp
c3BsYXk6YmxvY2s7IG1hcmdpbjphdXRvOyBwYWRkaW5nOmVudihzYWZlLWFyZWEtaW5zZXQtdG9w
KSBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KSBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkg
ZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTsiKTsKKyAgICAgICAgaW1hZ2VFbGVtZW50LT5zZXRB
dHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBkaXNwbGF5OmJs
b2NrOyBtYXJnaW46YXV0bzsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNh
ZmUtYXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZl
LWFyZWEtaW5zZXQtbGVmdCk7Il9zKTsKICAgICBlbHNlCi0gICAgICAgIGltYWdlRWxlbWVudC0+
c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgcGFkZGlu
ZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkgZW52
KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7Iik7Cisg
ICAgICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNl
ci1zZWxlY3Q6bm9uZTsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkgZW52KHNhZmUt
YXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pIGVudihzYWZlLWFy
ZWEtaW5zZXQtbGVmdCk7Il9zKTsKICAgICBpbWFnZUVsZW1lbnQtPnNldExvYWRNYW51YWxseSh0
cnVlKTsKICAgICBpbWFnZUVsZW1lbnQtPnNldFNyYyh1cmwoKS5zdHJpbmcoKSk7CiAgICAgaW1h
Z2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5zZXRSZXNwb25zZShsb2FkZXIoKS0+cmVzcG9uc2Uo
KSk7CkBAIC0yNTMsOCArMjUzLDggQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVu
dFN0cnVjdHVyZSgpCiAjZWxzZQogICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VFdmVudExp
c3RlbmVyOjpjcmVhdGUoKnRoaXMpOwogICAgICAgICBpZiAoUmVmUHRyPERPTVdpbmRvdz4gd2lu
ZG93ID0gdGhpcy0+ZG9tV2luZG93KCkpCi0gICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlz
dGVuZXIoInJlc2l6ZSIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwotICAgICAgICBpbWFn
ZUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV1RGTW92ZShsaXN0ZW5lciksIGZh
bHNlKTsKKyAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
cmVzaXplRXZlbnQsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICBpbWFnZUVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIFdURk1vdmUo
bGlzdGVuZXIpLCBmYWxzZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1
bWVudC5jcHAKaW5kZXggNGUxOTQ2MTZlY2UyNTNjOTQxMjRjZmJlNzI0NThhYmJiZDg1M2IwZC4u
NTlkZmIwMjEyODY1MDBjNTVlN2IyYmQ1OTVjZDg0MzdjZDE2OGU0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QREZEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9QREZEb2N1bWVudC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFBERkRvY3VtZW50Ojpj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgLy8gRGVzY3JpcHRpb24gb2YgcGFyYW1ldGVy
czoKICAgICAvLyAtIGAjcGFnZW1vZGU9bm9uZWAgcHJldmVudHMgdGhlIHNpZGViYXIgZnJvbSBz
aG93aW5nIG9uIGxvYWQuCiAgICAgLy8gLSBFbXB0eSBgP2ZpbGU9YCBwYXJhbWV0ZXIgcHJldmVu
dHMgZGVmYXVsdCBwZGYgZnJvbSBsb2FkaW5nLgotICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtp
dC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93ZWIvdmlld2VyLmh0bWw/ZmlsZT0jcGFnZW1vZGU9bm9u
ZSI7CisgICAgYXV0byB2aWV3ZXJVUkwgPSAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL3dl
Yi92aWV3ZXIuaHRtbD9maWxlPSNwYWdlbW9kZT1ub25lIl9zOwogICAgIGF1dG8gcm9vdEVsZW1l
bnQgPSBIVE1MSHRtbEVsZW1lbnQ6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYXBwZW5kQ2hpbGQocm9v
dEVsZW1lbnQpOwogICAgIHJvb3RFbGVtZW50LT5pbnNlcnRlZEJ5UGFyc2VyKCk7CkBAIC0xNjEs
NyArMTYxLDcgQEAgdm9pZCBQREZEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQog
ICAgIG1faWZyYW1lLT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBBdG9tU3RyaW5nKCJ3aWR0aDog
MTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IDA7IGRpc3BsYXk6IGJsb2NrOyIsIEF0b21TdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKICAgICBtX2xpc3RlbmVyID0gUERGRG9jdW1l
bnRFdmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIG1faWZyYW1lLT5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgKm1fbGlzdGVuZXIsIGZhbHNlKTsKKyAgICBtX2lmcmFtZS0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCAqbV9saXN0ZW5lciwgZmFsc2UpOwog
CiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoKm1faWZyYW1lKTsKIH0KQEAgLTIyMyw5ICsyMjMsOSBA
QCB2b2lkIFBERkRvY3VtZW50OjppbmplY3RTdHlsZUFuZENvbnRlbnRTY3JpcHQoKQogCiAgICAg
QVNTRVJUKGNvbnRlbnREb2N1bWVudC0+Ym9keSgpKTsKICAgICBhdXRvIHNjcmlwdCA9IEhUTUxT
Y3JpcHRFbGVtZW50OjpjcmVhdGUoc2NyaXB0VGFnLCAqY29udGVudERvY3VtZW50LCBmYWxzZSk7
Ci0gICAgc2NyaXB0LT5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgbV9saXN0ZW5lci5yZWxlYXNl
Tm9uTnVsbCgpLCBmYWxzZSk7CisgICAgc2NyaXB0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5sb2FkRXZlbnQsIG1fbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgZmFsc2UpOwogCi0g
ICAgc2NyaXB0LT5zZXRBdHRyaWJ1dGUoc3JjQXR0ciwgIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9w
ZGZqcy9leHRyYXMvY29udGVudC1zY3JpcHQuanMiKTsKKyAgICBzY3JpcHQtPnNldEF0dHJpYnV0
ZShzcmNBdHRyLCAid2Via2l0LXBkZmpzLXZpZXdlcjovL3BkZmpzL2V4dHJhcy9jb250ZW50LXNj
cmlwdC5qcyJfcyk7CiAgICAgY29udGVudERvY3VtZW50LT5ib2R5KCktPmFwcGVuZENoaWxkKHNj
cmlwdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggZTAxZGYzOTI5MzZlODIwOWNl
YmQ0ZDY0ODRiZmZlMjhlMDQyYjRlYS4uMDAzYTkwMWUwNDNlMzdjOGUzYzA2NjhjNjMzNzI0MGY2
Y2RlNjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UpOwogc3Rh
dGljIGNvbnN0ZXhwciBJbWFnZVNtb290aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxp
dHkgPSBJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKIAogY29uc3QgaW50IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OkRlZmF1bHRGb250U2l6ZSA9IDEwOwotY29uc3QgY2hhciogY29u
c3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6RGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fu
cy1zZXJpZiI7Citjb25zdCBBU0NJSUxpdGVyYWwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6RGVmYXVsdEZvbnRGYW1pbHkgPSAic2Fucy1zZXJpZiJfczsKIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsIERlZmF1bHRGb250ID0gIjEwcHggc2Fucy1zZXJpZiJfczsKIAogc3RhdGlj
IENhbnZhc0xpbmVDYXAgdG9DYW52YXNMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuaAppbmRleCA0YTdhNDNhN2NmZmU4MjZhZjg0YjcwMTMyMDJmMmI5M2U0ODZkYjRhLi41
YmY1YjUzMzhhY2IyMDdjYjNiMTQ5MzA2ZWU4NDEwNzgwNjhmZWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5oCkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IGNvbnN0IGludCBEZWZhdWx0Rm9udFNpemU7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IERlZmF1bHRGb250RmFtaWx5OworICAgIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgRGVmYXVs
dEZvbnRGYW1pbHk7CiAKICAgICBjb25zdCBTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlU3RhY2subGFzdCgpOyB9CiAgICAgdm9pZCByZWFsaXplU2F2ZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGExZjE2N2Ni
MDgzYzk5ODQzNjE4MzQxMTgwMjlmMjg1ZTQxYzAwMDUuLmVkY2M2YWZkNmM2ZjAzOGI4NGM0ZTcx
ZjU3OGE2ODg4NDI3YzcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0YXRpYyBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4gY3Jl
YXRlCiAgICAgYWRkTmFtZXNXaXRoUHJlZml4KG1hcCwgeG1sQXRvbSgpLCBYTUxOYW1lczo6Z2V0
WE1MQXR0cnMoKSwgWE1MTmFtZXM6OlhNTEF0dHJzQ291bnQpOwogCiAgICAgbWFwLmFkZCh4bWxu
c0F0b20oKSwgWE1MTlNOYW1lczo6eG1sbnNBdHRyKTsKLSAgICBtYXAuYWRkKCJ4bWxuczp4bGlu
ayIsIFF1YWxpZmllZE5hbWUoeG1sbnNBdG9tKCksIHhsaW5rTmFtZSwgWE1MTlNOYW1lczo6eG1s
bnNOYW1lc3BhY2VVUkkpKTsKKyAgICBtYXAuYWRkKCJ4bWxuczp4bGluayJfcywgUXVhbGlmaWVk
TmFtZSh4bWxuc0F0b20oKSwgeGxpbmtOYW1lLCBYTUxOU05hbWVzOjp4bWxuc05hbWVzcGFjZVVS
SSkpOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDQ3MDZmMjZlODQ0MDllZTgxM2NkMTNi
YzVmNGUwYWNjZjY3NGE4NjcuLjc4ZTExZmMyYzEwOGQ3N2ZmOGMyYTkyYWE5MjVlZmM1MmU0Mzkx
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFy
c2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFRleHREb2N1bWVudFBhcnNlcjo6aW5zZXJ0
RmFrZVByZUVsZW1lbnQoKQogICAgIC8vIFdlIGNyZWF0ZSBhIGZha2UgdG9rZW4gYW5kIGdpdmUg
aXQgdG8gdGhlIHRyZWUgYnVpbGRlciByYXRoZXIgdGhhbgogICAgIC8vIHNlbmRpbmcgZmFrZSBi
eXRlcyB0aHJvdWdoIHRoZSBmcm9udC1lbmQgb2YgdGhlIHBhcnNlciB0byBhdm9pZAogICAgIC8v
IGRpc3RydWJpbmcgdGhlIGxpbmUvY29sdW1uIG51bWJlciBjYWxjdWxhdGlvbnMuCi0gICAgQXR0
cmlidXRlIGF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsiKTsKKyAgICBBdHRyaWJ1dGUgYXR0cmlidXRlKHN0eWxlQXR0ciwg
IndvcmQtd3JhcDogYnJlYWstd29yZDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyJfcyk7CiAgICAg
QXRvbUhUTUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRhZy0+bG9jYWxO
YW1lKCksIHsgV1RGTW92ZShhdHRyaWJ1dGUpIH0pOwogICAgIHRyZWVCdWlsZGVyKCkuY29uc3Ry
dWN0VHJlZShXVEZNb3ZlKGZha2VQcmUpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwCmluZGV4IDg0OWNkNTk0YTdiOWEzOThiMGMzMWZhOTBmYzY3ZDdmNmQ2NzZhMmYu
LjEwZjRkMWRhZTBhOTkwMjViNWQ0MGYyMzhkZDU1ZWE2YzM2OWQ3MGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTg4LDEzICs4OCwxMyBAQCBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgZm9yY2VkS2V5d29yZCgpCiAKIFRleHRUcmFjayYgVGV4dFRyYWNrOjpj
YXB0aW9uTWVudU9mZkl0ZW0oKQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIG9mZiA9IFRleHRU
cmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBpdGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5
QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOworICAgIHN0YXRpYyBUZXh0VHJhY2smIG9m
ZiA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJvZmYgbWVudSBpdGVtIl9zLCBlbXB0eUF0
b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIG9m
ZjsKIH0KIAogVGV4dFRyYWNrJiBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGljSXRlbSgp
CiB7Ci0gICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGljID0gVGV4dFRyYWNrOjpjcmVhdGUo
bnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCks
IGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFRleHRUcmFjayYgYXV0b21hdGlj
ID0gVGV4dFRyYWNrOjpjcmVhdGUobnVsbHB0ciwgImF1dG9tYXRpYyBtZW51IGl0ZW0iX3MsIGVt
cHR5QXRvbSgpLCBlbXB0eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKICAgICByZXR1
cm4gYXV0b21hdGljOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAKaW5kZXggYmNmOGUxNzJhNjczMjBmNjY4ODEyMDc0NzlkZjdhODBhYmFjMTdlZS4uNzdj
NmExNjBiYTk1YmQ1YTI4NmM1ZGE3NDkzOTgzNWU1MWI5YWQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtNjcsMTMgKzY3LDEzIEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChUZXh0VHJhY2tDdWVCb3gpOwogCiBzdGF0aWMgY29uc3QgUXVh
bGlmaWVkTmFtZSYgY3VlQXR0cmlidXROYW1lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlVGFnKG51bGxBdG9tKCksICJjdWUiLCBudWxsQXRvbSgpKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlVGFnKG51bGxBdG9t
KCksICJjdWUiX3MsIG51bGxBdG9tKCkpOwogICAgIHJldHVybiBjdWVUYWc7CiB9CiAKIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lJiBjdWVCYWNrZ3JvdW5kQXR0cmlidXROYW1lKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlQmFja2dyb3VuZFRhZyhu
dWxsQXRvbSgpLCAiY3VlYmFja2dyb3VuZCIsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjdWVCYWNrZ3JvdW5kVGFnKG51bGxBdG9tKCksICJj
dWViYWNrZ3JvdW5kIl9zLCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gY3VlQmFja2dyb3VuZFRh
ZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5k
ZXggOTM2ZDI3YjNiMjczN2MwMDc2MTkzOTUyMjcxZTY4N2NiNWM0NjY1NS4uMThiMDZmMjhkYWM1
MDRhM2NlYjI1YWE5NzhhZjI4OTYwMjVkYzFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYlZUVEVsZW1lbnQpOwogCiBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbm9kZVR5cGVUb1RhZ05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20oKSwgImMiLCBu
dWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdlRh
ZyhudWxsQXRvbSgpLCAidiIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBsYW5nVGFnKG51bGxBdG9tKCksICJsYW5nIiwgbnVsbEF0b20oKSk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWcobnVsbEF0b20o
KSwgImIiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVk
TmFtZT4gdVRhZyhudWxsQXRvbSgpLCAidSIsIG51bGxBdG9tKCkpOwotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBpVGFnKG51bGxBdG9tKCksICJpIiwgbnVsbEF0b20o
KSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHJ1YnlUYWcobnVs
bEF0b20oKSwgInJ1YnkiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gcnRUYWcobnVsbEF0b20oKSwgInJ0IiwgbnVsbEF0b20oKSk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGNUYWcobnVsbEF0b20oKSwgImMi
X3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1l
PiB2VGFnKG51bGxBdG9tKCksICJ2Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbGFuZ1RhZyhudWxsQXRvbSgpLCAibGFuZyJfcywgbnVs
bEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGJUYWco
bnVsbEF0b20oKSwgImIiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiB1VGFnKG51bGxBdG9tKCksICJ1Il9zLCBudWxsQXRvbSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRhZyhudWxsQXRvbSgpLCAi
aSJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IHJ1YnlUYWcobnVsbEF0b20oKSwgInJ1YnkiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydFRhZyhudWxsQXRvbSgpLCAicnQiX3Ms
IG51bGxBdG9tKCkpOwogICAgIHN3aXRjaCAobm9kZVR5cGUpIHsKICAgICBjYXNlIFdlYlZUVE5v
ZGVUeXBlQ2xhc3M6CiAgICAgICAgIHJldHVybiBjVGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCBkZWNiZTE3YWJiZjFkOWE0M2U0ODBkYzc4Y2Q3MjM4
NWViNjA5NzZkLi4xYzVjODVlMzJiMjg5NDVlNmUyZjAxMThjNzFhY2MyZjRjZDVlMjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtNjMsMTMgKzYzLDEz
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0dHJp
YnV0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmll
ZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAidm9pY2UiLCBudWxsQXRvbSgpKTsKKyAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRv
bSgpLCAidm9pY2UiX3MsIG51bGxBdG9tKCkpOwogICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwog
ICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFuZ0F0dHJpYnV0
ZU5hbWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5h
bWU+IHZvaWNlQXR0cihudWxsQXRvbSgpLCAibGFuZyIsIG51bGxBdG9tKCkpOworICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gdm9pY2VBdHRyKG51bGxBdG9tKCks
ICJsYW5nIl9zLCBudWxsQXRvbSgpKTsKICAgICAgICAgcmV0dXJuIHZvaWNlQXR0cjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNmFhNjEyNmRkN2NhYzY4MDExN2Iy
NzdiNDRhNmMxODZlYzM3MDUzOC4uZmExODQ0YTZmZjFmZTVhYTUyOGFiMjU1Y2M4MWNjNDI2ZWVi
OWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBF
eGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dDo6Q29tcHV0ZWRQcm9wZXJ0aWVzPgogICAgICAgICAgICAgICAgIFN0cmluZyBhcmlhUmVsZXZh
bnRUZXh0ID0gInRleHQiX3M7CiAKICAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiB2YWx1ZXMg
PSBTcGFjZVNwbGl0U3RyaW5nKGFyaWFSZWxldmFudEF0dHJWYWx1ZSwgdHJ1ZSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZhbHVlcy5jb250YWlucygiYWxsIikpIHsKKyAgICAgICAgICAgICAgICBp
ZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiX3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpdmVS
ZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2YW50QWRkaXRpb25zKTsKICAgICAgICAgICAg
ICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LmFwcGVuZChhcmlhUmVsZXZhbnRSZW1vdmFscyk7
CiAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2
YW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheUxhYmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5TGFiZWwuY3BwCmluZGV4IDczYWY4MzZlZjc0NmM2YmI4MDMzMjg3NDhjOGZlY2ViZGE2NzI1
ZmQuLmY2MTE0NzFhODVlM2ZlNjkzZGQ2ZjNhY2E2M2UyMDI0ODI2NTc4NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5TGFiZWwuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIEluc3BlY3Rvck92ZXJsYXlMYWJlbDo6SW5zcGVjdG9yT3ZlcmxheUxhYmVs
KGNvbnN0IFN0cmluZyYgdGV4dCwgRmxvYXRQb2ludCBsb2NhCiBzdGF0aWMgRm9udENhc2NhZGUg
c3lzdGVtRm9udCgpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVzKHsgInN5c3RlbS11aSIgfSk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVzKHsgInN5c3RlbS11aSJfcyB9KTsKICAgICBm
b250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKICAgICBm
b250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDE3YTI5N2I1YWIzNDRj
NmIyMTgwZGQwZmE5YTk0NDJmZGEzM2UzOTcuLjI2ZTE4ZWMwNGFhNmY3ZGFmM2M3YjQzM2E5NmIy
NjFiYjkwMjQ5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKQEAgLTE1OTMsNyArMTU5Myw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3Rv
clBhCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7CiAgICAgbV9pbnNwZWN0b3JT
dHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxp
bmVTdHlsZSgpLCB0aGlzKTsKLSAgICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+Z2V0QXR0cmli
dXRlKCJzdHlsZSIpLnN0cmluZygpOworICAgIG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIpLnN0cmluZygpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZGlkTW9kaWZ5RWxlbWVudEF0dHJpYnV0ZSgp
CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QKIAogY29uc3QgU3RyaW5n
JiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1lbnRTdHlsZVRleHQoKSBj
b25zdAogewotICAgIHJldHVybiBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJp
bmcoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIpLnN0cmluZygpOwogfQogCiBSZWY8Q1NTUnVsZVNvdXJjZURhdGE+IEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6cnVsZVNvdXJjZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCBkMzg5ZWMwN2FlODdiYzk1YjU2ODA5ZThkYjgyNTkwODhlMDUyYTA2Li4wNmM0NzIzZjU3
MDA3MDUxZWM2MTkwOWFjNzE5ZGYzYjhjYjJkY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjIyOSw3ICsy
MjI5LDcgQEAgUmVmPFByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBJbnNw
ZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JBY2MKICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3BhY2VTcGxpdFN0cmluZyYgdmFsdWVzID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZh
bnRBdHRyVmFsdWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAvLyBAYXJpYS1yZWxldmFu
dD0iYWxsIiBpcyBleHBvc2VkIGFzIFsiYWRkaXRpb25zIiwicmVtb3ZhbHMiLCJ0ZXh0Il0sIGlu
IG9yZGVyLgogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9yZGVyIGlzIGNvbnRyb2xsZWQg
aW4gV2ViQ29yZSBhbmQgZXhwZWN0ZWQgaW4gV2ViSW5zcGVjdG9yVUkuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCIpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCJfcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpdmVSZWdpb25SZWxldmFudC0+YWRkSXRlbShhcmlhUmVsZXZhbnRBZGRpdGlvbnMpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbGl2ZVJlZ2lvblJlbGV2YW50LT5hZGRJdGVtKGFyaWFSZWxl
dmFudFJlbW92YWxzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFu
dC0+YWRkSXRlbShhcmlhUmVsZXZhbnRUZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcAppbmRleCA5ZjE3YzEyOGEzMTgxNmE2YTkzOThiNWQyYjE0NTY4NTRjNWQ5YTUxLi4zNmZl
YmJlZGNlMGRlMTg5MWFlNGE5MmQzOTQyOTc5MjAzZWExZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtQ
cmVsb2FkUmVzb3VyY2VDbGllbnQ+IExpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZChjb25zdCBM
aW4KICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcGFyYW1zLnJlZmVycmVyUG9saWN5Owog
ICAgIGF1dG8gbGlua1JlcXVlc3QgPSBjcmVhdGVQb3RlbnRpYWxBY2Nlc3NDb250cm9sUmVxdWVz
dCh1cmwsIFdURk1vdmUob3B0aW9ucyksIGRvY3VtZW50LCBwYXJhbXMuY3Jvc3NPcmlnaW4pOwog
ICAgIGxpbmtSZXF1ZXN0LnNldFByaW9yaXR5KERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eTo6
Zm9yUmVzb3VyY2VUeXBlKHR5cGUudmFsdWUoKSkpOwotICAgIGxpbmtSZXF1ZXN0LnNldEluaXRp
YXRvcigibGluayIpOworICAgIGxpbmtSZXF1ZXN0LnNldEluaXRpYXRvcigibGluayJfcyk7CiAg
ICAgbGlua1JlcXVlc3Quc2V0SWdub3JlRm9yUmVxdWVzdENvdW50KHRydWUpOwogICAgIGxpbmtS
ZXF1ZXN0LnNldElzTGlua1ByZWxvYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IDY1YjI2Y2M5YmQ1NzVlYjFh
MDE1ZjQ1Y2M1ZGU2NWNjZDU1MzUzN2IuLjUxMDIyYzY3NWQyNGYwYmI4YTUzYjE5NWZlODhiMWFm
MDNkMTM3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudC5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIE1hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQ6OmlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYgbm9kZSkKICAgICAgICAgfHwg
aHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnBUYWcpCiAgICAgICAgIHx8IGh0bWxF
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwcmVUYWcpCiAgICAgICAgIHx8IGh0bWxFbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWN0aW9uVGFnKQotICAgICAgICB8fCAoaHRtbEVs
ZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnN0eWxlVGFnKSAmJiBodG1sRWxlbWVudC5oYXNB
dHRyaWJ1dGUoInNjb3BlZCIpKQorICAgICAgICB8fCAoaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShI
VE1MTmFtZXM6OnN0eWxlVGFnKSAmJiBodG1sRWxlbWVudC5oYXNBdHRyaWJ1dGUoSFRNTE5hbWVz
OjpzY29wZWRBdHRyKSkKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnRhYmxlVGFnKQogICAgICAgICB8fCBodG1sRWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6dWxUYWcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApp
bmRleCAyNTljNzIyNTM2NzFiNWEwYWUwODViYzA3MTJhNGIxNWViMjc5NWQ2Li5lOTRiZGZmOGE5
MzM4NTRkN2Q5ZmRiMGJmYzZhMTg4MWFkNTkxNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTm9uRmFzdFNjcm9s
bGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIEdy
YXBoaWNzCiAgICAgRmxvYXRSZWN0IGxlZ2VuZFJlY3QgPSB7IGJvdW5kcy5tYXhYKCkgLSAzMC4w
ZiwgMTAsIDIwLCAyMCB9OwogICAgIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIp
OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFNlbGVjdGlvblZhbHVlKDUwMCkpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3U2V0dGluZ3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ICAgIH0KIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldFNwZWNpZmllZFNpemUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNp
emUoMTIpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVl
KDUwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IGRkYmE4MzVlZjg5MjAzYWFlYWRhMWQz
MDNiMjM2OTQ1OGQ0NzI4MTIuLjVmYTk0MmM5OGRmMGI1MzY5YmY2N2NkMzcwZTFjNjFiZWYzMGNh
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIFF1aXJr
czo6c2hvdWxkVG9vbHRpcFByZXZlbnRGcm9tUHJvY2VlZGluZ1dpdGhDbGljayhjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
X2RvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpLmhvc3QoKSwgImNvdmlkLmNkYy5nb3YiKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkgJiYg
ZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInRvb2x0aXAiKTsKKyAgICByZXR1cm4gZWxl
bWVudC5oYXNDbGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ0b29sdGlw
Il9zKTsKIH0KIAogLy8gRklYTUU6IFJlbW92ZSBhZnRlciB0aGUgc2l0ZSBpcyBmaXhlZCwgPHJk
YXI6Ly9wcm9ibGVtLzc1NzkyOTEzPgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgUXVpcmtzOjpz
aG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzKEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNv
bnN0CiAgICAgY2FzZSBTaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnRzOjpEZXBlbmRp
bmdPblRhcmdldEZvcl9teWJpbmRlcl9vcmc6CiAgICAgICAgIGlmIChpczxOb2RlPih0YXJnZXQp
KSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIG5vZGUgPSBkb3duY2FzdDxOb2RlPih0YXJnZXQp
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzPEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKS5jbGFzc0xpc3Qo
KS5jb250YWlucygibG0tRG9ja1BhbmVsLXRhYkJhciIpKQorICAgICAgICAgICAgICAgIGlmIChp
czxFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuY2xhc3NMaXN0KCku
Y29udGFpbnMoImxtLURvY2tQYW5lbC10YWJCYXIiX3MpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDc2LDcgKzQ3Niw3IEBA
IGJvb2wgUXVpcmtzOjpzaG91bGREaXNwYXRjaGVkU2ltdWxhdGVkTW91c2VFdmVudHNBc3N1bWVE
ZWZhdWx0UHJldmVudGVkKEV2ZW50VGFyCiAgICAgfQogCiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCkuaG9zdCgpLCAi
c291bmRjbG91ZC5jb20iKSAmJiBpczxFbGVtZW50Pih0YXJnZXQpKQotICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8RWxlbWVudD4oKnRhcmdldCkuY2xhc3NMaXN0KCkuY29udGFpbnMoInNjZW5lTGF5
ZXIiKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KCp0YXJnZXQpLmNsYXNzTGlz
dCgpLmNvbnRhaW5zKCJzY2VuZUxheWVyIl9zKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAg
LTQ4OCw3ICs0ODgsNyBAQCBzdGQ6Om9wdGlvbmFsPEV2ZW50OjpJc0NhbmNlbGFibGU+IFF1aXJr
czo6c2ltdWxhdGVkTW91c2VFdmVudFR5cGVGb3JUYXJnZXQoRXZlbgogCiAgICAgLy8gT24gR29v
Z2xlIE1hcHMsIHdlIHdhbnQgdG8gbGltaXQgc2ltdWxhdGVkIG1vdXNlIGV2ZW50cyB0byBkcmFn
Z2luZyB0aGUgbGl0dGxlIG1hbiB0aGF0IGFsbG93cyBlbnRlcmluZyBpbnRvIFN0cmVldCBWaWV3
LgogICAgIGlmIChpc0dvb2dsZU1hcHMoKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4odGFy
Z2V0KSAmJiBkb3duY2FzdDxFbGVtZW50Pih0YXJnZXQpLT5nZXRBdHRyaWJ1dGUoImNsYXNzIikg
PT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21hbi1pY29uIikKKyAgICAgICAgaWYgKGlzPEVs
ZW1lbnQ+KHRhcmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6Y2xhc3NBdHRyKSA9PSAid2lkZ2V0LWV4cGFuZC1idXR0b24tcGVnbWFuLWlj
b24iKQogICAgICAgICAgICAgcmV0dXJuIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllczsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC01MDEsNyArNTAxLDcgQEAgc3RkOjpvcHRpb25hbDxF
dmVudDo6SXNDYW5jZWxhYmxlPiBRdWlya3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFy
Z2V0KEV2ZW4KICAgICAgICAgLy8gV2Ugd2FudCB0byBsaW1pdCBzaW11bGF0ZWQgbW91c2UgZXZl
bnRzIHRvIGVsZW1lbnRzIHVuZGVyIDxkaXYgaWQ9InBhbmVDb250YWluZXIiPiB0byBhbGxvdyBm
b3IgY29sdW1uIHJlLW9yZGVyaW5nIGFuZCBtdWx0aXBsZSBjZWxsIHNlbGVjdGlvbi4KICAgICAg
ICAgaWYgKGlzPE5vZGU+KHRhcmdldCkpIHsKICAgICAgICAgICAgIGF1dG8qIG5vZGUgPSBkb3du
Y2FzdDxOb2RlPih0YXJnZXQpOwotICAgICAgICAgICAgaWYgKGF1dG8qIHBhbmVDb250YWluZXIg
PSBub2RlLT50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChBdG9tU3RyaW5nKCJwYW5lQ29udGFp
bmVyIikpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcGFuZUNvbnRhaW5lciA9IG5vZGUtPnRy
ZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKEF0b21TdHJpbmcoInBhbmVDb250YWluZXIiX3MpKSkg
ewogICAgICAgICAgICAgICAgIGlmIChwYW5lQ29udGFpbmVyLT5jb250YWlucyhub2RlKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEV2ZW50OjpJc0NhbmNlbGFibGU6OlllczsKICAgICAg
ICAgICAgIH0KQEAgLTUyMyw3ICs1MjMsNyBAQCBib29sIFF1aXJrczo6c2hvdWxkTWFrZVRvdWNo
RXZlbnROb25DYW5jZWxhYmxlRm9yVGFyZ2V0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNvbgogICAg
ICAgICBpZiAoaXM8RWxlbWVudD4odGFyZ2V0KSkgewogICAgICAgICAgICAgdW5zaWduZWQgZGVw
dGggPSAzOwogICAgICAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVu
dD4odGFyZ2V0KTsgZWxlbWVudCAmJiBkZXB0aDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKSwgLS1kZXB0aCkgewotICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LT5sb2NhbE5h
bWUoKSA9PSAicGFwZXItaXRlbSIgJiYgZWxlbWVudC0+Y2xhc3NMaXN0KCkuY29udGFpbnMoInl0
LWRyb3Bkb3duLW1lbnUiKSkKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+bG9jYWxOYW1l
KCkgPT0gInBhcGVyLWl0ZW0iICYmIGVsZW1lbnQtPmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJ5dC1k
cm9wZG93bi1tZW51Il9zKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU0OCw3ICs1NDgsNyBAQCBib29sIFF1aXJrczo6c2hv
dWxkUHJldmVudERpc3BhdGNoT2ZUb3VjaEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHRvdWNoRXZl
bnRUeXBlLAogCiAgICAgaWYgKGlzPEVsZW1lbnQ+KHRhcmdldCkgJiYgdG91Y2hFdmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQgJiYgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCksICJzaXRlcy5nb29n
bGUuY29tIikpIHsKICAgICAgICAgYXV0byYgY2xhc3NMaXN0ID0gZG93bmNhc3Q8RWxlbWVudD4o
KnRhcmdldCkuY2xhc3NMaXN0KCk7Ci0gICAgICAgIHJldHVybiBjbGFzc0xpc3QuY29udGFpbnMo
IkRQdndZYyIpICYmIGNsYXNzTGlzdC5jb250YWlucygic204c0NmIik7CisgICAgICAgIHJldHVy
biBjbGFzc0xpc3QuY29udGFpbnMoIkRQdndZYyJfcykgJiYgY2xhc3NMaXN0LmNvbnRhaW5zKCJz
bThzQ2YiX3MpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMSw4ICs2MzEsOCBA
QCBib29sIFF1aXJrczo6bmVlZHNJbnB1dE1vZGVOb25lSW1wbGljaXRseShjb25zdCBIVE1MRWxl
bWVudCYgZWxlbWVudCkgY29uc3QKICAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6aW5wdXRUYWcpKSB7CiAgICAgICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobV9kb2N1bWVudC0+dXJsKCkuaG9zdCgpLCAiY2FsZW5kYXIuZ29vZ2xlLmNvbSIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gZGF0YUluaXRpYWxWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtaW5pdGlh
bC12YWx1ZSIsIG51bGxBdG9tKCkpOwotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVh
bGlmaWVkTmFtZT4gZGF0YVByZXZpb3VzVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLXByZXZp
b3VzLXZhbHVlIiwgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxR
dWFsaWZpZWROYW1lPiBkYXRhSW5pdGlhbFZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1pbml0
aWFsLXZhbHVlIl9zLCBudWxsQXRvbSgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFF1YWxpZmllZE5hbWU+IGRhdGFQcmV2aW91c1ZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1w
cmV2aW91cy12YWx1ZSJfcywgbnVsbEF0b20oKSk7CiAKICAgICAgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OmF1dG9jb21wbGV0ZUF0dHIpLCAib2ZmIikKICAgICAgICAgICAgICYm
IGVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihkYXRhSW5pdGlhbFZh
bHVlQXR0cikKQEAgLTY0Nyw3ICs2NDcsNyBAQCBib29sIFF1aXJrczo6bmVlZHNJbnB1dE1vZGVO
b25lSW1wbGljaXRseShjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCkgY29uc3QKICAgICBpZiAo
IWhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmRlc21vcy5jb20iKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpICYmIGVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImRjZy1tcS10ZXh0
YXJlYSIpOworICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKSAmJiBlbGVtZW50LnBh
cmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJkY2ctbXEtdGV4dGFyZWEiX3Mp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTAyMywxMCArMTAyMywxMCBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgLy8gc3BhbiB3aXRoIHRoZXNlIGNsYXNz
IG5hbWVzLCBvciB0aGUgc3ZnLCBvciB0aGUgc3ZnJ3MgcGF0aC4KICAgICBpZiAoZWxlbWVudC5o
YXNDbGFzcygpKSB7CiAgICAgICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFt
ZXMoKTsKLSAgICAgICAgaWYgKGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJu
ZXItbG9naW4iKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygianNfaGVhZGVy
LXVzZXJidXR0b24iKQotICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygic2MtMWls
M3VydS0zIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygiY0loS2ZkIikKLSAgICAgICAgICAgIHx8
IGNsYXNzTmFtZXMuY29udGFpbnMoIml5dm4zNC0wIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygi
YllJanRsIikpCisgICAgICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19zd2l0Y2gtdG8t
YnVybmVyLWxvZ2luIl9zKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygianNf
aGVhZGVyLXVzZXJidXR0b24iX3MpCisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5z
KCJzYy0xaWwzdXJ1LTMiX3MpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImNJaEtmZCJfcykKKyAg
ICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoIml5dm4zNC0wIl9zKSB8fCBjbGFzc05h
bWVzLmNvbnRhaW5zKCJiWUlqdGwiX3MpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCBzdGF0aWMgYm9vbCBpc0tpbmphTG9naW5BdmF0YXJF
bGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHN2Z0VsZW1lbnQgPSBlbGVt
ZW50LnBhcmVudEVsZW1lbnQoKTsKIAogICAgIGlmIChzdmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQt
Pmhhc0F0dHJpYnV0ZXMoKSkgewotICAgICAgICBhdXRvIGFyaWFMYWJlbEF0dHIgPSBzdmdFbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0TmFtZWRJdGVtKCJhcmlhLWxhYmVsIik7CisgICAgICAgIGF1
dG8gYXJpYUxhYmVsQXR0ciA9IHN2Z0VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXROYW1lZEl0ZW0o
ImFyaWEtbGFiZWwiX3MpOwogICAgICAgICBpZiAoYXJpYUxhYmVsQXR0ciAmJiBhcmlhTGFiZWxB
dHRyLT52YWx1ZSgpID09ICJVc2VyRmlsbGVkIGljb24iKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTA1NiwyNCArMTA1NiwyNCBAQCBzdGF0aWMgYm9vbCBpc1N0b3JhZ2VB
Y2Nlc3NRdWlya0RvbWFpbkFuZEVsZW1lbnQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEVsZW1lbnQm
CiAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3ZlIHRoaXMgcXVpcmsgb25jZSBtaWNyb3NvZnQu
Y29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9z
dCgpID09ICJ3d3cubWljcm9zb2Z0LmNvbSJfcykgewogICAgICAgICByZXR1cm4gZWxlbWVudC5o
YXNDbGFzcygpCi0gICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygiZ2x5
cGhfc2lnbkluX2NpcmNsZSIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJtZWN0cmxfaGVhZGVydGV4dCIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygp
LmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVyIikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05h
bWVzKCkuY29udGFpbnMoImdseXBoX3NpZ25Jbl9jaXJjbGUiX3MpCisgICAgICAgIHx8IGVsZW1l
bnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVydGV4dCJfcykKKyAgICAgICAg
fHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIm1lY3RybF9oZWFkZXIiX3MpKTsKICAg
ICB9CiAgICAgLy8gU2t5cGUgY2FzZS4KICAgICAvLyBGSVhNRSgyMjAxMDUpOiBSZW1vdmUgdGhp
cyBxdWlyayBvbmNlIFNreXBlIHVuZGVyIG91dGxvb2subGl2ZS5jb20gY29tcGxldGVzIHRoZWly
IGxvZ2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gIm91dGxvb2subGl2
ZS5jb20iX3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKQotICAgICAgICAm
JiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIl8zaW9FcDJSR1I1dmIwZ3FSRHNhRlBh
IikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIl8yQW0yanZUYUJ6
MTdVSjhYbmZ4Rk95IikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFp
bnMoIl8zaW9FcDJSR1I1dmIwZ3FSRHNhRlBhIl9zKQorICAgICAgICB8fCBlbGVtZW50LmNsYXNz
TmFtZXMoKS5jb250YWlucygiXzJBbTJqdlRhQnoxN1VKOFhuZnhGT3kiX3MpKTsKICAgICB9CiAg
ICAgLy8gU29ueSBOZXR3b3JrIEVudGVydGFpbm1lbnQgbG9naW4gY2FzZS4KICAgICAvLyBGSVhN
RSgyMTg3NjApOiBSZW1vdmUgdGhpcyBxdWlyayBvbmNlIHBsYXlzdGF0aW9uLmNvbSBjb21wbGV0
ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICBpZiAodXJsLmhvc3QoKSA9PSAid3d3
LnBsYXlzdGF0aW9uLmNvbSJfcyB8fCB1cmwuaG9zdCgpID09ICJteS5wbGF5c3RhdGlvbi5jb20i
X3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKQotICAgICAgICAmJiAoZWxl
bWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uIikK
LSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19z
aWduaW4tYnV0dG9uLWxhYmVsIikKLSAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29u
dGFpbnMoInNiLXNpZ25pbi1idXR0b24iKSk7CisgICAgICAgICYmIChlbGVtZW50LmNsYXNzTmFt
ZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24iX3MpCisgICAgICAgIHx8
IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRv
bi1sYWJlbCJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoInNi
LXNpZ25pbi1idXR0b24iX3MpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTEy
LDcgKzExMTIsNyBAQCBzdGF0aWMgYm9vbCBpc0JCQ1BvcFVwUGxheWVyRWxlbWVudChjb25zdCBF
bGVtZW50JiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgfHwgIWVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5oYXNDbGFzcygpIHx8ICFwYXJlbnRFbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkgfHwgIXBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+aGFzQ2xhc3Mo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxl
bWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0b25fYnV0dG9uSW5uZXIi
KSAmJiBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlu
cygiaGlkZGVuIik7CisgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05h
bWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0b25fYnV0dG9uSW5uZXIiX3MpICYmIHBhcmVudEVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJoaWRkZW4iX3Mp
OwogfQogCiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0FuZEhhbmRsZUNsaWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkRGlzcGF0
Y2hDbGljayk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CkBAIC0xMTg1LDE0ICsxMTg1LDE0
IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0
b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2lu
Rm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgn
anNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYgKGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7IGVs
ZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGludGVy
dmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwgMjAwKTsiX3MsIFVSTChhYm91dEJs
YW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6Oklu
amVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZ
ZXMgfTsKIAotICAgIGlmIChldmVudFR5cGUgPT0gImNsaWNrIikgeworICAgIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50
KQogICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxk
Tm90Q2FuY2VsRXZlbnQ7CiAKICAgICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgogICAg
ICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGRvbWFpbiA9PSB5b3VUdWJlRG9tYWluICYm
ICFtX2RvY3VtZW50LT5pc1RvcERvY3VtZW50KCkgJiYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgewogICAgICAgICAg
ICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOwotICAgICAgICAgICAg
aWYgKGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikgfHwgY2xhc3NO
YW1lcy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSkgeworICAgICAgICAgICAgaWYg
KGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIl9zKSB8fCBjbGFzc05h
bWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiJfcykpIHsKICAgICAgICAgICAgICAg
ICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlv
bih5b3VUdWJlRG9tYWluKSkgewogICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyaygqbV9kb2N1bWVudCwg
W10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAxOTc0MWY2MmY2YjY2YTFiZTA3
NzdkZWU2YTNhYTM5ZGIwMjgwZWRjLi4xMzZmN2NkNTJkMzQzZTgwYmE3Y2MyMDkwZjZmNjg3YTNi
NjA5ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMjA2LDcgKzIw
Niw3IEBAIFNwYW48Y29uc3QgQXRvbVN0cmluZz4gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1lcygpCiAKIGNvbnN0IEF0b21TdHJpbmcmIFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpldmVudE5hbWVBbGwoKQogewotICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc0V2ZW50TmFtZUFsbCA9
ICJhbGxFdmVudHMiOworICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc0V2ZW50TmFtZUFsbCA9ICJhbGxFdmVudHMiX3M7CiAgICAgcmV0dXJuIHNF
dmVudE5hbWVBbGw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGVjMzFjNTM4MDA4
MzIwMGI5MDBkMmVhNWNmNTQwYTM2ODk3Y2U2NTQuLjQyMzdjZjYwNTk4NGRjNmQ1MzYwNDc0Njcz
NTVkMzg0NjczMWFiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzA2Nyw3ICszMDY3
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwcm9jZXNzTWV0
YWRhdGFUcmFjaygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWV0YWRhdGFUcmFjayA9IElu
YmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6Y3JlYXRlKEluYmFuZFRleHRUcmFja1By
aXZhdGU6OktpbmQ6Ok1ldGFkYXRhLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ6
OkRhdGEpOwotICAgIG1fbWV0YWRhdGFUcmFjay0+c2V0SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3Bh
dGNoVHlwZSgiY29tLmFwcGxlLnN0cmVhbWluZyIpOworICAgIG1fbWV0YWRhdGFUcmFjay0+c2V0
SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgiY29tLmFwcGxlLnN0cmVhbWluZyJfcyk7
CiAgICAgcGxheWVyKCktPmFkZFRleHRUcmFjaygqbV9tZXRhZGF0YVRyYWNrKTsKIH0KIApAQCAt
MzA5Niw3ICszMDk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRDdXJyZW50VGV4dFRyYWNrKEluYmFuZFRleHRUcmFja1ByaXYKICAgICBpZiAobV9jdXJy
ZW50VGV4dFRyYWNrID09IHRyYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAic2VsZWN0aW5nIHRyYWNrIHdpdGggbGFuZ3VhZ2UgIiwgdHJhY2sgPyB0
cmFjay0+bGFuZ3VhZ2UoKSA6ICIiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2Vs
ZWN0aW5nIHRyYWNrIHdpdGggbGFuZ3VhZ2UgIiwgdHJhY2sgPyB0cmFjay0+bGFuZ3VhZ2UoKSA6
IGVtcHR5QXRvbSgpKTsKIAogICAgIG1fY3VycmVudFRleHRUcmFjayA9IHRyYWNrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpp
bmRleCBjZmEyOWIxMTJlYTMyOTczZmM4NTYzNWI2NWU0MjFlYWZiZjkxNDA3Li4wMWYyYzY5NzE2
ZjYxOGFhNDhkMjhlZTE2NWYxMTgwZjBmNGJiOWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTE3Nyw3ICsxNzcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIHdoaWNoIGlzIHByZXN1bWFibHkgb24gdGhlIG1haW4gdGhy
ZWFkLgogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fY29k
ZWMpCi0gICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZyhtX29yaWdpbmFsQ29kZWMuc3Ry
aW5nKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fY29kZWMgPSBBdG9tU3RyaW5nOjpmcm9tTGF0
aW4xKG1fb3JpZ2luYWxDb2RlYy5zdHJpbmcoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gKm1f
Y29kZWM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCA4NTIzNDZmNmI1YzU2N2RlMjlmMzUx
NzdkYzQ4NzIzNjVkZjI3ZDQwLi5iMDg2OWY4MDA0NTYxOWU2OTY1ODYxY2IxNzI5ODFlZWUxZjMx
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBQbGEKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1iZXIocmVwYWludENvdW50KSk7
CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICBmb250
RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRT
cGVjaWZpZWRTaXplKGZvbnRTaXplKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKGZvbnRTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
LmNwcAppbmRleCA2N2Q3MGNiY2Y3MjMyM2UyMDkzOTI0MGQ0ZDQ3MGM0MzgxMTY2MDZjLi5jNzZk
ZDNkMjllZDM0Njk2ZmUxZjUwOTBkNzE4ZmM3ZjBmMTFiNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoY29u
c3QgR1N0cmVhbWVyUmVnCiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtaW1lVHlw
ZSA6IGN1cnJlbnQud2Via2l0TWltZVR5cGVzKQogICAgICAgICAgICAgICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQobWltZVR5cGUpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoY3VycmVudC5jYXBz
U3RyaW5nKSk7CisgICAgICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmc6OmZyb21MYXRpbjEoY3VycmVudC5jYXBzU3RyaW5nKSk7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC0yNjIsMjYgKzI2MiwyNiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
ZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKGNvbnN0IEdTdHJlYW1lclJlZwogdm9pZCBH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0b3JpZXMmIGZhY3RvcmllcykKIHsKICAgICBp
ZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKLSAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyIpKTsK
LSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCIp
KTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gt
bTRhIikpOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXBlZyIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmco
ImF1ZGlvL3gtbXBlZyIpKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIm1wZWciKSwgZmFsc2UpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygibXA0YSoiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygiYXVkaW8vYWFjIl9zKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbTRhIl9zKSk7CisgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIl9zKSk7CisgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciX3MpKTsKKyAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciX3MpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiJfcyksIGZh
bHNlKTsKICAgICB9CiAKICAgICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJh
dWRpby94LW9wdXMiKTsKICAgICBpZiAob3B1c1N1cHBvcnRlZCAmJiAoIW1faXNNZWRpYVNvdXJj
ZSB8fCBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb1BhcnNlciwgImF1ZGlvL3gtb3B1cyIpKSkgewotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIpKTsKLSAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiKSwgZmFsc2UpOwotICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIiksIGZhbHNlKTsKKyAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiX3MpKTsKKyAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiX3MpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiX3MpLCBm
YWxzZSk7CiAgICAgfQogCiAgICAgYXV0byB2b3JiaXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIs
ICJhdWRpby94LXZvcmJpcyIpOwogICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVk
aWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6QXVkaW9QYXJzZXIsICJhdWRpby94LXZvcmJpcyIpKSkgewotICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAg
ICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyJfcyksIGZh
bHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdm9yYmlz
Il9zKSwgZmFsc2UpOwogICAgIH0KIAogICAgIGJvb2wgbWF0cm9za2FTdXBwb3J0ZWQgPSBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11
eGVyLCAidmlkZW8veC1tYXRyb3NrYSIpOwpAQCAtMjkwLDIxICsyOTAsMjEgQEAgdm9pZCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXIKICAgICAgICAgYXV0byB2cDlEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9y
aWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9E
ZWNvZGVyLCAidmlkZW8veC12cDkiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xh
c3NpZmllcjo6WWVzKTsKIAogICAgICAgICBpZiAodnA4RGVjb2RlckF2YWlsYWJsZSB8fCB2cDlE
ZWNvZGVyQXZhaWxhYmxlKQotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSJfcykpOwogCiAgICAgICAgIGlmICh2cDhEZWNv
ZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygidnA4IiksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCIpLCB2cDhEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwgdnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5n
SGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InZwOCJfcyksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCJfcyksIHZwOERlY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJ2cDguMCJfcyksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKICAgICAgICAgfQogICAgICAgICBpZiAodnA5RGVjb2RlckF2YWlsYWJsZSkg
ewotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSIpLCB2
cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwOS4wIiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAg
ICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiIpLCB2cDlE
ZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5Il9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoIngtdnA5Il9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAg
ICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIl9zKSwgdnA5
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIl9zKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQot
ICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dl
Ym0iKSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vd2VibSJfcykpOwogICAgIH0KIAogICAgIGJvb2wgc2hvdWxkQWRkTVA0Q29udGFpbmVy
ID0gZmFsc2U7CkBAIC0zMTIsMzUgKzMxMiwzNSBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgog
ICAgIGF1dG8gaDI2NERlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWgy
NjQsIHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGln
aCB9IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAg
ICAgaWYgKGgyNjREZWNvZGVyQXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
UGFyc2VyLCAidmlkZW8veC1oMjY0IikpKSB7CiAgICAgICAgIHNob3VsZEFkZE1QNENvbnRhaW5l
ciA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgy
NjQiKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NERlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIm1wNHYqIiksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiX3MpLCBoMjY0
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiYXZjKiJfcyksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJt
cDR2KiJfcyksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQog
CiAgICAgYXV0byBoMjY1RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gt
aDI2NSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwog
ICAgIGlmIChoMjY1RGVjb2RlckF2YWlsYWJsZSAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRl
b1BhcnNlciwgInZpZGVvL3gtaDI2NSIpKSkgewogICAgICAgICBzaG91bGRBZGRNUDRDb250YWlu
ZXIgPSB0cnVlOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1o
MjY1IiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJodmMxKiIpLCBoMjY1RGVjb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygiaGV2MSoiKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NSJfcyksIGgy
NjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJodmMxKiJfcyksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJoZXYxKiJfcyksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAg
fQogCiAgICAgaWYgKHNob3VsZEFkZE1QNENvbnRhaW5lcikgewotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0IikpOwotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiX3MpKTsKKyAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2Il9zKSk7
CiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAi
dmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
WWVzKTsKICAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBv
cnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiJfcyksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImF2MSJfcyksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYx
Il9zKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAg
IFZlY3RvcjxHc3RDYXBzV2ViS2l0TWFwcGluZz4gbXNlQ29tcGF0aWJsZU1hcHBpbmcgPSB7Ci0g
ICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1h
YzMiLCB7IH0sIHsieC1hYzMiLCAiYWMtMyIsICJhYzMifSB9LAotICAgICAgICB7IEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZWFjMyIsIHsiYXVkaW8veC1h
YzMifSwgIHsieC1lYWMzIiwgImVjMyIsICJlYy0zIiwgImVhYzMifSB9LAotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZmxhYyIsIHsiYXVk
aW8veC1mbGFjIiwgImF1ZGlvL2ZsYWMifSwgeyJ4LWZsYWMiLCAiZmxhYyIgfSB9LAorICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtYWMzIiwg
eyB9LCB7ICJ4LWFjMyJfcywgImFjLTMiX3MsICJhYzMiX3MgfSB9LAorICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZWFjMyIsIHsgImF1ZGlv
L3gtYWMzIl9zIH0sICB7ICJ4LWVhYzMiX3MsICJlYzMiX3MsICJlYy0zIl9zLCAiZWFjMyJfcyB9
IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVk
aW8veC1mbGFjIiwgeyAiYXVkaW8veC1mbGFjIl9zLCAiYXVkaW8vZmxhYyJfcyB9LCB7IngtZmxh
YyJfcywgImZsYWMiX3MgfSB9LAogICAgIH07CiAgICAgZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNN
YXBwaW5nKGZhY3RvcmllcywgbXNlQ29tcGF0aWJsZU1hcHBpbmcpOwogCkBAIC0zNTAsNzYgKzM1
MCw3NiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJz
KGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgIC8vIFRoZSBtaW1lLXR5cGVzIGlu
aXRpYWxpemVkIGJlbG93IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBNU0UgYmFja2VuZC4KIAog
ICAgIFZlY3RvcjxHc3RDYXBzV2ViS2l0TWFwcGluZz4gbWFwcGluZyA9IHsKLSAgICAgICAgeyBF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9taWRpIiwgeyAiYXVk
aW8vbWlkaSIsICJhdWRpby9yaWZmLW1pZGkiIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRG
YWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21pZGkiLCB7ICJhdWRpby9taWRp
Il9zLCAiYXVkaW8vcmlmZi1taWRpIl9zIH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZHRzIiwgeyB9LCB7IH0gfSwKICAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNi
YyIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9E
ZWNvZGVyLCAiYXVkaW8veC1zaWQiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtc3BlZXgiLCB7ICJhdWRpby9zcGVl
eCIsICJhdWRpby94LXNwZWV4IiB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXdhdnBhY2siLCB7ICJhdWRpby94LXdhdnBh
Y2siIH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVj
b2RlciwgInZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpezEsMn0sIHN5c3RlbXN0cmVhbT0o
Ym9vbGVhbilmYWxzZSIsIHsgInZpZGVvL21wZWciIH0sIHsgIm1wZWciIH0gfSwKKyAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNwZWV4Iiwg
eyAiYXVkaW8vc3BlZXgiX3MsICJhdWRpby94LXNwZWV4Il9zIH0sIHsgfSB9LAorICAgICAgICB7
IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtd2F2cGFjayIs
IHsgImF1ZGlvL3gtd2F2cGFjayJfcyB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9y
aWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KXsx
LDJ9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFsc2UiLCB7ICJ2aWRlby9tcGVnIl9zIH0sIHsg
Im1wZWciX3MgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVj
b2RlciwgInZpZGVvL21wZWd0cyIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1kaXJhYyIsIHsgfSwgeyB9IH0sCi0g
ICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1m
bGFzaC12aWRlbyIsIHsgInZpZGVvL2ZsdiIsICJ2aWRlby94LWZsdiIgfSwgeyB9IH0sCisgICAg
ICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1mbGFz
aC12aWRlbyIsIHsgInZpZGVvL2ZsdiJfcywgInZpZGVvL3gtZmx2Il9zIH0sIHsgfSB9LAogICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtaDI2
MyIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9E
ZWNvZGVyLCAidmlkZW8veC1tc3ZpZGVvY29kZWMiLCB7ICJ2aWRlby94LW1zdmlkZW8iIH0sIHsg
fSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZp
ZGVvL3gtbXN2aWRlb2NvZGVjIiwgeyAidmlkZW8veC1tc3ZpZGVvIl9zIH0sIHsgfSB9LAogICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi92bmQu
cm4tcmVhbG1lZGlhIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC0zZ3AiLCB7IH0sIHsgfSB9LAotICAgICAgICB7
IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi94LWhscyIsIHsg
ImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIiwgImFwcGxpY2F0aW9uL3gtbXBlZ3VybCIg
fSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFw
cGxpY2F0aW9uL3gtaGxzIiwgeyAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwiX3MsICJh
cHBsaWNhdGlvbi94LW1wZWd1cmwiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtcG4tcmVhbGF1ZGlvIiwgeyB9LCB7
IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGlj
YXRpb24vZGFzaCt4bWwiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6
OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LWFpZmYiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LXdhdiIsIHsgImF1ZGlvL3gt
d2F2IiwgImF1ZGlvL3dhdiIsICJhdWRpby92bmQud2F2ZSIgfSwgeyAiMSIgfSB9LAorICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhdWRpby94LXdhdiIsIHsgImF1
ZGlvL3gtd2F2Il9zLCAiYXVkaW8vd2F2Il9zLCAiYXVkaW8vdm5kLndhdmUiX3MgfSwgeyAiMSJf
cyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgInZpZGVv
L3F1aWNrdGltZSIsIHsgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6RGVtdXhlciwgInZpZGVvL3F1aWNrdGltZSwgdmFyaWFudD0oc3RyaW5nKTNncHAiLCB7ICJ2
aWRlby8zZ3BwIiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAidmlkZW8vcXVpY2t0aW1lLCB2YXJpYW50PShzdHJpbmcpM2dwcCIsIHsgInZpZGVv
LzNncHAiX3MgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVt
dXhlciwgInZpZGVvL3gtbXMtYXNmIiwgeyB9LCB7IH0gfSwKICAgICB9OwogICAgIGZpbGxNaW1l
VHlwZVNldEZyb21DYXBzTWFwcGluZyhmYWN0b3JpZXMsIG1hcHBpbmcpOwogCiAgICAgaWYgKGZh
Y3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRl
bXV4ZXIsICJhcHBsaWNhdGlvbi9vZ2ciKSkgewotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXBwbGljYXRpb24vb2dnIikpOworICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXBwbGljYXRpb24vb2dnIl9zKSk7CiAKICAgICAg
ICAgaWYgKHZvcmJpc1N1cHBvcnRlZCkgewotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LXZvcmJpcytvZ2ciKSk7CisgICAgICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIl9zKSk7
CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC12b3JiaXMrb2dnIl9zKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVy
LCAiYXVkaW8veC1zcGVleCIpKSB7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoInNwZWV4IiksIGZhbHNlKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKKyAgICAgICAgICAg
IG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJzcGVleCJfcyksIGZhbHNlKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LXRoZW9yYSIpKSB7
Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
b2dnIikpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInRo
ZW9yYSIpLCBmYWxzZSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygidmlkZW8vb2dnIl9zKSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygidGhlb3JhIl9zKSwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCBhdWRpb01wZWdTdXBwb3J0ZWQgPSBmYWxzZTsKICAgICBpZiAoZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVy
LCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxLCBsYXllcj0oaW50KVsxLCAzXSIpKSB7
CiAgICAgICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDEiKSk7Ci0gICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDMiKSk7Ci0gICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wMyIpKTsKLSAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMyIpLCBmYWxzZSk7Ci0g
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDMiKSwgZmFsc2UpOwor
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAxIl9z
KSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9t
cDMiX3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL3gtbXAzIl9zKSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJhdWRpby9tcDMiX3MpLCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJtcDMiX3MpLCBmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2Rl
ciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMiIpKSB7CiAgICAgICAgIGF1ZGlvTXBl
Z1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9tcDIiKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiX3MpKTsKICAgICB9CiAKICAgICBhdWRpb01wZWdTdXBwb3J0
ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAi
YXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwotICAgICAg
ICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIikpOwor
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyJf
cykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC1tcGVnIl9zKSk7CiAgICAgfQogCiAgICAgaWYgKG1hdHJvc2thU3VwcG9ydGVkKSB7Ci0gICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2th
IikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8v
eC1tYXRyb3NrYSJfcykpOwogCiAgICAgICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LXZw
MTAiKSkKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2
aWRlby93ZWJtIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKICAgICB9CiB9CiAKQEAgLTQzMSw3NiArNDMxLDc2IEBA
IHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRW5jb2RlcnMoY29uc3Qg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAKICAgICBhdXRvIGFhY1N1cHBvcnRlZCA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlv
RW5jb2RlciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpOwogICAgIGlmIChmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRp
b0VuY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyIpLCBmYWxzZSk7Ci0gICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDRhKiIpLCBmYWxzZSk7CisgICAg
ICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIl9zKSwgZmFsc2UpOwor
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiX3MpLCBmYWxz
ZSk7CiAgICAgfQogCiAgICAgYXV0byBvcHVzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVk
aW8veC1vcHVzIik7CiAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIiksIGZhbHNlKTsKKyAgICAgICAgbV9l
bmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm9wdXMiX3MpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiX3MpLCBmYWxzZSk7CiAg
ICAgfQogCiAgICAgYXV0byB2b3JiaXNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJhdWRpby94
LXZvcmJpcyIpOwogICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyIpLCBmYWxzZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiX3MpLCBmYWxzZSk7Cisg
ICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyJfcyksIGZh
bHNlKTsKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhdjFFbmNvZGVyc0Rpc2FsbG93ZWRM
aXN0IHsgImF2MWVuYyJfcyB9OwogICAgIGF1dG8gYXYxRW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
RW5jb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNs
YXNzaWZpZXI6Olllcywgc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoYXYxRW5jb2RlcnNEaXNh
bGxvd2VkTGlzdCkpKTsKICAgICBpZiAoYXYxRW5jb2RlckF2YWlsYWJsZSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgZmFsc2UpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGZhbHNlKTsKLSAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGZhbHNlKTsKKyAg
ICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIl9zKSwgZmFsc2Up
OworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIl9zKSwgZmFs
c2UpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiX3Mp
LCBmYWxzZSk7CiAgICAgfQogCiAgICAgYXV0byB2cDhFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9y
aWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9F
bmNvZGVyLCAidmlkZW8veC12cDgiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xh
c3NpZmllcjo6WWVzKTsKICAgICBpZiAodnA4RW5jb2RlckF2YWlsYWJsZSkgewotICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4IiksIHZwOEVuY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIngtdnA4IiksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAg
ICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOC4wIiksIHZwOEVuY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoInZwOCJfcyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4Il9z
KSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiX3MpLCB2cDhFbmNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgYXV0byB2cDlFbmNvZGVyQXZhaWxhYmxl
ID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6VmlkZW9FbmNvZGVyLCAidmlkZW8veC12cDkiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAodnA5RW5jb2RlckF2YWlsYWJsZSkgewot
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOUVuY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdnA5IiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIiks
IHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwMDkqIiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InZwOSJfcyksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA5Il9zKSwgdnA5RW5jb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnA5LjAiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiJfcyks
IHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAo
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
TXV4ZXIsICJ2aWRlby93ZWJtIikgJiYgKHZwOEVuY29kZXJBdmFpbGFibGUgfHwgdnA5RW5jb2Rl
ckF2YWlsYWJsZSB8fCBhdjFFbmNvZGVyQXZhaWxhYmxlKSkKLSAgICAgICAgbV9lbmNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CisgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIl9zKSk7CiAKICAgICBpZiAo
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
TXV4ZXIsICJhdWRpby93ZWJtIikpIHsKICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAg
ICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIp
KTsKLSAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dl
Ym0iKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vb3B1cyJfcykpOworICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8vd2VibSJfcykpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpNdXhlciwgImF1ZGlvL29n
ZyIpICYmICh2b3JiaXNTdXBwb3J0ZWQgfHwgb3B1c1N1cHBvcnRlZCkpCi0gICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciKSk7CisgICAgICAgIG1f
ZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciX3MpKTsKIAogICAg
IGF1dG8gaDI2NEVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRlby94LWgyNjQs
IHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGlnaCB9
IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAg
aWYgKGgyNjRFbmNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJoMjY0IiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiKSwg
aDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiKSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
Im1wNHYqIiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJoMjY0Il9zKSwgaDI2NEVuY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoIngtaDI2NCJfcyksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIl9z
KSwgaDI2NEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIl9zKSwgaDI2NEVuY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1l
bnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6TXV4ZXIsICJ2aWRlby9xdWlj
a3RpbWUiKSkgewogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fZW5j
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOworICAgICAgICAg
ICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiX3MpKTsK
ICAgICAgICAgaWYgKGFhY1N1cHBvcnRlZCkgewotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyIpKTsKLSAgICAgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiKSk7Ci0gICAgICAgICAgICBt
X2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7CisgICAg
ICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIl9z
KSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXA0Il9zKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8veC1tNGEiX3MpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaDI2NEVuY29k
ZXJBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJ2aWRlby9tcDQiKSk7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0Il9zKSk7CisgICAgICAgICAgICBtX2Vu
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiX3MpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3YjIwMjc5NWVkMTVmZjI0Mjg4OWQ4ZDgxZmM2MjFlOGJh
ZGMyNDAyLi42Mjc2Y2E5MDk1ZGI1ZDNiY2QxN2I2YzE2NDk4ZDBmMTc2MDI5YmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIodW5zaWduZWQgaW5kZXgsCiAgICAgOiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlKEN1ZUZvcm1hdDo6V2ViVlRUKQogICAgICwgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcihUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGU6OlRleHQsIHRoaXMs
IGluZGV4LCBXVEZNb3ZlKHN0cmVhbSkpCiB7Ci0gICAgbV9pZCA9IGdzdF9zdHJlYW1fZ2V0X3N0
cmVhbV9pZChtX3N0cmVhbS5nZXQoKSk7CisgICAgbV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRp
bjEoZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgR1NUX0lO
Rk8oIlRyYWNrICVkIGdvdCBzdHJlYW0gc3RhcnQgZm9yIHN0cmVhbSAlcy4iLCBtX2luZGV4LCBt
X2lkLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgR1NUX0RFQlVHKCJTdHJlYW0gJSIg
R1NUX1BUUl9GT1JNQVQsIG1fc3RyZWFtLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDFmZWZlYTMyZDIxMzZkZmQxZTFmM2My
NWI4MTYyNjk2OTBmYmQxNC4uMjA5ODAzNWRhODBiMGI5MzkzNWU0NjY5MWYwMjU3NWVlNzg4ODZh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTE0NjQsNyArMTQ2NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVUcmFja3MoY29uc3QgR1JlZlB0cjxHc3RTdHJlYW1Db2xsZWN0aW9uCiAgICAgICAgICAg
ICBDUkVBVEVfVFJBQ0sodmlkZW8sIFZpZGVvKTsKICAgICAgICAgZWxzZSBpZiAodHlwZSAmIEdT
VF9TVFJFQU1fVFlQRV9URVhUICYmICF1c2VNZWRpYVNvdXJjZSkgewogICAgICAgICAgICAgYXV0
byB0cmFjayA9IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZSh0ZXh0VHJh
Y2tJbmRleCsrLCBXVEZNb3ZlKHN0cmVhbSkpOwotICAgICAgICAgICAgbV90ZXh0VHJhY2tzLmFk
ZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5h
ZGQoQXRvbVN0cmluZzo6ZnJvbUxhdGluMShzdHJlYW1JZCksIHRyYWNrLmNvcHlSZWYoKSk7CiAg
ICAgICAgICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLmdldCgpKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBHU1RfV0FSTklORygiVW5rbm93biB0cmFjayB0eXBlIGZvdW5k
IGZvciBzdHJlYW0gJXMiLCBzdHJlYW1JZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5jcHAKaW5kZXggMjk1N2JjZWYzZDBkMGUxODI4ZWY1ZGY3YmY4YmNlNWRl
YzJmOGQ5YS4uOWFiMTVkZmFlYzJiNGU1ODE4ZTVhM2VmOWUxMjcwOTgwYzA4NmEyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
KFRyYWNrVHlwZSB0eXBlLCBUcmFja1ByaXZhdAogICAgICwgbV9vd25lcihvd25lcikKIHsKICAg
ICBBU1NFUlQobV9zdHJlYW0pOwotICAgIG1faWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQo
bV9zdHJlYW0uZ2V0KCkpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGdzdF9z
dHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQoKSkpOwogCiAgICAgLy8gV2UgY2FuJ3Qg
Y2FsbCBub3RpZnlUcmFja09mVGFnc0NoYW5nZWQoKSBkaXJlY3RseSwgYmVjYXVzZSB3ZSBuZWVk
IHRhZ3NDaGFuZ2VkKCkgdG8gc2V0dXAgbV90YWdzLgogICAgIHRhZ3NDaGFuZ2VkKCk7CkBAIC0y
NTIsNyArMjUyLDcgQEAgdm9pZCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpub3RpZnlUcmFj
a09mU3RyZWFtQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdTVF9JTkZPKCJUcmFj
ayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwgc3RyZWFtSWQu
Z2V0KCkpOwotICAgIG1faWQgPSBzdHJlYW1JZC5nZXQoKTsKKyAgICBtX2lkID0gQXRvbVN0cmlu
Zzo6ZnJvbUxhdGluMShzdHJlYW1JZC5nZXQoKSk7CiB9CiAKIHZvaWQgVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRl
eCBiYzUzOWE4NzQ3ODAyODE4MTNmNmFmMzAwYWUyZTAyYjc2YWU2MWJjLi40ODkwMjI5MzY5MTlk
NzM5ZDAwZWExY2NjMzI2NmZkYWVmMjg2NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAK
QEAgLTE0NywxMCArMTQ3LDEwIEBAIFZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlVGh1bmRl
cjo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiAgICAgc3RhdGljIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VG
bGFnLCBbXSB7CiAgICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSg0KTsKLSAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBl
bmQoQXRvbVN0cmluZygia2V5aWRzIikpOwotICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
LnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJjZW5jIikpOwotICAgICAgICBzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJ3ZWJtIikpOwotICAgICAg
ICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZChBdG9tU3RyaW5nKCJjYmNz
IikpOworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZCgia2V5
aWRzIl9zKTsKKyAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQo
ImNlbmMiX3MpOworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVu
ZCgid2VibSJfcyk7CisgICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBw
ZW5kKCJjYmNzIl9zKTsKICAgICB9KTsKICAgICByZXR1cm4gc3VwcG9ydGVkSW5pdERhdGFUeXBl
czsKIH0KQEAgLTE3MCw5ICsxNzAsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0
c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgYwogCiBWZWN0
b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRlZFJvYnVzdG5lc3Nlcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgZW1wdHlBdG9tKCksCi0gICAgICAgICJTV19TRUNVUkVf
REVDT0RFIiwKLSAgICAgICAgIlNXX1NFQ1VSRV9DUllQVE8iIH07CisgICAgcmV0dXJuIHsgZW1w
dHlBdG9tKCksICJTV19TRUNVUkVfREVDT0RFIl9zLCAiU1dfU0VDVVJFX0NSWVBUTyJfcyB9Owog
fQogCiBDRE1SZXF1aXJlbWVudCBDRE1Qcml2YXRlVGh1bmRlcjo6ZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBD
RE1SZXN0cmljdGlvbnMmKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApp
bmRleCAwYmIyMmQ1MjU5MGVkZTI1NzhmMDRmMjZhNjE2ZjkxNjBjNDRiM2RlLi5jMjZhOWI1MzU2
NjkzNDg4YjQyNWY2ZTk3YzQ4MWIxNWIyNzdhNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcApAQCAtNzEzLDcgKzcxMyw3IEBAIEFwcGVuZFBpcGVsaW5lOjpUcmFjayogQXBw
ZW5kUGlwZWxpbmU6OnRyeU1hdGNoUGFkVG9FeGlzdGluZ1RyYWNrKEdzdFBhZCAqZGVtdXhlCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9oYXNSZWNlaXZlZEZp
cnN0SW5pdGlhbGl6YXRpb25TZWdtZW50KTsKLSAgICBBdG9tU3RyaW5nIHRyYWNrSWQgPSBHU1Rf
UEFEX05BTUUoZGVtdXhlclNyY1BhZCk7CisgICAgYXV0byB0cmFja0lkID0gQXRvbVN0cmluZzo6
ZnJvbUxhdGluMShHU1RfUEFEX05BTUUoZGVtdXhlclNyY1BhZCkpOwogICAgIGF1dG8gW3BhcnNl
ZENhcHMsIHN0cmVhbVR5cGUsIHByZXNlbnRhdGlvblNpemVdID0gcGFyc2VEZW11eGVyU3JjUGFk
Q2FwcyhhZG9wdEdSZWYoZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKGRlbXV4ZXJTcmNQYWQpKS5n
ZXQoKSk7CiAKICAgICAvLyBUcnkgdG8gZmluZCBhIG1hdGNoaW5nIHByZS1leGlzdGluZyB0cmFj
ay4gSWRlYWxseSwgdHJhY2tzIHNob3VsZCBiZSBtYXRjaGVkIGJ5IHRyYWNrIElELCBidXQgbWF0
Y2hpbmcgYnkgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCAzZTRlMGU5MzQyNWU2ODBiOTAzNjI3
YmU5OWZiNDNmMmEyM2MyZTBmLi40NjI0MWQxMjQxOTNhZWVhZTJlZGVkNDA1Y2EyODVjMzkzYTMx
NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB1
bnNpZ25lZCBob3VycyA9IG1pbnV0ZXMgLyA2MCAlIDYwOwogCiAgICAgRm9udENhc2NhZGVEZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiQ291cmllciIpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkNvdXJpZXIi
X3MpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKDUw
MCkpOwogCiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUobV9iYXNlRm9udFNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVn
aXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKaW5kZXggYTUzMTA2MDdhMzA0OTk5NTNlNDk1ZGFlNjM0NWY4ZTUyZmRmMDcy
ZS4uOTc3OGMxNzVmMzRkNDZkMGI2ZjUwMTE2ZTdlOGQzYTU1NDk0NDQ0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBA
IC02Nyw4ICs2Nyw5IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29u
c3RydWN0b3IoKQogewogICAgIHN0YXRpYyBib29sIGRpZFJlZ2lzdGVyID0gZmFsc2U7CiAgICAg
aWYgKCFkaWRSZWdpc3RlcikgewotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWls
dGluQ29uc3RydWN0b3IoImJsb2IiLCBjcmVhdGVCbG9iUmVzb3VyY2VIYW5kbGUpOwotICAgICAg
ICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoImJsb2Ii
LCBsb2FkQmxvYlJlc291cmNlU3luY2hyb25vdXNseSk7CisgICAgICAgIEF0b21TdHJpbmcgYmxv
YiA9ICJibG9iIl9zOworICAgICAgICBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluQ29u
c3RydWN0b3IoYmxvYiwgY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKTsKKyAgICAgICAgUmVzb3Vy
Y2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGJsb2IsIGxvYWRCbG9i
UmVzb3VyY2VTeW5jaHJvbm91c2x5KTsKICAgICAgICAgZGlkUmVnaXN0ZXIgPSB0cnVlOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCBh
M2ZlZmFkMDZhNmIyNzJiMWFmMWI1OTA0MzY5ODJhMTY4NTNiMWFmLi40ODVjZTczZDljMzRhMGM5
YTM0MmQzY2ZlNzBhNTVlNDQ2ZmNhMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBzaG93Q291bnRlclJlbmRl
cmVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBjaGFy
KgogICAgIHdoaWxlIChyb290LT5wYXJlbnQoKSkKICAgICAgICAgcm9vdCA9IHJvb3QtPnBhcmVu
dCgpOwogCi0gICAgQXRvbVN0cmluZyBpZGVudGlmaWVyKGNvdW50ZXJOYW1lKTsKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvdW50ZXJOYW1lKTsKICAgICBm
b3IgKGF1dG8qIGN1cnJlbnQgPSByb290OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4
dEluUHJlT3JkZXIoKSkgewogICAgICAgICBpZiAoIWlzPFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ+
KCpjdXJyZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyNjNhYzc1YWM3ZTRkMmEzZDIz
NTkxNDZhYWMzZGY3Y2Y0OWJiOTIyLi5kOTc3ODk1YWZkYzE3OGU2M2YzYTRjZGE5MTIwZjY2M2Fi
NWUxOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcApAQCAtMzMzMCw3ICszMzMwLDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0
ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBGbG8KICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpOwogCiAgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwot
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoMTApOwogICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0Q29tcHV0ZWRTaXplKDEwKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCBmMzc1OTQwN2E2MGExN2YwYzhmOGJiN2E3ZGIxYzE1
MjA2OThlOTQ2Li5jNWM0MTZkMmMwNjM2MWRjYWFhY2EwOGY4MWNhNzQyMWQ2OTAyYmFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0
aW9uKENTU1ZhbHVlSUQsIEZvbnRDYXNjYWRlRGUKICAgICBpZiAoIXBhbmdvRGVzY3JpcHRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkocGFu
Z29fZm9udF9kZXNjcmlwdGlvbl9nZXRfZmFtaWx5KHBhbmdvRGVzY3JpcHRpb24pKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KEF0b21TdHJpbmc6OmZyb21MYXRpbjEocGFuZ29f
Zm9udF9kZXNjcmlwdGlvbl9nZXRfZmFtaWx5KHBhbmdvRGVzY3JpcHRpb24pKSk7CiAKICAgICBp
bnQgc2l6ZSA9IHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZ2V0X3NpemUocGFuZ29EZXNjcmlwdGlv
bikgLyBQQU5HT19TQ0FMRTsKICAgICAvLyBJZiB0aGUgc2l6ZSBvZiB0aGUgZm9udCBpcyBpbiBw
b2ludHMsIHdlIG5lZWQgdG8gY29udmVydCBpdCB0byBwaXhlbHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKaW5kZXgg
MjFkOWM3ZTJjNzJlZDEwNGE4NWVkOTlkMDUxNmI3Y2FkNmIxOGU3Ny4uYzBjMzQ3OGMyOGI5YTg1
NGE4MTI2MzRhY2FhZTMyODRlZjU0ZjI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcApAQCAtNDUsOCArNDUsOCBA
QCB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChSZW5kZXJNYXRoTUxGZW5jZWQpOwogCi1zdGF0aWMgY29uc3QgY2hhciogZ09wZW5pbmdC
cmFjZUNoYXIgPSAiKCI7Ci1zdGF0aWMgY29uc3QgY2hhciogZ0Nsb3NpbmdCcmFjZUNoYXIgPSAi
KSI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gZ09wZW5pbmdCcmFjZUNoYXIgPSAiKCJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBnQ2xvc2luZ0JyYWNlQ2hhciA9ICIpIl9zOwogCiBSZW5kZXJN
YXRoTUxGZW5jZWQ6OlJlbmRlck1hdGhNTEZlbmNlZChNYXRoTUxSb3dFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlRm9yRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9y
RG9jdW1lbnQuY3BwCmluZGV4IDMzMTg5YmQ2NGNhY2JlZGY5MzY4ZDM0ZmE5ZmI1NjRkNThiZDFm
MzYuLjhhYzZlZGVjMmZlMGI2MTY3MTg4MmE1ZjlmZmQ2NDdmNDA2YmNmNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKQEAgLTEwMCw3
ICsxMDAsNyBAQCBSZW5kZXJTdHlsZSByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgICAgICBpZiAocmVuZGVyVmlldy5tdWx0aUNvbHVtbkZsb3coKSkKICAg
ICAgICAgICAgIHJlbmRlclZpZXcudXBkYXRlQ29sdW1uUHJvZ3Jlc3Npb25Gcm9tU3R5bGUoZG9j
dW1lbnRTdHlsZSk7CiAgICAgICAgIGlmIChyZW5kZXJWaWV3LnBhZ2UoKS5wYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZUdyaWQo
Ii13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50
U3R5bGUuc2V0TGluZUdyaWQoIi13ZWJraXQtZGVmYXVsdC1wYWdpbmF0aW9uLWdyaWQiX3MpOwog
ICAgICAgICAgICAgZG9jdW1lbnRTdHlsZS5zZXRMaW5lU25hcChMaW5lU25hcDo6Q29udGFpbik7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVs
ZW1lbnQuY3BwCmluZGV4IDNhZDI0ZTVmY2M5MWNiMmY4OGUyMDI1NGFiYWQ2MDE0ODcxOTI4OGQu
LjYzYmNkMWE4MGVmNzg1MzM5NDI0MjEzMGRkMmRmODkwOWMyMjNmZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFJl
ZjxDU1NGb250RmFjZVNyY1ZhbHVlPiBTVkdGb250RmFjZVVyaUVsZW1lbnQ6OnNyY1ZhbHVlKCkg
Y29uc3QKIHsKICAgICBhdXRvIHNyYyA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZShnZXRB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmhyZWZBdHRyLCBYTGlua05hbWVzOjpocmVmQXR0ciksIExvYWRl
ZEZyb21PcGFxdWVTb3VyY2U6Ok5vKTsKICAgICBBdG9tU3RyaW5nIHZhbHVlKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybWF0QXR0cikpOwotICAgIHNyYy5nZXQoKS5zZXRGb3Jt
YXQodmFsdWUuaXNFbXB0eSgpID8gInN2ZyIgOiB2YWx1ZSk7IC8vIERlZmF1bHQgZm9ybWF0Cisg
ICAgc3JjLmdldCgpLnNldEZvcm1hdCh2YWx1ZS5pc0VtcHR5KCkgPyAic3ZnIl9zIDogdmFsdWUp
OyAvLyBEZWZhdWx0IGZvcm1hdAogICAgIHJldHVybiBzcmM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAppbmRleCBhMDFmNmJhZGExYzFkNmMyNWY4MjBmNzI2YzhlY2VlODE4
MmVjYjZhLi42ZTVjN2M3NGM4ZTdjY2U3ZDk4Mzc1OGFkZDQ1MmJmZWZhNGEwMTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBTVkdV
c2VFbGVtZW50Ojp0cmFuc2ZlclNpemVBdHRyaWJ1dGVzVG9UYXJnZXRDbG9uZShTVkdFbGVtZW50
JiBzaGFkb3dFbGVtZW4KICAgICAgICAgLy8gSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVp
Z2h0IGFyZSBwcm92aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0aGVzZSBhdHRyaWJ1
dGVzCiAgICAgICAgIC8vIHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIGdlbmVyYXRlZCAnc3Zn
Jy4gSWYgYXR0cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBub3Qgc3BlY2lmaWVkLAog
ICAgICAgICAvLyB0aGUgZ2VuZXJhdGVkICdzdmcnIGVsZW1lbnQgd2lsbCB1c2UgdmFsdWVzIG9m
IDEwMCUgZm9yIHRoZXNlIGF0dHJpYnV0ZXMuCi0gICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0
cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRz
KCkgPyBBdG9tU3RyaW5nKHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIik7Ci0gICAg
ICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWln
aHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVB
c1N0cmluZygpKSA6ICIxMDAlIik7CisgICAgICAgIHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRl
KFNWR05hbWVzOjp3aWR0aEF0dHIsIHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBB
dG9tU3RyaW5nKHdpZHRoKCkudmFsdWVBc1N0cmluZygpKSA6ICIxMDAlIl9zKTsKKyAgICAgICAg
c2hhZG93RWxlbWVudC5zZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIGhlaWdodCgp
LnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyhoZWlnaHQoKS52YWx1ZUFzU3Ry
aW5nKCkpIDogIjEwMCUiX3MpOwogICAgIH0gZWxzZSBpZiAoaXM8U1ZHU1ZHRWxlbWVudD4oc2hh
ZG93RWxlbWVudCkpIHsKICAgICAgICAgLy8gU3BlYyAoPHVzZT4gb24gPHN2Zz4pOiBJZiBhdHRy
aWJ1dGVzIHdpZHRoIGFuZC9vciBoZWlnaHQgYXJlIHByb3ZpZGVkIG9uIHRoZSAndXNlJyBlbGVt
ZW50LCB0aGVuIHRoZXNlCiAgICAgICAgIC8vIHZhbHVlcyB3aWxsIG92ZXJyaWRlIHRoZSBjb3Jy
ZXNwb25kaW5nIGF0dHJpYnV0ZXMgb24gdGhlICdzdmcnIGluIHRoZSBnZW5lcmF0ZWQgdHJlZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRjaEV2ZW50LmNwcAppbmRleCBl
N2FlMWE4YzY4YjAwMTcxM2QxNzc1YTI0MmU5NGJjNjE2MGZmZDVmLi4xZGExMTk0YmE4ZWZkMGVh
MDRhZjI1M2Q0MTliMjY5MTRhZDBmODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRmV0Y2hF
dmVudC5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oIgor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNs
dWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC00Miw3ICs0
Myw3IEBAIFJlZjxGZXRjaEV2ZW50PiBGZXRjaEV2ZW50OjpjcmVhdGVGb3JUZXN0aW5nKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgRmV0Y2hFdmVudDo6SW5pdCBpbml0
OwogICAgIGluaXQucmVxdWVzdCA9IEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHsgfSwg
RmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlLCB7IH0p
LCB7IH0sIHsgfSwgeyB9KTsKLSAgICByZXR1cm4gRmV0Y2hFdmVudDo6Y3JlYXRlKCpjb250ZXh0
Lmdsb2JhbE9iamVjdCgpLCAiZmV0Y2giLCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNUcnVzdGVk
OjpZZXMpOworICAgIHJldHVybiBGZXRjaEV2ZW50OjpjcmVhdGUoKmNvbnRleHQuZ2xvYmFsT2Jq
ZWN0KCksIGV2ZW50TmFtZXMoKS5mZXRjaEV2ZW50LCBXVEZNb3ZlKGluaXQpLCBFdmVudDo6SXNU
cnVzdGVkOjpZZXMpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZjxET01Qcm9taXNlPiByZXRyaWV2
ZUhhbmRsZWRQcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmUHRy
PERPTVByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5kZXggNmRm
M2YwYzkzZWY0NTYwYjI5NzYzZDhiMTRmZDI4NTcyOGRiYzc2OC4uZWY0Y2RlYWJkZTQ5ZGVjNDA0
MmE2ZjgzMjUwYjZlMmY3NzI2MDE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKQEAgLTgz
LDEwICs4MywxMCBAQCB2b2lkIFhNTEVycm9yczo6YXBwZW5kRXJyb3JNZXNzYWdlKEFTQ0lJTGl0
ZXJhbCB0eXBlU3RyaW5nLCBUZXh0UG9zaXRpb24gcG9zaXRpbwogCiBzdGF0aWMgaW5saW5lIFJl
ZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2VzKQogewotICAgIFJlZjxFbGVtZW50PiByZXBv
cnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9t
KCksICJwYXJzZXJlcnJvciIsIHhodG1sTmFtZXNwYWNlVVJJKSwgdHJ1ZSk7CisgICAgUmVmPEVs
ZW1lbnQ+IHJlcG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFF1YWxpZmllZE5h
bWUobnVsbEF0b20oKSwgInBhcnNlcmVycm9yIl9zLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUp
OwogCiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gcmVwb3J0QXR0cmlidXRlczsKLSAgICByZXBvcnRB
dHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxvY2s7IHdo
aXRlLXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAgMWVtIDAg
MWVtOyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJsYWNrIikp
OworICAgIHJlcG9ydEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJkaXNw
bGF5OiBibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgYm9yZGVyOiAycHggc29saWQgI2M3NzsgcGFk
ZGluZzogMCAxZW0gMCAxZW07IG1hcmdpbjogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRkOyBj
b2xvcjogYmxhY2siX3MpKTsKICAgICByZXBvcnRFbGVtZW50LT5wYXJzZXJTZXRBdHRyaWJ1dGVz
KHJlcG9ydEF0dHJpYnV0ZXMpOwogCiAgICAgYXV0byBoMyA9IEhUTUxIZWFkaW5nRWxlbWVudDo6
Y3JlYXRlKGgzVGFnLCBkb2N1bWVudCk7CkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBpbmxpbmUg
UmVmPEVsZW1lbnQ+IGNyZWF0ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zCiAKICAgICBhdXRvIGZpeGVkID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CiAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gZml4ZWRBdHRyaWJ1dGVzOwotICAgIGZpeGVk
QXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImZvbnQtZmFtaWx5Om1vbm9z
cGFjZTtmb250LXNpemU6MTJweCIpKTsKKyAgICBmaXhlZEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJp
YnV0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEycHgiX3Mp
KTsKICAgICBmaXhlZC0+cGFyc2VyU2V0QXR0cmlidXRlcyhmaXhlZEF0dHJpYnV0ZXMpOwogICAg
IHJlcG9ydEVsZW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKGZpeGVkKTsKIApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHZvaWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpCiAjaWYgRU5B
QkxFKFhTTFQpCiAgICAgaWYgKG1fZG9jdW1lbnQudHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkg
ewogICAgICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwotICAgICAgICBhdHRyaWJ1
dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAid2hpdGUtc3BhY2U6IG5vcm1hbCIpKTsK
KyAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNw
YWNlOiBub3JtYWwiX3MpKTsKICAgICAgICAgYXV0byBwYXJhZ3JhcGggPSBIVE1MUGFyYWdyYXBo
RWxlbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlclNl
dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgICAgIHBhcmFncmFwaC0+cGFyc2VyQXBwZW5k
Q2hpbGQobV9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGhpcyBkb2N1bWVudCB3YXMgY3JlYXRl
ZCBhcyB0aGUgcmVzdWx0IG9mIGFuIFhTTCB0cmFuc2Zvcm1hdGlvbi4gVGhlIGxpbmUgYW5kIGNv
bHVtbiBudW1iZXJzIGdpdmVuIGFyZSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCByZXN1bHQuIl9zKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKaW5kZXggMjM1ZmEzODVkYWQ2MWU1Y2I3
YWJhYjAxOWE4OTliMzFkM2EwYjM2OS4uMDJlZTk5MGNlMDdkYTBiZjM5MzA0YWIxZGI3MmFlMDc0
ZTFjMWE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIFhNTFRyZWVWaWV3ZXI6OnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpCiB7
CiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5
aW5nKFhNTFZpZXdlcl9qcywgc2l6ZW9mKFhNTFZpZXdlcl9qcykpOwogICAgIG1fZG9jdW1lbnQu
ZnJhbWUoKS0+c2NyaXB0KCkuZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VD
b2RlKHNjcmlwdFN0cmluZykpOwotICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+c2NyaXB0KCkuZXZh
bHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihTY3JpcHRTb3VyY2VDb2RlKEF0b21TdHJpbmcoInByZXBh
cmVXZWJLaXRYTUxWaWV3ZXIoJ1RoaXMgWE1MIGZpbGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUg
YW55IHN0eWxlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGRvY3VtZW50IHRy
ZWUgaXMgc2hvd24gYmVsb3cuJyk7IikpKTsKKyAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlw
dCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5n
KCJwcmVwYXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0
byBoYXZlIGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1
bWVudCB0cmVlIGlzIHNob3duIGJlbG93LicpOyJfcykpKTsKIAogICAgIFN0cmluZyBjc3NTdHJp
bmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3ZXJfY3NzLCBzaXpl
b2YoWE1MVmlld2VyX2NzcykpOwogICAgIGF1dG8gdGV4dCA9IG1fZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoY3NzU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vR09iamVjdEV2
ZW50TGlzdGVuZXIuY3BwCmluZGV4IGQwMWEyMTA2OWU1NTNhN2JmZTlmOGMyODU5ODkzOThhMWMx
NTlhY2YuLjY5ODY4NWE1NWE3YzIwZWYzY2ExYTFkZTQ2Y2U0NzhlMjM3MWJiMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9H
T2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0dPYmplY3RFdmVudExpc3RlbmVyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpnb2JqZWN0RGVzdHJveWVkKCkK
ICAgICAvLyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0aGUgbV9oYW5kbGVyID0gMDsg
YXNzaWdubWVudC4KICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlzdGVuZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKLSAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21F
dmVudE5hbWUuZGF0YSgpLCAqdGhpcywgbV9jYXB0dXJlKTsKKyAgICBtX2NvcmVUYXJnZXQtPnJl
bW92ZUV2ZW50TGlzdGVuZXIoQXRvbVN0cmluZzo6ZnJvbUxhdGluMShtX2RvbUV2ZW50TmFtZS5k
YXRhKCkpLCAqdGhpcywgbV9jYXB0dXJlKTsKICAgICBtX2NvcmVUYXJnZXQgPSBudWxscHRyOwog
ICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vR09iamVjdEV2ZW50TGlzdGVuZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9H
T2JqZWN0RXZlbnRMaXN0ZW5lci5oCmluZGV4IDkxN2VkODZkODc4ZGZiM2YxNzczNTFjNmRmMzhk
YWQ2ODg4MTZiZWUuLjc0YmUxNThhZGNlNTQxMjQyNGRiNjM0MzVmNWYyMmNhYzdjODVmNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9HT2JqZWN0RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9HT2JqZWN0RXZlbnRMaXN0ZW5lci5oCkBAIC0z
NiwxMyArMzYsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGFkZEV2ZW50TGlzdGVuZXIo
R09iamVjdCogdGFyZ2V0LCBXZWJDb3JlOjpFdmVudFRhcmdldCogY29yZVRhcmdldCwgY29uc3Qg
Y2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgYm9vbCB1c2VDYXB0dXJlKQog
ICAgIHsKICAgICAgICAgUmVmPEdPYmplY3RFdmVudExpc3RlbmVyPiBsaXN0ZW5lcihhZG9wdFJl
ZigqbmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwgY29yZVRhcmdldCwgZG9tRXZlbnRO
YW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOwotICAgICAgICByZXR1cm4gY29yZVRhcmdldC0+
YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0
dXJlKTsKKyAgICAgICAgcmV0dXJuIGNvcmVUYXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoQXRvbVN0
cmluZzo6ZnJvbUxhdGluMShkb21FdmVudE5hbWUpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2Fw
dHVyZSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihHT2Jq
ZWN0KiB0YXJnZXQsIFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBjb3JlVGFyZ2V0LCBjb25zdCBjaGFy
KiBkb21FdmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBib29sIHVzZUNhcHR1cmUpCiAgICAg
ewogICAgICAgICBHT2JqZWN0RXZlbnRMaXN0ZW5lciBrZXkodGFyZ2V0LCBjb3JlVGFyZ2V0LCBk
b21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpOwotICAgICAgICByZXR1cm4gY29yZVRh
cmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIGtleSwgdXNlQ2FwdHVyZSk7
CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKEF0b21TdHJp
bmc6OmZyb21MYXRpbjEoZG9tRXZlbnROYW1lKSwga2V5LCB1c2VDYXB0dXJlKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgdm9pZCBnb2JqZWN0RGVzdHJveWVkQ2FsbGJhY2soR09iamVjdEV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyLCBHT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KaW5k
ZXggZjYyZGM3YzgzN2YwMmY3MDEwYzgyZDk3OTBlMmJhYWYyMTRlMWQyMS4uNmIyODU4MDU5NGVl
MzVlMTUyOTNjYzM3ZGYwMDgzMGMxZTFiYTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQu
bW0KQEAgLTU0LDcgKzU0LDcgQEAgUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdpblBh
c3N3b3JkRmllbGQoKQogUmVmPEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0
ZUFubm90YXRpb25FbGVtZW50KCkKIHsKICAgICBhdXRvIGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKLSAgICBlbGVtZW50LT5zZXRB
dHRyaWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0
ZSh0eXBlQXR0ciwgInBhc3N3b3JkIl9zKTsKICAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAgICAg
cmV0dXJuIGVsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IDczZmMwMTM0MmM4YjdmNDE0Y2M4ZGMxNWM4YmM3
ZDVkOTliNDc1YzQuLjU4ZmEzZTQyMWM3MTBkZWRlZmZmMzFkZTI0Y2RlYzQ4YjllZWJjNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwCkBAIC0yMDQzLDcgKzIwNDMsNyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjptZXNzYWdlcyhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbgogICAgICAg
ICBkaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlzU3luY0lkZW50LCBKU0M6OmpzQm9vbGVhbiht
ZXNzYWdlSXNTeW5jKG5hbWUpKSk7ICAgICAgICAgICAgCiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKIAotICAgICAgICBt
ZXNzYWdlc09iamVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21DU3RyaW5n
KHZtLCBkZXNjcmlwdGlvbihuYW1lKSksIGRpY3Rpb25hcnkpOworICAgICAgICBtZXNzYWdlc09i
amVjdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGRlc2Ny
aXB0aW9uKG5hbWUpKSwgZGljdGlvbmFyeSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
MTQwZWNhZGJhN2Y3Y2VhNjYwYTExNzBhNTlhODE1ZTRlNzA2ZjVlNC4uNGUyZTliYTgyNWIwYmFi
YjQ5N2MwZDk5ZmM4OTVjNWQwMDM1N2FhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTM0NDIsNyArMzQ0Miw3IEBAIHN0
ZDo6b3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbigpCiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNUZWxlcGhvbmVG
aWVsZCgpKQogICAgICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBJbnB1dFR5cGU6
OlBob25lOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzTnVtYmVyRmllbGQoKSkKLSAgICAg
ICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoInBh
dHRlcm4iKSA9PSAiXFxkKiIgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoInBhdHRlcm4iKSA9PSAi
WzAtOV0qIiA/IElucHV0VHlwZTo6TnVtYmVyUGFkIDogSW5wdXRUeXBlOjpOdW1iZXI7CisgICAg
ICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6cGF0dGVybkF0dHIpID09ICJcXGQqIiB8fCBlbGVtZW50LmdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OnBhdHRlcm5BdHRyKSA9PSAiWzAtOV0qIiA/IElucHV0VHlwZTo6TnVtYmVyUGFk
IDogSW5wdXRUeXBlOjpOdW1iZXI7CiAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNEYXRlVGlt
ZUxvY2FsRmllbGQoKSkKICAgICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5w
dXRUeXBlOjpEYXRlVGltZUxvY2FsOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzRGF0ZUZp
ZWxkKCkpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZDY3Y2ViOWJhMWEyNjVjYzk1MzdmYTBmMDgyZjBhOWM4MTQ3NjAxMi4uMDI1YmIwNTE1ZDZj
YThiZDU0ZWM5ZmE3ZDY1NjVmNGE0MTZjZjk5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTA0LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5n
KGNvbnN0IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3Jz
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjItMDQtMTEgIEFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIGlQaG9uZSAxMiBdIGZhc3QvaGlkcGkgJiBmYXN0
L2xheWVycy9oaWRwaSB0ZXN0cyBhcmUgZmxha3kgdGV4dC9pbWFnZSBmYWlsaW5nCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21TdHJpbmcuY3BwCmluZGV4IGJlNzQxNTRlMzg4
YmE3YzU2NDYxZWM5NmJhNzAwM2UxZDkyYjY4ZWEuLjAzZjE5YjA0MTMyZTViNTBjM2Q4NGZmZmVl
ODdhNmFhNThlYzliZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0F0b21TdHJpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0F0b21T
dHJpbmcuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFRFU1QoV1RGLCBBdG9tU3RyaW5nQ3JlYXRpb25G
cm9tTGl0ZXJhbFVuaXF1ZW5lc3MpCiAgICAgQXRvbVN0cmluZyBzdHJpbmcyKCJUZW1wbGF0ZSBM
aXRlcmFsIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogICAgIEFTU0VSVF9F
UShzdHJpbmcxLmltcGwoKSwgc3RyaW5nMi5pbXBsKCkpOwogCi0gICAgQXRvbVN0cmluZyBzdHJp
bmczKCJUZW1wbGF0ZSBMaXRlcmFsIik7CisgICAgQXRvbVN0cmluZyBzdHJpbmczKCJUZW1wbGF0
ZSBMaXRlcmFsIl9zKTsKICAgICBBU1NFUlRfRVEoc3RyaW5nMS5pbXBsKCksIHN0cmluZzMuaW1w
bCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nT3BlcmF0b3JzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09w
ZXJhdG9ycy5jcHAKaW5kZXggYjQ0MmU0MzY4YzAzZGI3YmE2MzBjN2FlYTJhOTgzNWQzNDhiNDRi
OC4uMDJiNjE2NGJkNTllOWYyMWZkNGNmODc5NmY4ZmNiNDlmZTZiYmVmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV1RGLCBTdHJpbmdPcGVy
YXRvcnMpCiB7CiAgICAgU3RyaW5nIHN0cmluZygiU3RyaW5nIl9zKTsKLSAgICBBdG9tU3RyaW5n
IGF0b21TdHJpbmcoIkF0b21TdHJpbmciKTsKKyAgICBBdG9tU3RyaW5nIGF0b21TdHJpbmcoIkF0
b21TdHJpbmciX3MpOwogICAgIEFTQ0lJTGl0ZXJhbCBsaXRlcmFsIHsgIkFTQ0lJTGl0ZXJhbCJf
cyB9OwogCiAgICAgU3RyaW5nIHN0cmluZ1ZpZXdCYWNraW5nIHsgIlN0cmluZ1ZpZXciX3MgfTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggYmNmMDMyOTU1YmUyZWJkZmZlNjkzZDhhOGJiZDgy
YmY5NDJmOWQ5OS4uMzgwZjM0MGIxYTQzMWYyNDcyYzAyYTExYjk1OGE4YmRhNjkyZjA3NCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogVEVTVF9GKENv
bXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JblJUTCkK
IHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0
aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
IlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZv
bnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7
CkBAIC05NCw3ICs5NCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0
aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5SVEwpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVy
VGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTCkKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAg
ICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5z
ZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlw
dGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgVEVTVF9GKENv
bXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCiBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQog
ewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KCJMdWNpZGFHcmFuZGUiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVG
YW1pbHkoIkx1Y2lkYUdyYW5kZSJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXpl
KDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBm
b250LnVwZGF0ZSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRy
b2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5MVFIpCiBURVNUX0YoQ29tcGxl
eFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKIHsKICAgICBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiTHVjaWRhR3JhbmRlIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFH
cmFuZGUiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9u
dENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsK
QEAgLTIxOCw3ICsyMTgsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5p
dGlhbEFkdmFuY2VJbkxUUikKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0
aWFsQWR2YW5jZUluUlRMTm9PcmlnaW5zKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAg
IGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNl
dENvbXB1dGVkU2l6ZSg0OCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0
aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTE5vT3JpZ2lucykKIFRF
U1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBMZWZ0RXhwYW5zaW9uKQogewogICAgIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25l
RmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3Mp
OwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg0OCk7CiAgICAgRm9udENhc2NhZGUg
Zm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsKQEAgLTI5NCw3
ICsyOTQsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lv
bikKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBWZXJ0aWNhbEFkdmFuY2VzKQog
ewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRp
b24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgi
VGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg0OCk7CiAgICAgRm9u
dENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsK
QEAgLTMzOCw3ICszMzgsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVy
dGljYWxBZHZhbmNlcykKIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdp
ZHRoV2l0aEp1c3RpZmljYXRpb24pCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVz
Y3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29t
cHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24p
KTsKICAgICBmb250LnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250
ZXh0VGVzdHNDRy5jcHAKaW5kZXggMmYyOGQ0ZTY2NTMzMGZjNjg2M2U0MWUwN2VkN2JjN2JkYjBl
NDQ2NC4uNDA2ZDA4NzNhZGY5ZDZiMzFlMWJhYWU4Yzc1YTBkN2RlNzRhZDI0YyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGlj
c0NvbnRleHRUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCkBAIC05OCw3ICs5OCw3
IEBAIFRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBUZXh0KQogICAgIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0
KTsKIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAg
Rm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457500</attachid>
            <date>2022-04-12 19:26:28 -0700</date>
            <delta_ts>2022-04-12 21:15:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412192627.patch</filename>
            <type>text/plain</type>
            <size>120373</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5mZTAwZDRmMTJiZGY5MjMx
NTBhMmQ4ZjU4MTIxNDEzODYyZDkyNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5VXNh
Z2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAg
KiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6
OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVkU3Rh
dGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRiZmE0
N2NiOGEyYWYyYjI0MDIzNDVhYS4uNWY2YTg0YzhhMDI3ZGNkZmU5ZGQzMWFmODAzZjYwMDU5ZmRm
OTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikg
d2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoK
KyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRv
bVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0ZDNmYmY1
YmUwNzIxYzJlZmJlNDljNjNjLi43ZTgyMGNmYWQ3MjgzZGQ5MWZhNTEzMjI3ZTAyNGM3NmRhN2M3
MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0
IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJl
Z2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBhbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6
Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VS
ZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAgICAqIGVkaXRp
bmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFuRWxlbWVudCk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1
bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2lsbFJlYXBwbHlF
ZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBsaWVkRWRpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKToK
KyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAqIGVkaXRpbmcv
SW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVu
dENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1
ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdW1tYXJ5U2xv
dE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNo
b3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvUERGRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50
U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjppbmplY3RTdHlsZUFu
ZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXApOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNh
cHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRU
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFtZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJvcGVydGllcyk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1lbnRTdHlsZVRl
eHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6CisgICAgICAg
ICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1F1
aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0aXBQcmV2ZW50
RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtz
OjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3Rv
cmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjppc0JC
Q1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnRyaWdnZXJP
cHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRleHRU
cmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
OjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRs
ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6Cisg
ICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3Jp
cHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNw
cDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
Rm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlVXJp
RWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0
ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRmV0Y2hF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVGb3JUZXN0aW5n
KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRXJyb3JzOjpp
bnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVWaWV3ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9jdW1lbnRUb1Ry
ZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRiM2VkYWNlOS4u
MzE5M2RkNTcyNDY5MjI1MzI5YjExYTlkNThjNmJjYmNkNTE4Y2NkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3Jk
RmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0
ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVz
dGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjptZXNz
YWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKToKKwog
MjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJREwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAyNzVlYmY0NjhmN2Nk
ZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBjZTcyNzZhZjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgSlNP
YmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0UmVmIGN0eCkKICAg
ICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMoKTsKICAgICBKU09i
amVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAgICBvYmplY3RUeXBl
Q291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdC5rZXkp
LCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpzTnVtYmVyKGl0LnZh
bHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXplKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBiZTUyNjUxYjMzM2Qw
MmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUzMDNhZDRhNzY4NTYy
YTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMgSWRlbnRpZmllciBm
cm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycykgeyByZXR1
cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3RlcnMuc2l6ZSgpKTsg
fQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29uc3QgY2hhciopOwor
ICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBjaGFyKik7CiAKICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRlTmFtZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKaW5k
ZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4uOTY3MDZkNmNlZTNl
OTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSArMTIwLDkgQEAgaW5s
aW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwq
IHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJvbEltcGwpOwogfQog
Ci1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhWTSYgdm0sIGNvbnN0
IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tTGF0aW4xKFZNJiB2
bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgQXRvbVN0cmlu
ZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6OmZyb21MYXRpbjEo
cykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVlKFZNJiB2bSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4ZGNlZDZiMmQyZDhk
OTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1LDcgKzI2NjUsNyBA
QCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKmhhc2hUYWJsZSkg
ewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAgICAgIGF1dG8ga2V5
ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsKKyAgICAgICAgICAg
IGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUubV9rZXkpOwogICAg
ICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zmc2V0KHZtLCBrZXks
IGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAg
ICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRhYmxlLT5jbGFzc0Zv
clRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2MDZiYTRlYTk1YWM1
M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1NzIwZDhiNjJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgK
QEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmdldE5vblJl
aWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQogCiAgICAgICAgIGZv
ciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0
ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6Oklu
Y2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21D
U3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFjNmY1MjM3MjIwMDJl
MDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRm
YTA3Y2EzYTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMDMsMTMgKzEw
MywxMyBAQCBBdG9tU3RyaW5nIEF0b21TdHJpbmc6Om51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcg
bnVtYmVyKQogQXRvbVN0cmluZyBBdG9tU3RyaW5nOjpudW1iZXIoZmxvYXQgbnVtYmVyKQogewog
ICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmcobnVtYmVyLCBidWZmZXIpOworICAgIHJldHVybiBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKG51
bWJlclRvU3RyaW5nKG51bWJlciwgYnVmZmVyKSk7CiB9CiAKIEF0b21TdHJpbmcgQXRvbVN0cmlu
Zzo6bnVtYmVyKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVm
ZmVyOwotICAgIHJldHVybiBudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1ZmZlcik7CisgICAgcmV0
dXJuIEF0b21TdHJpbmc6OmZyb21MYXRpbjEobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIp
KTsKIH0KIAogQXRvbVN0cmluZyBBdG9tU3RyaW5nOjpmcm9tVVRGOEludGVybmFsKGNvbnN0IGNo
YXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9t
U3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAg
bnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAgICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVj
dCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEuY29uc3RydWN0KEF0b21TdHJpbmc6OmZyb21M
YXRpbjEoIiIpKTsKIAogICAgICAgICAvLyBXaGVuIHN0YXJ0aW5nIFdlYlRocmVhZCB2aWEgU3Rh
cnRXZWJUaHJlYWQgZnVuY3Rpb24sIHdlIGhhdmUgc3BlY2lhbCBwZXJpb2QgYmV0d2VlbiB0aGUg
cHJvbG9ndWUgb2YgU3RhcnRXZWJUaHJlYWQgYW5kIHNwYXduaW5nIFdlYlRocmVhZCBhY3R1YWxs
eS4KICAgICAgICAgLy8gSW4gdGhpcyBwZXJpb2QsIGBpc01haW5UaHJlYWQoKWAgcmV0dXJucyBm
YWxzZSBldmVuIGlmIHRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBzaW5jZSBXZWJU
aHJlYWQgaXMgbm93IGVuYWJsZWQgYW5kIHdlIGFyZSBub3QgdGFraW5nIGEgV2ViVGhyZWFkIGxv
Y2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IDM1MDYzOWRjNWQ2ZmEyODMxNzRlNWMx
NDYxYjdkNDVjYjQyMDU3NTkuLjc2ZDg3NzdkMDkzMjM4NTNkNWE2NjczZTA0YmI3MDJjNTU5Zjk3
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC0zOSwxMSArMzksMTIgQEAgcHVibGlj
OgogCiAgICAgQXRvbVN0cmluZygpOwogICAgIEF0b21TdHJpbmcoY29uc3QgTENoYXIqKTsKLSAg
ICBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0IFVDaGFyKik7CiAKKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBBdG9tU3RyaW5nIGZyb21MYXRpbjEoY29uc3QgY2hhciogY2hhcmFjdGVycykg
eyByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJzKTsgfQorCiAgICAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5PgogICAgIGV4cGxpY2l0IEF0b21TdHJpbmcoY29uc3QgVmVjdG9yPFVD
aGFyLCBpbmxpbmVDYXBhY2l0eT4mIGNoYXJhY3RlcnMpCiAgICAgICAgIDogbV9zdHJpbmcoQXRv
bVN0cmluZ0ltcGw6OmFkZChjaGFyYWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCkpKQpA
QCAtMTY3LDYgKzE2OCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIGV4cGxp
Y2l0IEF0b21TdHJpbmcoY29uc3QgY2hhciopOworCiAgICAgZW51bSBjbGFzcyBDYXNlQ29udmVy
dFR5cGUgeyBVcHBlciwgTG93ZXIgfTsKICAgICB0ZW1wbGF0ZTxDYXNlQ29udmVydFR5cGU+IEF0
b21TdHJpbmcgY29udmVydEFTQ0lJQ2FzZSgpIGNvbnN0OwogCkBAIC0xODAsNiArMTgzLDcgQEAg
c3RhdGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykgPT0gc2l6ZW9mKFN0cmluZyksICJBdG9t
U3RyaW5nIGFuZCBTdHJpbmcgbXVzdAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9t
U3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmlt
cGwoKTsgfQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBMQ2hhciop
OwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBjaGFy
KiBiKSB7IHJldHVybiBXVEY6OmVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oYikpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcm
IGEsIEFTQ0lJTGl0ZXJhbCBiKSB7IHJldHVybiBXVEY6OmVxdWFsKGEuaW1wbCgpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkpKTsgfQogaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8VUNoYXI+JiBiKSB7
IHJldHVybiBhLmltcGwoKSAmJiBlcXVhbChhLmltcGwoKSwgYi5kYXRhKCksIGIuc2l6ZSgpKTsg
fSAgICAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJl
dHVybiBiID09IGE7IH0KQEAgLTE5Miw2ICsxOTYsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsg
fQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMQ2hh
ciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShiID09IGEpOyB9CitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0ZXJhbCBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJl
dHVybiAhKGIgPT0gYSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VUNoYXI+JiBhLCBjb25z
dCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKaW5kZXggOGNkYmNhNzdhZjM4MzA3YjJiNGMwYTRkMjVhMWYwZTkxMWFiYjFkZS4uNjI0OTJh
OTA2MDU0YjVkMmNmOGU1OTIxYmI5YzQ4ZWY3M2YzNGE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CkBAIC0yMjYsOSArMjI2LDkgQEAgSW5pdERhdGFSZWdpc3RyeSYgSW5pdERhdGFSZWdpc3RyeTo6
c2hhcmVkKCkKIAogSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgpCiB7Ci0gICAg
cmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyIsIHsgc2FuaXRpemVLZXlpZHMsIGV4dHJhY3RL
ZXlJRHNLZXlpZHMgfSk7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImNlbmMiLCB7IHNhbml0
aXplQ2VuYywgZXh0cmFjdEtleUlEc0NlbmMgfSk7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUo
IndlYm0iLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dlYk0gfSk7CisgICAgcmVnaXN0
ZXJJbml0RGF0YVR5cGUoImtleWlkcyJfcywgeyBzYW5pdGl6ZUtleWlkcywgZXh0cmFjdEtleUlE
c0tleWlkcyB9KTsKKyAgICByZWdpc3RlckluaXREYXRhVHlwZSgiY2VuYyJfcywgeyBzYW5pdGl6
ZUNlbmMsIGV4dHJhY3RLZXlJRHNDZW5jIH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJ3
ZWJtIl9zLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dlYk0gfSk7CiB9CiAKIEluaXRE
YXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKaW5kZXggYTZkMzEwMmM4ODJhNjA5OGY0NzkyYjdiY2QwNmJhMjZkNDI4N2Q4YS4uMDA1
MGRlMTZjMGNiZDdmMDY1NzY5YmM1ODI2NGI2MTE2OGVkY2Q5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xNzg2LDcgKzE3ODYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdAogICAgIGlm
ICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBkb3duY2Fz
dDxFbGVtZW50Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1ZSkgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuc2V0QXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiB9CiAg
ICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBdHRyaWJ1dGVWYWx1
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBjYjJhZjFmNjZiZjQxZTU2ZDAwMmZl
ZjAwMGZlMTEwZDMyMDQzM2QxLi5jZGE0MDFlYjBmNWM0YzBmNzBmZWI2MTA4OTNjZjE0ZGYwNWYy
YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNXZWJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgpAQCAtMTQ3NCw3ICsxNDc1LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpjb21taXRTdHlsZXMoKQogCiAgICAgYXV0byBj
b21wdXRlZFN0eWxlRXh0cmFjdG9yID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcigmc3R5bGVkRWxl
bWVudCk7CiAgICAgYXV0byBpbmxpbmVTdHlsZSA9IHN0eWxlZEVsZW1lbnQuZG9jdW1lbnQoKS5j
cmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgaW5saW5lU3R5bGUtPnNldENzc1RleHQo
c3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpOworICAgIGlubGluZVN0eWxlLT5z
ZXRDc3NUZXh0KHN0eWxlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRy
KSk7CiAKICAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0gc3R5bGVkRWxlbWVudC5lbnN1cmVLZXlm
cmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKTsKICAgICAvLyBEdXJpbmcgaXRlcmF0aW9u
IHJlc29sdmUoKSBjb3VsZCBjbGVhciB0aGUgdW5kZXJseWluZyBwcm9wZXJ0aWVzIHNvIHdlIHVz
ZSBhIGNvcHkKQEAgLTE1MDcsNyArMTUwOCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1h
dGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlubGluZVN0eWxlLT5zZXRQcm9wZXJ0
eUludGVybmFsKHByb3BlcnR5LCBjc3NWYWx1ZS0+Y3NzVGV4dCgpLCBmYWxzZSk7CiAgICAgfQog
Ci0gICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgaW5saW5lU3R5bGUtPmNz
c1RleHQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIsIGlubGluZVN0eWxlLT5jc3NUZXh0KCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAppbmRleCA3YzFlZjdjNjNjNGMzNTc3ZDE5ZWVl
YTM5ZmYyYWEwMzg2ZjhiZTllLi4xZmU4NjAzOTQ4OTU2MDhjNjg4YTQzMWNiMTBjYTEzMTNhYzc5
ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRJbmxpbmVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5oCkBAIC0zOSw3ICszOSw3IEBA
IGlubGluZSBQQUw6OlRleHRFbmNvZGluZyBEb2N1bWVudDo6dGV4dEVuY29kaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gUEFMOjpUZXh0RW5jb2RpbmcoKTsKIH0KIAotaW5saW5lIEF0b21TdHJpbmcg
RG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gdGV4dEVuY29kaW5nKCkuZG9tTmFt
ZSgpOyB9CitpbmxpbmUgQXRvbVN0cmluZyBEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHRleHRFbmNvZGluZygpLmRvbU5hbWUoKSk7IH0K
IAogaW5saW5lIFN0cmluZyBEb2N1bWVudDo6Y2hhcnNldCgpIGNvbnN0IHsgcmV0dXJuIERvY3Vt
ZW50OjplbmNvZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlMDBjMWY5YTg5
NTRlZTBiOGNiYzFkODJkMzBiNjAxZGZlMTM5YmVjLi5lZmY4MGI1NWYxNzUzNDNkMjkxMWJiN2Yx
MWQ0NTBlYjNlOTMwZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMjI0LDcgKzMyMjQs
NyBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5l
d0ZvY3VzZWRFbGVtZW50KQogdm9pZCBFbGVtZW50OjpkaXNwYXRjaFdlYktpdEltYWdlUmVhZHlF
dmVudEZvclRlc3RpbmcoKQogewogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkud2Via2l0
SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5Il9zLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwogfQogCiBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91
c2VGb3JjZVdpbGxCZWdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRv
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXgg
NDEzZTM0NjcyZWI2NzU2ZDg5YTBmZTRhZmQ2N2Y5ZWE2YzY4YmM1Yy4uMzZjODk3N2IxNmI0NWYz
YTg3ZWVkOTNjOGFlNGI0NmQ1NTY5NmI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUHNldWRv
RWxlbWVudCk7CiAKIGNvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVkb0VsZW1lbnRUYWdOYW1lKCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRv
bSgpLCAiPHBzZXVkbz4iLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVkbz4iX3MsIG51bGxBdG9tKCkp
OwogICAgIHJldHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRl
eCA3ZDlkNTliZTFjMTUyZjA5ODVmNWY1MThiYjlmY2NlNTZmODdiYzlhLi44MGZmZDFlYzNmODIw
ZjE2NjcyYWIxOGI2NDI1MDQzYjliZjRiZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5j
cHAKQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5F
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4dE5vZGUpCiAgICAgYXV0byBz
cGFuRWxlbWVudCA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgIHNw
YW5FbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwg
QXBwbGVUYWJTcGFuQ2xhc3MpOwotICAgIHNwYW5FbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVB
dHRyLCAid2hpdGUtc3BhY2U6cHJlIik7CisgICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShz
dHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTpwcmUiX3MpOwogCiAgICAgc3BhbkVsZW1lbnQtPmFwcGVu
ZENoaWxkKHRhYlRleHROb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGI4
MDMzMWIyOGYwN2NmNTQ2ZWUxMWM1YmEwZmMxYzNhOWRmYzk4OWUuLjk3NDc4OGEzYjNhYTgxM2Vm
MDFlMmQyMWJiMjc5MjJjMjBmYjdkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTExNzgsNyArMTE3OCw3IEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhDb21wb3NpdGVF
ZGl0Q29tbWFuZCYgY29tbWFuZCkKIAogYm9vbCBFZGl0b3I6OndpbGxVbmFwcGx5RWRpdGluZyhj
b25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RF
ZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgp
LCAiaGlzdG9yeVVuZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhj
b21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5k
aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iX3MpOwogfQogCiB2b2lkIEVk
aXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlv
bikKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKEVk
aXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uc3RhcnRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hh
bmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRl
ZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29t
cG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGlu
Z1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlVbmRvIik7CisgICAgZGlzcGF0Y2hJbnB1
dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9z
aXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iX3MpOwogCiAg
ICAgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOwogCkBAIC0xMjAzLDcgKzEyMDMsNyBA
QCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBj
b21wb3NpdGlvbikKIAogYm9vbCBFZGl0b3I6OndpbGxSZWFwcGx5RWRpdGluZyhjb25zdCBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikgY29uc3QKIHsKLSAgICByZXR1cm4gZGlz
cGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9y
eVJlZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlv
bi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVk
aXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVh
cHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKQEAgLTEy
MTQsNyArMTIxNCw3IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5k
Q29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxl
Y3Rpb24oY29tcG9zaXRpb24uZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2Vs
ZWN0aW9uT3B0aW9ucygpKTsKLSAgICBkaXNwYXRjaElucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyIpOworICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29t
cG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGlu
Z1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlSZWRvIl9zKTsKICAgICAKICAgICB1cGRh
dGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTE1NTAsOCArMTU1MCw4IEBAIHZvaWQg
RWRpdG9yOjpwYXN0ZUZvbnQoRnJvbU1lbnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRp
bmcpCiB2b2lkIEVkaXRvcjo6cXVvdGVGcmFnbWVudEZvclBhc3RpbmcoRG9jdW1lbnRGcmFnbWVu
dCYgZnJhZ21lbnQpCiB7CiAgICAgYXV0byBibG9ja1F1b3RlID0gSFRNTFF1b3RlRWxlbWVudDo6
Y3JlYXRlKGJsb2NrcXVvdGVUYWcsIGRvY3VtZW50KCkpOwotICAgIGJsb2NrUXVvdGUtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIsIEF0b21TdHJpbmcoImNpdGUi
KSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihj
bGFzc0F0dHIsIEF0b21TdHJpbmcoQXBwbGVQYXN0ZUFzUXVvdGF0aW9uKSk7CisgICAgYmxvY2tR
dW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgImNpdGUi
X3MpOworICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
Y2xhc3NBdHRyLCBBcHBsZVBhc3RlQXNRdW90YXRpb24pOwogCiAgICAgYXV0byBjaGlsZE5vZGUg
PSBmcmFnbWVudC5maXJzdENoaWxkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSFRNTEludGVyY2hhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRl
cmNoYW5nZS5oCmluZGV4IGQ0YzUwNWM4YTY3MmIyZTA4Y2U4NTgzMGRhNTllMDlmMDE0MTYxMWIu
LmQxNDhmNzc3ZDJlNTJkYWUzOTQ1NjcxNGVkZGFmNjNmMzliYzI4MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaApAQCAtMzMsMTEgKzMzLDEyIEBAIGNsYXNzIFRl
eHQ7CiAKICNkZWZpbmUgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUgICAiQXBwbGUtaW50ZXJjaGFu
Z2UtbmV3bGluZSIKICNkZWZpbmUgQXBwbGVDb252ZXJ0ZWRTcGFjZSAgICAgICAiQXBwbGUtY29u
dmVydGVkLXNwYWNlIgotI2RlZmluZSBBcHBsZVBhc3RlQXNRdW90YXRpb24gICAgICJBcHBsZS1w
YXN0ZS1hcy1xdW90YXRpb24iCi0jZGVmaW5lIEFwcGxlU3R5bGVTcGFuQ2xhc3MgICAgICAgIkFw
cGxlLXN0eWxlLXNwYW4iCi0jZGVmaW5lIEFwcGxlVGFiU3BhbkNsYXNzICAgICAgICAgIkFwcGxl
LXRhYi1zcGFuIgogI2RlZmluZSBXZWJLaXRNU09MaXN0UXVpcmtzU3R5bGUgICJXZWJLaXQtbXNv
LWxpc3QtcXVpcmtzLXN0eWxlIgogCitjb25zdGV4cHIgYXV0byBBcHBsZVBhc3RlQXNRdW90YXRp
b24gPSAiQXBwbGUtcGFzdGUtYXMtcXVvdGF0aW9uIl9zOworY29uc3RleHByIGF1dG8gQXBwbGVT
dHlsZVNwYW5DbGFzcyA9ICJBcHBsZS1zdHlsZS1zcGFuIl9zOworY29uc3RleHByIGF1dG8gQXBw
bGVUYWJTcGFuQ2xhc3MgPSAiQXBwbGUtdGFiLXNwYW4iX3M7CisKIC8vIENvbnRyb2xzIHdoZXRo
ZXIgYSBzcGVjaWFsIEJSIHdoaWNoIGlzIHJlbW92ZWQgdXBvbiBwYXN0ZSBpbiBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZCBuZWVkcyB0byBiZSBpbnNlcnRlZAogLy8gYW5kIG1ha2luZyBzZXF1ZW5j
ZSBvZiBzcGFjZXMgbm90IGNvbGxhcHNpYmxlIGJ5IGluc2VydGluZyBub24tYnJlYWtpbmcgc3Bh
Y2VzLgogLy8gU2VlIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3I4MDg3IGFuZCBodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9yODA5Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5kZW50T3V0ZGVudENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRP
dXRkZW50Q29tbWFuZC5jcHAKaW5kZXggM2M0NjE0M2E3ODFjMzZlYzc5NGVmN2U3MWI1MjgyNTFi
ODEwOWUwNi4uMTdhNDg3MDhlMmJmODllNTJiY2Y3ZjJjZDgxZTY2YWIwN2U4ZjY5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgc3RhdGljIGJvb2wgaXNMaXN0T3JJbmRlbnRCbG9ja3F1b3RlKGNvbnN0IE5v
ZGUqIG5vZGUpCiB9CiAKIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnRPdXRkZW50Q29tbWFu
ZChEb2N1bWVudCYgZG9jdW1lbnQsIEVJbmRlbnRUeXBlIHR5cGVPZkFjdGlvbikKLSAgICA6IEFw
cGx5QmxvY2tFbGVtZW50Q29tbWFuZChkb2N1bWVudCwgYmxvY2txdW90ZVRhZywgIm1hcmdpbjog
MCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7IikKKyAgICA6IEFwcGx5Qmxv
Y2tFbGVtZW50Q29tbWFuZChkb2N1bWVudCwgYmxvY2txdW90ZVRhZywgIm1hcmdpbjogMCAwIDAg
NDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Il9zKQogICAgICwgbV90eXBlT2ZBY3Rp
b24odHlwZU9mQWN0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tCmluZGV4IDRhMzI2ZTY2ODgwOTQwZmI1MzQ4NWY5M2ExMzM5OWQwMmE2
Y2EyNjguLmVmZWM1NzJlZGIyODBlZTFmM2E3MzRlMTdmMWQ2YWEwMjg1OWI0ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTU5NSw3ICs1
OTUsNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgY29udGV4dFJhbmdlLCBPcAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSZWY8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEhyZWYo
Y29ycmVzcG9uZGluZ1VSTCk7Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXREaXIoImx0
ciIpOworICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0RGlyKCJsdHIiX3MpOwogCiAgICAg
ICAgICAgICBpZiAoc2hvdWxkVXNlTGlnaHRMaW5rcykgewogICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCAyZDhmOGIzMzU5MzBkMDdkZDMzMjZiODEwNjVmMmQ0ZmQ4MzVhY2FlLi43ZTU5NTJiN2E5NjI4
NzA3MGU4MDM3OThkNTlkOGZjMmY3YjM5YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4dCwgY29uc3QgUwogCiAgICAgYXV0
byBjcmVhdGVIVE1MQlJFbGVtZW50ID0gWyZkb2N1bWVudF0oKSB7CiAgICAgICAgIGF1dG8gZWxl
bWVudCA9IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBsZUludGVy
Y2hhbmdlTmV3bGluZSk7CisgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oY2xhc3NBdHRyLCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKEFwcGxlSW50ZXJj
aGFuZ2VOZXdsaW5lKSk7CiAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCmluZGV4IDUwNDk1YzE3YjljYTk3OTIw
M2VmOTg0YmYyODE2MzRlNTIwZmFlNGMuLmE4YzAwMzIyOWU0MzE4Yjg3NzVlNzI2NThiMTJhZWEw
NjMzMDAzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcApAQCAt
NTQsNyArNTQsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogUmVmPEhUTUxBdWRpb0VsZW1l
bnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHNyYykKIHsKICAgICBhdXRvIGVsZW1l
bnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3VtZW50LCBmYWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVsb2FkQXR0ciwgImF1dG8iKTsKKyAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRy
LCAiYXV0byJfcyk7CiAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihzcmNBdHRyLCBzcmMpOwogICAgIHJldHVybiBlbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGJmNTQzMmFmMzE2ZTVhNzRhZjJh
ZDI3M2YxMTUyNmU0ZGI0NWIyY2IuLjY4YmMyMzhlYmQ5MWE0MTdiY2JkOGM5NTg2NWM3MzU1OWJm
ZDVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIHN1bW1hcnlTbG90TmFtZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNsb3Qi
KTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHN1bW1hcnlTbG90KCJzdW1tYXJ5U2xvdCJfcyk7CiAgICAgcmV0dXJuIHN1bW1hcnlTbG90Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDFiMzZkNWIzNmYwMDFhZDA3
ZTllNmFhMDI4NjgxNjI3MjI0NjRkMzAuLjZiMWQ4ZDNjMWQxMDNhNWYwMmI4MDMyMDNmZWZkODBi
MDZjZDBkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC02OTYsNyArNjk2
LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6dHJhbnNsYXRlKCkgY29uc3QKIAogdm9pZCBIVE1MRWxl
bWVudDo6c2V0VHJhbnNsYXRlKGJvb2wgZW5hYmxlKQogewotICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24odHJhbnNsYXRlQXR0ciwgZW5hYmxlID8gInllcyIgOiAibm8iKTsK
KyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRyYW5zbGF0ZUF0dHIsIGVu
YWJsZSA/ICJ5ZXMiX3MgOiAibm8iX3MpOwogfQogCiBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJl
cklzRXZlck5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCAyMDliNjgyMzk2Mzk5ZmU4MDY5Yjk0YzgyMTllZTQzODYxZjAxYTcyLi5iYWI1MTExZDI2
ZWE5MDlhN2Y1YzBkNjM3Yjc1Mjg5N2RjZDI1ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTI2NzAsNyArMjY3MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKQogewogICAgIGlmICghbV9w
bGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZl
bnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKSB8fCAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVu
Y3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFkb2N1bWVudCgpLnF1aXJrcygpLmhhc0Jyb2tl
bkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJrKCkpOworICAgIGJvb2wgc2hvdWxkQ29udGlu
dWUgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KSB8
fCAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFk
b2N1bWVudCgpLnF1aXJrcygpLmhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJr
KCkpOwogICAgIG1fcGxheWVyLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3Vs
ZENvbnRpbnVlKTsKIH0KICNlbmRpZgpAQCAtMjY4NSw3ICsyNjg1LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlh
QVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWhhc0V2ZW50TGlzdGVu
ZXJzKCJ3ZWJraXRuZWVka2V5IikKKyAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAg
ICAgICAgLy8gT25seSBmaXJlIGFuIGVycm9yIGlmIEVOQ1JZUFRFRF9NRURJQSBpcyBub3QgZW5h
YmxlZCwgdG8gZ2l2ZSBjbGllbnRzIG9mIHRoZQogICAgICAgICAvLyAiZW5jcnlwdGVkIiBldmVu
dCBhIGNoYW5jZSB0byBoYW5kbGUgaXQgd2l0aG91dCByZXN1bHRpbmcgaW4gYSBzeW50aGV0aWMg
ZXJyb3IuCkBAIC00NzA1LDcgKzQ3MDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxheW91
dFNpemVDaGFuZ2VkKCkKIHsKICAgICBhdXRvIHRhc2sgPSBbdGhpc10gewogICAgICAgICBpZiAo
YXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpKQotICAgICAgICAgICAgcm9vdC0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKCJyZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH07CiAgICAgcXVldWVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFdURk1v
dmUodGFzaykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAppbmRl
eCA4Y2ViODhhM2IxMDdiZGY2NDlhNWYyMmEwMGE4MmU5NDI0Y2UyZWE3Li5iZDQ0ZTJkMDI4YTcw
MDg4NjM2ZmYyNjYwNjM3N2ViZWRkZjk3N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5jcHAKQEAgLTE5MCwxNSArMTkwLDE1IEBAIHN0YXRpYyB2b2lkIHNldFZhbHVl
Q2xhc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9u
IGdhCiB7CiAgICAgc3dpdGNoIChnYXVnZVJlZ2lvbikgewogICAgIGNhc2UgSFRNTE1ldGVyRWxl
bWVudDo6R2F1Z2VSZWdpb25PcHRpbXVtOgotICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmNsYXNzQXR0ciwgIm9wdGltdW0iKTsKKyAgICAgICAgZWxlbWVudC5zZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJvcHRpbXVtIl9zKTsKICAgICAgICAgZWxlbWVu
dC5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlck9wdGltdW1WYWx1ZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25T
dWJvcHRpbWFsOgotICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNz
QXR0ciwgInN1Ym9wdGltdW0iKTsKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVtIl9zKTsKICAgICAgICAgZWxlbWVudC5zZXRQc2V1
ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlclN1Ym9wdGltdW1WYWx1ZSgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25FdmVuTGVz
c0dvb2Q6Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCAiZXZlbi1sZXNzLWdvb2QiKTsKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsICJldmVuLWxlc3MtZ29vZCJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0
UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJFdmVuTGVzc0dvb2RWYWx1ZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CkBAIC0yMzQsMTcgKzIzNCwxNyBAQCB2b2lk
IEhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYg
cm9vdCkKIAogICAgIC8vIFBzZXVkb3MgYXJlIHNldCB0byBhbGxvdyBhdXRob3Igc3R5bGluZy4K
ICAgICBhdXRvIGlubmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAg
ICBpbm5lci0+c2V0SWRBdHRyaWJ1dGUoImlubmVyIik7CisgICAgaW5uZXItPnNldElkQXR0cmli
dXRlKCJpbm5lciJfcyk7CiAgICAgaW5uZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6Ondl
YmtpdE1ldGVySW5uZXJFbGVtZW50KCkpOwogICAgIHJvb3QuYXBwZW5kQ2hpbGQoaW5uZXIpOwog
CiAgICAgYXV0byBiYXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAg
IGJhci0+c2V0SWRBdHRyaWJ1dGUoImJhciIpOworICAgIGJhci0+c2V0SWRBdHRyaWJ1dGUoImJh
ciJfcyk7CiAgICAgYmFyLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlckJh
cigpKTsKICAgICBpbm5lci0+YXBwZW5kQ2hpbGQoYmFyKTsKIAogICAgIG1fdmFsdWUgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1fdmFsdWUtPnNldElkQXR0cmli
dXRlKCJ2YWx1ZSIpOworICAgIG1fdmFsdWUtPnNldElkQXR0cmlidXRlKCJ2YWx1ZSJfcyk7CiAg
ICAgYmFyLT5hcHBlbmRDaGlsZCgqbV92YWx1ZSk7CiAKICAgICBkaWRFbGVtZW50U3RhdGVDaGFu
Z2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDgwNDFlYTQyYzNi
YTc5NTU3NWYzYTAyYjVlMjYzOWI1N2VhNDQwNDUuLjM5NmY5ZGM5Njg4MTAzNjE5NjRhZDI4ZWUy
OGY5YjUwYjVkYzE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAt
MjMwLDE2ICsyMzAsMTYgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSgpCiAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGhlYWQpOwogCiAgICAgYXV0byBi
b2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoKnRoaXMpOwotICAgIGJvZHktPnNldEF0dHJp
YnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDBweCIpOworICAgIGJvZHktPnNldEF0dHJpYnV0ZShz
dHlsZUF0dHIsICJtYXJnaW46IDBweCJfcyk7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6Omlz
UERGTUlNRVR5cGUoZG9jdW1lbnQoKS5sb2FkZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKSkKICAg
ICAgICAgYm9keS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwgIndoaXRlIl9zKTsKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSk7CiAg
ICAgCiAgICAgYXV0byBpbWFnZUVsZW1lbnQgPSBJbWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRl
KCp0aGlzKTsKICAgICBpZiAobV9zaG91bGRTaHJpbmtJbWFnZSkKLSAgICAgICAgaW1hZ2VFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBk
aXNwbGF5OmJsb2NrOyBtYXJnaW46YXV0bzsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRv
cCkgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20p
IGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7Iik7CisgICAgICAgIGltYWdlRWxlbWVudC0+c2V0
QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgZGlzcGxheTpi
bG9jazsgbWFyZ2luOmF1dG87IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihz
YWZlLWFyZWEtaW5zZXQtcmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2Fm
ZS1hcmVhLWluc2V0LWxlZnQpOyJfcyk7CiAgICAgZWxzZQotICAgICAgICBpbWFnZUVsZW1lbnQt
PnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IHBhZGRp
bmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpIGVu
dihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpOyIpOwor
ICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVz
ZXItc2VsZWN0Om5vbmU7IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZl
LWFyZWEtaW5zZXQtcmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1h
cmVhLWluc2V0LWxlZnQpOyJfcyk7CiAgICAgaW1hZ2VFbGVtZW50LT5zZXRMb2FkTWFudWFsbHko
dHJ1ZSk7CiAgICAgaW1hZ2VFbGVtZW50LT5zZXRTcmModXJsKCkuc3RyaW5nKCkpOwogICAgIGlt
YWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+c2V0UmVzcG9uc2UobG9hZGVyKCktPnJlc3BvbnNl
KCkpOwpAQCAtMjUzLDggKzI1Myw4IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUoKQogI2Vsc2UKICAgICAgICAgYXV0byBsaXN0ZW5lciA9IEltYWdlRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgaWYgKFJlZlB0cjxET01XaW5kb3c+IHdp
bmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQotICAgICAgICAgICAgd2luZG93LT5hZGRFdmVudExp
c3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgaW1h
Z2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFdURk1vdmUobGlzdGVuZXIpLCBm
YWxzZSk7CisgICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LnJlc2l6ZUV2ZW50LCBsaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAgICAgICAgaW1hZ2VF
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBXVEZNb3Zl
KGxpc3RlbmVyKSwgZmFsc2UpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9j
dW1lbnQuY3BwCmluZGV4IDRlMTk0NjE2ZWNlMjUzYzk0MTI0Y2ZiZTcyNDU4YWJiYmQ4NTNiMGQu
LjU5ZGZiMDIxMjg2NTAwYzU1ZTdiMmJkNTk1Y2Q4NDM3Y2QxNjhlNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUERGRG9jdW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBQREZEb2N1bWVudDo6
Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIC8vIERlc2NyaXB0aW9uIG9mIHBhcmFtZXRl
cnM6CiAgICAgLy8gLSBgI3BhZ2Vtb2RlPW5vbmVgIHByZXZlbnRzIHRoZSBzaWRlYmFyIGZyb20g
c2hvd2luZyBvbiBsb2FkLgogICAgIC8vIC0gRW1wdHkgYD9maWxlPWAgcGFyYW1ldGVyIHByZXZl
bnRzIGRlZmF1bHQgcGRmIGZyb20gbG9hZGluZy4KLSAgICBhdXRvIHZpZXdlclVSTCA9ICJ3ZWJr
aXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9I3BhZ2Vtb2RlPW5v
bmUiOworICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93
ZWIvdmlld2VyLmh0bWw/ZmlsZT0jcGFnZW1vZGU9bm9uZSJfczsKICAgICBhdXRvIHJvb3RFbGVt
ZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKnRoaXMpOwogICAgIGFwcGVuZENoaWxkKHJv
b3RFbGVtZW50KTsKICAgICByb290RWxlbWVudC0+aW5zZXJ0ZWRCeVBhcnNlcigpOwpAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkK
ICAgICBtX2lmcmFtZS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRvbVN0cmluZygid2lkdGg6
IDEwMCU7IGhlaWdodDogMTAwJTsgYm9yZGVyOiAwOyBkaXNwbGF5OiBibG9jazsiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgbV9saXN0ZW5lciA9IFBERkRvY3Vt
ZW50RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBtX2lmcmFtZS0+YWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsICptX2xpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9pZnJhbWUtPmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgKm1fbGlzdGVuZXIsIGZhbHNlKTsK
IAogICAgIGJvZHktPmFwcGVuZENoaWxkKCptX2lmcmFtZSk7CiB9CkBAIC0yMjMsOSArMjIzLDkg
QEAgdm9pZCBQREZEb2N1bWVudDo6aW5qZWN0U3R5bGVBbmRDb250ZW50U2NyaXB0KCkKIAogICAg
IEFTU0VSVChjb250ZW50RG9jdW1lbnQtPmJvZHkoKSk7CiAgICAgYXV0byBzY3JpcHQgPSBIVE1M
U2NyaXB0RWxlbWVudDo6Y3JlYXRlKHNjcmlwdFRhZywgKmNvbnRlbnREb2N1bWVudCwgZmFsc2Up
OwotICAgIHNjcmlwdC0+YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIG1fbGlzdGVuZXIucmVsZWFz
ZU5vbk51bGwoKSwgZmFsc2UpOworICAgIHNjcmlwdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkubG9hZEV2ZW50LCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKIAot
ICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsICJ3ZWJraXQtcGRmanMtdmlld2VyOi8v
cGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIik7CisgICAgc2NyaXB0LT5zZXRBdHRyaWJ1
dGUoc3JjQXR0ciwgIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy9leHRyYXMvY29udGVudC1z
Y3JpcHQuanMiX3MpOwogICAgIGNvbnRlbnREb2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChz
Y3JpcHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGUwMWRmMzkyOTM2ZTgyMDlj
ZWJkNGQ2NDg0YmZmZTI4ZTA0MmI0ZWEuLjAwM2E5MDFlMDQzZTM3YzhlM2MwNjY4YzYzMzcyNDBm
NmNkZTYxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKTsKIHN0
YXRpYyBjb25zdGV4cHIgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFs
aXR5ID0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpMb3c7CiAKIGNvbnN0IGludCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udFNpemUgPSAxMDsKLWNvbnN0IGNoYXIqIGNv
bnN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkRlZmF1bHRGb250RmFtaWx5ID0gInNh
bnMtc2VyaWYiOworY29uc3QgQVNDSUlMaXRlcmFsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OkRlZmF1bHRGb250RmFtaWx5ID0gInNhbnMtc2VyaWYiX3M7CiBzdGF0aWMgY29uc3RleHBy
IEFTQ0lJTGl0ZXJhbCBEZWZhdWx0Rm9udCA9ICIxMHB4IHNhbnMtc2VyaWYiX3M7CiAKIHN0YXRp
YyBDYW52YXNMaW5lQ2FwIHRvQ2FudmFzTGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmgKaW5kZXggNGE3YTQzYTdjZmZlODI2YWY4NGI3MDEzMjAyZjJiOTNlNDg2ZGI0YS4u
NWJmNWI1MzM4YWNiMjA3Y2IzYjE0OTMwNmVlODQxMDc4MDY4ZmVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaApAQCAtMjk2LDcgKzI5Niw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBjb25zdCBpbnQgRGVmYXVsdEZvbnRTaXplOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBEZWZhdWx0Rm9udEZhbWlseTsKKyAgICBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIERlZmF1
bHRGb250RmFtaWx5OwogCiAgICAgY29uc3QgU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogICAgIHZvaWQgcmVhbGl6ZVNhdmVzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBhMWYxNjdj
YjA4M2M5OTg0MzYxODM0MTE4MDI5ZjI4NWU0MWMwMDA1Li5lZGNjNmFmZDZjNmYwMzhiODRjNGU3
MWY1NzhhNjg4ODQyN2M3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBzdGF0aWMgTWVtb3J5Q29tcGFj
dExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+IGNy
ZWF0ZQogICAgIGFkZE5hbWVzV2l0aFByZWZpeChtYXAsIHhtbEF0b20oKSwgWE1MTmFtZXM6Omdl
dFhNTEF0dHJzKCksIFhNTE5hbWVzOjpYTUxBdHRyc0NvdW50KTsKIAogICAgIG1hcC5hZGQoeG1s
bnNBdG9tKCksIFhNTE5TTmFtZXM6OnhtbG5zQXR0cik7Ci0gICAgbWFwLmFkZCgieG1sbnM6eGxp
bmsiLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlua05hbWUsIFhNTE5TTmFtZXM6Onht
bG5zTmFtZXNwYWNlVVJJKSk7CisgICAgbWFwLmFkZCgieG1sbnM6eGxpbmsiX3MsIFF1YWxpZmll
ZE5hbWUoeG1sbnNBdG9tKCksIHhsaW5rTmFtZSwgWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VV
UkkpKTsKIAogICAgIHJldHVybiBtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA0NzA2ZjI2ZTg0NDA5ZWU4MTNjZDEz
YmM1ZjRlMGFjY2Y2NzRhODY3Li43OGUxMWZjMmMxMDhkNzdmZjhjMmE5MmFhOTI1ZWZjNTJlNDM5
MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBh
cnNlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2Vy
dEZha2VQcmVFbGVtZW50KCkKICAgICAvLyBXZSBjcmVhdGUgYSBmYWtlIHRva2VuIGFuZCBnaXZl
IGl0IHRvIHRoZSB0cmVlIGJ1aWxkZXIgcmF0aGVyIHRoYW4KICAgICAvLyBzZW5kaW5nIGZha2Ug
Ynl0ZXMgdGhyb3VnaCB0aGUgZnJvbnQtZW5kIG9mIHRoZSBwYXJzZXIgdG8gYXZvaWQKICAgICAv
LyBkaXN0cnViaW5nIHRoZSBsaW5lL2NvbHVtbiBudW1iZXIgY2FsY3VsYXRpb25zLgotICAgIEF0
dHJpYnV0ZSBhdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3JkOyB3aGl0
ZS1zcGFjZTogcHJlLXdyYXA7Iik7CisgICAgQXR0cmlidXRlIGF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiX3MpOwogICAg
IEF0b21IVE1MVG9rZW4gZmFrZVByZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBwcmVUYWctPmxvY2Fs
TmFtZSgpLCB7IFdURk1vdmUoYXR0cmlidXRlKSB9KTsKICAgICB0cmVlQnVpbGRlcigpLmNvbnN0
cnVjdFRyZWUoV1RGTW92ZShmYWtlUHJlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcAppbmRleCA4NDljZDU5NGE3YjlhMzk4YjBjMzFmYTkwZmM2N2Q3ZjZkNjc2YTJm
Li4xMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4ZGQ1NWVhNmMzNjlkNzBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC04OCwxMyArODgsMTMgQEAgc3RhdGljIGNv
bnN0IEF0b21TdHJpbmcmIGZvcmNlZEtleXdvcmQoKQogCiBUZXh0VHJhY2smIFRleHRUcmFjazo6
Y2FwdGlvbk1lbnVPZmZJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0
VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0
eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBv
ZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSJfcywgZW1wdHlB
dG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOwogICAgIHJldHVybiBv
ZmY7CiB9CiAKIFRleHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0o
KQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIGF1dG9tYXRpYyA9IFRleHRUcmFjazo6Y3JlYXRl
KG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgp
LCBlbXB0eUF0b20oKSkubGVha1JlZigpOworICAgIHN0YXRpYyBUZXh0VHJhY2smIGF1dG9tYXRp
YyA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIl9zLCBl
bXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0
dXJuIGF1dG9tYXRpYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCmluZGV4IGJjZjhlMTcyYTY3MzIwZjY2ODgxMjA3NDc5ZGY3YTgwYWJhYzE3ZWUuLjc3
YzZhMTYwYmE5NWJkNWEyODZjNWRhNzQ5Mzk4MzVlNTFiOWFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrQ3VlQm94KTsKIAogc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGN1ZUF0dHJpYnV0TmFtZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFF1YWxpZmllZE5hbWU+IGN1ZVRhZyhudWxsQXRvbSgpLCAiY3VlIiwgbnVsbEF0b20oKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGN1ZVRhZyhudWxsQXRv
bSgpLCAiY3VlIl9zLCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gY3VlVGFnOwogfQogCiBzdGF0
aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGN1ZUJhY2tncm91bmRUYWco
bnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlQmFja2dyb3VuZFRhZyhudWxsQXRvbSgpLCAi
Y3VlYmFja2dyb3VuZCJfcywgbnVsbEF0b20oKSk7CiAgICAgcmV0dXJuIGN1ZUJhY2tncm91bmRU
YWc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmlu
ZGV4IDkzNmQyN2IzYjI3MzdjMDA3NjE5Mzk1MjI3MWU2ODdjYjVjNDY2NTUuLjE4YjA2ZjI4ZGFj
NTA0YTNjZWIyNWFhOTc4YWYyODk2MDI1ZGMxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAtNDEsMTQgKzQxLDE0IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJWVFRFbGVtZW50KTsKIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5vZGVUeXBlVG9UYWdOYW1lKFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlKQogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjVGFnKG51bGxBdG9tKCksICJjIiwg
bnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZU
YWcobnVsbEF0b20oKSwgInYiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gbGFuZ1RhZyhudWxsQXRvbSgpLCAibGFuZyIsIG51bGxBdG9tKCkp
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFnKG51bGxBdG9t
KCksICJiIiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmll
ZE5hbWU+IHVUYWcobnVsbEF0b20oKSwgInUiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRhZyhudWxsQXRvbSgpLCAiaSIsIG51bGxBdG9t
KCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51
bGxBdG9tKCksICJydWJ5IiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFF1YWxpZmllZE5hbWU+IHJ0VGFnKG51bGxBdG9tKCksICJydCIsIG51bGxBdG9tKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjVGFnKG51bGxBdG9tKCksICJj
Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFt
ZT4gdlRhZyhudWxsQXRvbSgpLCAidiJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdUYWcobnVsbEF0b20oKSwgImxhbmciX3MsIG51
bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFn
KG51bGxBdG9tKCksICJiIl9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gdVRhZyhudWxsQXRvbSgpLCAidSJfcywgbnVsbEF0b20oKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGlUYWcobnVsbEF0b20oKSwg
ImkiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWRO
YW1lPiBydWJ5VGFnKG51bGxBdG9tKCksICJydWJ5Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnRUYWcobnVsbEF0b20oKSwgInJ0Il9z
LCBudWxsQXRvbSgpKTsKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFRO
b2RlVHlwZUNsYXNzOgogICAgICAgICByZXR1cm4gY1RhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggZGVjYmUxN2FiYmYxZDlhNDNlNDgwZGM3OGNkNzIz
ODVlYjYwOTc2ZC4uMWM1Yzg1ZTMyYjI4OTQ1ZTZlMmYwMTE4YzcxYWNjMmY0Y2Q1ZTIxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTYzLDEzICs2Mywx
MyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VBdHRy
aWJ1dGVOYW1lKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZp
ZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgInZvaWNlIiwgbnVsbEF0b20oKSk7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0
b20oKSwgInZvaWNlIl9zLCBudWxsQXRvbSgpKTsKICAgICAgICAgcmV0dXJuIHZvaWNlQXR0cjsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxhbmdBdHRyaWJ1
dGVOYW1lKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWRO
YW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgImxhbmciLCBudWxsQXRvbSgpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSgp
LCAibGFuZyJfcywgbnVsbEF0b20oKSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDZhYTYxMjZkZDdjYWM2ODAxMTdi
Mjc3YjQ0YTZjMTg2ZWMzNzA1MzguLmZhMTg0NGE2ZmYxZmU1YWE1MjhhYjI1NWNjODFjYzQyNmVl
YjliNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkNvbXB1dGVkUHJvcGVydGllcz4KICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2
YW50VGV4dCA9ICJ0ZXh0Il9zOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgdmFsdWVz
ID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZhbnRBdHRyVmFsdWUsIHRydWUpOwotICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCIpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHZhbHVlcy5jb250YWlucygiYWxsIl9zKSkgewogICAgICAgICAgICAgICAgICAgICBsaXZl
UmVnaW9uUmVsZXZhbnQuYXBwZW5kKGFyaWFSZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAg
ICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2YW50UmVtb3ZhbHMp
OwogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQuYXBwZW5kKGFyaWFSZWxl
dmFudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlMYWJlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheUxhYmVsLmNwcAppbmRleCA3M2FmODM2ZWY3NDZjNmJiODAzMzI4NzQ4YzhmZWNlYmRhNjcy
NWZkLi5mNjExNDcxYTg1ZTNmZTY5M2RkNmYzYWNhNjNlMjAyNDgyNjU3ODU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcApAQCAt
NTksNyArNTksNyBAQCBJbnNwZWN0b3JPdmVybGF5TGFiZWw6Okluc3BlY3Rvck92ZXJsYXlMYWJl
bChjb25zdCBTdHJpbmcmIHRleHQsIEZsb2F0UG9pbnQgbG9jYQogc3RhdGljIEZvbnRDYXNjYWRl
IHN5c3RlbUZvbnQoKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbGllcyh7ICJzeXN0ZW0tdWkiIH0pOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbGllcyh7ICJzeXN0ZW0tdWkiX3MgfSk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAxN2EyOTdiNWFiMzQ0
YzZiMjE4MGRkMGZhOWE5NDQyZmRhMzNlMzk3Li4yNmUxOGVjMDRhYTZmN2RhZjNjN2I0MzNhOTZi
MjYxYmI5MDI0OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0xNTkzLDcgKzE1OTMsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0
b3JQYQogICAgICwgbV9pc1N0eWxlVGV4dFZhbGlkKGZhbHNlKQogewogICAgIG1faW5zcGVjdG9y
U3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkLCAwKSwgaW5s
aW5lU3R5bGUoKSwgdGhpcyk7Ci0gICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJp
YnV0ZSgic3R5bGUiKS5zdHJpbmcoKTsKKyAgICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+Z2V0
QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKS5zdHJpbmcoKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUo
KQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjppbmxpbmVTdHlsZSgpIGNvbnN0CiAKIGNvbnN0IFN0cmlu
ZyYgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjplbGVtZW50U3R5bGVUZXh0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3Ry
aW5nKCk7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5
bGVBdHRyKS5zdHJpbmcoKTsKIH0KIAogUmVmPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnJ1bGVTb3VyY2VEYXRhKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggZDM4OWVjMDdhZTg3YmM5NWI1NjgwOWU4ZGI4MjU5MDg4ZTA1MmEwNi4uMDZjNDcyM2Y1
NzAwNzA1MWVjNjE5MDlhYzcxOWRmM2I4Y2IyZGNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIyMjksNyAr
MjIyOSw3IEBAIFJlZjxQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQWNjCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNwYWNlU3BsaXRTdHJpbmcmIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJpYVJlbGV2
YW50QXR0clZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgLy8gQGFyaWEtcmVsZXZh
bnQ9ImFsbCIgaXMgZXhwb3NlZCBhcyBbImFkZGl0aW9ucyIsInJlbW92YWxzIiwidGV4dCJdLCBp
biBvcmRlci4KICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvcmRlciBpcyBjb250cm9sbGVk
IGluIFdlYkNvcmUgYW5kIGV4cGVjdGVkIGluIFdlYkluc3BlY3RvclVJLgotICAgICAgICAgICAg
ICAgICAgICBpZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiX3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsaXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50QWRkaXRpb25zKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC0+YWRkSXRlbShhcmlhUmVs
ZXZhbnRSZW1vdmFscyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZh
bnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5jcHAKaW5kZXggOWYxN2MxMjhhMzE4MTZhNmE5Mzk4YjVkMmIxNDU2ODU0YzVkOWE1MS4uMzZm
ZWJiZWRjZTBkZTE4OTFhZTRhOTJkMzk0Mjk3OTIwM2VhMWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5r
UHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3Qg
TGluCiAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHBhcmFtcy5yZWZlcnJlclBvbGljeTsK
ICAgICBhdXRvIGxpbmtSZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVl
c3QodXJsLCBXVEZNb3ZlKG9wdGlvbnMpLCBkb2N1bWVudCwgcGFyYW1zLmNyb3NzT3JpZ2luKTsK
ICAgICBsaW5rUmVxdWVzdC5zZXRQcmlvcml0eShEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHk6
OmZvclJlc291cmNlVHlwZSh0eXBlLnZhbHVlKCkpKTsKLSAgICBsaW5rUmVxdWVzdC5zZXRJbml0
aWF0b3IoImxpbmsiKTsKKyAgICBsaW5rUmVxdWVzdC5zZXRJbml0aWF0b3IoImxpbmsiX3MpOwog
ICAgIGxpbmtSZXF1ZXN0LnNldElnbm9yZUZvclJlcXVlc3RDb3VudCh0cnVlKTsKICAgICBsaW5r
UmVxdWVzdC5zZXRJc0xpbmtQcmVsb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCA2NWIyNmNjOWJkNTc1ZWIx
YTAxNWY0NWNjNWRlNjVjY2Q1NTM1MzdiLi41MTAyMmM2NzVkMjRmMGJiOGE1M2IxOTVmZTg4YjFh
ZjAzZDEzNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBNYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50Ojppc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgICAgIHx8
IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwVGFnKQogICAgICAgICB8fCBodG1s
RWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cHJlVGFnKQogICAgICAgICB8fCBodG1sRWxl
bWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VjdGlvblRhZykKLSAgICAgICAgfHwgKGh0bWxF
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdHlsZVRhZykgJiYgaHRtbEVsZW1lbnQuaGFz
QXR0cmlidXRlKCJzY29wZWQiKSkKKyAgICAgICAgfHwgKGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpzdHlsZVRhZykgJiYgaHRtbEVsZW1lbnQuaGFzQXR0cmlidXRlKEhUTUxOYW1l
czo6c2NvcGVkQXR0cikpCiAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp0YWJsZVRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnVsVGFnKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
aW5kZXggMjU5YzcyMjUzNjcxYjVhMGFlMDg1YmMwNzEyYTRiMTVlYjI3OTVkNi4uZTk0YmRmZjhh
OTMzODU0ZDdkOWZkYjBiZmM2YTE4ODFhZDU5MTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5LCBH
cmFwaGljcwogICAgIEZsb2F0UmVjdCBsZWdlbmRSZWN0ID0geyBib3VuZHMubWF4WCgpIC0gMzAu
MGYsIDEwLCAyMCwgMjAgfTsKICAgICAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2Ei
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZv
bnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICB9CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAg
ICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICBmb250RGVz
Y3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTcGVjaWZpZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKDEyKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1
ZSg1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCBkZGJhODM1ZWY4OTIwM2FhZWFkYTFk
MzAzYjIzNjk0NThkNDcyODEyLi5iNTk4YTVjODczZDJkMzVhM2I1ODU0ZjFhYTkxYTg0OGE1NDhh
YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBRdWly
a3M6OnNob3VsZFRvb2x0aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2soY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKIAogICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCksICJjb3ZpZC5jZGMuZ292Iikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpICYm
IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ0b29sdGlwIik7CisgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygidG9vbHRp
cCJfcyk7CiB9CiAKIC8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgdGhlIHNpdGUgaXMgZml4ZWQsIDxy
ZGFyOi8vcHJvYmxlbS83NTc5MjkxMz4KQEAgLTQ0Niw3ICs0NDYsNyBAQCBib29sIFF1aXJrczo6
c2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyhFdmVudFRhcmdldCogdGFyZ2V0KSBj
b25zdAogICAgIGNhc2UgU2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50czo6RGVwZW5k
aW5nT25UYXJnZXRGb3JfbXliaW5kZXJfb3JnOgogICAgICAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0
KSkgewogICAgICAgICAgICAgZm9yIChhdXRvKiBub2RlID0gZG93bmNhc3Q8Tm9kZT4odGFyZ2V0
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGlm
IChpczxFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuY2xhc3NMaXN0
KCkuY29udGFpbnMoImxtLURvY2tQYW5lbC10YWJCYXIiKSkKKyAgICAgICAgICAgICAgICBpZiAo
aXM8RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmNsYXNzTGlzdCgp
LmNvbnRhaW5zKCJsbS1Eb2NrUGFuZWwtdGFiQmFyIl9zKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ3Niw3ICs0NzYsNyBA
QCBib29sIFF1aXJrczo6c2hvdWxkRGlzcGF0Y2hlZFNpbXVsYXRlZE1vdXNlRXZlbnRzQXNzdW1l
RGVmYXVsdFByZXZlbnRlZChFdmVudFRhcgogICAgIH0KIAogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtX2RvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpLmhvc3QoKSwg
InNvdW5kY2xvdWQuY29tIikgJiYgaXM8RWxlbWVudD4odGFyZ2V0KSkKLSAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEVsZW1lbnQ+KCp0YXJnZXQpLmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJzY2VuZUxh
eWVyIik7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50PigqdGFyZ2V0KS5jbGFzc0xp
c3QoKS5jb250YWlucygic2NlbmVMYXllciJfcyk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBA
IC00ODgsNyArNDg4LDcgQEAgc3RkOjpvcHRpb25hbDxFdmVudDo6SXNDYW5jZWxhYmxlPiBRdWly
a3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0KEV2ZW4KIAogICAgIC8vIE9uIEdv
b2dsZSBNYXBzLCB3ZSB3YW50IHRvIGxpbWl0IHNpbXVsYXRlZCBtb3VzZSBldmVudHMgdG8gZHJh
Z2dpbmcgdGhlIGxpdHRsZSBtYW4gdGhhdCBhbGxvd3MgZW50ZXJpbmcgaW50byBTdHJlZXQgVmll
dy4KICAgICBpZiAoaXNHb29nbGVNYXBzKCkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KHRh
cmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRlKCJjbGFzcyIp
ID09ICJ3aWRnZXQtZXhwYW5kLWJ1dHRvbi1wZWdtYW4taWNvbiIpCisgICAgICAgIGlmIChpczxF
bGVtZW50Pih0YXJnZXQpICYmIGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldCktPmdldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikgPT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21hbi1p
Y29uIikKICAgICAgICAgICAgIHJldHVybiBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXM7CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0ZDo6b3B0aW9uYWw8
RXZlbnQ6OklzQ2FuY2VsYWJsZT4gUXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRh
cmdldChFdmVuCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbGltaXQgc2ltdWxhdGVkIG1vdXNlIGV2
ZW50cyB0byBlbGVtZW50cyB1bmRlciA8ZGl2IGlkPSJwYW5lQ29udGFpbmVyIj4gdG8gYWxsb3cg
Zm9yIGNvbHVtbiByZS1vcmRlcmluZyBhbmQgbXVsdGlwbGUgY2VsbCBzZWxlY3Rpb24uCiAgICAg
ICAgIGlmIChpczxOb2RlPih0YXJnZXQpKSB7CiAgICAgICAgICAgICBhdXRvKiBub2RlID0gZG93
bmNhc3Q8Tm9kZT4odGFyZ2V0KTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBwYW5lQ29udGFpbmVy
ID0gbm9kZS0+dHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoQXRvbVN0cmluZygicGFuZUNvbnRh
aW5lciIpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHBhbmVDb250YWluZXIgPSBub2RlLT50
cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZCgicGFuZUNvbnRhaW5lciJfcykpIHsKICAgICAgICAg
ICAgICAgICBpZiAocGFuZUNvbnRhaW5lci0+Y29udGFpbnMobm9kZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXM7CiAgICAgICAgICAgICB9CkBA
IC01MjMsNyArNTIzLDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1ha2VUb3VjaEV2ZW50Tm9uQ2Fu
Y2VsYWJsZUZvclRhcmdldChFdmVudFRhcmdldCogdGFyZ2V0KSBjb24KICAgICAgICAgaWYgKGlz
PEVsZW1lbnQ+KHRhcmdldCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRlcHRoID0gMzsKICAg
ICAgICAgICAgIGZvciAoYXV0byogZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldCk7
IGVsZW1lbnQgJiYgZGVwdGg7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCksIC0t
ZGVwdGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+bG9jYWxOYW1lKCkgPT0gInBh
cGVyLWl0ZW0iICYmIGVsZW1lbnQtPmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJ5dC1kcm9wZG93bi1t
ZW51IikpCisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmxvY2FsTmFtZSgpID09ICJwYXBl
ci1pdGVtIiAmJiBlbGVtZW50LT5jbGFzc0xpc3QoKS5jb250YWlucygieXQtZHJvcGRvd24tbWVu
dSJfcykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZFByZXZlbnRE
aXNwYXRjaE9mVG91Y2hFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0b3VjaEV2ZW50VHlwZSwKIAog
ICAgIGlmIChpczxFbGVtZW50Pih0YXJnZXQpICYmIHRvdWNoRXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS50b3VjaGVuZEV2ZW50ICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZG9j
dW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCkuaG9zdCgpLCAic2l0ZXMuZ29vZ2xlLmNvbSIpKSB7
CiAgICAgICAgIGF1dG8mIGNsYXNzTGlzdCA9IGRvd25jYXN0PEVsZW1lbnQ+KCp0YXJnZXQpLmNs
YXNzTGlzdCgpOwotICAgICAgICByZXR1cm4gY2xhc3NMaXN0LmNvbnRhaW5zKCJEUHZ3WWMiKSAm
JiBjbGFzc0xpc3QuY29udGFpbnMoInNtOHNDZiIpOworICAgICAgICByZXR1cm4gY2xhc3NMaXN0
LmNvbnRhaW5zKCJEUHZ3WWMiX3MpICYmIGNsYXNzTGlzdC5jb250YWlucygic204c0NmIl9zKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzEsOCArNjMxLDggQEAgYm9vbCBRdWly
a3M6Om5lZWRzSW5wdXRNb2RlTm9uZUltcGxpY2l0bHkoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0CiAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFn
KSkgewogICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZG9jdW1l
bnQtPnVybCgpLmhvc3QoKSwgImNhbGVuZGFyLmdvb2dsZS5jb20iKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGRhdGFJbml0aWFsVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLWluaXRpYWwtdmFsdWUiLCBu
dWxsQXRvbSgpKTsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+
IGRhdGFQcmV2aW91c1ZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1wcmV2aW91cy12YWx1ZSIs
IG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFt
ZT4gZGF0YUluaXRpYWxWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtaW5pdGlhbC12YWx1ZSJf
cywgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWRO
YW1lPiBkYXRhUHJldmlvdXNWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtcHJldmlvdXMtdmFs
dWUiX3MsIG51bGxBdG9tKCkpOwogCiAgICAgICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjphdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpCiAgICAgICAgICAgICAmJiBlbGVtZW50Lmhh
c0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGF0YUluaXRpYWxWYWx1ZUF0dHIpCkBA
IC02NDcsNyArNjQ3LDcgQEAgYm9vbCBRdWlya3M6Om5lZWRzSW5wdXRNb2RlTm9uZUltcGxpY2l0
bHkoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgaWYgKCFob3N0LmVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoIi5kZXNtb3MuY29tIikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKSAmJiBlbGVtZW50LnBhcmVu
dEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJkY2ctbXEtdGV4dGFyZWEiKTsKKyAg
ICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50
KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiZGNnLW1xLXRleHRhcmVhIl9zKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMjMsMTAg
KzEwMjMsMTAgQEAgc3RhdGljIGJvb2wgaXNLaW5qYUxvZ2luQXZhdGFyRWxlbWVudChjb25zdCBF
bGVtZW50JiBlbGVtZW50KQogICAgIC8vIHNwYW4gd2l0aCB0aGVzZSBjbGFzcyBuYW1lcywgb3Ig
dGhlIHN2Zywgb3IgdGhlIHN2ZydzIHBhdGguCiAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSkg
ewogICAgICAgICBhdXRvJiBjbGFzc05hbWVzID0gZWxlbWVudC5jbGFzc05hbWVzKCk7Ci0gICAg
ICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19zd2l0Y2gtdG8tYnVybmVyLWxvZ2luIikK
LSAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImpzX2hlYWRlci11c2VyYnV0dG9u
IikKLSAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInNjLTFpbDN1cnUtMyIpIHx8
IGNsYXNzTmFtZXMuY29udGFpbnMoImNJaEtmZCIpCi0gICAgICAgICAgICB8fCBjbGFzc05hbWVz
LmNvbnRhaW5zKCJpeXZuMzQtMCIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImJZSWp0bCIpKQor
ICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dp
biJfcykKKyAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImpzX2hlYWRlci11c2Vy
YnV0dG9uIl9zKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlucygic2MtMWlsM3Vy
dS0zIl9zKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJjSWhLZmQiX3MpCisgICAgICAgICAgICB8
fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJpeXZuMzQtMCJfcykgfHwgY2xhc3NOYW1lcy5jb250YWlu
cygiYllJanRsIl9zKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTAz
Nyw3ICsxMDM3LDcgQEAgc3RhdGljIGJvb2wgaXNLaW5qYUxvZ2luQXZhdGFyRWxlbWVudChjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBzdmdFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRF
bGVtZW50KCk7CiAKICAgICBpZiAoc3ZnRWxlbWVudCAmJiBzdmdFbGVtZW50LT5oYXNBdHRyaWJ1
dGVzKCkpIHsKLSAgICAgICAgYXV0byBhcmlhTGFiZWxBdHRyID0gc3ZnRWxlbWVudC0+YXR0cmli
dXRlcygpLmdldE5hbWVkSXRlbSgiYXJpYS1sYWJlbCIpOworICAgICAgICBhdXRvIGFyaWFMYWJl
bEF0dHIgPSBzdmdFbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0TmFtZWRJdGVtKCJhcmlhLWxhYmVs
Il9zKTsKICAgICAgICAgaWYgKGFyaWFMYWJlbEF0dHIgJiYgYXJpYUxhYmVsQXR0ci0+dmFsdWUo
KSA9PSAiVXNlckZpbGxlZCBpY29uIikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEwNTYsMjQgKzEwNTYsMjQgQEAgc3RhdGljIGJvb2wgaXNTdG9yYWdlQWNjZXNzUXVpcmtE
b21haW5BbmRFbGVtZW50KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBFbGVtZW50JgogICAgIC8vIEZJ
WE1FKDIxODc3OSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgbWljcm9zb2Z0LmNvbSBjb21wbGV0
ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICBpZiAodXJsLmhvc3QoKSA9PSAid3d3
Lm1pY3Jvc29mdC5jb20iX3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ2xhc3MoKQot
ICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoImdseXBoX3NpZ25Jbl9j
aXJjbGUiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygibWVjdHJs
X2hlYWRlcnRleHQiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygi
bWVjdHJsX2hlYWRlciIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJnbHlwaF9zaWduSW5fY2lyY2xlIl9zKQorICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFt
ZXMoKS5jb250YWlucygibWVjdHJsX2hlYWRlcnRleHQiX3MpCisgICAgICAgIHx8IGVsZW1lbnQu
Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVyIl9zKSk7CiAgICAgfQogICAgIC8v
IFNreXBlIGNhc2UuCiAgICAgLy8gRklYTUUoMjIwMTA1KTogUmVtb3ZlIHRoaXMgcXVpcmsgb25j
ZSBTa3lwZSB1bmRlciBvdXRsb29rLmxpdmUuY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93
IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9zdCgpID09ICJvdXRsb29rLmxpdmUuY29tIl9zKSB7
CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAgICAgICAgJiYgKGVsZW1lbnQu
Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJfM2lvRXAyUkdSNXZiMGdxUkRzYUZQYSIpCi0gICAgICAg
IHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJfMkFtMmp2VGFCejE3VUo4WG5meEZP
eSIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJfM2lvRXAy
UkdSNXZiMGdxUkRzYUZQYSJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFzc05hbWVzKCkuY29u
dGFpbnMoIl8yQW0yanZUYUJ6MTdVSjhYbmZ4Rk95Il9zKSk7CiAgICAgfQogICAgIC8vIFNvbnkg
TmV0d29yayBFbnRlcnRhaW5tZW50IGxvZ2luIGNhc2UuCiAgICAgLy8gRklYTUUoMjE4NzYwKTog
UmVtb3ZlIHRoaXMgcXVpcmsgb25jZSBwbGF5c3RhdGlvbi5jb20gY29tcGxldGVzIHRoZWlyIGxv
Z2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gInd3dy5wbGF5c3RhdGlv
bi5jb20iX3MgfHwgdXJsLmhvc3QoKSA9PSAibXkucGxheXN0YXRpb24uY29tIl9zKSB7CiAgICAg
ICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NO
YW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRvbiIpCi0gICAgICAgIHx8
IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRv
bi1sYWJlbCIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJzYi1z
aWduaW4tYnV0dG9uIikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFp
bnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uIl9zKQorICAgICAgICB8fCBlbGVtZW50LmNs
YXNzTmFtZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0b24tbGFiZWwiX3Mp
CisgICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJzYi1zaWduaW4tYnV0
dG9uIl9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExMiw3ICsxMTEyLDcg
QEAgc3RhdGljIGJvb2wgaXNCQkNQb3BVcFBsYXllckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKICAgICBpZiAoIWVsZW1lbnQucGFyZW50RWxlbWVudCgpIHx8ICFlbGVtZW50LnBhcmVu
dEVsZW1lbnQoKS0+aGFzQ2xhc3MoKSB8fCAhcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgp
IHx8ICFwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCktPmhhc0NsYXNzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+Y2xh
c3NOYW1lcygpLmNvbnRhaW5zKCJwX2F1ZGlvQnV0dG9uX2J1dHRvbklubmVyIikgJiYgcGFyZW50
RWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImhpZGRlbiIp
OworICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJwX2F1ZGlvQnV0dG9uX2J1dHRvbklubmVyIl9zKSAmJiBwYXJlbnRFbGVtZW50LT5wYXJl
bnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiaGlkZGVuIl9zKTsKIH0KIAogUXVp
cmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NBbmRI
YW5kbGVDbGljayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZERpc3BhdGNoQ2xpY2spPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdApAQCAtMTE4NSwxNCArMTE4NSwxNCBAQCBRdWlya3M6
OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNz
UXVpcmsoRWxlbWVudCYgZQogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVzZXJTY3JpcHQ+
IGtpbmphTG9naW5Vc2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJMb2dpbkZvcm0oKSB7IGxl
dCBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2pzX2hlYWRlci11
c2VyYnV0dG9uJyk7IGlmIChlbGVtZW50cyAmJiBlbGVtZW50c1swXSkgeyBlbGVtZW50c1swXS5j
bGljaygpOyBjbGVhckludGVydmFsKGludGVydmFsKTsgfSB9IGxldCBpbnRlcnZhbCA9IHNldElu
dGVydmFsKHRyaWdnZXJMb2dpbkZvcm0sIDIwMCk7Il9zLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwg
VmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRp
bWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZy
YW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKLSAg
ICBpZiAoZXZlbnRUeXBlID09ICJjbGljayIpIHsKKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAg
ICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2
ZW50OwogCiAgICAgICAgIC8vIEVtYmVkZGVkIFlvdVR1YmUgY2FzZS4KICAgICAgICAgaWYgKGVs
ZW1lbnQuaGFzQ2xhc3MoKSAmJiBkb21haW4gPT0geW91VHViZURvbWFpbiAmJiAhbV9kb2N1bWVu
dC0+aXNUb3BEb2N1bWVudCgpICYmIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNI
YWRVc2VySW50ZXJhY3Rpb24oeW91VHViZURvbWFpbikpIHsKICAgICAgICAgICAgIGF1dG8mIGNs
YXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAgIGlmIChjbGFzc05h
bWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiIpIHx8IGNsYXNzTmFtZXMuY29udGFp
bnMoInl0cC13YXRjaC1sYXRlci1pY29uIikpIHsKKyAgICAgICAgICAgIGlmIChjbGFzc05hbWVz
LmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiJfcykgfHwgY2xhc3NOYW1lcy5jb250YWlu
cygieXRwLXdhdGNoLWxhdGVyLWljb24iX3MpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oeW91VHViZURv
bWFpbikpIHsKICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIFtdKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtz
OjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggMTk3NDFmNjJmNmI2NmExYmUwNzc3ZGVlNmEzYWEz
OWRiMDI4MGVkYy4uMTM2ZjdjZDUyZDM0M2U4MGJhN2NjMjA5MGY2ZjY4N2EzYjYwOWQ1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTIwNiw3ICsyMDYsNyBAQCBTcGFu
PGNvbnN0IEF0b21TdHJpbmc+IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpvYnNl
cnZlZEV2ZW50TmFtZXMoKQogCiBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxsKCkKIHsKLSAgICBzdGF0aWMgTWFpblRocmVhZE5l
dmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNFdmVudE5hbWVBbGwgPSAiYWxsRXZlbnRz
IjsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHNFdmVudE5hbWVBbGwgPSAiYWxsRXZlbnRzIl9zOwogICAgIHJldHVybiBzRXZlbnROYW1lQWxs
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBlYzMxYzUzODAwODMyMDBiOTAwZDJl
YTVjZjU0MGEzNjg5N2NlNjU0Li40MjM3Y2Y2MDU5ODRkYzZkNTM2MDQ3NDY3MzU1ZDM4NDY3MzFh
YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTMwNjcsNyArMzA2Nyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2so
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX21ldGFkYXRhVHJhY2sgPSBJbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5k
OjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0OjpEYXRhKTsKLSAg
ICBtX21ldGFkYXRhVHJhY2stPnNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoImNv
bS5hcHBsZS5zdHJlYW1pbmciKTsKKyAgICBtX21ldGFkYXRhVHJhY2stPnNldEluQmFuZE1ldGFk
YXRhVHJhY2tEaXNwYXRjaFR5cGUoImNvbS5hcHBsZS5zdHJlYW1pbmciX3MpOwogICAgIHBsYXll
cigpLT5hZGRUZXh0VHJhY2soKm1fbWV0YWRhdGFUcmFjayk7CiB9CiAKQEAgLTMwOTYsNyArMzA5
Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVu
dFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2CiAgICAgaWYgKG1fY3VycmVudFRleHRUcmFj
ayA9PSB0cmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgInNlbGVjdGluZyB0cmFjayB3aXRoIGxhbmd1YWdlICIsIHRyYWNrID8gdHJhY2stPmxhbmd1
YWdlKCkgOiAiIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInNlbGVjdGluZyB0cmFj
ayB3aXRoIGxhbmd1YWdlICIsIHRyYWNrID8gdHJhY2stPmxhbmd1YWdlKCkgOiBlbXB0eUF0b20o
KSk7CiAKICAgICBtX2N1cnJlbnRUZXh0VHJhY2sgPSB0cmFjazsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggY2ZhMjli
MTEyZWEzMjk3M2ZjODU2MzViNjVlNDIxZWFmYmY5MTQwNy4uMDFmMmM2OTcxNmY2MThhYTQ4ZDI4
ZWUxNjVmMTE4MGYwZjRiYjllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgog
ICAgICAgICAvLyB3aGljaCBpcyBwcmVzdW1hYmx5IG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2NvZGVjKQotICAgICAg
ICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcobV9vcmlnaW5hbENvZGVjLnN0cmluZygpLmRhdGEo
KSk7CisgICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShtX29yaWdp
bmFsQ29kZWMuc3RyaW5nKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuICptX2NvZGVjOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Bs
YXRmb3JtQ0FMYXllci5jcHAKaW5kZXggODUyMzQ2ZjZiNWM1NjdkZTI5ZjM1MTc3ZGM0ODcyMzY1
ZGYyN2Q0MC4uYjA4NjlmODAwNDU2MTllNjk2NTg2MWNiMTcyOTgxZWVlMWYzMWMzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
TGF5ZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVw
YWludEluZGljYXRvcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUGxhCiAgICAg
VGV4dFJ1biB0ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHJlcGFpbnRDb3VudCkpOwogCiAgICAgRm9u
dENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9udERlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZh
bWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6
ZShmb250U2l6ZSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShmb250U2l6
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXgg
NjdkNzBjYmNmNzIzMjNlMjA5MzkyNDBkNGQ0NzBjNDM4MTE2NjA2Yy4uYzc2ZGQzZDI5ZWQzNDY5
NmZlMWY1MDkwZDcxOGZjN2YwZjExYjYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6ZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKGNvbnN0IEdTdHJlYW1l
clJlZwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbWltZVR5cGUgOiBjdXJyZW50
LndlYmtpdE1pbWVUeXBlcykKICAgICAgICAgICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKG1pbWVUeXBlKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKGN1cnJlbnQuY2Fwc1N0cmluZykpOwor
ICAgICAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nOjpmcm9t
TGF0aW4xKGN1cnJlbnQuY2Fwc1N0cmluZykpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjYy
LDI2ICsyNjIsMjYgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmZpbGxNaW1lVHlw
ZVNldEZyb21DYXBzTWFwcGluZyhjb25zdCBHU3RyZWFtZXJSZWcKIHZvaWQgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyOjpFbGVtZW50RmFjdG9yaWVzJiBmYWN0b3JpZXMpCiB7CiAgICAgaWYgKGZhY3Rvcmll
cy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVj
b2RlciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpKSB7Ci0gICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMiKSk7Ci0gICAgICAgIG1f
ZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiKSk7Ci0gICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSIpKTsKLSAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7
Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1w
ZWciKSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIiks
IGZhbHNlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEq
IiksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmco
ImF1ZGlvL2FhYyJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygiYXVkaW8vbXA0Il9zKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby94LW00YSJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIl9zKSk7CisgICAgICAgIG1fZGVj
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIl9zKSwgZmFsc2UpOworICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiX3MpLCBmYWxzZSk7CiAgICAg
fQogCiAgICAgYXV0byBvcHVzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1vcHVz
Iik7CiAgICAgaWYgKG9wdXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFjdG9y
aWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9Q
YXJzZXIsICJhdWRpby94LW9wdXMiKSkpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJvcHVzIiksIGZhbHNlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyIpLCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9zKSk7CisgICAgICAgIG1fZGVj
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJvcHVzIl9zKSwgZmFsc2UpOworICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIl9zKSwgZmFsc2UpOwogICAg
IH0KIAogICAgIGF1dG8gdm9yYmlzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC12
b3JiaXMiKTsKICAgICBpZiAodm9yYmlzU3VwcG9ydGVkICYmICghbV9pc01lZGlhU291cmNlIHx8
IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
OkF1ZGlvUGFyc2VyLCAiYXVkaW8veC12b3JiaXMiKSkpIHsKLSAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZGVjb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyIpLCBmYWxzZSk7CisgICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiX3MpLCBmYWxzZSk7CisgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyJfcyksIGZhbHNl
KTsKICAgICB9CiAKICAgICBib29sIG1hdHJvc2thU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgInZpZGVv
L3gtbWF0cm9za2EiKTsKQEAgLTI5MCwyMSArMjkwLDIxIEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyCiAgICAgICAgIGF1dG8gdnA5RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZp
ZGVvL3gtdnA5IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olll
cyk7CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUgfHwgdnA5RGVjb2RlckF2YWls
YWJsZSkKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2
aWRlby93ZWJtIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKIAogICAgICAgICBpZiAodnA4RGVjb2RlckF2YWlsYWJs
ZSkgewotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOCIp
LCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiKSwgdnA4RGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoInZwOC4wIiksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgiX3MpLCB2
cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiX3MpLCB2cDhEZWNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygidnA4LjAiX3MpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZwOURlY29kZXJBdmFpbGFibGUpIHsKLSAgICAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkiKSwgdnA5RGVjb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtdnA5IiksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDku
MCIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnAwOSoiKSwgdnA5RGVjb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoInZwOSJfcyksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJl
KTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOSJf
cyksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkuMCJfcyksIHZwOURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ2cDA5KiJfcyksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKICAgICAgICAgfQogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKLSAgICAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIikpOworICAg
ICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dlYm0i
X3MpKTsKICAgICB9CiAKICAgICBib29sIHNob3VsZEFkZE1QNENvbnRhaW5lciA9IGZhbHNlOwpA
QCAtMzEyLDM1ICszMTIsMzUgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRp
YWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICBhdXRvIGgy
NjREZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxl
bWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1oMjY0LCBwcm9maWxl
PShzdHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGluZSwgYmFzZWxpbmUsIGhpZ2ggfSIsIEVsZW1l
bnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAgIGlmIChoMjY0
RGVjb2RlckF2YWlsYWJsZSAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb1BhcnNlciwgInZp
ZGVvL3gtaDI2NCIpKSkgewogICAgICAgICBzaG91bGRBZGRNUDRDb250YWluZXIgPSB0cnVlOwot
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0IiksIGgyNjRE
ZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIiksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDR2
KiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0Il9zKSwgaDI2NERlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImF2YyoiX3MpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0dioiX3MpLCBo
MjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAgIGF1dG8g
aDI2NURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWgyNjUiLCBFbGVt
ZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKICAgICBpZiAoaDI2
NURlY29kZXJBdmFpbGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9QYXJzZXIsICJ2
aWRlby94LWgyNjUiKSkpIHsKICAgICAgICAgc2hvdWxkQWRkTVA0Q29udGFpbmVyID0gdHJ1ZTsK
LSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtaDI2NSIpLCBoMjY1
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygiaHZjMSoiKSwgaDI2NURlY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImhl
djEqIiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjUiX3MpLCBoMjY1RGVjb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiaHZjMSoiX3MpLCBoMjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdh
cmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiaGV2MSoiX3Mp
LCBoMjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAgIGlm
IChzaG91bGRBZGRNUDRDb250YWluZXIpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2IikpOworICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0Il9zKSk7CisgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diJfcykpOwogICAgIH0KIAog
ICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtYXYx
IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAg
aWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmln
dXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxl
KSB7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBh
djFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5n
SGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1h
djEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiX3MpLCBhdjFEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJhdjEiX3MpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSJfcyksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAgICBWZWN0b3I8R3N0
Q2Fwc1dlYktpdE1hcHBpbmc+IG1zZUNvbXBhdGlibGVNYXBwaW5nID0gewotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtYWMzIiwgeyB9LCB7
IngtYWMzIiwgImFjLTMiLCAiYWMzIn0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWVhYzMiLCB7ImF1ZGlvL3gtYWMzIn0sICB7Ingt
ZWFjMyIsICJlYzMiLCAiZWMtMyIsICJlYWMzIn0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9y
aWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWZsYWMiLCB7ImF1ZGlvL3gtZmxhYyIs
ICJhdWRpby9mbGFjIn0sIHsieC1mbGFjIiwgImZsYWMiIH0gfSwKKyAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWFjMyIsIHsgfSwgeyAieC1h
YzMiX3MsICJhYy0zIl9zLCAiYWMzIl9zIH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWVhYzMiLCB7ICJhdWRpby94LWFjMyJfcyB9
LCAgeyAieC1lYWMzIl9zLCAiZWMzIl9zLCAiZWMtMyJfcywgImVhYzMiX3MgfSB9LAorICAgICAg
ICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gtZmxhYyIs
IHsgImF1ZGlvL3gtZmxhYyJfcywgImF1ZGlvL2ZsYWMiX3MgfSwgeyJ4LWZsYWMiX3MsICJmbGFj
Il9zIH0gfSwKICAgICB9OwogICAgIGZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyhmYWN0
b3JpZXMsIG1zZUNvbXBhdGlibGVNYXBwaW5nKTsKIApAQCAtMzUwLDc2ICszNTAsNzYgQEAgdm9p
ZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAvLyBUaGUgbWltZS10eXBlcyBpbml0aWFsaXplZCBi
ZWxvdyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgTVNFIGJhY2tlbmQuCiAKICAgICBWZWN0b3I8
R3N0Q2Fwc1dlYktpdE1hcHBpbmc+IG1hcHBpbmcgPSB7Ci0gICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbWlkaSIsIHsgImF1ZGlvL21pZGkiLCAi
YXVkaW8vcmlmZi1taWRpIiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpU
eXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9taWRpIiwgeyAiYXVkaW8vbWlkaSJfcywgImF1ZGlv
L3JpZmYtbWlkaSJfcyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBl
OjpBdWRpb0RlY29kZXIsICJhdWRpby94LWR0cyIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxl
bWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1zYmMiLCB7IH0sIHsg
fSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1
ZGlvL3gtc2lkIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBl
OjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNwZWV4IiwgeyAiYXVkaW8vc3BlZXgiLCAiYXVkaW8v
eC1zcGVleCIgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVk
aW9EZWNvZGVyLCAiYXVkaW8veC13YXZwYWNrIiwgeyAiYXVkaW8veC13YXZwYWNrIiB9LCB7IH0g
fSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by9tcGVnLCBtcGVndmVyc2lvbj0oaW50KXsxLDJ9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFs
c2UiLCB7ICJ2aWRlby9tcGVnIiB9LCB7ICJtcGVnIiB9IH0sCisgICAgICAgIHsgRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1zcGVleCIsIHsgImF1ZGlvL3Nw
ZWV4Il9zLCAiYXVkaW8veC1zcGVleCJfcyB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFj
dG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXdhdnBhY2siLCB7ICJhdWRpby94
LXdhdnBhY2siX3MgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
VmlkZW9EZWNvZGVyLCAidmlkZW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCl7MSwyfSwgc3lzdGVt
c3RyZWFtPShib29sZWFuKWZhbHNlIiwgeyAidmlkZW8vbXBlZyJfcyB9LCB7ICJtcGVnIl9zIH0g
fSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by9tcGVndHMiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtZGlyYWMiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVs
ZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtZmxhc2gtdmlkZW8i
LCB7ICJ2aWRlby9mbHYiLCAidmlkZW8veC1mbHYiIH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtZmxhc2gtdmlkZW8iLCB7
ICJ2aWRlby9mbHYiX3MsICJ2aWRlby94LWZsdiJfcyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWgyNjMiLCB7IH0sIHsg
fSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZp
ZGVvL3gtbXN2aWRlb2NvZGVjIiwgeyAidmlkZW8veC1tc3ZpZGVvIiB9LCB7IH0gfSwKKyAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LW1zdmlk
ZW9jb2RlYyIsIHsgInZpZGVvL3gtbXN2aWRlbyJfcyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRp
YSIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhl
ciwgImFwcGxpY2F0aW9uL3gtM2dwIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFj
dG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC1obHMiLCB7ICJhcHBsaWNhdGlv
bi92bmQuYXBwbGUubXBlZ3VybCIsICJhcHBsaWNhdGlvbi94LW1wZWd1cmwiIH0sIHsgfSB9LAor
ICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi94
LWhscyIsIHsgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl9zLCAiYXBwbGljYXRpb24v
eC1tcGVndXJsIl9zIH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi94LXBuLXJlYWxhdWRpbyIsIHsgfSwgeyB9IH0sCiAgICAg
ICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL2Rhc2gr
eG1sIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11
eGVyLCAiYXVkaW8veC1haWZmIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9y
aWVzOjpUeXBlOjpEZW11eGVyLCAiYXVkaW8veC13YXYiLCB7ICJhdWRpby94LXdhdiIsICJhdWRp
by93YXYiLCAiYXVkaW8vdm5kLndhdmUiIH0sIHsgIjEiIH0gfSwKKyAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXVkaW8veC13YXYiLCB7ICJhdWRpby94LXdhdiJf
cywgImF1ZGlvL3dhdiJfcywgImF1ZGlvL3ZuZC53YXZlIl9zIH0sIHsgIjEiX3MgfSB9LAogICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRlby9xdWlja3RpbWUi
LCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIs
ICJ2aWRlby9xdWlja3RpbWUsIHZhcmlhbnQ9KHN0cmluZykzZ3BwIiwgeyAidmlkZW8vM2dwcCIg
fSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgInZp
ZGVvL3F1aWNrdGltZSwgdmFyaWFudD0oc3RyaW5nKTNncHAiLCB7ICJ2aWRlby8zZ3BwIl9zIH0s
IHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRl
by94LW1zLWFzZiIsIHsgfSwgeyB9IH0sCiAgICAgfTsKICAgICBmaWxsTWltZVR5cGVTZXRGcm9t
Q2Fwc01hcHBpbmcoZmFjdG9yaWVzLCBtYXBwaW5nKTsKIAogICAgIGlmIChmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBw
bGljYXRpb24vb2dnIikpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImFwcGxpY2F0aW9uL29nZyIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImFwcGxpY2F0aW9uL29nZyJfcykpOwogCiAgICAgICAgIGlmICh2b3Ji
aXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8veC12b3JiaXMrb2dnIikpOworICAgICAgICAgICAgbV9kZWNv
ZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykpOworICAgICAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtdm9yYmlzK29n
ZyJfcykpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gt
c3BlZXgiKSkgewotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL29nZyIpKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJzcGVleCIpLCBmYWxzZSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIl9zKSk7CisgICAgICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygic3BlZXgiX3MpLCBmYWxzZSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC10aGVvcmEiKSkgewotICAgICAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL29nZyIpKTsKLSAg
ICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ0aGVvcmEiKSwgZmFs
c2UpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZp
ZGVvL29nZyJfcykpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoInRoZW9yYSJfcyksIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgYXVk
aW9NcGVnU3VwcG9ydGVkID0gZmFsc2U7CiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21w
ZWcsIG1wZWd2ZXJzaW9uPShpbnQpMSwgbGF5ZXI9KGludClbMSwgM10iKSkgewogICAgICAgICBh
dWRpb01wZWdTdXBwb3J0ZWQgPSB0cnVlOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8vbXAxIikpOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAzIikpOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcDMiKSk7Ci0gICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDMiKSwgZmFsc2UpOwotICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXAzIiksIGZhbHNlKTsKKyAgICAgICAgbV9k
ZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMSJfcykpOworICAgICAg
ICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAzIl9zKSk7Cisg
ICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wMyJf
cykpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAz
Il9zKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
bXAzIl9zKSwgZmFsc2UpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9t
cGVnLCBtcGVndmVyc2lvbj0oaW50KTIiKSkgewogICAgICAgICBhdWRpb01wZWdTdXBwb3J0ZWQg
PSB0cnVlOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXAyIikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8vbXAyIl9zKSk7CiAgICAgfQogCiAgICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29u
dGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCJf
cyk7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewotICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKLSAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKKyAgICAgICAgbV9k
ZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciX3MpKTsKKyAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyJfcykp
OwogICAgIH0KIAogICAgIGlmIChtYXRyb3NrYVN1cHBvcnRlZCkgewotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tYXRyb3NrYSIpKTsKKyAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbWF0cm9za2Ei
X3MpKTsKIAogICAgICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxl
bWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC12cDEwIikpCi0gICAg
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSIp
KTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRl
by93ZWJtIl9zKSk7CiAgICAgfQogfQogCkBAIC00MzEsNzYgKzQzMSw3NiBAQCB2b2lkIEdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZUVuY29kZXJzKGNvbnN0IEdTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lcgogCiAgICAgYXV0byBhYWNTdXBwb3J0ZWQgPSBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0VuY29kZXIsICJh
dWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKTsKICAgICBpZiAoZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAi
YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKLSAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyJfcyksIGZhbHNlKTsKKyAgICAgICAgbV9l
bmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIl9zKSwgZmFsc2UpOwogICAgIH0K
IAogICAgIGF1dG8gb3B1c1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1ZGlvL3gtb3B1cyIp
OwogICAgIGlmIChvcHVzU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJvcHVzIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoIngtb3B1cyIpLCBmYWxzZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJvcHVzIl9zKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIl9zKSwgZmFsc2UpOwogICAgIH0KIAogICAg
IGF1dG8gdm9yYmlzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUo
RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVkaW8veC12b3JiaXMiKTsK
ICAgICBpZiAodm9yYmlzU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ2b3JiaXMiKSwgZmFsc2UpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIl9zKSwgZmFsc2UpOworICAgICAgICBtX2Vu
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiX3MpLCBmYWxzZSk7CiAgICAg
fQogCiAgICAgVmVjdG9yPFN0cmluZz4gYXYxRW5jb2RlcnNEaXNhbGxvd2VkTGlzdCB7ICJhdjFl
bmMiX3MgfTsKICAgICBhdXRvIGF2MUVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2
aWRlby94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZ
ZXMsIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3Qp
KSk7CiAgICAgaWYgKGF2MUVuY29kZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBmYWxzZSk7Ci0gICAgICAgIG1fZW5jb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSIpLCBmYWxzZSk7CisgICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiJfcyksIGZhbHNlKTsKKyAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSJfcyksIGZhbHNlKTsKKyAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIl9zKSwgZmFsc2UpOwog
ICAgIH0KIAogICAgIGF1dG8gdnA4RW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZp
ZGVvL3gtdnA4IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olll
cyk7CiAgICAgaWYgKHZwOEVuY29kZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOCIpLCB2cDhFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZw
OCIpLCB2cDhFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDguMCIpLCB2cDhFbmNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJ2cDgiX3MpLCB2cDhFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAg
ICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCJfcyksIHZwOEVuY29k
ZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoInZwOC4wIl9zKSwgdnA4RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwogICAgIH0KIAogICAgIGF1dG8gdnA5RW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmll
cy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5j
b2RlciwgInZpZGVvL3gtdnA5IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNz
aWZpZXI6Olllcyk7CiAgICAgaWYgKHZwOUVuY29kZXJBdmFpbGFibGUpIHsKLSAgICAgICAgbV9l
bmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSIpLCB2cDlFbmNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJ4LXZwOSIpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAg
ICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkuMCIpLCB2cDlFbmNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ2cDA5KiIpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkiX3MpLCB2
cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOSJfcyksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
InZwOS4wIl9zKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnAwOSoiX3MpLCB2cDlFbmNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAidmlk
ZW8vd2VibSIpICYmICh2cDhFbmNvZGVyQXZhaWxhYmxlIHx8IHZwOUVuY29kZXJBdmFpbGFibGUg
fHwgYXYxRW5jb2RlckF2YWlsYWJsZSkpCi0gICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIikpOworICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSJfcykpOwogCiAgICAgaWYgKGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAiYXVk
aW8vd2VibSIpKSB7CiAgICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9l
bmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7Ci0gICAgICAg
IG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIikpOworICAg
ICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMi
X3MpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L3dlYm0iX3MpKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6TXV4ZXIsICJhdWRpby9vZ2ciKSAmJiAodm9y
YmlzU3VwcG9ydGVkIHx8IG9wdXNTdXBwb3J0ZWQpKQotICAgICAgICBtX2VuY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOworICAgICAgICBtX2VuY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIl9zKSk7CiAKICAgICBhdXRvIGgyNjRF
bmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVu
dEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVyLCAidmlkZW8veC1oMjY0LCBwcm9maWxlPShz
dHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGluZSwgYmFzZWxpbmUsIGhpZ2ggfSIsIEVsZW1lbnRG
YWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAgIGlmIChoMjY0RW5j
b2RlckF2YWlsYWJsZSkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygiaDI2NCIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0IiksIGgyNjRFbmNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdmMqIiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDR2KiIpLCBo
MjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygiaDI2NCJfcyksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ4LWgyNjQiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAg
ICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXZjKiJfcyksIGgyNjRFbmNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJtcDR2KiJfcyksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAidmlkZW8vcXVpY2t0aW1lIikpIHsK
ICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9zKSk7CiAgICAgICAgIGlm
IChhYWNTdXBwb3J0ZWQpIHsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9hYWMiKSk7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOwotICAgICAgICAgICAgbV9lbmNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbTRhIikpOworICAgICAgICAgICAgbV9l
bmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyJfcykpOworICAgICAg
ICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCJfcykp
OworICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L3gtbTRhIl9zKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGgyNjRFbmNvZGVyQXZhaWxhYmxl
KSB7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlk
ZW8vbXA0IikpOwotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoInZpZGVvL3gtbTR2IikpOworICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoInZpZGVvL21wNCJfcykpOworICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2Il9zKSk7CiAgICAgICAgIH0KICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggN2IyMDI3OTVlZDE1ZmYyNDI4ODlkOGQ4MWZjNjIxZThiYWRjMjQwMi4uNjI3
NmNhOTA5NWRiNWQzYmNkMTdiNmMxNjQ5OGQwZjE3NjAyOWJmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNDcsNyArNDcs
NyBAQCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LAogICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZShDdWVGb3JtYXQ6OldlYlZUVCkKICAgICAsIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIoVHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlOjpUZXh0LCB0aGlzLCBpbmRleCwgV1RG
TW92ZShzdHJlYW0pKQogewotICAgIG1faWQgPSBnc3Rfc3RyZWFtX2dldF9zdHJlYW1faWQobV9z
dHJlYW0uZ2V0KCkpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGdzdF9zdHJl
YW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQoKSkpOwogICAgIEdTVF9JTkZPKCJUcmFjayAl
ZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwgbV9pZC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEdTVF9ERUJVRygiU3RyZWFtICUiIEdTVF9QVFJfRk9S
TUFULCBtX3N0cmVhbS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCmluZGV4IDAxZmVmZWEzMmQyMTM2ZGZkMWUxZjNjMjViODE2MjY5Njkw
ZmJkMTQuLjIwOTgwMzVkYTgwYjBiOTM5MzVlNDY2OTFmMDI1NzVlZTc4ODg2YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNDY0LDcg
KzE0NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlVHJhY2tz
KGNvbnN0IEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlvbgogICAgICAgICAgICAgQ1JFQVRFX1RS
QUNLKHZpZGVvLCBWaWRlbyk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgJiBHU1RfU1RSRUFNX1RZ
UEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICAgICAgICAgICAgIGF1dG8gdHJhY2sgPSBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRyYWNrSW5kZXgrKywg
V1RGTW92ZShzdHJlYW0pKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5hZGQoc3RyZWFtSWQs
IHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3MuYWRkKEF0b21TdHJp
bmc6OmZyb21MYXRpbjEoc3RyZWFtSWQpLCB0cmFjay5jb3B5UmVmKCkpOwogICAgICAgICAgICAg
bV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgR1NUX1dBUk5JTkcoIlVua25vd24gdHJhY2sgdHlwZSBmb3VuZCBmb3Igc3RyZWFt
ICVzIiwgc3RyZWFtSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIuY3BwCmluZGV4IDI5NTdiY2VmM2QwZDBlMTgyOGVmNWRmN2JmOGJjZTVkZWMyZjhkOWEuLjlh
YjE1ZGZhZWMyYjRlNTgxOGU1YTNlZjllMTI3MDk4MGMwODZhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcihUcmFja1R5cGUg
dHlwZSwgVHJhY2tQcml2YXQKICAgICAsIG1fb3duZXIob3duZXIpCiB7CiAgICAgQVNTRVJUKG1f
c3RyZWFtKTsKLSAgICBtX2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lkKG1fc3RyZWFtLmdl
dCgpKTsKKyAgICBtX2lkID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShnc3Rfc3RyZWFtX2dldF9z
dHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpKTsKIAogICAgIC8vIFdlIGNhbid0IGNhbGwgbm90aWZ5
VHJhY2tPZlRhZ3NDaGFuZ2VkKCkgZGlyZWN0bHksIGJlY2F1c2Ugd2UgbmVlZCB0YWdzQ2hhbmdl
ZCgpIHRvIHNldHVwIG1fdGFncy4KICAgICB0YWdzQ2hhbmdlZCgpOwpAQCAtMjUyLDcgKzI1Miw3
IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlN0cmVhbUNo
YW5nZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBHU1RfSU5GTygiVHJhY2sgJWQgZ290IHN0
cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIHN0cmVhbUlkLmdldCgpKTsKLSAg
ICBtX2lkID0gc3RyZWFtSWQuZ2V0KCk7CisgICAgbV9pZCA9IEF0b21TdHJpbmc6OmZyb21MYXRp
bjEoc3RyZWFtSWQuZ2V0KCkpOwogfQogCiB2b2lkIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OnN0cmVhbUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggYmM1MzlhODc0
NzgwMjgxODEzZjZhZjMwMGFlMmUwMmI3NmFlNjFiYy4uNDg5MDIyOTM2OTE5ZDczOWQwMGVhMWNj
YzMyNjZmZGFlZjI4Njc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0xNDcsMTAg
KzE0NywxMCBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRl
ZEluaXREYXRhVHlwZXMoKSBjb25zdAogICAgIHN0YXRpYyBWZWN0b3I8QXRvbVN0cmluZz4gc3Vw
cG9ydGVkSW5pdERhdGFUeXBlczsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewog
ICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoNCk7
Ci0gICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKEF0b21TdHJp
bmcoImtleWlkcyIpKTsKLSAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRB
cHBlbmQoQXRvbVN0cmluZygiY2VuYyIpKTsKLSAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBl
cy51bmNoZWNrZWRBcHBlbmQoQXRvbVN0cmluZygid2VibSIpKTsKLSAgICAgICAgc3VwcG9ydGVk
SW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoQXRvbVN0cmluZygiY2JjcyIpKTsKKyAgICAg
ICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoImtleWlkcyJfcyk7Cisg
ICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5kKCJjZW5jIl9zKTsK
KyAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoIndlYm0iX3Mp
OworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFwcGVuZCgiY2JjcyJf
cyk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHN1cHBvcnRlZEluaXREYXRhVHlwZXM7CiB9CkBAIC0x
NzAsOSArMTcwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGMKIAogVmVjdG9yPEF0b21TdHJp
bmc+IENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMoKSBjb25zdAogewot
ICAgIHJldHVybiB7IGVtcHR5QXRvbSgpLAotICAgICAgICAiU1dfU0VDVVJFX0RFQ09ERSIsCi0g
ICAgICAgICJTV19TRUNVUkVfQ1JZUFRPIiB9OworICAgIHJldHVybiB7IGVtcHR5QXRvbSgpLCAi
U1dfU0VDVVJFX0RFQ09ERSJfcywgIlNXX1NFQ1VSRV9DUllQVE8iX3MgfTsKIH0KIAogQ0RNUmVx
dWlyZW1lbnQgQ0RNUHJpdmF0ZVRodW5kZXI6OmRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgQ0RNUmVzdHJpY3Rp
b25zJikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggMGJiMjJk
NTI1OTBlZGUyNTc4ZjA0ZjI2YTYxNmY5MTYwYzQ0YjNkZS4uYzI2YTliNTM1NjY5MzQ4OGI0MjVm
NmU5N2M0ODFiMTViMjc3YTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAK
QEAgLTcxMyw3ICs3MTMsNyBAQCBBcHBlbmRQaXBlbGluZTo6VHJhY2sqIEFwcGVuZFBpcGVsaW5l
Ojp0cnlNYXRjaFBhZFRvRXhpc3RpbmdUcmFjayhHc3RQYWQgKmRlbXV4ZQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1faGFzUmVjZWl2ZWRGaXJzdEluaXRpYWxp
emF0aW9uU2VnbWVudCk7Ci0gICAgQXRvbVN0cmluZyB0cmFja0lkID0gR1NUX1BBRF9OQU1FKGRl
bXV4ZXJTcmNQYWQpOworICAgIGF1dG8gdHJhY2tJZCA9IEF0b21TdHJpbmc6OmZyb21MYXRpbjEo
R1NUX1BBRF9OQU1FKGRlbXV4ZXJTcmNQYWQpKTsKICAgICBhdXRvIFtwYXJzZWRDYXBzLCBzdHJl
YW1UeXBlLCBwcmVzZW50YXRpb25TaXplXSA9IHBhcnNlRGVtdXhlclNyY1BhZENhcHMoYWRvcHRH
UmVmKGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyhkZW11eGVyU3JjUGFkKSkuZ2V0KCkpOwogCiAg
ICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBwcmUtZXhpc3RpbmcgdHJhY2suIElkZWFsbHks
IHRyYWNrcyBzaG91bGQgYmUgbWF0Y2hlZCBieSB0cmFjayBJRCwgYnV0IG1hdGNoaW5nIGJ5IHR5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggM2U0ZTBlOTM0MjVlNjgwYjkwMzYyN2JlOTlmYjQzZjJh
MjNjMmUwZi4uNDYyNDFkMTI0MTkzYWVlYWUyZWRlZDQwNWNhMjg1YzM5M2EzMTViMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgdW5zaWduZWQgaG91
cnMgPSBtaW51dGVzIC8gNjAgJSA2MDsKIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkNvdXJpZXIi
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJDb3VyaWVyIl9zKTsKICAgICBm
b250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKIAogICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1fYmFzZUZvbnRTaXplKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3Bw
CmluZGV4IGE1MzEwNjA3YTMwNDk5OTUzZTQ5NWRhZTYzNDVmOGU1MmZkZjA3MmUuLjk3NzhjMTc1
ZjM0ZDQ2ZDBiNmY1MDExNmU3ZThkM2E1NTQ5NDQ0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtNjcsOCArNjcs
OSBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCkK
IHsKICAgICBzdGF0aWMgYm9vbCBkaWRSZWdpc3RlciA9IGZhbHNlOwogICAgIGlmICghZGlkUmVn
aXN0ZXIpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVj
dG9yKCJibG9iIiwgY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKTsKLSAgICAgICAgUmVzb3VyY2VI
YW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKCJibG9iIiwgbG9hZEJsb2JS
ZXNvdXJjZVN5bmNocm9ub3VzbHkpOworICAgICAgICBBdG9tU3RyaW5nIGJsb2IgPSAiYmxvYiJf
czsKKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNvbnN0cnVjdG9yKGJs
b2IsIGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZSk7CisgICAgICAgIFJlc291cmNlSGFuZGxlOjpy
ZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihibG9iLCBsb2FkQmxvYlJlc291cmNlU3lu
Y2hyb25vdXNseSk7CiAgICAgICAgIGRpZFJlZ2lzdGVyID0gdHJ1ZTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggYTNmZWZhZDA2YTZi
MjcyYjFhZjFiNTkwNDM2OTgyYTE2ODUzYjFhZi4uNDg1Y2U3M2Q5YzM0YTBjOWEzNDJkM2NmZTcw
YTU1ZTQ0NmZjYTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5kZXJlclRyZWUoY29u
c3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhcioKICAgICB3aGls
ZSAocm9vdC0+cGFyZW50KCkpCiAgICAgICAgIHJvb3QgPSByb290LT5wYXJlbnQoKTsKIAotICAg
IEF0b21TdHJpbmcgaWRlbnRpZmllcihjb3VudGVyTmFtZSk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShjb3VudGVyTmFtZSk7CiAgICAgZm9yIChhdXRvKiBj
dXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRJblByZU9yZGVy
KCkpIHsKICAgICAgICAgaWYgKCFpczxXZWJDb3JlOjpSZW5kZXJFbGVtZW50PigqY3VycmVudCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMjYzYWM3NWFjN2U0ZDJhM2QyMzU5MTQ2YWFjM2Rm
N2NmNDliYjkyMi4uZDk3Nzg5NWFmZGMxNzhlNjNmM2E0Y2RhOTEyMGY2NjNhYjVlMTk4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTMzMzAsNyArMzMzMCw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2Ny
aXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKIAogICAg
ICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRTcGVjaWZpZWRTaXplKDEwKTsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENv
bXB1dGVkU2l6ZSgxMCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNl
bGVjdGlvblZhbHVlKDUwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUd0ay5jcHAKaW5kZXggZjM3NTk0MDdhNjBhMTdmMGM4ZjhiYjdhN2RiMWMxNTIwNjk4ZTk0Ni4u
YzVjNDE2ZDJjMDYzNjFkY2FhYWNhMDhmODFjYTc0MjFkNjkwMmJhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVHdGs6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1
ZUlELCBGb250Q2FzY2FkZURlCiAgICAgaWYgKCFwYW5nb0Rlc2NyaXB0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KHBhbmdvX2ZvbnRfZGVz
Y3JpcHRpb25fZ2V0X2ZhbWlseShwYW5nb0Rlc2NyaXB0aW9uKSk7CisgICAgZm9udERlc2NyaXB0
aW9uLnNldE9uZUZhbWlseShBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHBhbmdvX2ZvbnRfZGVzY3Jp
cHRpb25fZ2V0X2ZhbWlseShwYW5nb0Rlc2NyaXB0aW9uKSkpOwogCiAgICAgaW50IHNpemUgPSBw
YW5nb19mb250X2Rlc2NyaXB0aW9uX2dldF9zaXplKHBhbmdvRGVzY3JpcHRpb24pIC8gUEFOR09f
U0NBTEU7CiAgICAgLy8gSWYgdGhlIHNpemUgb2YgdGhlIGZvbnQgaXMgaW4gcG9pbnRzLCB3ZSBu
ZWVkIHRvIGNvbnZlcnQgaXQgdG8gcGl4ZWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCmluZGV4IDIxZDljN2UyYzcy
ZWQxMDRhODVlZDk5ZDA1MTZiN2NhZDZiMThlNzcuLmMwYzM0NzhjMjhiOWE4NTRhODEyNjM0YWNh
YWUzMjg0ZWY1NGYyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgdXNpbmcgbmFt
ZXNwYWNlIE1hdGhNTE5hbWVzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVy
TWF0aE1MRmVuY2VkKTsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGdPcGVuaW5nQnJhY2VDaGFyID0g
IigiOwotc3RhdGljIGNvbnN0IGNoYXIqIGdDbG9zaW5nQnJhY2VDaGFyID0gIikiOworc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiX3M7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gZ0Nsb3NpbmdCcmFjZUNoYXIgPSAiKSJfczsKIAogUmVuZGVyTWF0aE1MRmVuY2Vk
OjpSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MUm93RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNw
cAppbmRleCAzMzE4OWJkNjRjYWNiZWRmOTM2OGQzNGZhOWZiNTY0ZDU4YmQxZjM2Li44YWM2ZWRl
YzJmZTBiNjE2NzE4ODJhNWY5ZmZkNjQ3ZjQwNmJjZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAg
UmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICAgICAgaWYgKHJlbmRlclZpZXcubXVsdGlDb2x1bW5GbG93KCkpCiAgICAgICAgICAgICBy
ZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKGRvY3VtZW50U3R5bGUp
OwogICAgICAgICBpZiAocmVuZGVyVmlldy5wYWdlKCkucGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxl
ZCgpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExpbmVHcmlkKCItd2Via2l0LWRl
ZmF1bHQtcGFnaW5hdGlvbi1ncmlkIik7CisgICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExp
bmVHcmlkKCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1ncmlkIl9zKTsKICAgICAgICAgICAg
IGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXA6OkNvbnRhaW4pOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApp
bmRleCAzYWQyNGU1ZmNjOTFjYjJmODhlMjAyNTRhYmFkNjAxNDg3MTkyODhkLi42M2JjZDFhODBl
Zjc4NTMzOTQyNDIxMzBkZDJkZjg5MDljMjIzZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZWY8Q1NTRm9udEZh
Y2VTcmNWYWx1ZT4gU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpzcmNWYWx1ZSgpIGNvbnN0CiB7CiAg
ICAgYXV0byBzcmMgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGUoZ2V0QXR0cmlidXRlKFNW
R05hbWVzOjpocmVmQXR0ciwgWExpbmtOYW1lczo6aHJlZkF0dHIpLCBMb2FkZWRGcm9tT3BhcXVl
U291cmNlOjpObyk7CiAgICAgQXRvbVN0cmluZyB2YWx1ZShhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGZvcm1hdEF0dHIpKTsKLSAgICBzcmMuZ2V0KCkuc2V0Rm9ybWF0KHZhbHVlLmlz
RW1wdHkoKSA/ICJzdmciIDogdmFsdWUpOyAvLyBEZWZhdWx0IGZvcm1hdAorICAgIHNyYy5nZXQo
KS5zZXRGb3JtYXQodmFsdWUuaXNFbXB0eSgpID8gInN2ZyJfcyA6IHZhbHVlKTsgLy8gRGVmYXVs
dCBmb3JtYXQKICAgICByZXR1cm4gc3JjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKaW5kZXggYTAxZjZiYWRhMWMxZDZjMjVmODIwZjcyNmM4ZWNlZTgxODJlY2I2YS4uNmU1
YzdjNzRjOGU3Y2NlN2Q5ODM3NThhZGQ0NTJiZmVmYTRhMDE5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6
dHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoU1ZHRWxlbWVudCYgc2hhZG93RWxl
bWVuCiAgICAgICAgIC8vIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgcHJv
dmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UgYXR0cmlidXRlcwogICAgICAg
ICAvLyB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBnZW5lcmF0ZWQgJ3N2ZycuIElmIGF0dHJp
YnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgbm90IHNwZWNpZmllZCwKICAgICAgICAgLy8g
dGhlIGdlbmVyYXRlZCAnc3ZnJyBlbGVtZW50IHdpbGwgdXNlIHZhbHVlcyBvZiAxMDAlIGZvciB0
aGVzZSBhdHRyaWJ1dGVzLgotICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdO
YW1lczo6d2lkdGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0
cmluZyh3aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSIpOwotICAgICAgICBzaGFkb3dF
bGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgaGVpZ2h0KCkudmFsdWVJ
blNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhlaWdodCgpLnZhbHVlQXNTdHJpbmcoKSkg
OiAiMTAwJSIpOworICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6
d2lkdGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8gQXRvbVN0cmluZyh3
aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSJfcyk7CisgICAgICAgIHNoYWRvd0VsZW1l
bnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWlnaHQoKS52YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0cmluZygpKSA6ICIx
MDAlIl9zKTsKICAgICB9IGVsc2UgaWYgKGlzPFNWR1NWR0VsZW1lbnQ+KHNoYWRvd0VsZW1lbnQp
KSB7CiAgICAgICAgIC8vIFNwZWMgKDx1c2U+IG9uIDxzdmc+KTogSWYgYXR0cmlidXRlcyB3aWR0
aCBhbmQvb3IgaGVpZ2h0IGFyZSBwcm92aWRlZCBvbiB0aGUgJ3VzZScgZWxlbWVudCwgdGhlbiB0
aGVzZQogICAgICAgICAvLyB2YWx1ZXMgd2lsbCBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBh
dHRyaWJ1dGVzIG9uIHRoZSAnc3ZnJyBpbiB0aGUgZ2VuZXJhdGVkIHRyZWUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKaW5kZXggZTdhZTFhOGM2OGIw
MDE3MTNkMTc3NWEyNDJlOTRiYzYxNjBmZmQ1Zi4uMWRhMTE5NGJhOGVmZDBlYTA0YWYyNTNkNDE5
YjI2OTE0YWQwZjgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9GZXRj
aEV2ZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKIAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIKKyNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNGZXRj
aFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDIsNyArNDMsNyBAQCBSZWY8
RmV0Y2hFdmVudD4gRmV0Y2hFdmVudDo6Y3JlYXRlRm9yVGVzdGluZyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQogewogICAgIEZldGNoRXZlbnQ6OkluaXQgaW5pdDsKICAgICBpbml0
LnJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCB7IH0sIEZldGNoSGVhZGVy
czo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgeyB9KSwgeyB9LCB7IH0s
IHsgfSk7Ci0gICAgcmV0dXJuIEZldGNoRXZlbnQ6OmNyZWF0ZSgqY29udGV4dC5nbG9iYWxPYmpl
Y3QoKSwgImZldGNoIiwgV1RGTW92ZShpbml0KSwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKKyAg
ICByZXR1cm4gRmV0Y2hFdmVudDo6Y3JlYXRlKCpjb250ZXh0Lmdsb2JhbE9iamVjdCgpLCBldmVu
dE5hbWVzKCkuZmV0Y2hFdmVudCwgV1RGTW92ZShpbml0KSwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVz
KTsKIH0KIAogc3RhdGljIGlubGluZSBSZWY8RE9NUHJvbWlzZT4gcmV0cmlldmVIYW5kbGVkUHJv
bWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZlB0cjxET01Qcm9taXNl
PiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IDZkZjNmMGM5M2VmNDU2
MGIyOTc2M2Q4YjE0ZmQyODU3MjhkYmM3NjguLmVmNGNkZWFiZGU0OWRlYzQwNDJhNmY4MzI1MGI2
ZTJmNzcyNjAxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC04MywxMCArODMsMTAg
QEAgdm9pZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxpdGVyYWwgdHlwZVN0
cmluZywgVGV4dFBvc2l0aW9uIHBvc2l0aW8KIAogc3RhdGljIGlubGluZSBSZWY8RWxlbWVudD4g
Y3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlcykKIHsKLSAgICBSZWY8RWxlbWVudD4gcmVwb3J0RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCAicGFyc2Vy
ZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUpOworICAgIFJlZjxFbGVtZW50PiByZXBv
cnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWROYW1lKG51bGxBdG9t
KCksICJwYXJzZXJlcnJvciJfcywgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVlKTsKIAogICAgIFZl
Y3RvcjxBdHRyaWJ1dGU+IHJlcG9ydEF0dHJpYnV0ZXM7Ci0gICAgcmVwb3J0QXR0cmlidXRlcy5h
cHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3aGl0ZS1zcGFjZTog
cHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAwIDFlbTsgbWFyZ2lu
OiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayIpKTsKKyAgICByZXBv
cnRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlzcGxheTogYmxvY2s7
IHdoaXRlLXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBhZGRpbmc6IDAgMWVt
IDAgMWVtOyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsgY29sb3I6IGJsYWNr
Il9zKSk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyU2V0QXR0cmlidXRlcyhyZXBvcnRBdHRy
aWJ1dGVzKTsKIAogICAgIGF1dG8gaDMgPSBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShoM1Rh
ZywgZG9jdW1lbnQpOwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5saW5lIFJlZjxFbGVtZW50
PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1bWVudCwgY29ucwog
CiAgICAgYXV0byBmaXhlZCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAg
IFZlY3RvcjxBdHRyaWJ1dGU+IGZpeGVkQXR0cmlidXRlczsKLSAgICBmaXhlZEF0dHJpYnV0ZXMu
YXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1z
aXplOjEycHgiKSk7CisgICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVB
dHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4Il9zKSk7CiAgICAgZml4
ZWQtPnBhcnNlclNldEF0dHJpYnV0ZXMoZml4ZWRBdHRyaWJ1dGVzKTsKICAgICByZXBvcnRFbGVt
ZW50LT5wYXJzZXJBcHBlbmRDaGlsZChmaXhlZCk7CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lk
IFhNTEVycm9yczo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQogI2lmIEVOQUJMRShYU0xUKQog
ICAgIGlmIChtX2RvY3VtZW50LnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKICAgICAgICAg
VmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKLSAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQo
QXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3JtYWwiKSk7CisgICAgICAgIGF0
dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTogbm9ybWFs
Il9zKSk7CiAgICAgICAgIGF1dG8gcGFyYWdyYXBoID0gSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNy
ZWF0ZShtX2RvY3VtZW50KTsKICAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJTZXRBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlckFwcGVuZENoaWxkKG1fZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0ZWQgYXMgdGhlIHJl
c3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVy
cyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiJfcykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IDIzNWZhMzg1ZGFkNjFlNWNiN2FiYWIwMTlhODk5
YjMxZDNhMGIzNjkuLjAyZWU5OTBjZTA3ZGEwYmYzOTMwNGFiMWRiNzJhZTA3NGUxYzFhNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBY
TUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKQogewogICAgIFN0cmlu
ZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhYTUxWaWV3
ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKICAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNj
cmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShzY3JpcHRT
dHJpbmcpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3Jp
bmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVwYXJlV2ViS2l0WE1M
Vmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZlIGFueSBzdHlsZSBp
bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0cmVlIGlzIHNob3du
IGJlbG93LicpOyIpKSk7CisgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3JpcHQoKS5ldmFsdWF0
ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmluZygicHJlcGFyZVdl
YktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBhbnkg
c3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9jdW1lbnQgdHJlZSBp
cyBzaG93biBiZWxvdy4nKTsiX3MpKSk7CiAKICAgICBTdHJpbmcgY3NzU3RyaW5nID0gU3RyaW5n
SW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6ZW9mKFhNTFZpZXdl
cl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzc1N0
cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAppbmRleCBkMDFhMjEwNjllNTUzYTdiZmU5ZjhjMjg1OTg5Mzk4YTFjMTU5YWNmLi42OTg2
ODVhNTVhN2MyMGVmM2NhMWExZGU0NmNlNDc4ZTIzNzFiYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vR09iamVjdEV2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL0RPTS9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
dm9pZCBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6Z29iamVjdERlc3Ryb3llZCgpCiAgICAgLy8gYW5k
IGxhdGVyIHVzZS1hZnRlci1mcmVlIHdpdGggdGhlIG1faGFuZGxlciA9IDA7IGFzc2lnbm1lbnQu
CiAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3RlbmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
Ci0gICAgbV9jb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKG1fZG9tRXZlbnROYW1lLmRh
dGEoKSwgKnRoaXMsIG1fY2FwdHVyZSk7CisgICAgbV9jb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExp
c3RlbmVyKEF0b21TdHJpbmc6OmZyb21MYXRpbjEobV9kb21FdmVudE5hbWUuZGF0YSgpKSwgKnRo
aXMsIG1fY2FwdHVyZSk7CiAgICAgbV9jb3JlVGFyZ2V0ID0gbnVsbHB0cjsKICAgICBtX2hhbmRs
ZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0dPYmplY3RFdmVudExpc3RlbmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vR09iamVjdEV2ZW50
TGlzdGVuZXIuaAppbmRleCA5MTdlZDg2ZDg3OGRmYjNmMTc3MzUxYzZkZjM4ZGFkNjg4ODE2YmVl
Li43NGJlMTU4YWRjZTU0MTI0MjRkYjYzNDM1ZjVmMjJjYWM3Yzg1ZjQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vR09iamVj
dEV2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vR09iamVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMzYsMTMgKzM2LDEz
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhZGRFdmVudExpc3RlbmVyKEdPYmplY3QqIHRh
cmdldCwgV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQsIGNvbnN0IGNoYXIqIGRvbUV2
ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2FwdHVyZSkKICAgICB7CiAgICAg
ICAgIFJlZjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIoYWRvcHRSZWYoKm5ldyBHT2Jq
ZWN0RXZlbnRMaXN0ZW5lcih0YXJnZXQsIGNvcmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxl
ciwgdXNlQ2FwdHVyZSkpKTsKLSAgICAgICAgcmV0dXJuIGNvcmVUYXJnZXQtPmFkZEV2ZW50TGlz
dGVuZXIoZG9tRXZlbnROYW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CisgICAg
ICAgIHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKEF0b21TdHJpbmc6OmZyb21M
YXRpbjEoZG9tRXZlbnROYW1lKSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAg
IH0KIAogICAgIHN0YXRpYyBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0
LCBXZWJDb3JlOjpFdmVudFRhcmdldCogY29yZVRhcmdldCwgY29uc3QgY2hhciogZG9tRXZlbnRO
YW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgYm9vbCB1c2VDYXB0dXJlKQogICAgIHsKICAgICAgICAg
R09iamVjdEV2ZW50TGlzdGVuZXIga2V5KHRhcmdldCwgY29yZVRhcmdldCwgZG9tRXZlbnROYW1l
LCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSAgICAgICAgcmV0dXJuIGNvcmVUYXJnZXQtPnJlbW92
ZUV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBrZXksIHVzZUNhcHR1cmUpOworICAgICAgICBy
ZXR1cm4gY29yZVRhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihBdG9tU3RyaW5nOjpmcm9tTGF0
aW4xKGRvbUV2ZW50TmFtZSksIGtleSwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IHZvaWQgZ29iamVjdERlc3Ryb3llZENhbGxiYWNrKEdPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciwgR09iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IGY2MmRjN2M4
MzdmMDJmNzAxMGM4MmQ5NzkwZTJiYWFmMjE0ZTFkMjEuLjZiMjg1ODA1OTRlZTM1ZTE1MjkzY2Mz
N2RmMDA4MzBjMWUxYmEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC01NCw3
ICs1NCw3IEBAIFBERlBsdWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxk
KCkKIFJlZjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCgpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246
OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHR5
cGVBdHRyLCAicGFzc3dvcmQiKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIs
ICJwYXNzd29yZCJfcyk7CiAgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAgIHJldHVybiBlbGVt
ZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBD
VGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0
aW5nQVBJLmNwcAppbmRleCA3M2ZjMDEzNDJjOGI3ZjQxNGNjOGRjMTVjOGJjN2Q1ZDk5YjQ3NWM0
Li41OGZhM2U0MjFjNzEwZGVkZWZmZjMxZGUyNGNkZWM0OGI5ZWViYzY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMjA0
Myw3ICsyMDQzLDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6bWVzc2FnZXMoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW4KICAgICAgICAgZGljdGlvbmFy
eS0+cHV0RGlyZWN0KHZtLCBpc1N5bmNJZGVudCwgSlNDOjpqc0Jvb2xlYW4obWVzc2FnZUlzU3lu
YyhuYW1lKSkpOyAgICAgICAgICAgIAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAKLSAgICAgICAgbWVzc2FnZXNPYmpl
Y3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyh2bSwgZGVzY3Jp
cHRpb24obmFtZSkpLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgbWVzc2FnZXNPYmplY3QtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tTGF0aW4xKHZtLCBkZXNjcmlwdGlvbihuYW1l
KSksIGRpY3Rpb25hcnkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDE0MGVjYWRiYTdm
N2NlYTY2MGExMTcwYTU5YTgxNWU0ZTcwNmY1ZTQuLjRlMmU5YmE4MjViMGJhYmI0OTdjMGQ5OWZj
ODk1YzVkMDAzNTdhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zNDQyLDcgKzM0NDIsNyBAQCBzdGQ6Om9wdGlvbmFs
PEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+IFdlYlBhZ2U6OmZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24oKQogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzVGVsZXBob25lRmllbGQoKSkKICAg
ICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBlOjpQaG9uZTsKICAg
ICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc051bWJlckZpZWxkKCkpCi0gICAgICAgICAgICBpbmZv
cm1hdGlvbi5lbGVtZW50VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwYXR0ZXJuIikgPT0g
IlxcZCoiIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwYXR0ZXJuIikgPT0gIlswLTldKiIgPyBJ
bnB1dFR5cGU6Ok51bWJlclBhZCA6IElucHV0VHlwZTo6TnVtYmVyOworICAgICAgICAgICAgaW5m
b3JtYXRpb24uZWxlbWVudFR5cGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnBh
dHRlcm5BdHRyKSA9PSAiXFxkKiIgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpw
YXR0ZXJuQXR0cikgPT0gIlswLTldKiIgPyBJbnB1dFR5cGU6Ok51bWJlclBhZCA6IElucHV0VHlw
ZTo6TnVtYmVyOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzRGF0ZVRpbWVMb2NhbEZpZWxk
KCkpCiAgICAgICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElucHV0VHlwZTo6RGF0
ZVRpbWVMb2NhbDsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc0RhdGVGaWVsZCgpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ2N2NlYjli
YTFhMjY1Y2M5NTM3ZmEwZjA4MmYwYTljODE0NzYwMTIuLjhkNzZkMmI0NTJmMGY4M2IxN2ExNTAy
ZmMyMzQwMjNkNTM4NzZkOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFy
Kikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorCiAyMDIyLTA0LTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbIGlPUyBpUGhvbmUgMTIgXSBmYXN0L2hpZHBpICYgZmFzdC9sYXllcnMvaGlkcGkg
dGVzdHMgYXJlIGZsYWt5IHRleHQvaW1hZ2UgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcAppbmRleCBiZTc0MTU0ZTM4OGJhN2M1NjQ2MWVjOTZi
YTcwMDNlMWQ5MmI2OGVhLi4wM2YxOWIwNDEzMmU1YjUwYzNkODRmZmZlZTg3YTZhYTU4ZWM5YmRh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcApAQCAt
NDksNyArNDksNyBAQCBURVNUKFdURiwgQXRvbVN0cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWxVbmlx
dWVuZXNzKQogICAgIEF0b21TdHJpbmcgc3RyaW5nMigiVGVtcGxhdGUgTGl0ZXJhbCIsIEF0b21T
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBBU1NFUlRfRVEoc3RyaW5nMS5pbXBs
KCksIHN0cmluZzIuaW1wbCgpKTsKIAotICAgIEF0b21TdHJpbmcgc3RyaW5nMygiVGVtcGxhdGUg
TGl0ZXJhbCIpOworICAgIEF0b21TdHJpbmcgc3RyaW5nMygiVGVtcGxhdGUgTGl0ZXJhbCJfcyk7
CiAgICAgQVNTRVJUX0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmczLmltcGwoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCmlu
ZGV4IGI0NDJlNDM2OGMwM2RiN2JhNjMwYzdhZWEyYTk4MzVkMzQ4YjQ0YjguLjAyYjYxNjRiZDU5
ZTlmMjFmZDRjZjg3OTZmOGZjYjQ5ZmU2YmJlZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdURiwgU3RyaW5nT3BlcmF0b3JzKQogewogICAg
IFN0cmluZyBzdHJpbmcoIlN0cmluZyJfcyk7Ci0gICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nKCJB
dG9tU3RyaW5nIik7CisgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nKCJBdG9tU3RyaW5nIl9zKTsK
ICAgICBBU0NJSUxpdGVyYWwgbGl0ZXJhbCB7ICJBU0NJSUxpdGVyYWwiX3MgfTsKIAogICAgIFN0
cmluZyBzdHJpbmdWaWV3QmFja2luZyB7ICJTdHJpbmdWaWV3Il9zIH07CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCmluZGV4IGJjZjAzMjk1NWJlMmViZGZmZTY5M2Q4YThiYmQ4MmJmOTQyZjlkOTkuLjM4
MGYzNDBiMWE0MzFmMjQ3MmMwMmExMWI5NThhOGJkYTY5MmYwNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIFRFU1RfRihDb21wbGV4VGV4dENvbnRy
b2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5SVEwpCiB7CiAgICAgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAg
ICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250
KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtOTQsNyArOTQs
NyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRo
TGVmdFJ1bkluUlRMKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxB
ZHZhbmNlSW5SVEwpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsK
LSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24u
c2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXpl
KDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBm
b250LnVwZGF0ZSgpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRy
b2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJv
bGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKIHsKICAgICBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiTHVjaWRhR3JhbmRlIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGFH
cmFuZGUiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7CiAgICAgRm9u
dENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51cGRhdGUoKTsK
QEAgLTE4MSw3ICsxODEsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5p
dGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxl
clRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlv
biBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYUdyYW5k
ZSIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIl9zKTsKICAg
ICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZvbnQo
V1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yMTgsNyArMjE4
LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5M
VFIpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJU
TE5vT3JpZ2lucykKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwot
ICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5z
ZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUo
NDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZv
bnQudXBkYXRlKCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJv
bGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiBURVNUX0YoQ29tcGxleFRl
eHRDb250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lvbikKIHsKICAgICBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMi
KTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlw
dGlvbi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShk
ZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgVEVT
VF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24pCiBURVNUX0YoQ29t
cGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVydGljYWxBZHZhbmNlcykKIHsKICAgICBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWls
eSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAg
ICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQo
V1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0zMzgsNyArMzM4
LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRpY2FsQWR2YW5jZXMp
CiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVG90YWxXaWR0aFdpdGhKdXN0aWZp
Y2F0aW9uKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAg
ZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4MCk7
CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9udC51
cGRhdGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3Bw
CmluZGV4IDJmMjhkNGU2NjUzMzBmYzY4NjNlNDFlMDdlZDdiYzdiZGIwZTQ0NjQuLjQwNmQwODcz
YWRmOWQ2YjMxZTFiYWFlOGM3NWEwZDdkZTc0YWQyNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHND
Ry5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtOTgsNyArOTgsNyBAQCBURVNUKEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgVGV4dCkKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0IGN0eChwcmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAKICAgICBGb250
Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZh
bWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsK
ICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRDYXNjYWRlIGZv
bnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7Cg==
</data>
<flag name="commit-queue"
          id="486134"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457504</attachid>
            <date>2022-04-12 20:49:16 -0700</date>
            <delta_ts>2022-04-13 07:47:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239127-20220412204915.patch</filename>
            <type>text/plain</type>
            <size>120385</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5mZTAwZDRmMTJiZGY5MjMx
NTBhMmQ4ZjU4MTIxNDEzODYyZDkyNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBBUEkvSlNCYXNlLmNwcDoKKyAgICAgICAgKEpTR2V0TWVtb3J5VXNh
Z2VTdGF0aXN0aWNzKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXIuaDoKKyAgICAgICAg
KiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6
OmZyb21MYXRpbjEpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROb25SZWlmaWVkU3Rh
dGljUHJvcGVydHlOYW1lcyk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmVkMzlkODIzNWExZDMzNmRiZmE0
N2NiOGEyYWYyYjI0MDIzNDVhYS4uNWY2YTg0YzhhMDI3ZGNkZmU5ZGQzMWFmODAzZjYwMDU5ZmRm
OTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikg
d2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmNwcDoK
KyAgICAgICAgKFdURjo6QXRvbVN0cmluZzo6aW5pdCk6CisgICAgICAgICogd3RmL3RleHQvQXRv
bVN0cmluZy5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6b3Bl
cmF0b3IhPSk6CisKIDIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBSZWR1Y2UgdXNlIG9mIHVubmVjZXNzYXJ5IGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjViZmNlY2I3Y2I3NzE0ZDNmYmY1
YmUwNzIxYzJlZmJlNDljNjNjLi43ZTgyMGNmYWQ3MjgzZGQ5MWZhNTEzMjI3ZTAyNGM3NmRhN2M3
MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisyMDIyLTA0LTEyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBBdG9tU3RyaW5nKGNvbnN0
IGNoYXIqKSB3aXRoIEF0b21TdHJpbmc6OmZyb21MYXRpbjEoY29uc3QgY2hhciopCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkxMjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJl
Z2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKiBhbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6
Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRJbmxpbmVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoV2ViS2l0SW1hZ2VS
ZWFkeUV2ZW50Rm9yVGVzdGluZyk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHNldWRvRWxlbWVudFRhZ05hbWUpOgorICAgICAgICAqIGVkaXRp
bmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFuRWxlbWVudCk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp3aWxsVW5hcHBseUVkaXRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1
bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d2lsbFJlYXBwbHlF
ZGl0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBsaWVkRWRpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnF1b3RlRnJhZ21lbnRGb3JQYXN0aW5nKToK
KyAgICAgICAgKiBlZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5oOgorICAgICAgICAqIGVkaXRpbmcv
SW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0ZGVu
dENvbW1hbmQ6OkluZGVudE91dGRlbnRDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1
ZGlvRWxlbWVudDo6Y3JlYXRlRm9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKToKKyAgICAgICAgKiBo
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdW1tYXJ5U2xv
dE5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnNldFRyYW5zbGF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVNo
b3VsZENvbnRpbnVlQWZ0ZXJOZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmxheW91dFNpemVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVDbGFzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwvUERGRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50
U3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50OjppbmplY3RTdHlsZUFu
ZENvbnRlbnRTY3JpcHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9yZWlnbkF0dHJpYnV0ZXNNYXApOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2VydEZha2VQcmVFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNh
cHRpb25NZW51T2ZmSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNhcHRpb25N
ZW51QXV0b21hdGljSXRlbSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3VlQXR0cmlidXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmN1ZUJhY2tncm91bmRBdHRyaWJ1dE5hbWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svV2ViVlRU
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFtZSk6CisgICAg
ICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6OmdldENvbXB1dGVkUHJvcGVydGllcyk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlMYWJlbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzeXN0ZW1Gb250KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVsZW1lbnRTdHlsZVRl
eHQgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
QWNjZXNzaWJpbGl0eVByb3BlcnRpZXMpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CisgICAg
ICAgICogbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudDo6aXNGbG93Q29udGVudCk6CisgICAgICAg
ICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1F1
aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnNob3VsZFRvb2x0aXBQcmV2ZW50
RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtz
OjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRhcmdldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjppc0tpbmphTG9naW5BdmF0YXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzU3Rv
cmFnZUFjY2Vzc1F1aXJrRG9tYWluQW5kRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjppc0JC
Q1BvcFVwUGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnRyaWdnZXJP
cHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW06CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01ldGFkYXRhVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRleHRU
cmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
OjpkcmF3UmVwYWludEluZGljYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRs
ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6Cisg
ICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3Jp
cHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNw
cDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
Rm9udEZhY2VVcmlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNlVXJp
RWxlbWVudDo6c3JjVmFsdWUgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0
ZXNUb1RhcmdldENsb25lIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvRmV0Y2hF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEV2ZW50OjpjcmVhdGVGb3JUZXN0aW5n
KToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVhIVE1MUGFyc2VyRXJyb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRXJyb3JzOjpp
bnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1sL1hNTFRyZWVWaWV3ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MVHJlZVZpZXdlcjo6dHJhbnNmb3JtRG9jdW1lbnRUb1Ry
ZWVWaWV3KToKKwogMjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJ
REwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNzZhMWI5N2Y0ZjZiOGY4OWE5MmRhYWRlMGVlZmMzNWRiM2VkYWNlOS4u
MzE5M2RkNTcyNDY5MjI1MzI5YjExYTlkNThjNmJjYmNkNTE4Y2NkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wNC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5n
Ojpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3Jk
RmllbGQubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0
ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVz
dGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjptZXNz
YWdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKToKKwog
MjAyMi0wNC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIEhvb2sgdXAgZGV2aWNlLnF1ZXVlIHRvIHRoZSBJREwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNCYXNlLmNwcAppbmRleCA5M2VjNzA1YTBmMGI1NTAyNzVlYmY0NjhmN2Nk
ZTdmN2VjZWFlYTNkLi5jZTEzMjNkNTYyNmJhMGIwYTVkZWVjNDZlZjJmZjBjZTcyNzZhZjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgSlNP
YmplY3RSZWYgSlNHZXRNZW1vcnlVc2FnZVN0YXRpc3RpY3MoSlNDb250ZXh0UmVmIGN0eCkKICAg
ICBhdXRvIHR5cGVDb3VudHMgPSB2bS5oZWFwLm9iamVjdFR5cGVDb3VudHMoKTsKICAgICBKU09i
amVjdCogb2JqZWN0VHlwZUNvdW50cyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgZm9yIChhdXRvJiBpdCA6ICp0eXBlQ291bnRzKQotICAgICAgICBvYmplY3RUeXBl
Q291bnRzLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21DU3RyaW5nKHZtLCBpdC5rZXkp
LCBqc051bWJlcihpdC52YWx1ZSkpOworICAgICAgICBvYmplY3RUeXBlQ291bnRzLT5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21MYXRpbjEodm0sIGl0LmtleSksIGpzTnVtYmVyKGl0LnZh
bHVlKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBvYmplY3QtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImhlYXBTaXplIl9zKSwganNOdW1iZXIodm0uaGVhcC5zaXplKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAppbmRleCBiZTUyNjUxYjMzM2Qw
MmJkMWQzNDNlZDlkYTAwNWY3NDMzMjExNmU4Li4zNmNhNzMwZGZlMjEyMTUzMDNhZDRhNzY4NTYy
YTgxOTQ0NjcwMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b21TdHJpbmcoVk0mLCBjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIElkZW50aWZpZXIg
ZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwqKTsKICAgICBzdGF0aWMgSWRlbnRpZmllciBm
cm9tU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPExDaGFyPiYgY2hhcmFjdGVycykgeyByZXR1
cm4gZnJvbVN0cmluZyh2bSwgY2hhcmFjdGVycy5kYXRhKCksIGNoYXJhY3RlcnMuc2l6ZSgpKTsg
fQotICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21DU3RyaW5nKFZNJiwgY29uc3QgY2hhciopOwor
ICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21MYXRpbjEoVk0mLCBjb25zdCBjaGFyKik7CiAKICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tVWlkKFZNJiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVVpZChjb25zdCBQcml2YXRlTmFtZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmgKaW5k
ZXggMjk1MmE4NzFkZTBmYjliNDIxYmIwZDExMTcyMTkzNjBkZjFmYjk2My4uOTY3MDZkNmNlZTNl
OTFkNDM3Y2Y3YWUzNmI2NDAyYzY5ZDE4NmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xMjAsOSArMTIwLDkgQEAgaW5s
aW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIFN5bWJvbEltcGwq
IHN5bWJvbEltcGwpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIHN5bWJvbEltcGwpOwogfQog
Ci1pbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tQ1N0cmluZyhWTSYgdm0sIGNvbnN0
IGNoYXIqIHMpCitpbmxpbmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tTGF0aW4xKFZNJiB2
bSwgY29uc3QgY2hhciogcykKIHsKLSAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgQXRvbVN0cmlu
ZyhzKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIEF0b21TdHJpbmc6OmZyb21MYXRpbjEo
cykpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVlKFZNJiB2bSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCBhZWFjYjJmZTBjYTBlNTY5MDk5NjBlOGI4ZGNlZDZiMmQyZDhk
OTdhLi4yZTlmYzUzMzE5MWEzNzc0Mjc2ZjA1YWZjOGFmODY3M2Q1ZjU5ZmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yNjY1LDcgKzI2NjUsNyBA
QCB2b2lkIEpTT2JqZWN0OjpyZWlmeUFsbFN0YXRpY1Byb3BlcnRpZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIAogICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKmhhc2hUYWJsZSkg
ewogICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICAgICAgICAgIGF1dG8ga2V5
ID0gSWRlbnRpZmllcjo6ZnJvbUNTdHJpbmcodm0sIHZhbHVlLm1fa2V5KTsKKyAgICAgICAgICAg
IGF1dG8ga2V5ID0gSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgdmFsdWUubV9rZXkpOwogICAg
ICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gZ2V0RGlyZWN0T2Zmc2V0KHZtLCBrZXks
IGF0dHJpYnV0ZXMpOwogICAgICAgICAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAg
ICAgICAgICAgICAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0eSh2bSwgaGFzaFRhYmxlLT5jbGFzc0Zv
clRoaXMsIGtleSwgdmFsdWUsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKaW5kZXggNzFlZDE0M2ZiMGQxZGU2MDZiYTRlYTk1YWM1
M2QyNTQwMDIyYTQyNC4uMjBlNDU2MzRkNWQ2MzQwMTc4YzlmZWY4YThkZmE1NzIwZDhiNjJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgK
QEAgLTczNyw3ICs3MzcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmdldE5vblJl
aWZpZWRTdGF0aWNQcm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYQogCiAgICAgICAgIGZv
ciAoYXV0byBpdGVyID0gdGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gdGFibGUtPmVuZCgpOyArK2l0
ZXIpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09IERvbnRFbnVtUHJvcGVydGllc01vZGU6Oklu
Y2x1ZGUgfHwgIShpdGVyLT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKQotICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21D
U3RyaW5nKHZtLCBpdGVyLmtleSgpKSk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5h
ZGQoSWRlbnRpZmllcjo6ZnJvbUxhdGluMSh2bSwgaXRlci5rZXkoKSkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggZGFjNmY1MjM3MjIwMDJl
MDE5YjgwYTU0NzNjMGZlMGE0YTcwZWI1YS4uNTRlNWIxNTZhMjFiZWIyMDk1NjQ4NTU0Y2E3YzRm
YTA3Y2EzYTFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuY3BwCkBAIC0xMDMsMTMgKzEw
MywxMyBAQCBBdG9tU3RyaW5nIEF0b21TdHJpbmc6Om51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcg
bnVtYmVyKQogQXRvbVN0cmluZyBBdG9tU3RyaW5nOjpudW1iZXIoZmxvYXQgbnVtYmVyKQogewog
ICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmcobnVtYmVyLCBidWZmZXIpOworICAgIHJldHVybiBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKG51
bWJlclRvU3RyaW5nKG51bWJlciwgYnVmZmVyKSk7CiB9CiAKIEF0b21TdHJpbmcgQXRvbVN0cmlu
Zzo6bnVtYmVyKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVm
ZmVyOwotICAgIHJldHVybiBudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1ZmZlcik7CisgICAgcmV0
dXJuIEF0b21TdHJpbmc6OmZyb21MYXRpbjEobnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIp
KTsKIH0KIAogQXRvbVN0cmluZyBBdG9tU3RyaW5nOjpmcm9tVVRGOEludGVybmFsKGNvbnN0IGNo
YXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdG9t
U3RyaW5nOjppbml0KCkKICAgICAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAg
bnVsbEF0b21EYXRhLmNvbnN0cnVjdCgpOwotICAgICAgICBlbXB0eUF0b21EYXRhLmNvbnN0cnVj
dCgiIik7CisgICAgICAgIGVtcHR5QXRvbURhdGEuY29uc3RydWN0KEF0b21TdHJpbmc6OmZyb21M
YXRpbjEoIiIpKTsKIAogICAgICAgICAvLyBXaGVuIHN0YXJ0aW5nIFdlYlRocmVhZCB2aWEgU3Rh
cnRXZWJUaHJlYWQgZnVuY3Rpb24sIHdlIGhhdmUgc3BlY2lhbCBwZXJpb2QgYmV0d2VlbiB0aGUg
cHJvbG9ndWUgb2YgU3RhcnRXZWJUaHJlYWQgYW5kIHNwYXduaW5nIFdlYlRocmVhZCBhY3R1YWxs
eS4KICAgICAgICAgLy8gSW4gdGhpcyBwZXJpb2QsIGBpc01haW5UaHJlYWQoKWAgcmV0dXJucyBm
YWxzZSBldmVuIGlmIHRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBzaW5jZSBXZWJU
aHJlYWQgaXMgbm93IGVuYWJsZWQgYW5kIHdlIGFyZSBub3QgdGFraW5nIGEgV2ViVGhyZWFkIGxv
Y2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IDM1MDYzOWRjNWQ2ZmEyODMxNzRlNWMx
NDYxYjdkNDVjYjQyMDU3NTkuLjc2ZDg3NzdkMDkzMjM4NTNkNWE2NjczZTA0YmI3MDJjNTU5Zjk3
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC0zOSwxMSArMzksMTIgQEAgcHVibGlj
OgogCiAgICAgQXRvbVN0cmluZygpOwogICAgIEF0b21TdHJpbmcoY29uc3QgTENoYXIqKTsKLSAg
ICBBdG9tU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICBBdG9tU3RyaW5nKGNvbnN0IFVDaGFyKik7CiAKKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBBdG9tU3RyaW5nIGZyb21MYXRpbjEoY29uc3QgY2hhciogY2hhcmFjdGVycykg
eyByZXR1cm4gQXRvbVN0cmluZyhjaGFyYWN0ZXJzKTsgfQorCiAgICAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5PgogICAgIGV4cGxpY2l0IEF0b21TdHJpbmcoY29uc3QgVmVjdG9yPFVD
aGFyLCBpbmxpbmVDYXBhY2l0eT4mIGNoYXJhY3RlcnMpCiAgICAgICAgIDogbV9zdHJpbmcoQXRv
bVN0cmluZ0ltcGw6OmFkZChjaGFyYWN0ZXJzLmRhdGEoKSwgY2hhcmFjdGVycy5zaXplKCkpKQpA
QCAtMTY3LDYgKzE2OCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIGV4cGxp
Y2l0IEF0b21TdHJpbmcoY29uc3QgY2hhciopOworCiAgICAgZW51bSBjbGFzcyBDYXNlQ29udmVy
dFR5cGUgeyBVcHBlciwgTG93ZXIgfTsKICAgICB0ZW1wbGF0ZTxDYXNlQ29udmVydFR5cGU+IEF0
b21TdHJpbmcgY29udmVydEFTQ0lJQ2FzZSgpIGNvbnN0OwogCkBAIC0xODAsNiArMTgzLDcgQEAg
c3RhdGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykgPT0gc2l6ZW9mKFN0cmluZyksICJBdG9t
U3RyaW5nIGFuZCBTdHJpbmcgbXVzdAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9t
U3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSA9PSBiLmlt
cGwoKTsgfQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBMQ2hhciop
OwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBjaGFy
KiBiKSB7IHJldHVybiBXVEY6OmVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oYikpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcm
IGEsIEFTQ0lJTGl0ZXJhbCBiKSB7IHJldHVybiBXVEY6OmVxdWFsKGEuaW1wbCgpLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkpKTsgfQogaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8VUNoYXI+JiBiKSB7
IHJldHVybiBhLmltcGwoKSAmJiBlcXVhbChhLmltcGwoKSwgYi5kYXRhKCksIGIuc2l6ZSgpKTsg
fSAgICAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJl
dHVybiBiID09IGE7IH0KQEAgLTE5Miw2ICsxOTYsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsg
fQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJp
bmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMQ2hh
ciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShiID09IGEpOyB9CitpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0ZXJhbCBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJl
dHVybiAhKGIgPT0gYSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VUNoYXI+JiBhLCBjb25z
dCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKaW5kZXggOGNkYmNhNzdhZjM4MzA3YjJiNGMwYTRkMjVhMWYwZTkxMWFiYjFkZS4uNjI0OTJh
OTA2MDU0YjVkMmNmOGU1OTIxYmI5YzQ4ZWY3M2YzNGE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CkBAIC0yMjYsOSArMjI2LDkgQEAgSW5pdERhdGFSZWdpc3RyeSYgSW5pdERhdGFSZWdpc3RyeTo6
c2hhcmVkKCkKIAogSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgpCiB7Ci0gICAg
cmVnaXN0ZXJJbml0RGF0YVR5cGUoImtleWlkcyIsIHsgc2FuaXRpemVLZXlpZHMsIGV4dHJhY3RL
ZXlJRHNLZXlpZHMgfSk7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUoImNlbmMiLCB7IHNhbml0
aXplQ2VuYywgZXh0cmFjdEtleUlEc0NlbmMgfSk7Ci0gICAgcmVnaXN0ZXJJbml0RGF0YVR5cGUo
IndlYm0iLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dlYk0gfSk7CisgICAgcmVnaXN0
ZXJJbml0RGF0YVR5cGUoImtleWlkcyJfcywgeyBzYW5pdGl6ZUtleWlkcywgZXh0cmFjdEtleUlE
c0tleWlkcyB9KTsKKyAgICByZWdpc3RlckluaXREYXRhVHlwZSgiY2VuYyJfcywgeyBzYW5pdGl6
ZUNlbmMsIGV4dHJhY3RLZXlJRHNDZW5jIH0pOworICAgIHJlZ2lzdGVySW5pdERhdGFUeXBlKCJ3
ZWJtIl9zLCB7IHNhbml0aXplV2ViTSwgZXh0cmFjdEtleUlEc1dlYk0gfSk7CiB9CiAKIEluaXRE
YXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKaW5kZXggYTZkMzEwMmM4ODJhNjA5OGY0NzkyYjdiY2QwNmJhMjZkNDI4N2Q4YS4uMDA1
MGRlMTZjMGNiZDdmMDY1NzY5YmM1ODI2NGI2MTE2OGVkY2Q5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xNzg2LDcgKzE3ODYsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdAogICAgIGlm
ICghaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBkb3duY2Fz
dDxFbGVtZW50Pigqbm9kZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1ZSkgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuc2V0QXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUsICh2YWx1ZSkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiB9CiAg
ICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBdHRyaWJ1dGVWYWx1
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBjYjJhZjFmNjZiZjQxZTU2ZDAwMmZl
ZjAwMGZlMTEwZDMyMDQzM2QxLi5jZGE0MDFlYjBmNWM0YzBmNzBmZWI2MTA4OTNjZjE0ZGYwNWYy
YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNXZWJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgpAQCAtMTQ3NCw3ICsxNDc1LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpjb21taXRTdHlsZXMoKQogCiAgICAgYXV0byBj
b21wdXRlZFN0eWxlRXh0cmFjdG9yID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcigmc3R5bGVkRWxl
bWVudCk7CiAgICAgYXV0byBpbmxpbmVTdHlsZSA9IHN0eWxlZEVsZW1lbnQuZG9jdW1lbnQoKS5j
cmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgaW5saW5lU3R5bGUtPnNldENzc1RleHQo
c3R5bGVkRWxlbWVudC5nZXRBdHRyaWJ1dGUoInN0eWxlIikpOworICAgIGlubGluZVN0eWxlLT5z
ZXRDc3NUZXh0KHN0eWxlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRy
KSk7CiAKICAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0gc3R5bGVkRWxlbWVudC5lbnN1cmVLZXlm
cmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKTsKICAgICAvLyBEdXJpbmcgaXRlcmF0aW9u
IHJlc29sdmUoKSBjb3VsZCBjbGVhciB0aGUgdW5kZXJseWluZyBwcm9wZXJ0aWVzIHNvIHdlIHVz
ZSBhIGNvcHkKQEAgLTE1MDcsNyArMTUwOCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1h
dGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICAgICAgICAgIGlubGluZVN0eWxlLT5zZXRQcm9wZXJ0
eUludGVybmFsKHByb3BlcnR5LCBjc3NWYWx1ZS0+Y3NzVGV4dCgpLCBmYWxzZSk7CiAgICAgfQog
Ci0gICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgaW5saW5lU3R5bGUtPmNz
c1RleHQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHls
ZUF0dHIsIGlubGluZVN0eWxlLT5jc3NUZXh0KCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudElubGluZXMuaAppbmRleCA3YzFlZjdjNjNjNGMzNTc3ZDE5ZWVl
YTM5ZmYyYWEwMzg2ZjhiZTllLi4xZmU4NjAzOTQ4OTU2MDhjNjg4YTQzMWNiMTBjYTEzMTNhYzc5
ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRJbmxpbmVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50SW5saW5lcy5oCkBAIC0zOSw3ICszOSw3IEBA
IGlubGluZSBQQUw6OlRleHRFbmNvZGluZyBEb2N1bWVudDo6dGV4dEVuY29kaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gUEFMOjpUZXh0RW5jb2RpbmcoKTsKIH0KIAotaW5saW5lIEF0b21TdHJpbmcg
RG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gdGV4dEVuY29kaW5nKCkuZG9tTmFt
ZSgpOyB9CitpbmxpbmUgQXRvbVN0cmluZyBEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHRleHRFbmNvZGluZygpLmRvbU5hbWUoKSk7IH0K
IAogaW5saW5lIFN0cmluZyBEb2N1bWVudDo6Y2hhcnNldCgpIGNvbnN0IHsgcmV0dXJuIERvY3Vt
ZW50OjplbmNvZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlMDBjMWY5YTg5
NTRlZTBiOGNiYzFkODJkMzBiNjAxZGZlMTM5YmVjLi5lZmY4MGI1NWYxNzUzNDNkMjkxMWJiN2Yx
MWQ0NTBlYjNlOTMwZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMjI0LDcgKzMyMjQs
NyBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5l
d0ZvY3VzZWRFbGVtZW50KQogdm9pZCBFbGVtZW50OjpkaXNwYXRjaFdlYktpdEltYWdlUmVhZHlF
dmVudEZvclRlc3RpbmcoKQogewogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkud2Via2l0
SW1hZ2VSZWFkeUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoIndlYmtpdEltYWdlRnJhbWVSZWFkeSIsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZl
bnQ6OklzQ2FuY2VsYWJsZTo6WWVzKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZSgid2Via2l0SW1hZ2VGcmFtZVJlYWR5Il9zLCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2
ZW50OjpJc0NhbmNlbGFibGU6OlllcykpOwogfQogCiBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91
c2VGb3JjZVdpbGxCZWdpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRv
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXgg
NDEzZTM0NjcyZWI2NzU2ZDg5YTBmZTRhZmQ2N2Y5ZWE2YzY4YmM1Yy4uMzZjODk3N2IxNmI0NWYz
YTg3ZWVkOTNjOGFlNGI0NmQ1NTY5NmI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1BzZXVkb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUHNldWRv
RWxlbWVudCk7CiAKIGNvbnN0IFF1YWxpZmllZE5hbWUmIHBzZXVkb0VsZW1lbnRUYWdOYW1lKCkK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRv
bSgpLCAiPHBzZXVkbz4iLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gbmFtZShudWxsQXRvbSgpLCAiPHBzZXVkbz4iX3MsIG51bGxBdG9tKCkp
OwogICAgIHJldHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRl
eCA3ZDlkNTliZTFjMTUyZjA5ODVmNWY1MThiYjlmY2NlNTZmODdiYzlhLi44MGZmZDFlYzNmODIw
ZjE2NjcyYWIxOGI2NDI1MDQzYjliZjRiZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5j
cHAKQEAgLTgyMCw3ICs4MjAsNyBAQCBzdGF0aWMgUmVmPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5F
bGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgVGV4dCYgdGFiVGV4dE5vZGUpCiAgICAgYXV0byBz
cGFuRWxlbWVudCA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgIHNw
YW5FbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNsYXNzQXR0ciwg
QXBwbGVUYWJTcGFuQ2xhc3MpOwotICAgIHNwYW5FbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVB
dHRyLCAid2hpdGUtc3BhY2U6cHJlIik7CisgICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShz
dHlsZUF0dHIsICJ3aGl0ZS1zcGFjZTpwcmUiX3MpOwogCiAgICAgc3BhbkVsZW1lbnQtPmFwcGVu
ZENoaWxkKHRhYlRleHROb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGI4
MDMzMWIyOGYwN2NmNTQ2ZWUxMWM1YmEwZmMxYzNhOWRmYzk4OWUuLjk3NDc4OGEzYjNhYTgxM2Vm
MDFlMmQyMWJiMjc5MjJjMjBmYjdkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTExNzgsNyArMTE3OCw3IEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhDb21wb3NpdGVF
ZGl0Q29tbWFuZCYgY29tbWFuZCkKIAogYm9vbCBFZGl0b3I6OndpbGxVbmFwcGx5RWRpdGluZyhj
b25zdCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RF
ZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgp
LCAiaGlzdG9yeVVuZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhj
b21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5k
aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iX3MpOwogfQogCiB2b2lkIEVk
aXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlv
bikKQEAgLTExODksNyArMTE4OSw3IEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKEVk
aXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biBuZXdTZWxlY3Rpb24oY29tcG9zaXRpb24uc3RhcnRpbmdTZWxlY3Rpb24oKSk7CiAgICAgY2hh
bmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OmRl
ZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkpOwotICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29t
cG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGlu
Z1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlVbmRvIik7CisgICAgZGlzcGF0Y2hJbnB1
dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9z
aXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVVuZG8iX3MpOwogCiAg
ICAgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOwogCkBAIC0xMjAzLDcgKzEyMDMsNyBA
QCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBj
b21wb3NpdGlvbikKIAogYm9vbCBFZGl0b3I6OndpbGxSZWFwcGx5RWRpdGluZyhjb25zdCBFZGl0
Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikgY29uc3QKIHsKLSAgICByZXR1cm4gZGlz
cGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlvbi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVs
ZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCAiaGlzdG9y
eVJlZG8iKTsKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVJbnB1dEV2ZW50cyhjb21wb3NpdGlv
bi5zdGFydGluZ1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgY29tcG9zaXRpb24uZW5kaW5nUm9vdEVk
aXRhYmxlRWxlbWVudCgpLCAiaGlzdG9yeVJlZG8iX3MpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVh
cHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKQEAgLTEy
MTQsNyArMTIxNCw3IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5k
Q29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxl
Y3Rpb24oY29tcG9zaXRpb24uZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2Vs
ZWN0aW9uT3B0aW9ucygpKTsKLSAgICBkaXNwYXRjaElucHV0RXZlbnRzKGNvbXBvc2l0aW9uLnN0
YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjb21wb3NpdGlvbi5lbmRpbmdSb290RWRpdGFi
bGVFbGVtZW50KCksICJoaXN0b3J5UmVkbyIpOworICAgIGRpc3BhdGNoSW5wdXRFdmVudHMoY29t
cG9zaXRpb24uc3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLmVuZGlu
Z1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSwgImhpc3RvcnlSZWRvIl9zKTsKICAgICAKICAgICB1cGRh
dGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAKQEAgLTE1NTAsOCArMTU1MCw4IEBAIHZvaWQg
RWRpdG9yOjpwYXN0ZUZvbnQoRnJvbU1lbnVPcktleUJpbmRpbmcgZnJvbU1lbnVPcktleUJpbmRp
bmcpCiB2b2lkIEVkaXRvcjo6cXVvdGVGcmFnbWVudEZvclBhc3RpbmcoRG9jdW1lbnRGcmFnbWVu
dCYgZnJhZ21lbnQpCiB7CiAgICAgYXV0byBibG9ja1F1b3RlID0gSFRNTFF1b3RlRWxlbWVudDo6
Y3JlYXRlKGJsb2NrcXVvdGVUYWcsIGRvY3VtZW50KCkpOwotICAgIGJsb2NrUXVvdGUtPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odHlwZUF0dHIsIEF0b21TdHJpbmcoImNpdGUi
KSk7Ci0gICAgYmxvY2tRdW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihj
bGFzc0F0dHIsIEF0b21TdHJpbmcoQXBwbGVQYXN0ZUFzUXVvdGF0aW9uKSk7CisgICAgYmxvY2tR
dW90ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih0eXBlQXR0ciwgImNpdGUi
X3MpOworICAgIGJsb2NrUXVvdGUtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
Y2xhc3NBdHRyLCBBcHBsZVBhc3RlQXNRdW90YXRpb24pOwogCiAgICAgYXV0byBjaGlsZE5vZGUg
PSBmcmFnbWVudC5maXJzdENoaWxkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvSFRNTEludGVyY2hhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0hUTUxJbnRl
cmNoYW5nZS5oCmluZGV4IGQ0YzUwNWM4YTY3MmIyZTA4Y2U4NTgzMGRhNTllMDlmMDE0MTYxMWIu
LmQxNDhmNzc3ZDJlNTJkYWUzOTQ1NjcxNGVkZGFmNjNmMzliYzI4MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuaApAQCAtMzMsMTEgKzMzLDEyIEBAIGNsYXNzIFRl
eHQ7CiAKICNkZWZpbmUgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUgICAiQXBwbGUtaW50ZXJjaGFu
Z2UtbmV3bGluZSIKICNkZWZpbmUgQXBwbGVDb252ZXJ0ZWRTcGFjZSAgICAgICAiQXBwbGUtY29u
dmVydGVkLXNwYWNlIgotI2RlZmluZSBBcHBsZVBhc3RlQXNRdW90YXRpb24gICAgICJBcHBsZS1w
YXN0ZS1hcy1xdW90YXRpb24iCi0jZGVmaW5lIEFwcGxlU3R5bGVTcGFuQ2xhc3MgICAgICAgIkFw
cGxlLXN0eWxlLXNwYW4iCi0jZGVmaW5lIEFwcGxlVGFiU3BhbkNsYXNzICAgICAgICAgIkFwcGxl
LXRhYi1zcGFuIgogI2RlZmluZSBXZWJLaXRNU09MaXN0UXVpcmtzU3R5bGUgICJXZWJLaXQtbXNv
LWxpc3QtcXVpcmtzLXN0eWxlIgogCitjb25zdGV4cHIgYXV0byBBcHBsZVBhc3RlQXNRdW90YXRp
b24gPSAiQXBwbGUtcGFzdGUtYXMtcXVvdGF0aW9uIl9zOworY29uc3RleHByIGF1dG8gQXBwbGVT
dHlsZVNwYW5DbGFzcyA9ICJBcHBsZS1zdHlsZS1zcGFuIl9zOworY29uc3RleHByIGF1dG8gQXBw
bGVUYWJTcGFuQ2xhc3MgPSAiQXBwbGUtdGFiLXNwYW4iX3M7CisKIC8vIENvbnRyb2xzIHdoZXRo
ZXIgYSBzcGVjaWFsIEJSIHdoaWNoIGlzIHJlbW92ZWQgdXBvbiBwYXN0ZSBpbiBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZCBuZWVkcyB0byBiZSBpbnNlcnRlZAogLy8gYW5kIG1ha2luZyBzZXF1ZW5j
ZSBvZiBzcGFjZXMgbm90IGNvbGxhcHNpYmxlIGJ5IGluc2VydGluZyBub24tYnJlYWtpbmcgc3Bh
Y2VzLgogLy8gU2VlIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3I4MDg3IGFuZCBodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9yODA5Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5kZW50T3V0ZGVudENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRP
dXRkZW50Q29tbWFuZC5jcHAKaW5kZXggM2M0NjE0M2E3ODFjMzZlYzc5NGVmN2U3MWI1MjgyNTFi
ODEwOWUwNi4uMTdhNDg3MDhlMmJmODllNTJiY2Y3ZjJjZDgxZTY2YWIwN2U4ZjY5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgc3RhdGljIGJvb2wgaXNMaXN0T3JJbmRlbnRCbG9ja3F1b3RlKGNvbnN0IE5v
ZGUqIG5vZGUpCiB9CiAKIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnRPdXRkZW50Q29tbWFu
ZChEb2N1bWVudCYgZG9jdW1lbnQsIEVJbmRlbnRUeXBlIHR5cGVPZkFjdGlvbikKLSAgICA6IEFw
cGx5QmxvY2tFbGVtZW50Q29tbWFuZChkb2N1bWVudCwgYmxvY2txdW90ZVRhZywgIm1hcmdpbjog
MCAwIDAgNDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7IikKKyAgICA6IEFwcGx5Qmxv
Y2tFbGVtZW50Q29tbWFuZChkb2N1bWVudCwgYmxvY2txdW90ZVRhZywgIm1hcmdpbjogMCAwIDAg
NDBweDsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAwcHg7Il9zKQogICAgICwgbV90eXBlT2ZBY3Rp
b24odHlwZU9mQWN0aW9uKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
YXRhRGV0ZWN0aW9uLm1tCmluZGV4IDRhMzI2ZTY2ODgwOTQwZmI1MzQ4NWY5M2ExMzM5OWQwMmE2
Y2EyNjguLmVmZWM1NzJlZGIyODBlZTFmM2E3MzRlMTdmMWQ2YWEwMjg1OWI0ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTU5NSw3ICs1
OTUsNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgY29udGV4dFJhbmdlLCBPcAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBSZWY8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvckVsZW1lbnQgPSBIVE1MQW5jaG9yRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQtPnNldEhyZWYo
Y29ycmVzcG9uZGluZ1VSTCk7Ci0gICAgICAgICAgICBhbmNob3JFbGVtZW50LT5zZXREaXIoImx0
ciIpOworICAgICAgICAgICAgYW5jaG9yRWxlbWVudC0+c2V0RGlyKCJsdHIiX3MpOwogCiAgICAg
ICAgICAgICBpZiAoc2hvdWxkVXNlTGlnaHRMaW5rcykgewogICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCAyZDhmOGIzMzU5MzBkMDdkZDMzMjZiODEwNjVmMmQ0ZmQ4MzVhY2FlLi43ZTU5NTJiN2E5NjI4
NzA3MGU4MDM3OThkNTlkOGZjMmY3YjM5YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChjb25zdCBTaW1wbGVSYW5nZSYgY29udGV4dCwgY29uc3QgUwogCiAgICAgYXV0
byBjcmVhdGVIVE1MQlJFbGVtZW50ID0gWyZkb2N1bWVudF0oKSB7CiAgICAgICAgIGF1dG8gZWxl
bWVudCA9IEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oY2xhc3NBdHRyLCBBcHBsZUludGVy
Y2hhbmdlTmV3bGluZSk7CisgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oY2xhc3NBdHRyLCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKEFwcGxlSW50ZXJj
aGFuZ2VOZXdsaW5lKSk7CiAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCmluZGV4IDUwNDk1YzE3YjljYTk3OTIw
M2VmOTg0YmYyODE2MzRlNTIwZmFlNGMuLmE4YzAwMzIyOWU0MzE4Yjg3NzVlNzI2NThiMTJhZWEw
NjMzMDAzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcApAQCAt
NTQsNyArNTQsNyBAQCBSZWY8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogUmVmPEhUTUxBdWRpb0VsZW1l
bnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZUZvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbihEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIHNyYykKIHsKICAgICBhdXRvIGVsZW1l
bnQgPSBjcmVhdGUoYXVkaW9UYWcsIGRvY3VtZW50LCBmYWxzZSk7Ci0gICAgZWxlbWVudC0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihwcmVsb2FkQXR0ciwgImF1dG8iKTsKKyAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHByZWxvYWRBdHRy
LCAiYXV0byJfcyk7CiAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihzcmNBdHRyLCBzcmMpOwogICAgIHJldHVybiBlbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGJmNTQzMmFmMzE2ZTVhNzRhZjJh
ZDI3M2YxMTUyNmU0ZGI0NWIyY2IuLjY4YmMyMzhlYmQ5MWE0MTdiY2JkOGM5NTg2NWM3MzU1OWJm
ZDVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGNvbnN0
IEF0b21TdHJpbmcmIHN1bW1hcnlTbG90TmFtZSgpCiB7Ci0gICAgc3RhdGljIE1haW5UaHJlYWRO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBzdW1tYXJ5U2xvdCgic3VtbWFyeVNsb3Qi
KTsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IHN1bW1hcnlTbG90KCJzdW1tYXJ5U2xvdCJfcyk7CiAgICAgcmV0dXJuIHN1bW1hcnlTbG90Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IDFiMzZkNWIzNmYwMDFhZDA3
ZTllNmFhMDI4NjgxNjI3MjI0NjRkMzAuLjZiMWQ4ZDNjMWQxMDNhNWYwMmI4MDMyMDNmZWZkODBi
MDZjZDBkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC02OTYsNyArNjk2
LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6dHJhbnNsYXRlKCkgY29uc3QKIAogdm9pZCBIVE1MRWxl
bWVudDo6c2V0VHJhbnNsYXRlKGJvb2wgZW5hYmxlKQogewotICAgIHNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24odHJhbnNsYXRlQXR0ciwgZW5hYmxlID8gInllcyIgOiAibm8iKTsK
KyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHRyYW5zbGF0ZUF0dHIsIGVu
YWJsZSA/ICJ5ZXMiX3MgOiAibm8iX3MpOwogfQogCiBib29sIEhUTUxFbGVtZW50OjpyZW5kZXJl
cklzRXZlck5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCAyMDliNjgyMzk2Mzk5ZmU4MDY5Yjk0YzgyMTllZTQzODYxZjAxYTcyLi5iYWI1MTExZDI2
ZWE5MDlhN2Y1YzBkNjM3Yjc1Mjg5N2RjZDI1ZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTI2NzAsNyArMjY3MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlU2hvdWxkQ29udGludWVBZnRlck5lZWRLZXkoKQogewogICAgIGlmICghbV9w
bGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBib29sIHNob3VsZENvbnRpbnVlID0gaGFzRXZl
bnRMaXN0ZW5lcnMoIndlYmtpdG5lZWRrZXkiKSB8fCAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVu
Y3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFkb2N1bWVudCgpLnF1aXJrcygpLmhhc0Jyb2tl
bkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJrKCkpOworICAgIGJvb2wgc2hvdWxkQ29udGlu
dWUgPSBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0bmVlZGtleUV2ZW50KSB8
fCAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpICYmICFk
b2N1bWVudCgpLnF1aXJrcygpLmhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydFF1aXJr
KCkpOwogICAgIG1fcGxheWVyLT5zZXRTaG91bGRDb250aW51ZUFmdGVyS2V5TmVlZGVkKHNob3Vs
ZENvbnRpbnVlKTsKIH0KICNlbmRpZgpAQCAtMjY4NSw3ICsyNjg1LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllcktleU5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxlZ2FjeUVuY3J5cHRlZE1lZGlh
QVBJRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWhhc0V2ZW50TGlzdGVu
ZXJzKCJ3ZWJraXRuZWVka2V5IikKKyAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS53ZWJraXRuZWVka2V5RXZlbnQpCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAg
ICAgICAgLy8gT25seSBmaXJlIGFuIGVycm9yIGlmIEVOQ1JZUFRFRF9NRURJQSBpcyBub3QgZW5h
YmxlZCwgdG8gZ2l2ZSBjbGllbnRzIG9mIHRoZQogICAgICAgICAvLyAiZW5jcnlwdGVkIiBldmVu
dCBhIGNoYW5jZSB0byBoYW5kbGUgaXQgd2l0aG91dCByZXN1bHRpbmcgaW4gYSBzeW50aGV0aWMg
ZXJyb3IuCkBAIC00NzA1LDcgKzQ3MDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxheW91
dFNpemVDaGFuZ2VkKCkKIHsKICAgICBhdXRvIHRhc2sgPSBbdGhpc10gewogICAgICAgICBpZiAo
YXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpKQotICAgICAgICAgICAgcm9vdC0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKCJyZXNpemUiLCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgICAgIHJvb3QtPmRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogICAgIH07CiAgICAgcXVldWVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQsIFdURk1v
dmUodGFzaykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAppbmRl
eCA4Y2ViODhhM2IxMDdiZGY2NDlhNWYyMmEwMGE4MmU5NDI0Y2UyZWE3Li5iZDQ0ZTJkMDI4YTcw
MDg4NjM2ZmYyNjYwNjM3N2ViZWRkZjk3N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5jcHAKQEAgLTE5MCwxNSArMTkwLDE1IEBAIHN0YXRpYyB2b2lkIHNldFZhbHVl
Q2xhc3MoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVnaW9u
IGdhCiB7CiAgICAgc3dpdGNoIChnYXVnZVJlZ2lvbikgewogICAgIGNhc2UgSFRNTE1ldGVyRWxl
bWVudDo6R2F1Z2VSZWdpb25PcHRpbXVtOgotICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmNsYXNzQXR0ciwgIm9wdGltdW0iKTsKKyAgICAgICAgZWxlbWVudC5zZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJvcHRpbXVtIl9zKTsKICAgICAgICAgZWxlbWVu
dC5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlck9wdGltdW1WYWx1ZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25T
dWJvcHRpbWFsOgotICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNz
QXR0ciwgInN1Ym9wdGltdW0iKTsKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsICJzdWJvcHRpbXVtIl9zKTsKICAgICAgICAgZWxlbWVudC5zZXRQc2V1
ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlclN1Ym9wdGltdW1WYWx1ZSgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25FdmVuTGVz
c0dvb2Q6Ci0gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRy
LCAiZXZlbi1sZXNzLWdvb2QiKTsKKyAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsICJldmVuLWxlc3MtZ29vZCJfcyk7CiAgICAgICAgIGVsZW1lbnQuc2V0
UHNldWRvKFNoYWRvd1BzZXVkb0lkczo6d2Via2l0TWV0ZXJFdmVuTGVzc0dvb2RWYWx1ZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CkBAIC0yMzQsMTcgKzIzNCwxNyBAQCB2b2lk
IEhUTUxNZXRlckVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCYg
cm9vdCkKIAogICAgIC8vIFBzZXVkb3MgYXJlIHNldCB0byBhbGxvdyBhdXRob3Igc3R5bGluZy4K
ICAgICBhdXRvIGlubmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAg
ICBpbm5lci0+c2V0SWRBdHRyaWJ1dGUoImlubmVyIik7CisgICAgaW5uZXItPnNldElkQXR0cmli
dXRlKCJpbm5lciJfcyk7CiAgICAgaW5uZXItPnNldFBzZXVkbyhTaGFkb3dQc2V1ZG9JZHM6Ondl
YmtpdE1ldGVySW5uZXJFbGVtZW50KCkpOwogICAgIHJvb3QuYXBwZW5kQ2hpbGQoaW5uZXIpOwog
CiAgICAgYXV0byBiYXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAg
IGJhci0+c2V0SWRBdHRyaWJ1dGUoImJhciIpOworICAgIGJhci0+c2V0SWRBdHRyaWJ1dGUoImJh
ciJfcyk7CiAgICAgYmFyLT5zZXRQc2V1ZG8oU2hhZG93UHNldWRvSWRzOjp3ZWJraXRNZXRlckJh
cigpKTsKICAgICBpbm5lci0+YXBwZW5kQ2hpbGQoYmFyKTsKIAogICAgIG1fdmFsdWUgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1fdmFsdWUtPnNldElkQXR0cmli
dXRlKCJ2YWx1ZSIpOworICAgIG1fdmFsdWUtPnNldElkQXR0cmlidXRlKCJ2YWx1ZSJfcyk7CiAg
ICAgYmFyLT5hcHBlbmRDaGlsZCgqbV92YWx1ZSk7CiAKICAgICBkaWRFbGVtZW50U3RhdGVDaGFu
Z2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDgwNDFlYTQyYzNi
YTc5NTU3NWYzYTAyYjVlMjYzOWI1N2VhNDQwNDUuLjM5NmY5ZGM5Njg4MTAzNjE5NjRhZDI4ZWUy
OGY5YjUwYjVkYzE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAt
MjMwLDE2ICsyMzAsMTYgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVj
dHVyZSgpCiAgICAgcm9vdEVsZW1lbnQtPmFwcGVuZENoaWxkKGhlYWQpOwogCiAgICAgYXV0byBi
b2R5ID0gSFRNTEJvZHlFbGVtZW50OjpjcmVhdGUoKnRoaXMpOwotICAgIGJvZHktPnNldEF0dHJp
YnV0ZShzdHlsZUF0dHIsICJtYXJnaW46IDBweCIpOworICAgIGJvZHktPnNldEF0dHJpYnV0ZShz
dHlsZUF0dHIsICJtYXJnaW46IDBweCJfcyk7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6Omlz
UERGTUlNRVR5cGUoZG9jdW1lbnQoKS5sb2FkZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKSkKICAg
ICAgICAgYm9keS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwgIndoaXRlIl9zKTsKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSk7CiAg
ICAgCiAgICAgYXV0byBpbWFnZUVsZW1lbnQgPSBJbWFnZURvY3VtZW50RWxlbWVudDo6Y3JlYXRl
KCp0aGlzKTsKICAgICBpZiAobV9zaG91bGRTaHJpbmtJbWFnZSkKLSAgICAgICAgaW1hZ2VFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiLXdlYmtpdC11c2VyLXNlbGVjdDpub25lOyBk
aXNwbGF5OmJsb2NrOyBtYXJnaW46YXV0bzsgcGFkZGluZzplbnYoc2FmZS1hcmVhLWluc2V0LXRv
cCkgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkgZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20p
IGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7Iik7CisgICAgICAgIGltYWdlRWxlbWVudC0+c2V0
QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgZGlzcGxheTpi
bG9jazsgbWFyZ2luOmF1dG87IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihz
YWZlLWFyZWEtaW5zZXQtcmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2Fm
ZS1hcmVhLWluc2V0LWxlZnQpOyJfcyk7CiAgICAgZWxzZQotICAgICAgICBpbWFnZUVsZW1lbnQt
PnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IHBhZGRp
bmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpIGVu
dihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpOyIpOwor
ICAgICAgICBpbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVz
ZXItc2VsZWN0Om5vbmU7IHBhZGRpbmc6ZW52KHNhZmUtYXJlYS1pbnNldC10b3ApIGVudihzYWZl
LWFyZWEtaW5zZXQtcmlnaHQpIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKSBlbnYoc2FmZS1h
cmVhLWluc2V0LWxlZnQpOyJfcyk7CiAgICAgaW1hZ2VFbGVtZW50LT5zZXRMb2FkTWFudWFsbHko
dHJ1ZSk7CiAgICAgaW1hZ2VFbGVtZW50LT5zZXRTcmModXJsKCkuc3RyaW5nKCkpOwogICAgIGlt
YWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+c2V0UmVzcG9uc2UobG9hZGVyKCktPnJlc3BvbnNl
KCkpOwpAQCAtMjUzLDggKzI1Myw4IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUoKQogI2Vsc2UKICAgICAgICAgYXV0byBsaXN0ZW5lciA9IEltYWdlRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgaWYgKFJlZlB0cjxET01XaW5kb3c+IHdp
bmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQotICAgICAgICAgICAgd2luZG93LT5hZGRFdmVudExp
c3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgaW1h
Z2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFdURk1vdmUobGlzdGVuZXIpLCBm
YWxzZSk7CisgICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LnJlc2l6ZUV2ZW50LCBsaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAgICAgICAgaW1hZ2VF
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBXVEZNb3Zl
KGxpc3RlbmVyKSwgZmFsc2UpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUERGRG9j
dW1lbnQuY3BwCmluZGV4IDRlMTk0NjE2ZWNlMjUzYzk0MTI0Y2ZiZTcyNDU4YWJiYmQ4NTNiMGQu
LjU5ZGZiMDIxMjg2NTAwYzU1ZTdiMmJkNTk1Y2Q4NDM3Y2QxNjhlNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUERGRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUERGRG9jdW1lbnQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBQREZEb2N1bWVudDo6
Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgIC8vIERlc2NyaXB0aW9uIG9mIHBhcmFtZXRl
cnM6CiAgICAgLy8gLSBgI3BhZ2Vtb2RlPW5vbmVgIHByZXZlbnRzIHRoZSBzaWRlYmFyIGZyb20g
c2hvd2luZyBvbiBsb2FkLgogICAgIC8vIC0gRW1wdHkgYD9maWxlPWAgcGFyYW1ldGVyIHByZXZl
bnRzIGRlZmF1bHQgcGRmIGZyb20gbG9hZGluZy4KLSAgICBhdXRvIHZpZXdlclVSTCA9ICJ3ZWJr
aXQtcGRmanMtdmlld2VyOi8vcGRmanMvd2ViL3ZpZXdlci5odG1sP2ZpbGU9I3BhZ2Vtb2RlPW5v
bmUiOworICAgIGF1dG8gdmlld2VyVVJMID0gIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy93
ZWIvdmlld2VyLmh0bWw/ZmlsZT0jcGFnZW1vZGU9bm9uZSJfczsKICAgICBhdXRvIHJvb3RFbGVt
ZW50ID0gSFRNTEh0bWxFbGVtZW50OjpjcmVhdGUoKnRoaXMpOwogICAgIGFwcGVuZENoaWxkKHJv
b3RFbGVtZW50KTsKICAgICByb290RWxlbWVudC0+aW5zZXJ0ZWRCeVBhcnNlcigpOwpAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgUERGRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkK
ICAgICBtX2lmcmFtZS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRvbVN0cmluZygid2lkdGg6
IDEwMCU7IGhlaWdodDogMTAwJTsgYm9yZGVyOiAwOyBkaXNwbGF5OiBibG9jazsiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCiAgICAgbV9saXN0ZW5lciA9IFBERkRvY3Vt
ZW50RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBtX2lmcmFtZS0+YWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsICptX2xpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9pZnJhbWUtPmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgKm1fbGlzdGVuZXIsIGZhbHNlKTsK
IAogICAgIGJvZHktPmFwcGVuZENoaWxkKCptX2lmcmFtZSk7CiB9CkBAIC0yMjMsOSArMjIzLDkg
QEAgdm9pZCBQREZEb2N1bWVudDo6aW5qZWN0U3R5bGVBbmRDb250ZW50U2NyaXB0KCkKIAogICAg
IEFTU0VSVChjb250ZW50RG9jdW1lbnQtPmJvZHkoKSk7CiAgICAgYXV0byBzY3JpcHQgPSBIVE1M
U2NyaXB0RWxlbWVudDo6Y3JlYXRlKHNjcmlwdFRhZywgKmNvbnRlbnREb2N1bWVudCwgZmFsc2Up
OwotICAgIHNjcmlwdC0+YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIG1fbGlzdGVuZXIucmVsZWFz
ZU5vbk51bGwoKSwgZmFsc2UpOworICAgIHNjcmlwdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkubG9hZEV2ZW50LCBtX2xpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKIAot
ICAgIHNjcmlwdC0+c2V0QXR0cmlidXRlKHNyY0F0dHIsICJ3ZWJraXQtcGRmanMtdmlld2VyOi8v
cGRmanMvZXh0cmFzL2NvbnRlbnQtc2NyaXB0LmpzIik7CisgICAgc2NyaXB0LT5zZXRBdHRyaWJ1
dGUoc3JjQXR0ciwgIndlYmtpdC1wZGZqcy12aWV3ZXI6Ly9wZGZqcy9leHRyYXMvY29udGVudC1z
Y3JpcHQuanMiX3MpOwogICAgIGNvbnRlbnREb2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChz
Y3JpcHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGUwMWRmMzkyOTM2ZTgyMDlj
ZWJkNGQ2NDg0YmZmZTI4ZTA0MmI0ZWEuLjAwM2E5MDFlMDQzZTM3YzhlM2MwNjY4YzYzMzcyNDBm
NmNkZTYxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKTsKIHN0
YXRpYyBjb25zdGV4cHIgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFs
aXR5ID0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpMb3c7CiAKIGNvbnN0IGludCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpEZWZhdWx0Rm9udFNpemUgPSAxMDsKLWNvbnN0IGNoYXIqIGNv
bnN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkRlZmF1bHRGb250RmFtaWx5ID0gInNh
bnMtc2VyaWYiOworY29uc3QgQVNDSUlMaXRlcmFsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OkRlZmF1bHRGb250RmFtaWx5ID0gInNhbnMtc2VyaWYiX3M7CiBzdGF0aWMgY29uc3RleHBy
IEFTQ0lJTGl0ZXJhbCBEZWZhdWx0Rm9udCA9ICIxMHB4IHNhbnMtc2VyaWYiX3M7CiAKIHN0YXRp
YyBDYW52YXNMaW5lQ2FwIHRvQ2FudmFzTGluZUNhcChMaW5lQ2FwIGxpbmVDYXApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmgKaW5kZXggNGE3YTQzYTdjZmZlODI2YWY4NGI3MDEzMjAyZjJiOTNlNDg2ZGI0YS4u
NWJmNWI1MzM4YWNiMjA3Y2IzYjE0OTMwNmVlODQxMDc4MDY4ZmVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaApAQCAtMjk2LDcgKzI5Niw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBjb25zdCBpbnQgRGVmYXVsdEZvbnRTaXplOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBEZWZhdWx0Rm9udEZhbWlseTsKKyAgICBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIERlZmF1
bHRGb250RmFtaWx5OwogCiAgICAgY29uc3QgU3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogICAgIHZvaWQgcmVhbGl6ZVNhdmVzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBhMWYxNjdj
YjA4M2M5OTg0MzYxODM0MTE4MDI5ZjI4NWU0MWMwMDA1Li5lZGNjNmFmZDZjNmYwMzhiODRjNGU3
MWY1NzhhNjg4ODQyN2M3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBzdGF0aWMgTWVtb3J5Q29tcGFj
dExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+IGNy
ZWF0ZQogICAgIGFkZE5hbWVzV2l0aFByZWZpeChtYXAsIHhtbEF0b20oKSwgWE1MTmFtZXM6Omdl
dFhNTEF0dHJzKCksIFhNTE5hbWVzOjpYTUxBdHRyc0NvdW50KTsKIAogICAgIG1hcC5hZGQoeG1s
bnNBdG9tKCksIFhNTE5TTmFtZXM6OnhtbG5zQXR0cik7Ci0gICAgbWFwLmFkZCgieG1sbnM6eGxp
bmsiLCBRdWFsaWZpZWROYW1lKHhtbG5zQXRvbSgpLCB4bGlua05hbWUsIFhNTE5TTmFtZXM6Onht
bG5zTmFtZXNwYWNlVVJJKSk7CisgICAgbWFwLmFkZCgieG1sbnM6eGxpbmsiX3MsIFF1YWxpZmll
ZE5hbWUoeG1sbnNBdG9tKCksIHhsaW5rTmFtZSwgWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VV
UkkpKTsKIAogICAgIHJldHVybiBtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA0NzA2ZjI2ZTg0NDA5ZWU4MTNjZDEz
YmM1ZjRlMGFjY2Y2NzRhODY3Li43OGUxMWZjMmMxMDhkNzdmZjhjMmE5MmFhOTI1ZWZjNTJlNDM5
MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBh
cnNlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2Vy
dEZha2VQcmVFbGVtZW50KCkKICAgICAvLyBXZSBjcmVhdGUgYSBmYWtlIHRva2VuIGFuZCBnaXZl
IGl0IHRvIHRoZSB0cmVlIGJ1aWxkZXIgcmF0aGVyIHRoYW4KICAgICAvLyBzZW5kaW5nIGZha2Ug
Ynl0ZXMgdGhyb3VnaCB0aGUgZnJvbnQtZW5kIG9mIHRoZSBwYXJzZXIgdG8gYXZvaWQKICAgICAv
LyBkaXN0cnViaW5nIHRoZSBsaW5lL2NvbHVtbiBudW1iZXIgY2FsY3VsYXRpb25zLgotICAgIEF0
dHJpYnV0ZSBhdHRyaWJ1dGUoc3R5bGVBdHRyLCAid29yZC13cmFwOiBicmVhay13b3JkOyB3aGl0
ZS1zcGFjZTogcHJlLXdyYXA7Iik7CisgICAgQXR0cmlidXRlIGF0dHJpYnV0ZShzdHlsZUF0dHIs
ICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiX3MpOwogICAg
IEF0b21IVE1MVG9rZW4gZmFrZVByZShIVE1MVG9rZW46OlN0YXJ0VGFnLCBwcmVUYWctPmxvY2Fs
TmFtZSgpLCB7IFdURk1vdmUoYXR0cmlidXRlKSB9KTsKICAgICB0cmVlQnVpbGRlcigpLmNvbnN0
cnVjdFRyZWUoV1RGTW92ZShmYWtlUHJlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcAppbmRleCA4NDljZDU5NGE3YjlhMzk4YjBjMzFmYTkwZmM2N2Q3ZjZkNjc2YTJm
Li4xMGY0ZDFkYWUwYTk5MDI1YjVkNDBmMjM4ZGQ1NWVhNmMzNjlkNzBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC04OCwxMyArODgsMTMgQEAgc3RhdGljIGNv
bnN0IEF0b21TdHJpbmcmIGZvcmNlZEtleXdvcmQoKQogCiBUZXh0VHJhY2smIFRleHRUcmFjazo6
Y2FwdGlvbk1lbnVPZmZJdGVtKCkKIHsKLSAgICBzdGF0aWMgVGV4dFRyYWNrJiBvZmYgPSBUZXh0
VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSIsIGVtcHR5QXRvbSgpLCBlbXB0
eUF0b20oKSwgZW1wdHlBdG9tKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgVGV4dFRyYWNrJiBv
ZmYgPSBUZXh0VHJhY2s6OmNyZWF0ZShudWxscHRyLCAib2ZmIG1lbnUgaXRlbSJfcywgZW1wdHlB
dG9tKCksIGVtcHR5QXRvbSgpLCBlbXB0eUF0b20oKSkubGVha1JlZigpOwogICAgIHJldHVybiBv
ZmY7CiB9CiAKIFRleHRUcmFjayYgVGV4dFRyYWNrOjpjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0o
KQogewotICAgIHN0YXRpYyBUZXh0VHJhY2smIGF1dG9tYXRpYyA9IFRleHRUcmFjazo6Y3JlYXRl
KG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIiwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgp
LCBlbXB0eUF0b20oKSkubGVha1JlZigpOworICAgIHN0YXRpYyBUZXh0VHJhY2smIGF1dG9tYXRp
YyA9IFRleHRUcmFjazo6Y3JlYXRlKG51bGxwdHIsICJhdXRvbWF0aWMgbWVudSBpdGVtIl9zLCBl
bXB0eUF0b20oKSwgZW1wdHlBdG9tKCksIGVtcHR5QXRvbSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0
dXJuIGF1dG9tYXRpYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCmluZGV4IGJjZjhlMTcyYTY3MzIwZjY2ODgxMjA3NDc5ZGY3YTgwYWJhYzE3ZWUuLjc3
YzZhMTYwYmE5NWJkNWEyODZjNWRhNzQ5Mzk4MzVlNTFiOWFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoVGV4dFRyYWNrQ3VlQm94KTsKIAogc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGN1ZUF0dHJpYnV0TmFtZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFF1YWxpZmllZE5hbWU+IGN1ZVRhZyhudWxsQXRvbSgpLCAiY3VlIiwgbnVsbEF0b20oKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGN1ZVRhZyhudWxsQXRv
bSgpLCAiY3VlIl9zLCBudWxsQXRvbSgpKTsKICAgICByZXR1cm4gY3VlVGFnOwogfQogCiBzdGF0
aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY3VlQmFja2dyb3VuZEF0dHJpYnV0TmFtZSgpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGN1ZUJhY2tncm91bmRUYWco
bnVsbEF0b20oKSwgImN1ZWJhY2tncm91bmQiLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gY3VlQmFja2dyb3VuZFRhZyhudWxsQXRvbSgpLCAi
Y3VlYmFja2dyb3VuZCJfcywgbnVsbEF0b20oKSk7CiAgICAgcmV0dXJuIGN1ZUJhY2tncm91bmRU
YWc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmlu
ZGV4IDkzNmQyN2IzYjI3MzdjMDA3NjE5Mzk1MjI3MWU2ODdjYjVjNDY2NTUuLjE4YjA2ZjI4ZGFj
NTA0YTNjZWIyNWFhOTc4YWYyODk2MDI1ZGMxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmNwcApAQCAtNDEsMTQgKzQxLDE0IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJWVFRFbGVtZW50KTsKIAogc3RhdGljIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5vZGVUeXBlVG9UYWdOYW1lKFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlKQogewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjVGFnKG51bGxBdG9tKCksICJjIiwg
bnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZU
YWcobnVsbEF0b20oKSwgInYiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gbGFuZ1RhZyhudWxsQXRvbSgpLCAibGFuZyIsIG51bGxBdG9tKCkp
OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFnKG51bGxBdG9t
KCksICJiIiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmll
ZE5hbWU+IHVUYWcobnVsbEF0b20oKSwgInUiLCBudWxsQXRvbSgpKTsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gaVRhZyhudWxsQXRvbSgpLCAiaSIsIG51bGxBdG9t
KCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBydWJ5VGFnKG51
bGxBdG9tKCksICJydWJ5IiwgbnVsbEF0b20oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFF1YWxpZmllZE5hbWU+IHJ0VGFnKG51bGxBdG9tKCksICJydCIsIG51bGxBdG9tKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBjVGFnKG51bGxBdG9tKCksICJj
Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFt
ZT4gdlRhZyhudWxsQXRvbSgpLCAidiJfcywgbnVsbEF0b20oKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGxhbmdUYWcobnVsbEF0b20oKSwgImxhbmciX3MsIG51
bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiBiVGFn
KG51bGxBdG9tKCksICJiIl9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UXVhbGlmaWVkTmFtZT4gdVRhZyhudWxsQXRvbSgpLCAidSJfcywgbnVsbEF0b20oKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IGlUYWcobnVsbEF0b20oKSwg
ImkiX3MsIG51bGxBdG9tKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWRO
YW1lPiBydWJ5VGFnKG51bGxBdG9tKCksICJydWJ5Il9zLCBudWxsQXRvbSgpKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UXVhbGlmaWVkTmFtZT4gcnRUYWcobnVsbEF0b20oKSwgInJ0Il9z
LCBudWxsQXRvbSgpKTsKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBXZWJWVFRO
b2RlVHlwZUNsYXNzOgogICAgICAgICByZXR1cm4gY1RhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggZGVjYmUxN2FiYmYxZDlhNDNlNDgwZGM3OGNkNzIz
ODVlYjYwOTc2ZC4uMWM1Yzg1ZTMyYjI4OTQ1ZTZlMmYwMTE4YzcxYWNjMmY0Y2Q1ZTIxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTYzLDEzICs2Mywx
MyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VBdHRy
aWJ1dGVOYW1lKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZp
ZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgInZvaWNlIiwgbnVsbEF0b20oKSk7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWROYW1lPiB2b2ljZUF0dHIobnVsbEF0
b20oKSwgInZvaWNlIl9zLCBudWxsQXRvbSgpKTsKICAgICAgICAgcmV0dXJuIHZvaWNlQXR0cjsK
ICAgICB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxhbmdBdHRyaWJ1
dGVOYW1lKCkKICAgICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxRdWFsaWZpZWRO
YW1lPiB2b2ljZUF0dHIobnVsbEF0b20oKSwgImxhbmciLCBudWxsQXRvbSgpKTsKKyAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+IHZvaWNlQXR0cihudWxsQXRvbSgp
LCAibGFuZyJfcywgbnVsbEF0b20oKSk7CiAgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDZhYTYxMjZkZDdjYWM2ODAxMTdi
Mjc3YjQ0YTZjMTg2ZWMzNzA1MzguLmZhMTg0NGE2ZmYxZmU1YWE1MjhhYjI1NWNjODFjYzQyNmVl
YjliNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkNvbXB1dGVkUHJvcGVydGllcz4KICAgICAgICAgICAgICAgICBTdHJpbmcgYXJpYVJlbGV2
YW50VGV4dCA9ICJ0ZXh0Il9zOwogCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0byYgdmFsdWVz
ID0gU3BhY2VTcGxpdFN0cmluZyhhcmlhUmVsZXZhbnRBdHRyVmFsdWUsIHRydWUpOwotICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZXMuY29udGFpbnMoImFsbCIpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHZhbHVlcy5jb250YWlucygiYWxsIl9zKSkgewogICAgICAgICAgICAgICAgICAgICBsaXZl
UmVnaW9uUmVsZXZhbnQuYXBwZW5kKGFyaWFSZWxldmFudEFkZGl0aW9ucyk7CiAgICAgICAgICAg
ICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC5hcHBlbmQoYXJpYVJlbGV2YW50UmVtb3ZhbHMp
OwogICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZhbnQuYXBwZW5kKGFyaWFSZWxl
dmFudFRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXlMYWJlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheUxhYmVsLmNwcAppbmRleCA3M2FmODM2ZWY3NDZjNmJiODAzMzI4NzQ4YzhmZWNlYmRhNjcy
NWZkLi5mNjExNDcxYTg1ZTNmZTY5M2RkNmYzYWNhNjNlMjAyNDgyNjU3ODU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheUxhYmVsLmNwcApAQCAt
NTksNyArNTksNyBAQCBJbnNwZWN0b3JPdmVybGF5TGFiZWw6Okluc3BlY3Rvck92ZXJsYXlMYWJl
bChjb25zdCBTdHJpbmcmIHRleHQsIEZsb2F0UG9pbnQgbG9jYQogc3RhdGljIEZvbnRDYXNjYWRl
IHN5c3RlbUZvbnQoKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbGllcyh7ICJzeXN0ZW0tdWkiIH0pOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbGllcyh7ICJzeXN0ZW0tdWkiX3MgfSk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUoNTAwKSk7CiAgICAg
Zm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAxN2EyOTdiNWFiMzQ0
YzZiMjE4MGRkMGZhOWE5NDQyZmRhMzNlMzk3Li4yNmUxOGVjMDRhYTZmN2RhZjNjN2I0MzNhOTZi
MjYxYmI5MDI0OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0xNTkzLDcgKzE1OTMsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0
b3JQYQogICAgICwgbV9pc1N0eWxlVGV4dFZhbGlkKGZhbHNlKQogewogICAgIG1faW5zcGVjdG9y
U3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkLCAwKSwgaW5s
aW5lU3R5bGUoKSwgdGhpcyk7Ci0gICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJp
YnV0ZSgic3R5bGUiKS5zdHJpbmcoKTsKKyAgICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+Z2V0
QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5bGVBdHRyKS5zdHJpbmcoKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUo
KQpAQCAtMTY2OSw3ICsxNjY5LDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjppbmxpbmVTdHlsZSgpIGNvbnN0CiAKIGNvbnN0IFN0cmlu
ZyYgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjplbGVtZW50U3R5bGVUZXh0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3Ry
aW5nKCk7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3R5
bGVBdHRyKS5zdHJpbmcoKTsKIH0KIAogUmVmPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnJ1bGVTb3VyY2VEYXRhKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggZDM4OWVjMDdhZTg3YmM5NWI1NjgwOWU4ZGI4MjU5MDg4ZTA1MmEwNi4uMDZjNDcyM2Y1
NzAwNzA1MWVjNjE5MDlhYzcxOWRmM2I4Y2IyZGNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIyMjksNyAr
MjIyOSw3IEBAIFJlZjxQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQWNjCiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNwYWNlU3BsaXRTdHJpbmcmIHZhbHVlcyA9IFNwYWNlU3BsaXRTdHJpbmcoYXJpYVJlbGV2
YW50QXR0clZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgLy8gQGFyaWEtcmVsZXZh
bnQ9ImFsbCIgaXMgZXhwb3NlZCBhcyBbImFkZGl0aW9ucyIsInJlbW92YWxzIiwidGV4dCJdLCBp
biBvcmRlci4KICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvcmRlciBpcyBjb250cm9sbGVk
IGluIFdlYkNvcmUgYW5kIGV4cGVjdGVkIGluIFdlYkluc3BlY3RvclVJLgotICAgICAgICAgICAg
ICAgICAgICBpZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAodmFsdWVzLmNvbnRhaW5zKCJhbGwiX3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBsaXZlUmVnaW9uUmVsZXZhbnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50QWRkaXRpb25zKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpdmVSZWdpb25SZWxldmFudC0+YWRkSXRlbShhcmlhUmVs
ZXZhbnRSZW1vdmFscyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXZlUmVnaW9uUmVsZXZh
bnQtPmFkZEl0ZW0oYXJpYVJlbGV2YW50VGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5jcHAKaW5kZXggOWYxN2MxMjhhMzE4MTZhNmE5Mzk4YjVkMmIxNDU2ODU0YzVkOWE1MS4uMzZm
ZWJiZWRjZTBkZTE4OTFhZTRhOTJkMzk0Mjk3OTIwM2VhMWQ1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5r
UHJlbG9hZFJlc291cmNlQ2xpZW50PiBMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3Qg
TGluCiAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHBhcmFtcy5yZWZlcnJlclBvbGljeTsK
ICAgICBhdXRvIGxpbmtSZXF1ZXN0ID0gY3JlYXRlUG90ZW50aWFsQWNjZXNzQ29udHJvbFJlcXVl
c3QodXJsLCBXVEZNb3ZlKG9wdGlvbnMpLCBkb2N1bWVudCwgcGFyYW1zLmNyb3NzT3JpZ2luKTsK
ICAgICBsaW5rUmVxdWVzdC5zZXRQcmlvcml0eShEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHk6
OmZvclJlc291cmNlVHlwZSh0eXBlLnZhbHVlKCkpKTsKLSAgICBsaW5rUmVxdWVzdC5zZXRJbml0
aWF0b3IoImxpbmsiKTsKKyAgICBsaW5rUmVxdWVzdC5zZXRJbml0aWF0b3IoImxpbmsiX3MpOwog
ICAgIGxpbmtSZXF1ZXN0LnNldElnbm9yZUZvclJlcXVlc3RDb3VudCh0cnVlKTsKICAgICBsaW5r
UmVxdWVzdC5zZXRJc0xpbmtQcmVsb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCA2NWIyNmNjOWJkNTc1ZWIx
YTAxNWY0NWNjNWRlNjVjY2Q1NTM1MzdiLi41MTAyMmM2NzVkMjRmMGJiOGE1M2IxOTVmZTg4YjFh
ZjAzZDEzNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2Vu
dGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgYm9vbCBNYXRoTUxQcmVzZW50
YXRpb25FbGVtZW50Ojppc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgICAgIHx8
IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpwVGFnKQogICAgICAgICB8fCBodG1s
RWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6cHJlVGFnKQogICAgICAgICB8fCBodG1sRWxl
bWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VjdGlvblRhZykKLSAgICAgICAgfHwgKGh0bWxF
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdHlsZVRhZykgJiYgaHRtbEVsZW1lbnQuaGFz
QXR0cmlidXRlKCJzY29wZWQiKSkKKyAgICAgICAgfHwgKGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpzdHlsZVRhZykgJiYgaHRtbEVsZW1lbnQuaGFzQXR0cmlidXRlKEhUTUxOYW1l
czo6c2NvcGVkQXR0cikpCiAgICAgICAgIHx8IGh0bWxFbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp0YWJsZVRhZykKICAgICAgICAgfHwgaHRtbEVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnVsVGFnKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
aW5kZXggMjU5YzcyMjUzNjcxYjVhMGFlMDg1YmMwNzEyYTRiMTVlYjI3OTVkNi4uZTk0YmRmZjhh
OTMzODU0ZDdkOWZkYjBiZmM2YTE4ODFhZDU5MTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5LCBH
cmFwaGljcwogICAgIEZsb2F0UmVjdCBsZWdlbmRSZWN0ID0geyBib3VuZHMubWF4WCgpIC0gMzAu
MGYsIDEwLCAyMCwgMjAgfTsKICAgICAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbjsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2Ei
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZv
bnRTZWxlY3Rpb25WYWx1ZSg1MDApKTsKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1NldHRpbmdzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICB9CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAg
ICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKKyAgICBmb250RGVz
Y3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiX3MpOwogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTcGVjaWZpZWRTaXplKDEyKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKDEyKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1
ZSg1MDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCBkZGJhODM1ZWY4OTIwM2FhZWFkYTFk
MzAzYjIzNjk0NThkNDcyODEyLi41ZmE5NDJjOThkZjBiNTM2OWJmNjdjZDM3MGUxYzYxYmVmMzBj
YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBRdWly
a3M6OnNob3VsZFRvb2x0aXBQcmV2ZW50RnJvbVByb2NlZWRpbmdXaXRoQ2xpY2soY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKIAogICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCksICJjb3ZpZC5jZGMuZ292Iikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZWxlbWVudC5oYXNDbGFzcygpICYm
IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ0b29sdGlwIik7CisgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzQ2xhc3MoKSAmJiBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygidG9vbHRp
cCJfcyk7CiB9CiAKIC8vIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgdGhlIHNpdGUgaXMgZml4ZWQsIDxy
ZGFyOi8vcHJvYmxlbS83NTc5MjkxMz4KQEAgLTQ0Niw3ICs0NDYsNyBAQCBib29sIFF1aXJrczo6
c2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cyhFdmVudFRhcmdldCogdGFyZ2V0KSBj
b25zdAogICAgIGNhc2UgU2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50czo6RGVwZW5k
aW5nT25UYXJnZXRGb3JfbXliaW5kZXJfb3JnOgogICAgICAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0
KSkgewogICAgICAgICAgICAgZm9yIChhdXRvKiBub2RlID0gZG93bmNhc3Q8Tm9kZT4odGFyZ2V0
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgICAgIGlm
IChpczxFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuY2xhc3NMaXN0
KCkuY29udGFpbnMoImxtLURvY2tQYW5lbC10YWJCYXIiKSkKKyAgICAgICAgICAgICAgICBpZiAo
aXM8RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmNsYXNzTGlzdCgp
LmNvbnRhaW5zKCJsbS1Eb2NrUGFuZWwtdGFiQmFyIl9zKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ3Niw3ICs0NzYsNyBA
QCBib29sIFF1aXJrczo6c2hvdWxkRGlzcGF0Y2hlZFNpbXVsYXRlZE1vdXNlRXZlbnRzQXNzdW1l
RGVmYXVsdFByZXZlbnRlZChFdmVudFRhcgogICAgIH0KIAogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShtX2RvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpLmhvc3QoKSwg
InNvdW5kY2xvdWQuY29tIikgJiYgaXM8RWxlbWVudD4odGFyZ2V0KSkKLSAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEVsZW1lbnQ+KCp0YXJnZXQpLmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJzY2VuZUxh
eWVyIik7CisgICAgICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50PigqdGFyZ2V0KS5jbGFzc0xp
c3QoKS5jb250YWlucygic2NlbmVMYXllciJfcyk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBA
IC00ODgsNyArNDg4LDcgQEAgc3RkOjpvcHRpb25hbDxFdmVudDo6SXNDYW5jZWxhYmxlPiBRdWly
a3M6OnNpbXVsYXRlZE1vdXNlRXZlbnRUeXBlRm9yVGFyZ2V0KEV2ZW4KIAogICAgIC8vIE9uIEdv
b2dsZSBNYXBzLCB3ZSB3YW50IHRvIGxpbWl0IHNpbXVsYXRlZCBtb3VzZSBldmVudHMgdG8gZHJh
Z2dpbmcgdGhlIGxpdHRsZSBtYW4gdGhhdCBhbGxvd3MgZW50ZXJpbmcgaW50byBTdHJlZXQgVmll
dy4KICAgICBpZiAoaXNHb29nbGVNYXBzKCkpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KHRh
cmdldCkgJiYgZG93bmNhc3Q8RWxlbWVudD4odGFyZ2V0KS0+Z2V0QXR0cmlidXRlKCJjbGFzcyIp
ID09ICJ3aWRnZXQtZXhwYW5kLWJ1dHRvbi1wZWdtYW4taWNvbiIpCisgICAgICAgIGlmIChpczxF
bGVtZW50Pih0YXJnZXQpICYmIGRvd25jYXN0PEVsZW1lbnQ+KHRhcmdldCktPmdldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikgPT0gIndpZGdldC1leHBhbmQtYnV0dG9uLXBlZ21hbi1p
Y29uIikKICAgICAgICAgICAgIHJldHVybiBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXM7CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0ZDo6b3B0aW9uYWw8
RXZlbnQ6OklzQ2FuY2VsYWJsZT4gUXVpcmtzOjpzaW11bGF0ZWRNb3VzZUV2ZW50VHlwZUZvclRh
cmdldChFdmVuCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gbGltaXQgc2ltdWxhdGVkIG1vdXNlIGV2
ZW50cyB0byBlbGVtZW50cyB1bmRlciA8ZGl2IGlkPSJwYW5lQ29udGFpbmVyIj4gdG8gYWxsb3cg
Zm9yIGNvbHVtbiByZS1vcmRlcmluZyBhbmQgbXVsdGlwbGUgY2VsbCBzZWxlY3Rpb24uCiAgICAg
ICAgIGlmIChpczxOb2RlPih0YXJnZXQpKSB7CiAgICAgICAgICAgICBhdXRvKiBub2RlID0gZG93
bmNhc3Q8Tm9kZT4odGFyZ2V0KTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBwYW5lQ29udGFpbmVy
ID0gbm9kZS0+dHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoQXRvbVN0cmluZygicGFuZUNvbnRh
aW5lciIpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHBhbmVDb250YWluZXIgPSBub2RlLT50
cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChBdG9tU3RyaW5nKCJwYW5lQ29udGFpbmVyIl9zKSkp
IHsKICAgICAgICAgICAgICAgICBpZiAocGFuZUNvbnRhaW5lci0+Y29udGFpbnMobm9kZSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBFdmVudDo6SXNDYW5jZWxhYmxlOjpZZXM7CiAgICAg
ICAgICAgICB9CkBAIC01MjMsNyArNTIzLDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1ha2VUb3Vj
aEV2ZW50Tm9uQ2FuY2VsYWJsZUZvclRhcmdldChFdmVudFRhcmdldCogdGFyZ2V0KSBjb24KICAg
ICAgICAgaWYgKGlzPEVsZW1lbnQ+KHRhcmdldCkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGRl
cHRoID0gMzsKICAgICAgICAgICAgIGZvciAoYXV0byogZWxlbWVudCA9IGRvd25jYXN0PEVsZW1l
bnQ+KHRhcmdldCk7IGVsZW1lbnQgJiYgZGVwdGg7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRF
bGVtZW50KCksIC0tZGVwdGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+bG9jYWxO
YW1lKCkgPT0gInBhcGVyLWl0ZW0iICYmIGVsZW1lbnQtPmNsYXNzTGlzdCgpLmNvbnRhaW5zKCJ5
dC1kcm9wZG93bi1tZW51IikpCisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmxvY2FsTmFt
ZSgpID09ICJwYXBlci1pdGVtIiAmJiBlbGVtZW50LT5jbGFzc0xpc3QoKS5jb250YWlucygieXQt
ZHJvcGRvd24tbWVudSJfcykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBRdWlya3M6OnNo
b3VsZFByZXZlbnREaXNwYXRjaE9mVG91Y2hFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0b3VjaEV2
ZW50VHlwZSwKIAogICAgIGlmIChpczxFbGVtZW50Pih0YXJnZXQpICYmIHRvdWNoRXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50ICYmIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCkuaG9zdCgpLCAic2l0ZXMuZ29v
Z2xlLmNvbSIpKSB7CiAgICAgICAgIGF1dG8mIGNsYXNzTGlzdCA9IGRvd25jYXN0PEVsZW1lbnQ+
KCp0YXJnZXQpLmNsYXNzTGlzdCgpOwotICAgICAgICByZXR1cm4gY2xhc3NMaXN0LmNvbnRhaW5z
KCJEUHZ3WWMiKSAmJiBjbGFzc0xpc3QuY29udGFpbnMoInNtOHNDZiIpOworICAgICAgICByZXR1
cm4gY2xhc3NMaXN0LmNvbnRhaW5zKCJEUHZ3WWMiX3MpICYmIGNsYXNzTGlzdC5jb250YWlucygi
c204c0NmIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzEsOCArNjMxLDgg
QEAgYm9vbCBRdWlya3M6Om5lZWRzSW5wdXRNb2RlTm9uZUltcGxpY2l0bHkoY29uc3QgSFRNTEVs
ZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFt
ZXM6OmlucHV0VGFnKSkgewogICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1fZG9jdW1lbnQtPnVybCgpLmhvc3QoKSwgImNhbGVuZGFyLmdvb2dsZS5jb20iKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1
YWxpZmllZE5hbWU+IGRhdGFJbml0aWFsVmFsdWVBdHRyKG51bGxBdG9tKCksICJkYXRhLWluaXRp
YWwtdmFsdWUiLCBudWxsQXRvbSgpKTsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFF1
YWxpZmllZE5hbWU+IGRhdGFQcmV2aW91c1ZhbHVlQXR0cihudWxsQXRvbSgpLCAiZGF0YS1wcmV2
aW91cy12YWx1ZSIsIG51bGxBdG9tKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UXVhbGlmaWVkTmFtZT4gZGF0YUluaXRpYWxWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEtaW5p
dGlhbC12YWx1ZSJfcywgbnVsbEF0b20oKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxRdWFsaWZpZWROYW1lPiBkYXRhUHJldmlvdXNWYWx1ZUF0dHIobnVsbEF0b20oKSwgImRhdGEt
cHJldmlvdXMtdmFsdWUiX3MsIG51bGxBdG9tKCkpOwogCiAgICAgICAgIHJldHVybiBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oSFRNTE5hbWVzOjphdXRvY29tcGxldGVBdHRyKSwgIm9mZiIpCiAgICAgICAgICAgICAm
JiBlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZGF0YUluaXRpYWxW
YWx1ZUF0dHIpCkBAIC02NDcsNyArNjQ3LDcgQEAgYm9vbCBRdWlya3M6Om5lZWRzSW5wdXRNb2Rl
Tm9uZUltcGxpY2l0bHkoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgaWYg
KCFob3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5kZXNtb3MuY29tIikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKSAmJiBl
bGVtZW50LnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJkY2ctbXEtdGV4
dGFyZWEiKTsKKyAgICByZXR1cm4gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkgJiYgZWxlbWVudC5w
YXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiZGNnLW1xLXRleHRhcmVhIl9z
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwogICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwMjMsMTAgKzEwMjMsMTAgQEAgc3RhdGljIGJvb2wgaXNLaW5qYUxvZ2luQXZhdGFyRWxl
bWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIC8vIHNwYW4gd2l0aCB0aGVzZSBjbGFz
cyBuYW1lcywgb3IgdGhlIHN2Zywgb3IgdGhlIHN2ZydzIHBhdGguCiAgICAgaWYgKGVsZW1lbnQu
aGFzQ2xhc3MoKSkgewogICAgICAgICBhdXRvJiBjbGFzc05hbWVzID0gZWxlbWVudC5jbGFzc05h
bWVzKCk7Ci0gICAgICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19zd2l0Y2gtdG8tYnVy
bmVyLWxvZ2luIikKLSAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImpzX2hlYWRl
ci11c2VyYnV0dG9uIikKLSAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInNjLTFp
bDN1cnUtMyIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImNJaEtmZCIpCi0gICAgICAgICAgICB8
fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJpeXZuMzQtMCIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
ImJZSWp0bCIpKQorICAgICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRv
LWJ1cm5lci1sb2dpbiJfcykKKyAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoImpz
X2hlYWRlci11c2VyYnV0dG9uIl9zKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1lcy5jb250YWlu
cygic2MtMWlsM3VydS0zIl9zKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJjSWhLZmQiX3MpCisg
ICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJpeXZuMzQtMCJfcykgfHwgY2xhc3NO
YW1lcy5jb250YWlucygiYllJanRsIl9zKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3RhdGljIGJvb2wgaXNLaW5qYUxvZ2luQXZhdGFy
RWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBzdmdFbGVtZW50ID0gZWxl
bWVudC5wYXJlbnRFbGVtZW50KCk7CiAKICAgICBpZiAoc3ZnRWxlbWVudCAmJiBzdmdFbGVtZW50
LT5oYXNBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgYXV0byBhcmlhTGFiZWxBdHRyID0gc3ZnRWxl
bWVudC0+YXR0cmlidXRlcygpLmdldE5hbWVkSXRlbSgiYXJpYS1sYWJlbCIpOworICAgICAgICBh
dXRvIGFyaWFMYWJlbEF0dHIgPSBzdmdFbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0TmFtZWRJdGVt
KCJhcmlhLWxhYmVsIl9zKTsKICAgICAgICAgaWYgKGFyaWFMYWJlbEF0dHIgJiYgYXJpYUxhYmVs
QXR0ci0+dmFsdWUoKSA9PSAiVXNlckZpbGxlZCBpY29uIikKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTEwNTYsMjQgKzEwNTYsMjQgQEAgc3RhdGljIGJvb2wgaXNTdG9yYWdl
QWNjZXNzUXVpcmtEb21haW5BbmRFbGVtZW50KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBFbGVtZW50
JgogICAgIC8vIEZJWE1FKDIxODc3OSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgbWljcm9zb2Z0
LmNvbSBjb21wbGV0ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICBpZiAodXJsLmhv
c3QoKSA9PSAid3d3Lm1pY3Jvc29mdC5jb20iX3MpIHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQu
aGFzQ2xhc3MoKQotICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05hbWVzKCkuY29udGFpbnMoImds
eXBoX3NpZ25Jbl9jaXJjbGUiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250
YWlucygibWVjdHJsX2hlYWRlcnRleHQiKQotICAgICAgICB8fCBlbGVtZW50LmNsYXNzTmFtZXMo
KS5jb250YWlucygibWVjdHJsX2hlYWRlciIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NO
YW1lcygpLmNvbnRhaW5zKCJnbHlwaF9zaWduSW5fY2lyY2xlIl9zKQorICAgICAgICB8fCBlbGVt
ZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygibWVjdHJsX2hlYWRlcnRleHQiX3MpCisgICAgICAg
IHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJtZWN0cmxfaGVhZGVyIl9zKSk7CiAg
ICAgfQogICAgIC8vIFNreXBlIGNhc2UuCiAgICAgLy8gRklYTUUoMjIwMTA1KTogUmVtb3ZlIHRo
aXMgcXVpcmsgb25jZSBTa3lwZSB1bmRlciBvdXRsb29rLmxpdmUuY29tIGNvbXBsZXRlcyB0aGVp
ciBsb2dpbiBmbG93IHJlZGVzaWduLgogICAgIGlmICh1cmwuaG9zdCgpID09ICJvdXRsb29rLmxp
dmUuY29tIl9zKSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAgICAgICAg
JiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJfM2lvRXAyUkdSNXZiMGdxUkRzYUZQ
YSIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJfMkFtMmp2VGFC
ejE3VUo4WG5meEZPeSIpKTsKKyAgICAgICAgJiYgKGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRh
aW5zKCJfM2lvRXAyUkdSNXZiMGdxUkRzYUZQYSJfcykKKyAgICAgICAgfHwgZWxlbWVudC5jbGFz
c05hbWVzKCkuY29udGFpbnMoIl8yQW0yanZUYUJ6MTdVSjhYbmZ4Rk95Il9zKSk7CiAgICAgfQog
ICAgIC8vIFNvbnkgTmV0d29yayBFbnRlcnRhaW5tZW50IGxvZ2luIGNhc2UuCiAgICAgLy8gRklY
TUUoMjE4NzYwKTogUmVtb3ZlIHRoaXMgcXVpcmsgb25jZSBwbGF5c3RhdGlvbi5jb20gY29tcGxl
dGVzIHRoZWlyIGxvZ2luIGZsb3cgcmVkZXNpZ24uCiAgICAgaWYgKHVybC5ob3N0KCkgPT0gInd3
dy5wbGF5c3RhdGlvbi5jb20iX3MgfHwgdXJsLmhvc3QoKSA9PSAibXkucGxheXN0YXRpb24uY29t
Il9zKSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NsYXNzKCkKLSAgICAgICAgJiYgKGVs
ZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9fc2lnbmluLWJ1dHRvbiIp
Ci0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJ3ZWItdG9vbGJhcl9f
c2lnbmluLWJ1dHRvbi1sYWJlbCIpCi0gICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNv
bnRhaW5zKCJzYi1zaWduaW4tYnV0dG9uIikpOworICAgICAgICAmJiAoZWxlbWVudC5jbGFzc05h
bWVzKCkuY29udGFpbnMoIndlYi10b29sYmFyX19zaWduaW4tYnV0dG9uIl9zKQorICAgICAgICB8
fCBlbGVtZW50LmNsYXNzTmFtZXMoKS5jb250YWlucygid2ViLXRvb2xiYXJfX3NpZ25pbi1idXR0
b24tbGFiZWwiX3MpCisgICAgICAgIHx8IGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKCJz
Yi1zaWduaW4tYnV0dG9uIl9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTEx
Miw3ICsxMTEyLDcgQEAgc3RhdGljIGJvb2wgaXNCQkNQb3BVcFBsYXllckVsZW1lbnQoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoIWVsZW1lbnQucGFyZW50RWxlbWVudCgpIHx8ICFl
bGVtZW50LnBhcmVudEVsZW1lbnQoKS0+aGFzQ2xhc3MoKSB8fCAhcGFyZW50RWxlbWVudC0+cGFy
ZW50RWxlbWVudCgpIHx8ICFwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCktPmhhc0NsYXNz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVs
ZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJwX2F1ZGlvQnV0dG9uX2J1dHRvbklubmVy
IikgJiYgcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFp
bnMoImhpZGRlbiIpOworICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NO
YW1lcygpLmNvbnRhaW5zKCJwX2F1ZGlvQnV0dG9uX2J1dHRvbklubmVyIl9zKSAmJiBwYXJlbnRF
bGVtZW50LT5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiaGlkZGVuIl9z
KTsKIH0KIAogUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NBbmRIYW5kbGVDbGljayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZERpc3Bh
dGNoQ2xpY2spPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdApAQCAtMTE4NSwxNCArMTE4NSwx
NCBAQCBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxT
dG9yYWdlQWNjZXNzUXVpcmsoRWxlbWVudCYgZQogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFVzZXJTY3JpcHQ+IGtpbmphTG9naW5Vc2VyU2NyaXB0IHsgImZ1bmN0aW9uIHRyaWdnZXJMb2dp
bkZvcm0oKSB7IGxldCBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J2pzX2hlYWRlci11c2VyYnV0dG9uJyk7IGlmIChlbGVtZW50cyAmJiBlbGVtZW50c1swXSkgeyBl
bGVtZW50c1swXS5jbGljaygpOyBjbGVhckludGVydmFsKGludGVydmFsKTsgfSB9IGxldCBpbnRl
cnZhbCA9IHNldEludGVydmFsKHRyaWdnZXJMb2dpbkZvcm0sIDIwMCk7Il9zLCBVUkwoYWJvdXRC
bGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlw
dEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJ
bmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6
WWVzIH07CiAKLSAgICBpZiAoZXZlbnRUeXBlID09ICJjbGljayIpIHsKKyAgICBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIGlmICghbV9kb2N1bWVu
dCkKICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3Vs
ZE5vdENhbmNlbEV2ZW50OwogCiAgICAgICAgIC8vIEVtYmVkZGVkIFlvdVR1YmUgY2FzZS4KICAg
ICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBkb21haW4gPT0geW91VHViZURvbWFpbiAm
JiAhbV9kb2N1bWVudC0+aXNUb3BEb2N1bWVudCgpICYmIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oeW91VHViZURvbWFpbikpIHsKICAgICAgICAg
ICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFtZXMoKTsKLSAgICAgICAgICAg
IGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiIpIHx8IGNsYXNz
TmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikpIHsKKyAgICAgICAgICAgIGlm
IChjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXItaWNvbiJfcykgfHwgY2xhc3NO
YW1lcy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iX3MpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rp
b24oeW91VHViZURvbWFpbikpIHsKICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdl
QWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQs
IFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KaW5kZXggMTk3NDFmNjJmNmI2NmExYmUw
Nzc3ZGVlNmEzYWEzOWRiMDI4MGVkYy4uMTM2ZjdjZDUyZDM0M2U4MGJhN2NjMjA5MGY2ZjY4N2Ez
YjYwOWQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0KQEAgLTIwNiw3ICsy
MDYsNyBAQCBTcGFuPGNvbnN0IEF0b21TdHJpbmc+IFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQogCiBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxsKCkKIHsKLSAgICBzdGF0aWMg
TWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IHNFdmVudE5hbWVBbGwg
PSAiYWxsRXZlbnRzIjsKKyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0
IEF0b21TdHJpbmc+IHNFdmVudE5hbWVBbGwgPSAiYWxsRXZlbnRzIl9zOwogICAgIHJldHVybiBz
RXZlbnROYW1lQWxsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBlYzMxYzUzODAw
ODMyMDBiOTAwZDJlYTVjZjU0MGEzNjg5N2NlNjU0Li40MjM3Y2Y2MDU5ODRkYzZkNTM2MDQ3NDY3
MzU1ZDM4NDY3MzFhYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTMwNjcsNyArMzA2
Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc01l
dGFkYXRhVHJhY2soKQogICAgICAgICByZXR1cm47CiAKICAgICBtX21ldGFkYXRhVHJhY2sgPSBJ
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlOjpLaW5kOjpNZXRhZGF0YSwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3VlRm9ybWF0
OjpEYXRhKTsKLSAgICBtX21ldGFkYXRhVHJhY2stPnNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNw
YXRjaFR5cGUoImNvbS5hcHBsZS5zdHJlYW1pbmciKTsKKyAgICBtX21ldGFkYXRhVHJhY2stPnNl
dEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoImNvbS5hcHBsZS5zdHJlYW1pbmciX3Mp
OwogICAgIHBsYXllcigpLT5hZGRUZXh0VHJhY2soKm1fbWV0YWRhdGFUcmFjayk7CiB9CiAKQEAg
LTMwOTYsNyArMzA5Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c2V0Q3VycmVudFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2CiAgICAgaWYgKG1fY3Vy
cmVudFRleHRUcmFjayA9PSB0cmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSU5GT19MT0co
TE9HSURFTlRJRklFUiwgInNlbGVjdGluZyB0cmFjayB3aXRoIGxhbmd1YWdlICIsIHRyYWNrID8g
dHJhY2stPmxhbmd1YWdlKCkgOiAiIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInNl
bGVjdGluZyB0cmFjayB3aXRoIGxhbmd1YWdlICIsIHRyYWNrID8gdHJhY2stPmxhbmd1YWdlKCkg
OiBlbXB0eUF0b20oKSk7CiAKICAgICBtX2N1cnJlbnRUZXh0VHJhY2sgPSB0cmFjazsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
aW5kZXggY2ZhMjliMTEyZWEzMjk3M2ZjODU2MzViNjVlNDIxZWFmYmY5MTQwNy4uMDFmMmM2OTcx
NmY2MThhYTQ4ZDI4ZWUxNjVmMTE4MGYwZjRiYjllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0xNzcsNyArMTc3LDcg
QEAgcHVibGljOgogICAgICAgICAvLyB3aGljaCBpcyBwcmVzdW1hYmx5IG9uIHRoZSBtYWluIHRo
cmVhZC4KICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2Nv
ZGVjKQotICAgICAgICAgICAgbV9jb2RlYyA9IEF0b21TdHJpbmcobV9vcmlnaW5hbENvZGVjLnN0
cmluZygpLmRhdGEoKSk7CisgICAgICAgICAgICBtX2NvZGVjID0gQXRvbVN0cmluZzo6ZnJvbUxh
dGluMShtX29yaWdpbmFsQ29kZWMuc3RyaW5nKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuICpt
X2NvZGVjOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggODUyMzQ2ZjZiNWM1NjdkZTI5ZjM1
MTc3ZGM0ODcyMzY1ZGYyN2Q0MC4uYjA4NjlmODAwNDU2MTllNjk2NTg2MWNiMTcyOTgxZWVlMWYz
MWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpkcmF3UmVwYWludEluZGljYXRvcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgUGxhCiAgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHJlcGFpbnRDb3VudCkp
OwogCiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9u
dERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAgZm9udERlc2NyaXB0
aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIl9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0
U3BlY2lmaWVkU2l6ZShmb250U2l6ZSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZShmb250U2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
ci5jcHAKaW5kZXggNjdkNzBjYmNmNzIzMjNlMjA5MzkyNDBkNGQ0NzBjNDM4MTE2NjA2Yy4uYzc2
ZGQzZDI5ZWQzNDY5NmZlMWY1MDkwZDcxOGZjN2YwZjExYjYwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6ZmlsbE1pbWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKGNv
bnN0IEdTdHJlYW1lclJlZwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbWltZVR5
cGUgOiBjdXJyZW50LndlYmtpdE1pbWVUeXBlcykKICAgICAgICAgICAgICAgICAgICAgbV9kZWNv
ZGVyTWltZVR5cGVTZXQuYWRkKG1pbWVUeXBlKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKGN1cnJlbnQuY2Fw
c1N0cmluZykpOworICAgICAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nOjpmcm9tTGF0aW4xKGN1cnJlbnQuY2Fwc1N0cmluZykpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtMjYyLDI2ICsyNjIsMjYgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OmZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyhjb25zdCBHU3RyZWFtZXJSZWcKIHZvaWQg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50RmFjdG9yaWVzJiBmYWN0b3JpZXMpCiB7CiAgICAg
aWYgKGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5
cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpKSB7Ci0g
ICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMiKSk7
Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQi
KSk7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94
LW00YSIpKTsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL21wZWciKSk7Ci0gICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5n
KCJhdWRpby94LW1wZWciKSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJtcGVnIiksIGZhbHNlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIm1wNGEqIiksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL2FhYyJfcykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0Il9zKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSJfcykpOworICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyJfcykpOworICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIl9zKSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIl9zKSwgZmFsc2Up
OworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiX3MpLCBm
YWxzZSk7CiAgICAgfQogCiAgICAgYXV0byBvcHVzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAi
YXVkaW8veC1vcHVzIik7CiAgICAgaWYgKG9wdXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVkaWFTb3Vy
Y2UgfHwgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6
VHlwZTo6QXVkaW9QYXJzZXIsICJhdWRpby94LW9wdXMiKSkpIHsKLSAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7Ci0gICAgICAgIG1fZGVj
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJvcHVzIiksIGZhbHNlKTsKLSAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyIpLCBmYWxzZSk7CisgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9zKSk7Cisg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJvcHVzIl9zKSwgZmFsc2Up
OworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIl9zKSwg
ZmFsc2UpOwogICAgIH0KIAogICAgIGF1dG8gdm9yYmlzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVy
LCAiYXVkaW8veC12b3JiaXMiKTsKICAgICBpZiAodm9yYmlzU3VwcG9ydGVkICYmICghbV9pc01l
ZGlhU291cmNlIHx8IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkF1ZGlvUGFyc2VyLCAiYXVkaW8veC12b3JiaXMiKSkpIHsKLSAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZvcmJpcyIpLCBmYWxzZSk7Ci0gICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJpcyIpLCBmYWxzZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiX3MpLCBm
YWxzZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZvcmJp
cyJfcyksIGZhbHNlKTsKICAgICB9CiAKICAgICBib29sIG1hdHJvc2thU3VwcG9ydGVkID0gZmFj
dG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVt
dXhlciwgInZpZGVvL3gtbWF0cm9za2EiKTsKQEAgLTI5MCwyMSArMjkwLDIxIEBAIHZvaWQgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyCiAgICAgICAgIGF1dG8gdnA5RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
RGVjb2RlciwgInZpZGVvL3gtdnA5IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNs
YXNzaWZpZXI6Olllcyk7CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJBdmFpbGFibGUgfHwgdnA5
RGVjb2RlckF2YWlsYWJsZSkKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJ2aWRlby93ZWJtIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iX3MpKTsKIAogICAgICAgICBpZiAodnA4RGVj
b2RlckF2YWlsYWJsZSkgewotICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwOCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAg
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiKSwgdnA4RGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOC4wIiksIHZwOERlY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ2cDgiX3MpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAg
ICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDgiX3MpLCB2cDhEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2Rl
Y01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiX3MpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZwOURlY29kZXJBdmFpbGFibGUp
IHsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkiKSwg
dnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA5IiksIHZwOURlY29kZXJBdmFpbGFibGUu
aXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ2cDkuMCIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0g
ICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnAwOSoiKSwgdnA5
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSJfcyksIHZwOURlY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3Ry
aW5nKCJ4LXZwOSJfcyksIHZwOURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAg
ICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkuMCJfcyksIHZw
OURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiJfcyksIHZwOURlY29kZXJBdmFpbGFibGUu
aXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgfQogICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkK
LSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93
ZWJtIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmco
ImF1ZGlvL3dlYm0iX3MpKTsKICAgICB9CiAKICAgICBib29sIHNob3VsZEFkZE1QNENvbnRhaW5l
ciA9IGZhbHNlOwpAQCAtMzEyLDM1ICszMTIsMzUgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIK
ICAgICBhdXRvIGgyNjREZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1o
MjY0LCBwcm9maWxlPShzdHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGluZSwgYmFzZWxpbmUsIGhp
Z2ggfSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwog
ICAgIGlmIChoMjY0RGVjb2RlckF2YWlsYWJsZSAmJiAoIW1faXNNZWRpYVNvdXJjZSB8fCBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRl
b1BhcnNlciwgInZpZGVvL3gtaDI2NCIpKSkgewogICAgICAgICBzaG91bGRBZGRNUDRDb250YWlu
ZXIgPSB0cnVlOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1o
MjY0IiksIGgyNjREZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIiksIGgyNjREZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJtcDR2KiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwor
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0Il9zKSwgaDI2
NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2YyoiX3MpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
bXA0dioiX3MpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0K
IAogICAgIGF1dG8gaDI2NURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94
LWgyNjUiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsK
ICAgICBpZiAoaDI2NURlY29kZXJBdmFpbGFibGUgJiYgKCFtX2lzTWVkaWFTb3VyY2UgfHwgZmFj
dG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6Vmlk
ZW9QYXJzZXIsICJ2aWRlby94LWgyNjUiKSkpIHsKICAgICAgICAgc2hvdWxkQWRkTVA0Q29udGFp
bmVyID0gdHJ1ZTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngt
aDI2NSIpLCBoMjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiaHZjMSoiKSwgaDI2NURlY29kZXJBdmFp
bGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImhldjEqIiksIGgyNjVEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjUiX3MpLCBo
MjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygiaHZjMSoiX3MpLCBoMjY1RGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygiaGV2MSoiX3MpLCBoMjY1RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAg
IH0KIAogICAgIGlmIChzaG91bGRBZGRNUDRDb250YWluZXIpIHsKLSAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCIpKTsKLSAgICAgICAgbV9kZWNv
ZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2IikpOworICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vbXA0Il9zKSk7CisgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW00diJfcykp
OwogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNF
bGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rlciwg
InZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6
Olllcyk7CiAgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNv
ZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJhdjAxKiIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAg
IG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRv
bVN0cmluZygieC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwor
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiX3MpLCBhdjFE
ZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiX3MpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2
MSJfcyksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICB9CiAKICAg
ICBWZWN0b3I8R3N0Q2Fwc1dlYktpdE1hcHBpbmc+IG1zZUNvbXBhdGlibGVNYXBwaW5nID0gewot
ICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1ZGlvL3gt
YWMzIiwgeyB9LCB7IngtYWMzIiwgImFjLTMiLCAiYWMzIn0gfSwKLSAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWVhYzMiLCB7ImF1ZGlvL3gt
YWMzIn0sICB7IngtZWFjMyIsICJlYzMiLCAiZWMtMyIsICJlYWMzIn0gfSwKLSAgICAgICAgeyBF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWZsYWMiLCB7ImF1
ZGlvL3gtZmxhYyIsICJhdWRpby9mbGFjIn0sIHsieC1mbGFjIiwgImZsYWMiIH0gfSwKKyAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWFjMyIs
IHsgfSwgeyAieC1hYzMiX3MsICJhYy0zIl9zLCAiYWMzIl9zIH0gfSwKKyAgICAgICAgeyBFbGVt
ZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWVhYzMiLCB7ICJhdWRp
by94LWFjMyJfcyB9LCAgeyAieC1lYWMzIl9zLCAiZWMzIl9zLCAiZWMtMyJfcywgImVhYzMiX3Mg
fSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2RlciwgImF1
ZGlvL3gtZmxhYyIsIHsgImF1ZGlvL3gtZmxhYyJfcywgImF1ZGlvL2ZsYWMiX3MgfSwgeyJ4LWZs
YWMiX3MsICJmbGFjIl9zIH0gfSwKICAgICB9OwogICAgIGZpbGxNaW1lVHlwZVNldEZyb21DYXBz
TWFwcGluZyhmYWN0b3JpZXMsIG1zZUNvbXBhdGlibGVNYXBwaW5nKTsKIApAQCAtMzUwLDc2ICsz
NTAsNzYgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVy
cyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAvLyBUaGUgbWltZS10eXBlcyBp
bml0aWFsaXplZCBiZWxvdyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgTVNFIGJhY2tlbmQuCiAK
ICAgICBWZWN0b3I8R3N0Q2Fwc1dlYktpdE1hcHBpbmc+IG1hcHBpbmcgPSB7Ci0gICAgICAgIHsg
RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8vbWlkaSIsIHsgImF1
ZGlvL21pZGkiLCAiYXVkaW8vcmlmZi1taWRpIiB9LCB7IH0gfSwKKyAgICAgICAgeyBFbGVtZW50
RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby9taWRpIiwgeyAiYXVkaW8vbWlk
aSJfcywgImF1ZGlvL3JpZmYtbWlkaSJfcyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFj
dG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LWR0cyIsIHsgfSwgeyB9IH0sCiAg
ICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1z
YmMiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlv
RGVjb2RlciwgImF1ZGlvL3gtc2lkIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFj
dG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXNwZWV4IiwgeyAiYXVkaW8vc3Bl
ZXgiLCAiYXVkaW8veC1zcGVleCIgfSwgeyB9IH0sCi0gICAgICAgIHsgRWxlbWVudEZhY3Rvcmll
czo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC13YXZwYWNrIiwgeyAiYXVkaW8veC13YXZw
YWNrIiB9LCB7IH0gfSwKLSAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0Rl
Y29kZXIsICJ2aWRlby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KXsxLDJ9LCBzeXN0ZW1zdHJlYW09
KGJvb2xlYW4pZmFsc2UiLCB7ICJ2aWRlby9tcGVnIiB9LCB7ICJtcGVnIiB9IH0sCisgICAgICAg
IHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9EZWNvZGVyLCAiYXVkaW8veC1zcGVleCIs
IHsgImF1ZGlvL3NwZWV4Il9zLCAiYXVkaW8veC1zcGVleCJfcyB9LCB7IH0gfSwKKyAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29kZXIsICJhdWRpby94LXdhdnBhY2si
LCB7ICJhdWRpby94LXdhdnBhY2siX3MgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCl7
MSwyfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNlIiwgeyAidmlkZW8vbXBlZyJfcyB9LCB7
ICJtcGVnIl9zIH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0Rl
Y29kZXIsICJ2aWRlby9tcGVndHMiLCB7IH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtZGlyYWMiLCB7IH0sIHsgfSB9LAot
ICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gt
Zmxhc2gtdmlkZW8iLCB7ICJ2aWRlby9mbHYiLCAidmlkZW8veC1mbHYiIH0sIHsgfSB9LAorICAg
ICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtZmxh
c2gtdmlkZW8iLCB7ICJ2aWRlby9mbHYiX3MsICJ2aWRlby94LWZsdiJfcyB9LCB7IH0gfSwKICAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWgy
NjMiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
RGVjb2RlciwgInZpZGVvL3gtbXN2aWRlb2NvZGVjIiwgeyAidmlkZW8veC1tc3ZpZGVvIiB9LCB7
IH0gfSwKKyAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2
aWRlby94LW1zdmlkZW9jb2RlYyIsIHsgInZpZGVvL3gtbXN2aWRlbyJfcyB9LCB7IH0gfSwKICAg
ICAgICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24vdm5k
LnJuLXJlYWxtZWRpYSIsIHsgfSwgeyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6
VHlwZTo6RGVtdXhlciwgImFwcGxpY2F0aW9uL3gtM2dwIiwgeyB9LCB7IH0gfSwKLSAgICAgICAg
eyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXBwbGljYXRpb24veC1obHMiLCB7
ICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCIsICJhcHBsaWNhdGlvbi94LW1wZWd1cmwi
IH0sIHsgfSB9LAorICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJh
cHBsaWNhdGlvbi94LWhscyIsIHsgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl9zLCAi
YXBwbGljYXRpb24veC1tcGVndXJsIl9zIH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJhcHBsaWNhdGlvbi94LXBuLXJlYWxhdWRpbyIsIHsgfSwg
eyB9IH0sCiAgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6RGVtdXhlciwgImFwcGxp
Y2F0aW9uL2Rhc2greG1sIiwgeyB9LCB7IH0gfSwKICAgICAgICAgeyBFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpEZW11eGVyLCAiYXVkaW8veC1haWZmIiwgeyB9LCB7IH0gfSwKLSAgICAgICAgeyBF
bGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXVkaW8veC13YXYiLCB7ICJhdWRpby94
LXdhdiIsICJhdWRpby93YXYiLCAiYXVkaW8vdm5kLndhdmUiIH0sIHsgIjEiIH0gfSwKKyAgICAg
ICAgeyBFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpEZW11eGVyLCAiYXVkaW8veC13YXYiLCB7ICJh
dWRpby94LXdhdiJfcywgImF1ZGlvL3dhdiJfcywgImF1ZGlvL3ZuZC53YXZlIl9zIH0sIHsgIjEi
X3MgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRlbXV4ZXIsICJ2aWRl
by9xdWlja3RpbWUiLCB7IH0sIHsgfSB9LAotICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5
cGU6OkRlbXV4ZXIsICJ2aWRlby9xdWlja3RpbWUsIHZhcmlhbnQ9KHN0cmluZykzZ3BwIiwgeyAi
dmlkZW8vM2dwcCIgfSwgeyB9IH0sCisgICAgICAgIHsgRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
RGVtdXhlciwgInZpZGVvL3F1aWNrdGltZSwgdmFyaWFudD0oc3RyaW5nKTNncHAiLCB7ICJ2aWRl
by8zZ3BwIl9zIH0sIHsgfSB9LAogICAgICAgICB7IEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkRl
bXV4ZXIsICJ2aWRlby94LW1zLWFzZiIsIHsgfSwgeyB9IH0sCiAgICAgfTsKICAgICBmaWxsTWlt
ZVR5cGVTZXRGcm9tQ2Fwc01hcHBpbmcoZmFjdG9yaWVzLCBtYXBwaW5nKTsKIAogICAgIGlmIChm
YWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpE
ZW11eGVyLCAiYXBwbGljYXRpb24vb2dnIikpIHsKLSAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImFwcGxpY2F0aW9uL29nZyIpKTsKKyAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImFwcGxpY2F0aW9uL29nZyJfcykpOwogCiAgICAg
ICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQpIHsKLSAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBl
U2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC12b3JiaXMrb2dnIikpOworICAgICAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyJfcykp
OworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L3gtdm9yYmlzK29nZyJfcykpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2Rl
ciwgImF1ZGlvL3gtc3BlZXgiKSkgewotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJzcGVleCIpLCBmYWxzZSk7CisgICAgICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIl9zKSk7CisgICAgICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygic3BlZXgiX3MpLCBmYWxzZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUo
RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC10aGVvcmEiKSkg
ewotICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVv
L29nZyIpKTsKLSAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ0
aGVvcmEiKSwgZmFsc2UpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoInZpZGVvL29nZyJfcykpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoInRoZW9yYSJfcyksIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIGJvb2wgYXVkaW9NcGVnU3VwcG9ydGVkID0gZmFsc2U7CiAgICAgaWYgKGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRGVjb2Rl
ciwgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMSwgbGF5ZXI9KGludClbMSwgM10iKSkg
ewogICAgICAgICBhdWRpb01wZWdTdXBwb3J0ZWQgPSB0cnVlOwotICAgICAgICBtX2RlY29kZXJN
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAxIikpOwotICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAzIikpOwotICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcDMiKSk7Ci0gICAgICAg
IG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDMiKSwgZmFsc2UpOwot
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXAzIiksIGZhbHNlKTsK
KyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMSJf
cykpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
bXAzIl9zKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJh
dWRpby94LW1wMyJfcykpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygiYXVkaW8vbXAzIl9zKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygibXAzIl9zKSwgZmFsc2UpOwogICAgIH0KIAogICAgIGlmIChmYWN0b3JpZXMu
aGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRpb0RlY29k
ZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTIiKSkgewogICAgICAgICBhdWRpb01w
ZWdTdXBwb3J0ZWQgPSB0cnVlOwotICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8vbXAyIikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygiYXVkaW8vbXAyIl9zKSk7CiAgICAgfQogCiAgICAgYXVkaW9NcGVnU3VwcG9y
dGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywg
ImF1ZGlvL21wNCJfcyk7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewotICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKLSAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsK
KyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWci
X3MpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L3gtbXBlZyJfcykpOwogICAgIH0KIAogICAgIGlmIChtYXRyb3NrYVN1cHBvcnRlZCkgewotICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tYXRyb3Nr
YSIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVv
L3gtbWF0cm9za2EiX3MpKTsKIAogICAgICAgICBpZiAoZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC12
cDEwIikpCi0gICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
dmlkZW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJ2aWRlby93ZWJtIl9zKSk7CiAgICAgfQogfQogCkBAIC00MzEsNzYgKzQzMSw3NiBA
QCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZUVuY29kZXJzKGNvbnN0
IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogCiAgICAgYXV0byBhYWNTdXBwb3J0ZWQgPSBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpBdWRp
b0VuY29kZXIsICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQiKTsKICAgICBpZiAoZmFj
dG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVk
aW9FbmNvZGVyLCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKLSAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciKSwgZmFsc2UpOwotICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiKSwgZmFsc2UpOworICAg
ICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygibXBlZyJfcyksIGZhbHNlKTsK
KyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIl9zKSwgZmFs
c2UpOwogICAgIH0KIAogICAgIGF1dG8gb3B1c1N1cHBvcnRlZCA9IGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OkF1ZGlvRW5jb2RlciwgImF1
ZGlvL3gtb3B1cyIpOwogICAgIGlmIChvcHVzU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1fZW5jb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJvcHVzIiksIGZhbHNlKTsKLSAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtb3B1cyIpLCBmYWxzZSk7CisgICAgICAgIG1f
ZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJvcHVzIl9zKSwgZmFsc2UpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1vcHVzIl9zKSwgZmFsc2UpOwog
ICAgIH0KIAogICAgIGF1dG8gdm9yYmlzU3VwcG9ydGVkID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRG
b3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6QXVkaW9FbmNvZGVyLCAiYXVkaW8v
eC12b3JiaXMiKTsKICAgICBpZiAodm9yYmlzU3VwcG9ydGVkKSB7Ci0gICAgICAgIG1fZW5jb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2b3JiaXMiKSwgZmFsc2UpOwotICAgICAgICBtX2Vu
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiKSwgZmFsc2UpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidm9yYmlzIl9zKSwgZmFsc2UpOwor
ICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12b3JiaXMiX3MpLCBm
YWxzZSk7CiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gYXYxRW5jb2RlcnNEaXNhbGxvd2Vk
TGlzdCB7ICJhdjFlbmMiX3MgfTsKICAgICBhdXRvIGF2MUVuY29kZXJBdmFpbGFibGUgPSBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRl
b0VuY29kZXIsICJ2aWRlby94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVD
bGFzc2lmaWVyOjpZZXMsIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MUVuY29kZXJzRGlz
YWxsb3dlZExpc3QpKSk7CiAgICAgaWYgKGF2MUVuY29kZXJBdmFpbGFibGUpIHsKLSAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiksIGZhbHNlKTsKLSAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBmYWxzZSk7Ci0gICAg
ICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSIpLCBmYWxzZSk7Cisg
ICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiJfcyksIGZhbHNl
KTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSJfcyksIGZh
bHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIl9z
KSwgZmFsc2UpOwogICAgIH0KIAogICAgIGF1dG8gdnA4RW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
RW5jb2RlciwgInZpZGVvL3gtdnA4IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNs
YXNzaWZpZXI6Olllcyk7CiAgICAgaWYgKHZwOEVuY29kZXJBdmFpbGFibGUpIHsKLSAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOCIpLCB2cDhFbmNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ4LXZwOCIpLCB2cDhFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0g
ICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDguMCIpLCB2cDhFbmNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ2cDgiX3MpLCB2cDhFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCJf
cyksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOC4wIl9zKSwgdnA4RW5jb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgIH0KIAogICAgIGF1dG8gdnA5RW5jb2RlckF2YWlsYWJs
ZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5
cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtdnA5IiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tI
YXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7CiAgICAgaWYgKHZwOUVuY29kZXJBdmFpbGFibGUpIHsK
LSAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSIpLCB2cDlFbmNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ4LXZwOSIpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDkuMCIp
LCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDA5KiIpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ2cDkiX3MpLCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAg
IG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOSJfcyksIHZwOUVuY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoInZwOS4wIl9zKSwgdnA5RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdh
cmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnAwOSoiX3Mp
LCB2cDlFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgaWYg
KGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
Ok11eGVyLCAidmlkZW8vd2VibSIpICYmICh2cDhFbmNvZGVyQXZhaWxhYmxlIHx8IHZwOUVuY29k
ZXJBdmFpbGFibGUgfHwgYXYxRW5jb2RlckF2YWlsYWJsZSkpCi0gICAgICAgIG1fZW5jb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIikpOworICAgICAgICBtX2VuY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSJfcykpOwogCiAgICAgaWYg
KGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6
Ok11eGVyLCAiYXVkaW8vd2VibSIpKSB7CiAgICAgICAgIGlmIChvcHVzU3VwcG9ydGVkKQotICAg
ICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL29wdXMi
KSk7Ci0gICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93
ZWJtIikpOworICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmco
ImF1ZGlvL29wdXMiX3MpKTsKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL3dlYm0iX3MpKTsKICAgICB9CiAKICAgICBpZiAoZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6TXV4ZXIsICJhdWRpby9v
Z2ciKSAmJiAodm9yYmlzU3VwcG9ydGVkIHx8IG9wdXNTdXBwb3J0ZWQpKQotICAgICAgICBtX2Vu
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOworICAgICAgICBt
X2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIl9zKSk7CiAKICAg
ICBhdXRvIGgyNjRFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVyLCAidmlkZW8veC1oMjY0
LCBwcm9maWxlPShzdHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGluZSwgYmFzZWxpbmUsIGhpZ2gg
fSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwogICAg
IGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkgewotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygiaDI2NCIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdh
cmUpOwotICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0Iiks
IGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdmMqIiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJtcDR2KiIpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiaDI2NCJfcyksIGgyNjRFbmNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LWgyNjQiX3MpLCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXZjKiJf
cyksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5j
b2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDR2KiJfcyksIGgyNjRFbmNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgaWYgKGZhY3Rvcmllcy5oYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6Ok11eGVyLCAidmlkZW8vcXVp
Y2t0aW1lIikpIHsKICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2Vu
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb3B1cyIpKTsKKyAgICAgICAg
ICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIl9zKSk7
CiAgICAgICAgIGlmIChhYWNTdXBwb3J0ZWQpIHsKLSAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9hYWMiKSk7Ci0gICAgICAgICAgICBtX2VuY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOwotICAgICAgICAgICAg
bV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbTRhIikpOworICAg
ICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL2FhYyJf
cykpOworICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1
ZGlvL21wNCJfcykpOworICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL3gtbTRhIl9zKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGgyNjRFbmNv
ZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygidmlkZW8vbXA0IikpOwotICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2IikpOworICAgICAgICAgICAgbV9lbmNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL21wNCJfcykpOworICAgICAgICAgICAgbV9l
bmNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2Il9zKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggN2IyMDI3OTVlZDE1ZmYyNDI4ODlkOGQ4MWZjNjIxZThi
YWRjMjQwMi4uNjI3NmNhOTA5NWRiNWQzYmNkMTdiNmMxNjQ5OGQwZjE3NjAyOWJmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKHVuc2lnbmVkIGluZGV4LAogICAgIDogSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZShDdWVGb3JtYXQ6OldlYlZUVCkKICAgICAsIFRyYWNrUHJpdmF0ZUJhc2VH
U3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlOjpUZXh0LCB0aGlz
LCBpbmRleCwgV1RGTW92ZShzdHJlYW0pKQogewotICAgIG1faWQgPSBnc3Rfc3RyZWFtX2dldF9z
dHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpOworICAgIG1faWQgPSBBdG9tU3RyaW5nOjpmcm9tTGF0
aW4xKGdzdF9zdHJlYW1fZ2V0X3N0cmVhbV9pZChtX3N0cmVhbS5nZXQoKSkpOwogICAgIEdTVF9J
TkZPKCJUcmFjayAlZCBnb3Qgc3RyZWFtIHN0YXJ0IGZvciBzdHJlYW0gJXMuIiwgbV9pbmRleCwg
bV9pZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEdTVF9ERUJVRygiU3RyZWFtICUi
IEdTVF9QVFJfRk9STUFULCBtX3N0cmVhbS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDAxZmVmZWEzMmQyMTM2ZGZkMWUxZjNj
MjViODE2MjY5NjkwZmJkMTQuLjIwOTgwMzVkYTgwYjBiOTM5MzVlNDY2OTFmMDI1NzVlZTc4ODg2
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
dXBkYXRlVHJhY2tzKGNvbnN0IEdSZWZQdHI8R3N0U3RyZWFtQ29sbGVjdGlvbgogICAgICAgICAg
ICAgQ1JFQVRFX1RSQUNLKHZpZGVvLCBWaWRlbyk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgJiBH
U1RfU1RSRUFNX1RZUEVfVEVYVCAmJiAhdXNlTWVkaWFTb3VyY2UpIHsKICAgICAgICAgICAgIGF1
dG8gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUodGV4dFRy
YWNrSW5kZXgrKywgV1RGTW92ZShzdHJlYW0pKTsKLSAgICAgICAgICAgIG1fdGV4dFRyYWNrcy5h
ZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBtX3RleHRUcmFja3Mu
YWRkKEF0b21TdHJpbmc6OmZyb21MYXRpbjEoc3RyZWFtSWQpLCB0cmFjay5jb3B5UmVmKCkpOwog
ICAgICAgICAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayh0cmFjay5nZXQoKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgR1NUX1dBUk5JTkcoIlVua25vd24gdHJhY2sgdHlwZSBmb3Vu
ZCBmb3Igc3RyZWFtICVzIiwgc3RyZWFtSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IDI5NTdiY2VmM2QwZDBlMTgyOGVmNWRmN2JmOGJjZTVk
ZWMyZjhkOWEuLjlhYjE1ZGZhZWMyYjRlNTgxOGU1YTNlZjllMTI3MDk4MGMwODZhMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cihUcmFja1R5cGUgdHlwZSwgVHJhY2tQcml2YXQKICAgICAsIG1fb3duZXIob3duZXIpCiB7CiAg
ICAgQVNTRVJUKG1fc3RyZWFtKTsKLSAgICBtX2lkID0gZ3N0X3N0cmVhbV9nZXRfc3RyZWFtX2lk
KG1fc3RyZWFtLmdldCgpKTsKKyAgICBtX2lkID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShnc3Rf
c3RyZWFtX2dldF9zdHJlYW1faWQobV9zdHJlYW0uZ2V0KCkpKTsKIAogICAgIC8vIFdlIGNhbid0
IGNhbGwgbm90aWZ5VHJhY2tPZlRhZ3NDaGFuZ2VkKCkgZGlyZWN0bHksIGJlY2F1c2Ugd2UgbmVl
ZCB0YWdzQ2hhbmdlZCgpIHRvIHNldHVwIG1fdGFncy4KICAgICB0YWdzQ2hhbmdlZCgpOwpAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJh
Y2tPZlN0cmVhbUNoYW5nZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBHU1RfSU5GTygiVHJh
Y2sgJWQgZ290IHN0cmVhbSBzdGFydCBmb3Igc3RyZWFtICVzLiIsIG1faW5kZXgsIHN0cmVhbUlk
LmdldCgpKTsKLSAgICBtX2lkID0gc3RyZWFtSWQuZ2V0KCk7CisgICAgbV9pZCA9IEF0b21TdHJp
bmc6OmZyb21MYXRpbjEoc3RyZWFtSWQuZ2V0KCkpOwogfQogCiB2b2lkIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OnN0cmVhbUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5k
ZXggYmM1MzlhODc0NzgwMjgxODEzZjZhZjMwMGFlMmUwMmI3NmFlNjFiYy4uNDg5MDIyOTM2OTE5
ZDczOWQwMGVhMWNjYzMyNjZmZGFlZjI4Njc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3Bw
CkBAIC0xNDcsMTAgKzE0NywxMCBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZVRodW5k
ZXI6OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogICAgIHN0YXRpYyBWZWN0b3I8QXRv
bVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewogICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoNCk7Ci0gICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBw
ZW5kKEF0b21TdHJpbmcoImtleWlkcyIpKTsKLSAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBl
cy51bmNoZWNrZWRBcHBlbmQoQXRvbVN0cmluZygiY2VuYyIpKTsKLSAgICAgICAgc3VwcG9ydGVk
SW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoQXRvbVN0cmluZygid2VibSIpKTsKLSAgICAg
ICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoQXRvbVN0cmluZygiY2Jj
cyIpKTsKKyAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBlbmQoImtl
eWlkcyJfcyk7CisgICAgICAgIHN1cHBvcnRlZEluaXREYXRhVHlwZXMudW5jaGVja2VkQXBwZW5k
KCJjZW5jIl9zKTsKKyAgICAgICAgc3VwcG9ydGVkSW5pdERhdGFUeXBlcy51bmNoZWNrZWRBcHBl
bmQoIndlYm0iX3MpOworICAgICAgICBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzLnVuY2hlY2tlZEFw
cGVuZCgiY2JjcyJfcyk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHN1cHBvcnRlZEluaXREYXRhVHlw
ZXM7CiB9CkBAIC0xNzAsOSArMTcwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGMKIAogVmVj
dG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMo
KSBjb25zdAogewotICAgIHJldHVybiB7IGVtcHR5QXRvbSgpLAotICAgICAgICAiU1dfU0VDVVJF
X0RFQ09ERSIsCi0gICAgICAgICJTV19TRUNVUkVfQ1JZUFRPIiB9OworICAgIHJldHVybiB7IGVt
cHR5QXRvbSgpLCAiU1dfU0VDVVJFX0RFQ09ERSJfcywgIlNXX1NFQ1VSRV9DUllQVE8iX3MgfTsK
IH0KIAogQ0RNUmVxdWlyZW1lbnQgQ0RNUHJpdmF0ZVRodW5kZXI6OmRpc3RpbmN0aXZlSWRlbnRp
ZmllcnNSZXF1aXJlbWVudChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAK
aW5kZXggMGJiMjJkNTI1OTBlZGUyNTc4ZjA0ZjI2YTYxNmY5MTYwYzQ0YjNkZS4uYzI2YTliNTM1
NjY5MzQ4OGI0MjVmNmU5N2M0ODFiMTViMjc3YTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5jcHAKQEAgLTcxMyw3ICs3MTMsNyBAQCBBcHBlbmRQaXBlbGluZTo6VHJhY2sqIEFw
cGVuZFBpcGVsaW5lOjp0cnlNYXRjaFBhZFRvRXhpc3RpbmdUcmFjayhHc3RQYWQgKmRlbXV4ZQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1faGFzUmVjZWl2ZWRG
aXJzdEluaXRpYWxpemF0aW9uU2VnbWVudCk7Ci0gICAgQXRvbVN0cmluZyB0cmFja0lkID0gR1NU
X1BBRF9OQU1FKGRlbXV4ZXJTcmNQYWQpOworICAgIGF1dG8gdHJhY2tJZCA9IEF0b21TdHJpbmc6
OmZyb21MYXRpbjEoR1NUX1BBRF9OQU1FKGRlbXV4ZXJTcmNQYWQpKTsKICAgICBhdXRvIFtwYXJz
ZWRDYXBzLCBzdHJlYW1UeXBlLCBwcmVzZW50YXRpb25TaXplXSA9IHBhcnNlRGVtdXhlclNyY1Bh
ZENhcHMoYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyhkZW11eGVyU3JjUGFkKSku
Z2V0KCkpOwogCiAgICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBwcmUtZXhpc3RpbmcgdHJh
Y2suIElkZWFsbHksIHRyYWNrcyBzaG91bGQgYmUgbWF0Y2hlZCBieSB0cmFjayBJRCwgYnV0IG1h
dGNoaW5nIGJ5IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggM2U0ZTBlOTM0MjVlNjgwYjkwMzYy
N2JlOTlmYjQzZjJhMjNjMmUwZi4uNDYyNDFkMTI0MTkzYWVlYWUyZWRlZDQwNWNhMjg1YzM5M2Ez
MTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
dW5zaWduZWQgaG91cnMgPSBtaW51dGVzIC8gNjAgJSA2MDsKIAogICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1p
bHkoIkNvdXJpZXIiKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJDb3VyaWVy
Il9zKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25WYWx1ZSg1
MDApKTsKIAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKG1fYmFzZUZvbnRT
aXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCmluZGV4IGE1MzEwNjA3YTMwNDk5OTUzZTQ5NWRhZTYzNDVmOGU1MmZkZjA3
MmUuLjk3NzhjMTc1ZjM0ZDQ2ZDBiNmY1MDExNmU3ZThkM2E1NTQ5NDQ0NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApA
QCAtNjcsOCArNjcsOSBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNv
bnN0cnVjdG9yKCkKIHsKICAgICBzdGF0aWMgYm9vbCBkaWRSZWdpc3RlciA9IGZhbHNlOwogICAg
IGlmICghZGlkUmVnaXN0ZXIpIHsKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVp
bHRpbkNvbnN0cnVjdG9yKCJibG9iIiwgY3JlYXRlQmxvYlJlc291cmNlSGFuZGxlKTsKLSAgICAg
ICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKCJibG9i
IiwgbG9hZEJsb2JSZXNvdXJjZVN5bmNocm9ub3VzbHkpOworICAgICAgICBBdG9tU3RyaW5nIGJs
b2IgPSAiYmxvYiJfczsKKyAgICAgICAgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpbkNv
bnN0cnVjdG9yKGJsb2IsIGNyZWF0ZUJsb2JSZXNvdXJjZUhhbmRsZSk7CisgICAgICAgIFJlc291
cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihibG9iLCBsb2FkQmxv
YlJlc291cmNlU3luY2hyb25vdXNseSk7CiAgICAgICAgIGRpZFJlZ2lzdGVyID0gdHJ1ZTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXgg
YTNmZWZhZDA2YTZiMjcyYjFhZjFiNTkwNDM2OTgyYTE2ODUzYjFhZi4uNDg1Y2U3M2Q5YzM0YTBj
OWEzNDJkM2NmZTcwYTU1ZTQ0NmZjYTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5k
ZXJlclRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hh
cioKICAgICB3aGlsZSAocm9vdC0+cGFyZW50KCkpCiAgICAgICAgIHJvb3QgPSByb290LT5wYXJl
bnQoKTsKIAotICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcihjb3VudGVyTmFtZSk7CisgICAgYXV0
byBpZGVudGlmaWVyID0gQXRvbVN0cmluZzo6ZnJvbUxhdGluMShjb3VudGVyTmFtZSk7CiAgICAg
Zm9yIChhdXRvKiBjdXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5l
eHRJblByZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKCFpczxXZWJDb3JlOjpSZW5kZXJFbGVtZW50
PigqY3VycmVudCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMjYzYWM3NWFjN2U0ZDJhM2Qy
MzU5MTQ2YWFjM2RmN2NmNDliYjkyMi4uZDk3Nzg5NWFmZGMxNzhlNjNmM2E0Y2RhOTEyMGY2NjNh
YjVlMTk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTMzMzAsNyArMzMzMCw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0
dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKIAogICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsK
LSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSJfcyk7CiAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKDEwKTsKICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZSgxMCk7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRX
ZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlKDUwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggZjM3NTk0MDdhNjBhMTdmMGM4ZjhiYjdhN2RiMWMx
NTIwNjk4ZTk0Ni4uYzVjNDE2ZDJjMDYzNjFkY2FhYWNhMDhmODFjYTc0MjFkNjkwMmJhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC01Miw3ICs1
Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlw
dGlvbihDU1NWYWx1ZUlELCBGb250Q2FzY2FkZURlCiAgICAgaWYgKCFwYW5nb0Rlc2NyaXB0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KHBh
bmdvX2ZvbnRfZGVzY3JpcHRpb25fZ2V0X2ZhbWlseShwYW5nb0Rlc2NyaXB0aW9uKSk7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKHBhbmdv
X2ZvbnRfZGVzY3JpcHRpb25fZ2V0X2ZhbWlseShwYW5nb0Rlc2NyaXB0aW9uKSkpOwogCiAgICAg
aW50IHNpemUgPSBwYW5nb19mb250X2Rlc2NyaXB0aW9uX2dldF9zaXplKHBhbmdvRGVzY3JpcHRp
b24pIC8gUEFOR09fU0NBTEU7CiAgICAgLy8gSWYgdGhlIHNpemUgb2YgdGhlIGZvbnQgaXMgaW4g
cG9pbnRzLCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gcGl4ZWxzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCmluZGV4
IDIxZDljN2UyYzcyZWQxMDRhODVlZDk5ZDA1MTZiN2NhZDZiMThlNzcuLmMwYzM0NzhjMjhiOWE4
NTRhODEyNjM0YWNhYWUzMjg0ZWY1NGYyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKQEAgLTQ1LDggKzQ1LDgg
QEAgdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoUmVuZGVyTWF0aE1MRmVuY2VkKTsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGdPcGVuaW5n
QnJhY2VDaGFyID0gIigiOwotc3RhdGljIGNvbnN0IGNoYXIqIGdDbG9zaW5nQnJhY2VDaGFyID0g
IikiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGdPcGVuaW5nQnJhY2VDaGFyID0gIigiX3M7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gZ0Nsb3NpbmdCcmFjZUNoYXIgPSAiKSJfczsKIAogUmVuZGVy
TWF0aE1MRmVuY2VkOjpSZW5kZXJNYXRoTUxGZW5jZWQoTWF0aE1MUm93RWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmNwcAppbmRleCAzMzE4OWJkNjRjYWNiZWRmOTM2OGQzNGZhOWZiNTY0ZDU4YmQx
ZjM2Li44YWM2ZWRlYzJmZTBiNjE2NzE4ODJhNWY5ZmZkNjQ3ZjQwNmJjZjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC0xMDAs
NyArMTAwLDcgQEAgUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKICAgICAgICAgaWYgKHJlbmRlclZpZXcubXVsdGlDb2x1bW5GbG93KCkpCiAg
ICAgICAgICAgICByZW5kZXJWaWV3LnVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0eWxlKGRv
Y3VtZW50U3R5bGUpOwogICAgICAgICBpZiAocmVuZGVyVmlldy5wYWdlKCkucGFnaW5hdGlvbkxp
bmVHcmlkRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudFN0eWxlLnNldExpbmVHcmlk
KCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1ncmlkIik7CisgICAgICAgICAgICBkb2N1bWVu
dFN0eWxlLnNldExpbmVHcmlkKCItd2Via2l0LWRlZmF1bHQtcGFnaW5hdGlvbi1ncmlkIl9zKTsK
ICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuc2V0TGluZVNuYXAoTGluZVNuYXA6OkNvbnRhaW4p
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRGYWNlVXJpRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlF
bGVtZW50LmNwcAppbmRleCAzYWQyNGU1ZmNjOTFjYjJmODhlMjAyNTRhYmFkNjAxNDg3MTkyODhk
Li42M2JjZDFhODBlZjc4NTMzOTQyNDIxMzBkZDJkZjg5MDljMjIzZmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBS
ZWY8Q1NTRm9udEZhY2VTcmNWYWx1ZT4gU1ZHRm9udEZhY2VVcmlFbGVtZW50OjpzcmNWYWx1ZSgp
IGNvbnN0CiB7CiAgICAgYXV0byBzcmMgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGUoZ2V0
QXR0cmlidXRlKFNWR05hbWVzOjpocmVmQXR0ciwgWExpbmtOYW1lczo6aHJlZkF0dHIpLCBMb2Fk
ZWRGcm9tT3BhcXVlU291cmNlOjpObyk7CiAgICAgQXRvbVN0cmluZyB2YWx1ZShhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1hdEF0dHIpKTsKLSAgICBzcmMuZ2V0KCkuc2V0Rm9y
bWF0KHZhbHVlLmlzRW1wdHkoKSA/ICJzdmciIDogdmFsdWUpOyAvLyBEZWZhdWx0IGZvcm1hdAor
ICAgIHNyYy5nZXQoKS5zZXRGb3JtYXQodmFsdWUuaXNFbXB0eSgpID8gInN2ZyJfcyA6IHZhbHVl
KTsgLy8gRGVmYXVsdCBmb3JtYXQKICAgICByZXR1cm4gc3JjOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggYTAxZjZiYWRhMWMxZDZjMjVmODIwZjcyNmM4ZWNlZTgx
ODJlY2I2YS4uNmU1YzdjNzRjOGU3Y2NlN2Q5ODM3NThhZGQ0NTJiZmVmYTRhMDE5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgU1ZH
VXNlRWxlbWVudDo6dHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoU1ZHRWxlbWVu
dCYgc2hhZG93RWxlbWVuCiAgICAgICAgIC8vIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhl
aWdodCBhcmUgcHJvdmlkZWQgb24gdGhlICd1c2UnIGVsZW1lbnQsIHRoZW4gdGhlc2UgYXR0cmli
dXRlcwogICAgICAgICAvLyB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBnZW5lcmF0ZWQgJ3N2
ZycuIElmIGF0dHJpYnV0ZXMgd2lkdGggYW5kL29yIGhlaWdodCBhcmUgbm90IHNwZWNpZmllZCwK
ICAgICAgICAgLy8gdGhlIGdlbmVyYXRlZCAnc3ZnJyBlbGVtZW50IHdpbGwgdXNlIHZhbHVlcyBv
ZiAxMDAlIGZvciB0aGVzZSBhdHRyaWJ1dGVzLgotICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0
dHJpYnV0ZShTVkdOYW1lczo6d2lkdGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0
cygpID8gQXRvbVN0cmluZyh3aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSIpOwotICAg
ICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0ciwgaGVp
Z2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPyBBdG9tU3RyaW5nKGhlaWdodCgpLnZhbHVl
QXNTdHJpbmcoKSkgOiAiMTAwJSIpOworICAgICAgICBzaGFkb3dFbGVtZW50LnNldEF0dHJpYnV0
ZShTVkdOYW1lczo6d2lkdGhBdHRyLCB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID8g
QXRvbVN0cmluZyh3aWR0aCgpLnZhbHVlQXNTdHJpbmcoKSkgOiAiMTAwJSJfcyk7CisgICAgICAg
IHNoYWRvd0VsZW1lbnQuc2V0QXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyLCBoZWlnaHQo
KS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA/IEF0b21TdHJpbmcoaGVpZ2h0KCkudmFsdWVBc1N0
cmluZygpKSA6ICIxMDAlIl9zKTsKICAgICB9IGVsc2UgaWYgKGlzPFNWR1NWR0VsZW1lbnQ+KHNo
YWRvd0VsZW1lbnQpKSB7CiAgICAgICAgIC8vIFNwZWMgKDx1c2U+IG9uIDxzdmc+KTogSWYgYXR0
cmlidXRlcyB3aWR0aCBhbmQvb3IgaGVpZ2h0IGFyZSBwcm92aWRlZCBvbiB0aGUgJ3VzZScgZWxl
bWVudCwgdGhlbiB0aGVzZQogICAgICAgICAvLyB2YWx1ZXMgd2lsbCBvdmVycmlkZSB0aGUgY29y
cmVzcG9uZGluZyBhdHRyaWJ1dGVzIG9uIHRoZSAnc3ZnJyBpbiB0aGUgZ2VuZXJhdGVkIHRyZWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRmV0Y2hFdmVudC5jcHAKaW5kZXgg
ZTdhZTFhOGM2OGIwMDE3MTNkMTc3NWEyNDJlOTRiYzYxNjBmZmQ1Zi4uMWRhMTE5NGJhOGVmZDBl
YTA0YWYyNTNkNDE5YjI2OTE0YWQwZjgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL0ZldGNoRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9GZXRjaEV2ZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZldGNo
RXZlbnQuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMuaCIK
KyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAjaW5j
bHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDIsNyAr
NDMsNyBAQCBSZWY8RmV0Y2hFdmVudD4gRmV0Y2hFdmVudDo6Y3JlYXRlRm9yVGVzdGluZyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIEZldGNoRXZlbnQ6OkluaXQgaW5p
dDsKICAgICBpbml0LnJlcXVlc3QgPSBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCB7IH0s
IEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSwgeyB9
KSwgeyB9LCB7IH0sIHsgfSk7Ci0gICAgcmV0dXJuIEZldGNoRXZlbnQ6OmNyZWF0ZSgqY29udGV4
dC5nbG9iYWxPYmplY3QoKSwgImZldGNoIiwgV1RGTW92ZShpbml0KSwgRXZlbnQ6OklzVHJ1c3Rl
ZDo6WWVzKTsKKyAgICByZXR1cm4gRmV0Y2hFdmVudDo6Y3JlYXRlKCpjb250ZXh0Lmdsb2JhbE9i
amVjdCgpLCBldmVudE5hbWVzKCkuZmV0Y2hFdmVudCwgV1RGTW92ZShpbml0KSwgRXZlbnQ6Oklz
VHJ1c3RlZDo6WWVzKTsKIH0KIAogc3RhdGljIGlubGluZSBSZWY8RE9NUHJvbWlzZT4gcmV0cmll
dmVIYW5kbGVkUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZlB0
cjxET01Qcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCmluZGV4IDZk
ZjNmMGM5M2VmNDU2MGIyOTc2M2Q4YjE0ZmQyODU3MjhkYmM3NjguLmVmNGNkZWFiZGU0OWRlYzQw
NDJhNmY4MzI1MGI2ZTJmNzcyNjAxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCkBAIC04
MywxMCArODMsMTAgQEAgdm9pZCBYTUxFcnJvcnM6OmFwcGVuZEVycm9yTWVzc2FnZShBU0NJSUxp
dGVyYWwgdHlwZVN0cmluZywgVGV4dFBvc2l0aW9uIHBvc2l0aW8KIAogc3RhdGljIGlubGluZSBS
ZWY8RWxlbWVudD4gY3JlYXRlWEhUTUxQYXJzZXJFcnJvckhlYWRlcihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlcykKIHsKLSAgICBSZWY8RWxlbWVudD4gcmVw
b3J0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoUXVhbGlmaWVkTmFtZShudWxsQXRv
bSgpLCAicGFyc2VyZXJyb3IiLCB4aHRtbE5hbWVzcGFjZVVSSSksIHRydWUpOworICAgIFJlZjxF
bGVtZW50PiByZXBvcnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChRdWFsaWZpZWRO
YW1lKG51bGxBdG9tKCksICJwYXJzZXJlcnJvciJfcywgeGh0bWxOYW1lc3BhY2VVUkkpLCB0cnVl
KTsKIAogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IHJlcG9ydEF0dHJpYnV0ZXM7Ci0gICAgcmVwb3J0
QXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgImRpc3BsYXk6IGJsb2NrOyB3
aGl0ZS1zcGFjZTogcHJlOyBib3JkZXI6IDJweCBzb2xpZCAjYzc3OyBwYWRkaW5nOiAwIDFlbSAw
IDFlbTsgbWFyZ2luOiAxZW07IGJhY2tncm91bmQtY29sb3I6ICNmZGQ7IGNvbG9yOiBibGFjayIp
KTsKKyAgICByZXBvcnRBdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoc3R5bGVBdHRyLCAiZGlz
cGxheTogYmxvY2s7IHdoaXRlLXNwYWNlOiBwcmU7IGJvcmRlcjogMnB4IHNvbGlkICNjNzc7IHBh
ZGRpbmc6IDAgMWVtIDAgMWVtOyBtYXJnaW46IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZkZDsg
Y29sb3I6IGJsYWNrIl9zKSk7CiAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyU2V0QXR0cmlidXRl
cyhyZXBvcnRBdHRyaWJ1dGVzKTsKIAogICAgIGF1dG8gaDMgPSBIVE1MSGVhZGluZ0VsZW1lbnQ6
OmNyZWF0ZShoM1RhZywgZG9jdW1lbnQpOwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgaW5saW5l
IFJlZjxFbGVtZW50PiBjcmVhdGVYSFRNTFBhcnNlckVycm9ySGVhZGVyKERvY3VtZW50JiBkb2N1
bWVudCwgY29ucwogCiAgICAgYXV0byBmaXhlZCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOwogICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGZpeGVkQXR0cmlidXRlczsKLSAgICBmaXhl
ZEF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJmb250LWZhbWlseTptb25v
c3BhY2U7Zm9udC1zaXplOjEycHgiKSk7CisgICAgZml4ZWRBdHRyaWJ1dGVzLmFwcGVuZChBdHRy
aWJ1dGUoc3R5bGVBdHRyLCAiZm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxMnB4Il9z
KSk7CiAgICAgZml4ZWQtPnBhcnNlclNldEF0dHJpYnV0ZXMoZml4ZWRBdHRyaWJ1dGVzKTsKICAg
ICByZXBvcnRFbGVtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChmaXhlZCk7CiAKQEAgLTE0OCw3ICsx
NDgsNyBAQCB2b2lkIFhNTEVycm9yczo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQogI2lmIEVO
QUJMRShYU0xUKQogICAgIGlmIChtX2RvY3VtZW50LnRyYW5zZm9ybVNvdXJjZURvY3VtZW50KCkp
IHsKICAgICAgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKLSAgICAgICAgYXR0cmli
dXRlcy5hcHBlbmQoQXR0cmlidXRlKHN0eWxlQXR0ciwgIndoaXRlLXNwYWNlOiBub3JtYWwiKSk7
CisgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3aGl0ZS1z
cGFjZTogbm9ybWFsIl9zKSk7CiAgICAgICAgIGF1dG8gcGFyYWdyYXBoID0gSFRNTFBhcmFncmFw
aEVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJT
ZXRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlckFwcGVu
ZENoaWxkKG1fZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRoaXMgZG9jdW1lbnQgd2FzIGNyZWF0
ZWQgYXMgdGhlIHJlc3VsdCBvZiBhbiBYU0wgdHJhbnNmb3JtYXRpb24uIFRoZSBsaW5lIGFuZCBj
b2x1bW4gbnVtYmVycyBnaXZlbiBhcmUgZnJvbSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0LiJfcykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCmluZGV4IDIzNWZhMzg1ZGFkNjFlNWNi
N2FiYWIwMTlhODk5YjMxZDNhMGIzNjkuLjAyZWU5OTBjZTA3ZGEwYmYzOTMwNGFiMWRiNzJhZTA3
NGUxYzFhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgdm9pZCBYTUxUcmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKQog
ewogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhYTUxWaWV3ZXJfanMsIHNpemVvZihYTUxWaWV3ZXJfanMpKTsKICAgICBtX2RvY3VtZW50
LmZyYW1lKCktPnNjcmlwdCgpLmV2YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNl
Q29kZShzY3JpcHRTdHJpbmcpKTsKLSAgICBtX2RvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLmV2
YWx1YXRlSWdub3JpbmdFeGNlcHRpb24oU2NyaXB0U291cmNlQ29kZShBdG9tU3RyaW5nKCJwcmVw
YXJlV2ViS2l0WE1MVmlld2VyKCdUaGlzIFhNTCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBoYXZl
IGFueSBzdHlsZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBkb2N1bWVudCB0
cmVlIGlzIHNob3duIGJlbG93LicpOyIpKSk7CisgICAgbV9kb2N1bWVudC5mcmFtZSgpLT5zY3Jp
cHQoKS5ldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUoQXRvbVN0cmlu
ZygicHJlcGFyZVdlYktpdFhNTFZpZXdlcignVGhpcyBYTUwgZmlsZSBkb2VzIG5vdCBhcHBlYXIg
dG8gaGF2ZSBhbnkgc3R5bGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZG9j
dW1lbnQgdHJlZSBpcyBzaG93biBiZWxvdy4nKTsiX3MpKSk7CiAKICAgICBTdHJpbmcgY3NzU3Ry
aW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoWE1MVmlld2VyX2Nzcywgc2l6
ZW9mKFhNTFZpZXdlcl9jc3MpKTsKICAgICBhdXRvIHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkMDFhMjEwNjllNTUzYTdiZmU5ZjhjMjg1OTg5Mzk4YTFj
MTU5YWNmLi42OTg2ODVhNTVhN2MyMGVmM2NhMWExZGU0NmNlNDc4ZTIzNzFiYjI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
R09iamVjdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6Z29iamVjdERlc3Ryb3llZCgp
CiAgICAgLy8gYW5kIGxhdGVyIHVzZS1hZnRlci1mcmVlIHdpdGggdGhlIG1faGFuZGxlciA9IDA7
IGFzc2lnbm1lbnQuCiAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3RlbmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogCi0gICAgbV9jb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKG1fZG9t
RXZlbnROYW1lLmRhdGEoKSwgKnRoaXMsIG1fY2FwdHVyZSk7CisgICAgbV9jb3JlVGFyZ2V0LT5y
ZW1vdmVFdmVudExpc3RlbmVyKEF0b21TdHJpbmc6OmZyb21MYXRpbjEobV9kb21FdmVudE5hbWUu
ZGF0YSgpKSwgKnRoaXMsIG1fY2FwdHVyZSk7CiAgICAgbV9jb3JlVGFyZ2V0ID0gbnVsbHB0cjsK
ICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL0dPYmplY3RFdmVudExpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
R09iamVjdEV2ZW50TGlzdGVuZXIuaAppbmRleCA5MTdlZDg2ZDg3OGRmYjNmMTc3MzUxYzZkZjM4
ZGFkNjg4ODE2YmVlLi43NGJlMTU4YWRjZTU0MTI0MjRkYjYzNDM1ZjVmMjJjYWM3Yzg1ZjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vR09iamVjdEV2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vR09iamVjdEV2ZW50TGlzdGVuZXIuaApAQCAt
MzYsMTMgKzM2LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhZGRFdmVudExpc3RlbmVy
KEdPYmplY3QqIHRhcmdldCwgV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQsIGNvbnN0
IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
ICAgICB7CiAgICAgICAgIFJlZjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIoYWRvcHRS
ZWYoKm5ldyBHT2JqZWN0RXZlbnRMaXN0ZW5lcih0YXJnZXQsIGNvcmVUYXJnZXQsIGRvbUV2ZW50
TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSkpKTsKLSAgICAgICAgcmV0dXJuIGNvcmVUYXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2Fw
dHVyZSk7CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKEF0b21T
dHJpbmc6OmZyb21MYXRpbjEoZG9tRXZlbnROYW1lKSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNh
cHR1cmUpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoR09i
amVjdCogdGFyZ2V0LCBXZWJDb3JlOjpFdmVudFRhcmdldCogY29yZVRhcmdldCwgY29uc3QgY2hh
ciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgYm9vbCB1c2VDYXB0dXJlKQogICAg
IHsKICAgICAgICAgR09iamVjdEV2ZW50TGlzdGVuZXIga2V5KHRhcmdldCwgY29yZVRhcmdldCwg
ZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSAgICAgICAgcmV0dXJuIGNvcmVU
YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBrZXksIHVzZUNhcHR1cmUp
OworICAgICAgICByZXR1cm4gY29yZVRhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihBdG9tU3Ry
aW5nOjpmcm9tTGF0aW4xKGRvbUV2ZW50TmFtZSksIGtleSwgdXNlQ2FwdHVyZSk7CiAgICAgfQog
CiAgICAgc3RhdGljIHZvaWQgZ29iamVjdERlc3Ryb3llZENhbGxiYWNrKEdPYmplY3RFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciwgR09iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmlu
ZGV4IGY2MmRjN2M4MzdmMDJmNzAxMGM4MmQ5NzkwZTJiYWFmMjE0ZTFkMjEuLjZiMjg1ODA1OTRl
ZTM1ZTE1MjkzY2MzN2RmMDA4MzBjMWUxYmEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxk
Lm1tCkBAIC01NCw3ICs1NCw3IEBAIFBERlBsdWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5Q
YXNzd29yZEZpZWxkKCkKIFJlZjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVh
dGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7CiAgICAgYXV0byBlbGVtZW50ID0gUERGUGx1Z2luVGV4
dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7Ci0gICAgZWxlbWVudC0+c2V0
QXR0cmlidXRlKHR5cGVBdHRyLCAicGFzc3dvcmQiKTsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1
dGUodHlwZUF0dHIsICJwYXNzd29yZCJfcyk7CiAgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAg
IHJldHVybiBlbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCA3M2ZjMDEzNDJjOGI3ZjQxNGNjOGRjMTVjOGJj
N2Q1ZDk5YjQ3NWM0Li41OGZhM2U0MjFjNzEwZGVkZWZmZjMxZGUyNGNkZWM0OGI5ZWViYzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJ
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJ
LmNwcApAQCAtMjA0Myw3ICsyMDQzLDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6bWVzc2FnZXMoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW4KICAgICAg
ICAgZGljdGlvbmFyeS0+cHV0RGlyZWN0KHZtLCBpc1N5bmNJZGVudCwgSlNDOjpqc0Jvb2xlYW4o
bWVzc2FnZUlzU3luYyhuYW1lKSkpOyAgICAgICAgICAgIAogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAKLSAgICAgICAg
bWVzc2FnZXNPYmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tQ1N0cmlu
Zyh2bSwgZGVzY3JpcHRpb24obmFtZSkpLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgbWVzc2FnZXNP
YmplY3QtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tTGF0aW4xKHZtLCBkZXNj
cmlwdGlvbihuYW1lKSksIGRpY3Rpb25hcnkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IDE0MGVjYWRiYTdmN2NlYTY2MGExMTcwYTU5YTgxNWU0ZTcwNmY1ZTQuLjRlMmU5YmE4MjViMGJh
YmI0OTdjMGQ5OWZjODk1YzVkMDAzNTdhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zNDQyLDcgKzM0NDIsNyBAQCBz
dGQ6Om9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24+IFdlYlBhZ2U6OmZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24oKQogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzVGVsZXBob25l
RmllbGQoKSkKICAgICAgICAgICAgIGluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID0gSW5wdXRUeXBl
OjpQaG9uZTsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc051bWJlckZpZWxkKCkpCi0gICAg
ICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJw
YXR0ZXJuIikgPT0gIlxcZCoiIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCJwYXR0ZXJuIikgPT0g
IlswLTldKiIgPyBJbnB1dFR5cGU6Ok51bWJlclBhZCA6IElucHV0VHlwZTo6TnVtYmVyOworICAg
ICAgICAgICAgaW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OnBhdHRlcm5BdHRyKSA9PSAiXFxkKiIgfHwgZWxlbWVudC5nZXRBdHRyaWJ1dGUo
SFRNTE5hbWVzOjpwYXR0ZXJuQXR0cikgPT0gIlswLTldKiIgPyBJbnB1dFR5cGU6Ok51bWJlclBh
ZCA6IElucHV0VHlwZTo6TnVtYmVyOwogICAgICAgICBlbHNlIGlmIChlbGVtZW50LmlzRGF0ZVRp
bWVMb2NhbEZpZWxkKCkpCiAgICAgICAgICAgICBpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9IElu
cHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5pc0RhdGVG
aWVsZCgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ2N2NlYjliYTFhMjY1Y2M5NTM3ZmEwZjA4MmYwYTljODE0NzYwMTIuLjhkNzZkMmI0NTJm
MGY4M2IxN2ExNTAyZmMyMzQwMjNkNTM4NzZkOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wNC0xMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgQXRvbVN0cmlu
Zyhjb25zdCBjaGFyKikgd2l0aCBBdG9tU3RyaW5nOjpmcm9tTGF0aW4xKGNvbnN0IGNoYXIqKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTI3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIyLTA0LTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbIGlPUyBpUGhvbmUgMTIgXSBmYXN0L2hpZHBpICYgZmFzdC9s
YXllcnMvaGlkcGkgdGVzdHMgYXJlIGZsYWt5IHRleHQvaW1hZ2UgZmFpbGluZwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQXRvbVN0cmluZy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3RyaW5nLmNwcAppbmRleCBiZTc0MTU0ZTM4OGJh
N2M1NjQ2MWVjOTZiYTcwMDNlMWQ5MmI2OGVhLi4wM2YxOWIwNDEzMmU1YjUwYzNkODRmZmZlZTg3
YTZhYTU4ZWM5YmRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9B
dG9tU3RyaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9BdG9tU3Ry
aW5nLmNwcApAQCAtNDksNyArNDksNyBAQCBURVNUKFdURiwgQXRvbVN0cmluZ0NyZWF0aW9uRnJv
bUxpdGVyYWxVbmlxdWVuZXNzKQogICAgIEF0b21TdHJpbmcgc3RyaW5nMigiVGVtcGxhdGUgTGl0
ZXJhbCIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICBBU1NFUlRfRVEo
c3RyaW5nMS5pbXBsKCksIHN0cmluZzIuaW1wbCgpKTsKIAotICAgIEF0b21TdHJpbmcgc3RyaW5n
MygiVGVtcGxhdGUgTGl0ZXJhbCIpOworICAgIEF0b21TdHJpbmcgc3RyaW5nMygiVGVtcGxhdGUg
TGl0ZXJhbCJfcyk7CiAgICAgQVNTRVJUX0VRKHN0cmluZzEuaW1wbCgpLCBzdHJpbmczLmltcGwo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmlu
Z09wZXJhdG9ycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdPcGVy
YXRvcnMuY3BwCmluZGV4IGI0NDJlNDM2OGMwM2RiN2JhNjMwYzdhZWEyYTk4MzVkMzQ4YjQ0Yjgu
LjAyYjYxNjRiZDU5ZTlmMjFmZDRjZjg3OTZmOGZjYjQ5ZmU2YmJlZmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdURiwgU3RyaW5nT3BlcmF0
b3JzKQogewogICAgIFN0cmluZyBzdHJpbmcoIlN0cmluZyJfcyk7Ci0gICAgQXRvbVN0cmluZyBh
dG9tU3RyaW5nKCJBdG9tU3RyaW5nIik7CisgICAgQXRvbVN0cmluZyBhdG9tU3RyaW5nKCJBdG9t
U3RyaW5nIl9zKTsKICAgICBBU0NJSUxpdGVyYWwgbGl0ZXJhbCB7ICJBU0NJSUxpdGVyYWwiX3Mg
fTsKIAogICAgIFN0cmluZyBzdHJpbmdWaWV3QmFja2luZyB7ICJTdHJpbmdWaWV3Il9zIH07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGJjZjAzMjk1NWJlMmViZGZmZTY5M2Q4YThiYmQ4MmJm
OTQyZjlkOTkuLjM4MGYzNDBiMWE0MzFmMjQ3MmMwMmExMWI5NThhOGJkYTY5MmYwNzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVuSW5SVEwpCiB7
CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlv
bi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJU
aW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250
Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRpb24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpA
QCAtOTQsNyArOTQsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlh
bEFkdmFuY2VXaXRoTGVmdFJ1bkluUlRMKQogVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRl
c3QsIEluaXRpYWxBZHZhbmNlSW5SVEwpCiB7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIik7CisgICAg
ZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyJfcyk7CiAgICAgZGVzY3JpcHRpb24uc2V0
Q29tcHV0ZWRTaXplKDgwKTsKICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZGVzY3JpcHRp
b24pKTsKICAgICBmb250LnVwZGF0ZSgpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIFRFU1RfRihDb21w
bGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZUluUlRMKQogVEVTVF9GKENvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlV2l0aExlZnRSdW5JbkxUUikKIHsK
ICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiTHVjaWRhR3JhbmRlIik7CisgICAgZGVzY3JpcHRpb24uc2V0T25lRmFt
aWx5KCJMdWNpZGFHcmFuZGUiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZSg4
MCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgZm9u
dC51cGRhdGUoKTsKQEAgLTE4MSw3ICsxODEsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9s
bGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRSKQogVEVTVF9GKENvbXBsZXhU
ZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5MVFIpCiB7CiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
Ikx1Y2lkYUdyYW5kZSIpOworICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiTHVjaWRhR3Jh
bmRlIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZvbnRD
YXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBA
IC0yMTgsNyArMjE4LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRp
YWxBZHZhbmNlSW5MVFIpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlh
bEFkdmFuY2VJblJUTE5vT3JpZ2lucykKIHsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBk
ZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRD
b21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlv
bikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgVEVTVF9GKENvbXBs
ZXhUZXh0Q29udHJvbGxlclRlc3QsIEluaXRpYWxBZHZhbmNlSW5SVExOb09yaWdpbnMpCiBURVNU
X0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgTGVmdEV4cGFuc2lvbikKIHsKICAgICBGb250
Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9uLnNldE9uZUZh
bWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRpbWVzIl9zKTsK
ICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRDYXNjYWRlIGZv
bnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBAIC0yOTQsNyAr
Mjk0LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIExlZnRFeHBhbnNpb24p
CiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVmVydGljYWxBZHZhbmNlcykKIHsK
ICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0aW9u
LnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIlRp
bWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoNDgpOwogICAgIEZvbnRD
YXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7CkBA
IC0zMzgsNyArMzM4LDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFZlcnRp
Y2FsQWR2YW5jZXMpCiBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgVG90YWxXaWR0
aFdpdGhKdXN0aWZpY2F0aW9uKQogewogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJUaW1lcyIpOworICAgIGRlc2Ny
aXB0aW9uLnNldE9uZUZhbWlseSgiVGltZXMiX3MpOwogICAgIGRlc2NyaXB0aW9uLnNldENvbXB1
dGVkU2l6ZSg4MCk7CiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7
CiAgICAgZm9udC51cGRhdGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dFRlc3RzQ0cuY3BwCmluZGV4IDJmMjhkNGU2NjUzMzBmYzY4NjNlNDFlMDdlZDdiYzdiZGIwZTQ0
NjQuLjQwNmQwODczYWRmOWQ2YjMxZTFiYWFlOGM3NWEwZDdkZTc0YWQyNGMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApAQCAtOTgsNyArOTgsNyBA
QCBURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgVGV4dCkKICAgICBCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0IGN0eChwcmltYXJ5Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7
CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwotICAgIGRlc2NyaXB0
aW9uLnNldE9uZUZhbWlseSgiVGltZXMiKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHko
IlRpbWVzIl9zKTsKICAgICBkZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoODApOwogICAgIEZv
bnRDYXNjYWRlIGZvbnQoV1RGTW92ZShkZXNjcmlwdGlvbikpOwogICAgIGZvbnQudXBkYXRlKCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>