<?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>232729</bug_id>
          
          <creation_ts>2021-11-04 15:30:25 -0700</creation_ts>
          <short_desc>Rename TextDecoration to TextDecorationLine</short_desc>
          <delta_ts>2021-11-16 17:27:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230083</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikos Mouchtaris">nmouchtaris</reporter>
          <assigned_to name="Nikos Mouchtaris">nmouchtaris</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ntim</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811981</commentid>
    <comment_count>0</comment_count>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-04 15:30:25 -0700</bug_when>
    <thetext>Rename TextDecoration to TextDecorationLine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812008</commentid>
    <comment_count>1</comment_count>
      <attachid>443354</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-04 16:32:13 -0700</bug_when>
    <thetext>Created attachment 443354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812037</commentid>
    <comment_count>2</comment_count>
      <attachid>443365</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-04 18:05:44 -0700</bug_when>
    <thetext>Created attachment 443365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812214</commentid>
    <comment_count>3</comment_count>
      <attachid>443424</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-05 12:36:42 -0700</bug_when>
    <thetext>Created attachment 443424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812297</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-05 16:57:22 -0700</bug_when>
    <thetext>Why is there no change to CSSProperties.json?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812299</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-05 17:01:46 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #4)
&gt; Why is there no change to CSSProperties.json?

Oh, text-decoration-line already appears in CSSProperties.json. It looks like we have text-decoration, which has `&quot;converter&quot;: &quot;TextDecoration&quot;`, and we also have -webkit-text-decoration, which is a longhand for text-decoration-line (and 2 others)

🤔</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812302</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-05 17:06:39 -0700</bug_when>
    <thetext>Neither this bug, nor the changelog in this patch, nor the blocked bug (https://bugs.webkit.org/show_bug.cgi?id=230083) describe how this patch fits into the overall strategy for how we&apos;re going to achieve https://bugs.webkit.org/show_bug.cgi?id=230083. It&apos;s difficult to review this without understanding how this patch fits into an overall strategy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812398</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-06 09:53:26 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; Neither this bug, nor the changelog in this patch, nor the blocked bug
&gt; (https://bugs.webkit.org/show_bug.cgi?id=230083) describe how this patch
&gt; fits into the overall strategy for how we&apos;re going to achieve
&gt; https://bugs.webkit.org/show_bug.cgi?id=230083. It&apos;s difficult to review
&gt; this without understanding how this patch fits into an overall strategy.

text-decoration right now is implemented as a keyword property: underline/overline/strikethrough/etc.

The spec says those keywords should be for the text-decoration-line property, and text-decoration should be a shorthand for text-decoration-line/color/style/thickness.

Renaming the TextDecoration enum to TextDecorationLine reduces ambiguity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814236</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-11 14:31:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/85315983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815246</commentid>
    <comment_count>9</comment_count>
      <attachid>443424</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-11-15 15:09:54 -0800</bug_when>
    <thetext>Comment on attachment 443424
Patch

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

&gt; Source/WebCore/rendering/style/StyleVisualData.cpp:31
&gt; +    , textDecorationLine(RenderStyle::initialTextDecoration().toRaw())

Since this is linked to the property name, rather than the value type, I would rename this specific field in the other bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815324</commentid>
    <comment_count>10</comment_count>
      <attachid>443424</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-15 19:56:11 -0800</bug_when>
    <thetext>Comment on attachment 443424
Patch

Oh, this is just the enum. I guess that&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815597</commentid>
    <comment_count>11</comment_count>
      <attachid>444420</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-16 12:13:26 -0800</bug_when>
    <thetext>Created attachment 444420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815710</commentid>
    <comment_count>12</comment_count>
      <attachid>444448</attachid>
    <who name="Nikos Mouchtaris">nmouchtaris</who>
    <bug_when>2021-11-16 16:31:51 -0800</bug_when>
    <thetext>Created attachment 444448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815740</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-16 17:27:05 -0800</bug_when>
    <thetext>Committed r285904 (244317@main): &lt;https://commits.webkit.org/244317@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444448.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443354</attachid>
            <date>2021-11-04 16:32:13 -0700</date>
            <delta_ts>2021-11-04 18:05:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232729-20211104163212.patch</filename>
            <type>text/plain</type>
            <size>59086</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ2NDM4MmY1NDAzOTA2
NjEwODk1ZGNkYWMwNTk4NjA0NjAxZTVhNy4uYmQ3MTEyNjJlN2E3ZTNjNTQzYTEyMzI1NDY2NDIx
NTdhMjM4Nzc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAyMS0xMS0wNCAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgVGV4dERlY29yYXRpb24gdG8gVGV4dERlY29yYXRpb25MaW5lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI3MjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRjaCBieSBUaW0gTmd1
eWVuOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDgzLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwOgorICAgICAgICAoZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9i
amVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6dGV4dEF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZSk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVy
dHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uTGlu
ZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyRmFzdFBhdGhz
Ojppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNp
bmdsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudDo6SFRNTFRleHREZWNvcmF0aW9u
RXF1aXZhbGVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpzdHlsZVdpdGhSZXNvbHZlZFRleHREZWNvcmF0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbGxhcHNlVGV4
dERlY29yYXRpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHREZWNvcmF0aW9u
VmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0
aElubGluZVN0eWxlT2ZFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdT
dHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5vZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUNoYW5nZTo6U3R5bGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDaGFuZ2U6
OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RQcm9wZXJ0aWVz
Tm90SW4pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVz
Ojpwcm9wZXJ0eVZhbHVlRm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRl
ZEF0dHJpYnV0ZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRpbmdBdHRyaWJ1
dGVkU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZUludGVybmFsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29y
YXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRl
cjo6VGV4dERlY29yYXRpb25QYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0
aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb2xs
ZWN0U3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25Q
YWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJl
bmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dGV4dERlY29yYXRpb25zSW5FZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnRleHREZWNvcmF0aW9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlVmlzdWFsRGF0YTo6
U3R5bGVWaXN1YWxEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVZpc3VhbERhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dGhpY2tu
ZXNzRm9yRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUmVuZGVyZXJEZWZpbmlu
aW5nVGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbldpdGhTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94Lmg6CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1Byb3Bl
cnR5Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6c2hvdWxkQXBwbHlQcm9w
ZXJ0eUluUGFyc2VPcmRlcik6CisgICAgICAgICogc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QWRqdXN0ZXI6OmFkanVzdCBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9u
KTogRGVsZXRlZC4KKwogMjAyMS0xMS0wNCAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRh
cmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNjcm9sbGJhciBvcmllbnRhdGlvbiBhbiBl
bnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNGY4YzY5MWE4NThkY2Nj
M2JhOGY1OTMyNGExNmU2MjI5MzQ1YjMxOS4uODBjYWM4MDhmNTJlMTQyNjQwNzAyODE5M2YxMGJl
NzE4ZjA3NmEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTExLTA0ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHVwZGF0ZVRleHRUb3VjaEJhcl0pOgor
CiAyMDIxLTExLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggM2U1Njkz
OWM2YWNjNjVkOGU4ZDU0Y2VkNDg5N2U3YzZhY2RmMGU4My4uMDk5ZmIxNTRmYmVhMzI3YjZkZGM4
NTk3MjZhNjgwYTk5OTNmMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zODg0LDcgKzM4
ODQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVybGluZSgpIGNv
bnN0CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5j
b250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICByZXR1cm4gbV9yZW5kZXJl
ci0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lKTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cAppbmRleCA4YTg3YWMzYjFiMjBkN2U3M2QxMzYwM2UxMjI3YjNlYjExYWI1OGEwLi45NTMzMWEw
MWI2YmRhODAzMzFjNmUwMjg0NjhkM2FiYjQzMjhkMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRleHQuY3BwCkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBzdGF0aWMgQXRrQXR0cmlidXRl
U2V0KiBnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2li
aWxpdAogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190
ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAiZmls
bCIpOwogICAgIH0KIAotICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwg
YXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfVU5ERVJMSU5FKSwgKHN0
eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkgPyAic2lu
Z2xlIiA6ICJub25lIik7CisgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0
LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9VTkRFUkxJTkUpLCAo
c3R5bGUtPnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpID8gInNpbmdsZSIgOiAibm9uZSIpOwogCiAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1
dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9T
VFlMRSksIHN0eWxlLT5mb250Q2FzY2FkZSgpLml0YWxpYygpID8gIml0YWxpYyIgOiAibm9ybWFs
Iik7CiAKLSAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0
X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1NUUklLRVRIUk9VR0gpLCAoc3R5bGUt
PnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpID8gInRydWUi
IDogImZhbHNlIik7CisgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBh
dGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9TVFJJS0VUSFJPVUdIKSwg
KHN0eWxlLT50ZXh0RGVjb3JhdGlvbkxpbmUoKSAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRo
cm91Z2gpID8gInRydWUiIDogImZhbHNlIik7CiAKICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJp
YnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRS
X0lOVklTSUJMRSksIChzdHlsZS0+dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbikg
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5j
cHAKaW5kZXggZTA3M2MxNWJjMDE1MWYzNzdhN2JhOWI1ZDAwNTJkMWFiOWU2Mzg1My4uZjVmNjAw
NDQzYjZmOGJjOGEyYmEwYmYyZjUzMTliZGM0YTI1ZWUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RUZXh0QXRzcGkuY3BwCkBAIC03NTcsOCArNzU3LDggQEAgQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpUZXh0QXR0cmlidXRlcyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHRBdHRy
aWJ1dGUKICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzaXplIl9zLCBtYWtlU3Ry
aW5nKHN0ZDo6cm91bmQoc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgKiA3MiAvIFdlYkNv
cmU6OnNjcmVlbkRQSSgpKSwgInB0IikpOwogICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoIndlaWdodCJfcywgbWFrZVN0cmluZyhzdGF0aWNfY2FzdDxmbG9hdD4oc3R5bGUuZm9udENh
c2NhZGUoKS53ZWlnaHQoKSkpKTsKICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJz
dHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1h
bCIpOwotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0cmlrZXRocm91Z2giX3Ms
IHN0eWxlLnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2ggPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRl
cmxpbmUiX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJs
aW5lID8gInNpbmdsZSIgOiAibm9uZSIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoInN0cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERl
Y29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRp
b25MaW5lKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiIDogIm5v
bmUiKTsKICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0
eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFsc2Ui
KTsKICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3Jl
T2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiIDogImZhbHNlIik7CiAgICAg
ICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rp
b24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIiA6ICJydGwiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBhZTY1ZTQ5YWFkMDZiYmZhMzFiOGRj
OTE4YjA1MDAwZWY0NzBhZjYzLi4zN2Q2Y2M2MmE5NTYxODQ4MTVkNGJhNmE0OWM5ZTcxNWRiMjlm
Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC01OTEs
NyArNTkxLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAgICBBWEF0dHJpYnV0ZVN0cmlu
Z1NldEZvbnQoYXR0clN0cmluZywgc3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLmdl
dENURm9udCgpLCByYW5nZSk7CiAKICAgICBhdXRvIGRlY29yID0gc3R5bGUudGV4dERlY29yYXRp
b25zSW5FZmZlY3QoKTsKLSAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5l
KQorICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKQogICAgICAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBVSUFjY2Vzc2liaWxpdHlU
b2tlblVuZGVybGluZSwgQFlFUywgcmFuZ2UpOwogCiAgICAgLy8gQWRkIGNvZGUgY29udGV4dCBp
ZiB0aGlzIG5vZGUgaXMgd2l0aGluIGEgPGNvZGU+IGJsb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAxMThhZTZkNjBhZGZlZWRhMmQxMDdjN2E4Mjk4ZjE1
NDU4OGRiNDVlLi5kMDZkN2QzZTAxZWEzNzQxMTZlZjhmZjc3ZjM2ZTBlODRmOWY1MTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtODY4LDM0ICs4NjgsMzQg
QEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRO
dW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U2hhZG93VGV4dEF0dHJpYnV0ZSwgQFlF
UywgcmFuZ2UpOwogICAgIGVsc2UKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRl
Ok5TQWNjZXNzaWJpbGl0eVNoYWRvd1RleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotICAgIAor
CiAgICAgLy8gc2V0IHVuZGVybGluZSBhbmQgc3RyaWtldGhyb3VnaAogICAgIGF1dG8gZGVjb3Ig
PSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIGlmICghKGRlY29yICYgVGV4
dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKKyAgICBpZiAoIShkZWNvciAmIFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1
dGU6TlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAg
ICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlVbmRlcmxp
bmVDb2xvclRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogICAgIH0KLSAgICAKLSAgICBpZiAo
IShkZWNvciAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkpIHsKKworICAgIGlmICghKGRl
Y29yICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKICAgICAgICAgW2F0dHJT
dHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hUZXh0QXR0
cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRl
Ok5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFu
Z2VdOwogICAgIH0KIAotICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUg
fHwgZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpIHsKKyAgICBpZiAoZGVjb3Ig
JiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSB8fCBkZWNvciAmIFRleHREZWNvcmF0aW9u
TGluZTo6TGluZVRocm91Z2gpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgdW5kZXJs
aW5lIHN0eWxlIGJlIHJlcG9ydGVkIGhlcmU/CiAgICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxl
cyA9IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoKnJlbmRlcmVyLCBk
ZWNvcik7CiAKLSAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkg
eworICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkgewog
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwogICAgICAgICAg
ICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlV
bmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51
bmRlcmxpbmVDb2xvcikuZ2V0KCksIHJhbmdlKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSB7CisKKyAgICAgICAg
aWYgKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgewogICAgICAgICAg
ICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsKICAgICAgICAgICAgIEFY
QXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtl
dGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLmxp
bmV0aHJvdWdoQ29sb3IpLmdldCgpLCByYW5nZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisK
ICAgICAvLyBJbmRpY2F0ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodGluZy4KICAgICBmb3IgKE5vZGUq
IG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
KSB7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bWFya1RhZykpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApp
bmRleCAwOGFlNTk3Y2U0YjU4MmU4ODcwNmVhYjk4M2YyMmRjMjhiNWM2OWE1Li5kNzJiZTc0YWJl
OWE5MDExOGRiM2RhYWEwODMyOTgxODYyYTdhMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTI2MDQsNyArMjYwNCw3IEBA
IENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFw
cGVyTWFwKCkKICAgICAgICAgbmV3IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPFJ1YnlQb3NpdGlv
bj4oQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sICZSZW5kZXJTdHlsZTo6cnVieVBvc2l0
aW9uLCAmUmVuZGVyU3R5bGU6OnNldFJ1YnlQb3NpdGlvbiksCiAgICAgICAgIG5ldyBEaXNjcmV0
ZVByb3BlcnR5V3JhcHBlcjxUYWJsZUxheW91dFR5cGU+KENTU1Byb3BlcnR5VGFibGVMYXlvdXQs
ICZSZW5kZXJTdHlsZTo6dGFibGVMYXlvdXQsICZSZW5kZXJTdHlsZTo6c2V0VGFibGVMYXlvdXQp
LAogICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8VGV4dEFsaWduTW9kZT4oQ1NT
UHJvcGVydHlUZXh0QWxpZ24sICZSZW5kZXJTdHlsZTo6dGV4dEFsaWduLCAmUmVuZGVyU3R5bGU6
OnNldFRleHRBbGlnbiksCi0gICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxPcHRp
b25TZXQ8VGV4dERlY29yYXRpb24+PihDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZSwgJlJl
bmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlv
biksCisgICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb25MaW5lPj4oQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsICZSZW5kZXJTdHls
ZTo6dGV4dERlY29yYXRpb24sICZSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb24pLAogICAg
ICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8VGV4dERlY29yYXRpb25TdHlsZT4oQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlLCAmUmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9u
U3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb25TdHlsZSksCiAgICAgICAgIG5l
dyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxjb25zdCBDb2xvciY+KENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzQ29sb3IsICZSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzQ29sb3IsICZSZW5k
ZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lzQ29sb3IpLAogICAgICAgICBuZXcgRGlzY3JldGVQcm9w
ZXJ0eVdyYXBwZXI8T3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPj4oQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNQb3Np
dGlvbiwgJlJlbmRlclN0eWxlOjpzZXRUZXh0RW1waGFzaXNQb3NpdGlvbiksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDJm
MmUwODliYWIxNDY1NzQ2Y2Y3MzNmNjZkOTFiNTUxMGFiNmQxZmMuLjAwNjRhZGM1MGMwN2RmMGI4
Y2YxZTdjODNlNTI1YWU0MjhhNjFlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNTk1LDE2ICsxNTk1LDE2IEBAIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IHRvdWNoQWN0aW9uRmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxU
b3VjaEFjdGlvbj4gdG91Y2hBY3RpCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBSZWY8
Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5k
ZXJUZXh0RGVjb3JhdGlvbkxpbmVGbGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT4gdGV4dERlY29yYXRpb25MaW5lKQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAgICAgLy8gQmxpbmsgdmFsdWUgaXMgaWdub3Jl
ZC4KICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAg
ICBpZiAodGV4dERlY29yYXRpb25MaW5lICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUp
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlVW5kZXJsaW5lKSk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29y
YXRpb246Ok92ZXJsaW5lKQorICAgIGlmICh0ZXh0RGVjb3JhdGlvbkxpbmUgJiBUZXh0RGVjb3Jh
dGlvbkxpbmU6Ok92ZXJsaW5lKQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU92ZXJsaW5lKSk7Ci0gICAgaWYgKHRleHREZWNv
cmF0aW9uICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQorICAgIGlmICh0ZXh0RGVjb3Jh
dGlvbkxpbmUgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKQogICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVU
aHJvdWdoKSk7CiAKICAgICBpZiAoIWxpc3QtPmxlbmd0aCgpKQpAQCAtMzI1NCw3ICszMjU0LDcg
QEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3Bl
cnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRB
bGlnbjoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUu
dGV4dEFsaWduKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246Ci0g
ICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5
bGUudGV4dERlY29yYXRpb24oKSk7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29y
YXRpb25MaW5lRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uKCkpOwogI2lmIEVO
QUJMRShDU1MzX1RFWFQpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0QWxpZ25M
YXN0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50
ZXh0QWxpZ25MYXN0KCkpOwpAQCAtMzI2NCw3ICszMjY0LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5k
ZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uOgogICAg
ICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGll
cyh3ZWJraXRUZXh0RGVjb3JhdGlvblNob3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHREZWNvcmF0aW9uTGluZToKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVj
b3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS50ZXh0RGVjb3JhdGlvbigpKTsKKyAgICAgICAg
ICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkxpbmVGbGFnc1RvQ1NTVmFsdWUoc3R5bGUu
dGV4dERlY29yYXRpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
blN0eWxlOgogICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFn
c1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25TdHlsZSgpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3I6CkBAIC0zMjgwLDcgKzMyODAsNyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0
eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b25UaGlja25lc3M6CiAgICAgICAgICAgICByZXR1cm4gdGV4dERlY29yYXRpb25UaGlja25lc3NU
b0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRp
b25MaW5lRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKICAgICAgICAgICAg
IHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoJnN0eWxlLCBzdHlsZS50ZXh0RmlsbENv
bG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRl
eCBmNjRiYjE2NGI5NjNlYzE4MjhkMDRlOTc2MjljNTNlMjRjMDdjMDk5Li42ZWQ2MDkxYmUxYmM0
OGE2OWJlYjQ1NjJjN2EwNmI1ZTMwOTQ0ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTI0MTIsMjcgKzI0MTIsMjcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRKdXN0aWZ5KCkgY29u
c3QKIH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4oKSBjb25zdAordGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbkxpbmU+KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAg
ICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAg
ICAgICAgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4geyB9OworICAgICAgICByZXR1
cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4geyB9OwogICAgIGNhc2UgQ1NTVmFsdWVV
bmRlcmxpbmU6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lOworICAg
ICAgICByZXR1cm4gVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmU7CiAgICAgY2FzZSBDU1NW
YWx1ZU92ZXJsaW5lOgotICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb246Ok92ZXJsaW5lOwor
ICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZTsKICAgICBjYXNlIENT
U1ZhbHVlTGluZVRocm91Z2g6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbjo6TGluZVRo
cm91Z2g7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoOwog
ICAgIGNhc2UgQ1NTVmFsdWVCbGluazoKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uOjpC
bGluazsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTGluZTo6Qmxpbms7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4geyB9OworICAgIHJldHVybiBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB7IH07CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGVjb3JhdGlvblN0eWxlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBjNjcxMDIyN2RkZDE0ZjUwNmQ4ZjUyMGMw
ZTg5NmNjOWNkNGU2OWRiLi45ZmJlMWI2MGMzZDYwNDY0MjcxZmQ2NzRmZjM1MDUyZWVjNGI4Yjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MDk3LDkgKzQwOTcsOSBAQCBGb250
QXR0cmlidXRlcyBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpCiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVj
b3JhdGlvbjo6TGluZVRocm91Z2gpCisgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29y
YXRpb25MaW5lOjpMaW5lVGhyb3VnaCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFzU3RyaWtl
VGhyb3VnaCA9IHRydWU7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246
OlVuZGVybGluZSkKKyAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6
OlVuZGVybGluZSkKICAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lID0gdHJ1ZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQppbmRleCBkOTQ0ZDk4NGRjM2Y4ZTE5MzlmMWZjNzQzZjhhOTQwYTE3N2ExZTJlLi4wMTc5Y2Fj
NTlhZWJkNTFhZjFmNTUyNDhmYTA0NWUwMjIxNmU2NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMzgwLDkgKzIzODAsOSBAQCBBdHRy
aWJ1dGVkU3RyaW5nIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiBy
YW5nZSwgSW5jbHVkZUltYWdlcwogICAgICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAg
ICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4dERlY29yYXRpb246
OlVuZGVybGluZSkKKyAgICAgICAgaWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkg
JiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkKICAgICAgICAgICAgIFthdHRycyBzZXRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVd
IGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIGlmIChzdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdo
KQorICAgICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNv
cmF0aW9uTGluZTo6TGluZVRocm91Z2gpCiAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltO
U051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6
TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXTsKICAgICAgICAgaWYgKGF1dG8gZm9u
dCA9IHN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSkKICAgICAg
ICAgICAgIFthdHRycyBzZXRPYmplY3Q6dG9OU0ZvbnQoZm9udCkgZm9yS2V5Ok5TRm9udEF0dHJp
YnV0ZU5hbWVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1h
cmtlZFRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQu
Y3BwCmluZGV4IDA0N2YwMmExNzlmYTU2MTNiZDgzYTZmNTc5NzliZjZiMTQwNDI2ZTEuLmRiMmMz
NjNjZmUxNTczNjZmN2ZiZTJhYTdhMjY2ZGUyZmI5ZjhlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBzdGF0
aWMgU3R5bGVkTWFya2VkVGV4dCByZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KGNvbnN0IE1hcmtl
ZFRleHQmIG1hcmtlZFRleHQsCiAgICAgICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHJl
bmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvblN0eWxlKCk7CiAgICAgICAgICAgICBhdXRvIGRlY29y
YXRpb25zID0gcmVuZGVyU3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CiAKLSAgICAg
ICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5l
KSkgeworICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9u
U3R5bGVzLnVuZGVybGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4
dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29y
YXRpb246Ok92ZXJsaW5lKSkgeworICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5z
KFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUu
dGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAg
ICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9u
U3R5bGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFp
bnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgeworICAgICAgICAgICAgaWYgKGRlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKSB7CiAgICAg
ICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvciA9
IGNvbG9yOwogICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0
aHJvdWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCmluZGV4IGVh
MDkwMDZmZWQyNjg4MjU3ZTgwMmE3ZTllYzczODA0YmU1MGUxMTQuLjA4NDI5NDQ0YmFjNjU3YjVm
M2UwNjg2ZmNmMmRhMTk2MWE1NTQyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBU
ZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlczo6b3BlcmF0b3I9PShjb25zdCBTdHlsZXMmIG90
aGVyKSBjb25zdAogICAgICAgICAmJiB1bmRlcmxpbmVTdHlsZSA9PSBvdGhlci51bmRlcmxpbmVT
dHlsZSAmJiBvdmVybGluZVN0eWxlID09IG90aGVyLm92ZXJsaW5lU3R5bGUgJiYgbGluZXRocm91
Z2hTdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaFN0eWxlOwogfQogCi1UZXh0RGVjb3JhdGlvblBh
aW50ZXI6OlRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmIHJl
bmRlcmVyLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgc3RkOjpv
cHRpb25hbDxTdHlsZXM+IHN0eWxlcykKK1RleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29y
YXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uTGluZT4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29s
IGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgc3RkOjpvcHRpb25hbDxTdHls
ZXM+IHN0eWxlcykKICAgICA6IG1fY29udGV4dCB7IGNvbnRleHQgfQogICAgICwgbV9kZWNvcmF0
aW9ucyB7IGRlY29yYXRpb25zIH0KICAgICAsIG1fd2F2eU9mZnNldCB7IHdhdnlPZmZzZXRGcm9t
RGVjb3JhdGlvbigpIH0KQEAgLTIxNSwxNCArMjE1LDE0IEBAIHZvaWQgVGV4dERlY29yYXRpb25Q
YWludGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0
IEZsCiAgICAgZmxvYXQgdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0
RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6
ZSgpLCBmb250TWV0cmljcyk7CiAgICAgRmxvYXRQb2ludCBsb2NhbE9yaWdpbiA9IGJveE9yaWdp
bjsKIAotICAgIGF1dG8gcGFpbnREZWNvcmF0aW9uID0gWyZdIChUZXh0RGVjb3JhdGlvbiBkZWNv
cmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkgeworICAgIGF1dG8gcGFpbnREZWNvcmF0aW9uID0gWyZdIChU
ZXh0RGVjb3JhdGlvbkxpbmUgZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsKICAgICAgICAgbV9j
b250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKIAogICAgICAgICBhdXRvIHN0cm9rZVN0eWxl
ID0gdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoc3R5bGUpOwogCiAgICAgICAgIGlm
IChzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KQogICAgICAgICAgICAgc3Ryb2tl
V2F2eVRleHREZWNvcmF0aW9uKG1fY29udGV4dCwgcmVjdCwgbV9saW5lU3R5bGUuY29tcHV0ZWRG
b250UGl4ZWxTaXplKCkpOwotICAgICAgICBlbHNlIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNv
cmF0aW9uOjpVbmRlcmxpbmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbjo6T3Zlcmxp
bmUpIHsKKyAgICAgICAgZWxzZSBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6
OlVuZGVybGluZSB8fCBkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUp
IHsKICAgICAgICAgICAgIGlmICgobV9saW5lU3R5bGUudGV4dERlY29yYXRpb25Ta2lwSW5rKCkg
PT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpBdXRvIHx8IG1fbGluZVN0eWxlLnRleHREZWNvcmF0
aW9uU2tpcEluaygpID09IFRleHREZWNvcmF0aW9uU2tpcEluazo6QWxsKSAmJiBtX2lzSG9yaXpv
bnRhbCkgewogICAgICAgICAgICAgICAgIGlmICghbV9jb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSkgewogICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lQm91bmRpbmdCb3gg
PSBtX2NvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQocmVjdCwgbV9pc1ByaW50
aW5nKTsKQEAgLTIzNywxNCArMjM3LDE0IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpw
YWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdMaW5lRm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcs
IHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKGRlY29yYXRp
b24gPT0gVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKTsKKyAgICAgICAgICAgIEFTU0VSVChk
ZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpOwogICAgICAgICAg
ICAgbV9jb250ZXh0LmRyYXdMaW5lRm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICB9CiAg
ICAgfTsKIAotICAgIGJvb2wgYXJlTGluZXNPcGFxdWUgPSAhbV9pc1ByaW50aW5nICYmICghbV9k
ZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSB8fCBtX3N0eWxl
cy51bmRlcmxpbmVDb2xvci5pc09wYXF1ZSgpKQotICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSB8fCBtX3N0eWxlcy5vdmVybGluZUNv
bG9yLmlzT3BhcXVlKCkpCi0gICAgICAgICYmICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0
RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IuaXNP
cGFxdWUoKSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYgKCFt
X2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSB8fCBt
X3N0eWxlcy51bmRlcmxpbmVDb2xvci5pc09wYXF1ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3Jh
dGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkgfHwgbV9zdHlsZXMu
b3ZlcmxpbmVDb2xvci5pc09wYXF1ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRo
cm91Z2hDb2xvci5pc09wYXF1ZSgpKTsKIAogICAgIGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAg
ICBib29sIGNsaXBwaW5nID0gIWFyZUxpbmVzT3BhcXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93
LT5uZXh0KCk7CkBAIC0yODUsMjggKzI4NSwyOCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRl
cjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRo
ZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlv
bnMoKS4KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246
OlVuZGVybGluZSkpIHsKKyAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERl
Y29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICBmbG9hdCB0ZXh0RGVjb3Jh
dGlvbkJhc2VGb250U2l6ZSA9IDE2OwogICAgICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbV9s
aW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7
CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGlu
ZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5l
T2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIG1fdGV4dEJveCwgZGVmYXVsdEdh
cCk7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5
bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAg
ICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgb2Zmc2V0
ICsgd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRp
b246OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGlu
ZUNvbG9yLCByZWN0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlv
bkxpbmU6OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVy
bGluZUNvbG9yLCByZWN0KTsKICAgICAgICAgfQotICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5j
b250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpKSB7CisgICAgICAgIGlmIChtX2RlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CiAgICAgICAg
ICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0
UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25U
aGlja25lc3MpKTsKICAgICAgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV9s
aW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyk7CiAgICAgICAgICAgICBy
ZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29yYXRpb25U
aGlja25lc3MgLSB3YXZ5T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0
RGVjb3JhdGlvbjo6T3ZlcmxpbmUsIG1fc3R5bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92
ZXJsaW5lQ29sb3IsIHJlY3QpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNv
cmF0aW9uTGluZTo6T3ZlcmxpbmUsIG1fc3R5bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92
ZXJsaW5lQ29sb3IsIHJlY3QpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2RlY29yYXRpb25z
LmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkpIHsKKyAgICAgICAgaWYgKG1f
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsK
ICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0
aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKICAgICAgICAgICAgIGZsb2F0IGF1dG9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRo
QXV0bygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmlj
cyk7CiAgICAgICAgICAgICBhdXRvIGNlbnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2Vu
dCgpIC8gMyArIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDI7CiAgICAgICAgICAgICBy
ZWN0Lm1vdmUoMCwgY2VudGVyIC0gdGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyKTsKLSAgICAg
ICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gsIG1fc3R5
bGVzLmxpbmV0aHJvdWdoU3R5bGUsIG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHJlY3QpOwor
ICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91
Z2gsIG1fc3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUsIG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3Is
IHJlY3QpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoc2hhZG93KTsKIApAQCAtMzE2LDI0ICsz
MTYsMjQgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24o
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwKICAgICAgICAgbV9jb250ZXh0LmNsZWFy
U2hhZG93KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHJlbWFpbmluZ0RlY29yYXRpb25zLCBi
b29sIGZpcnN0TGluZVN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKK3N0YXRpYyB2b2lkIGNvbGxl
Y3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0
LCBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25M
aW5lPiByZW1haW5pbmdEZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNldWRvSWQg
cHNldWRvSWQpCiB7Ci0gICAgYXV0byBleHRyYWN0RGVjb3JhdGlvbnMgPSBbJl0gKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucykg
eworICAgIGF1dG8gZXh0cmFjdERlY29yYXRpb25zID0gWyZdIChjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb25zKSB7CiAgICAg
ICAgIGF1dG8gY29sb3IgPSBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OmRlY29yYXRpb25Db2xvcihz
dHlsZSk7CiAgICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxlID0gc3R5bGUudGV4dERlY29yYXRp
b25TdHlsZSgpOwogCi0gICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbjo6VW5kZXJsaW5lKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVt
b3ZlKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7CisgICAgICAgICAgICBy
ZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUp
OwogICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAg
ICByZXN1bHQudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkp
IHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlv
bjo6T3ZlcmxpbmUpOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29y
YXRpb25MaW5lOjpPdmVybGluZSkpIHsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25z
LnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKTsKICAgICAgICAgICAgIHJlc3Vs
dC5vdmVybGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVTdHls
ZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQotICAgICAgICBpZiAoZGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgewotICAgICAgICAgICAgcmVt
YWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7Cisg
ICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVU
aHJvdWdoKSkgeworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpOwogICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJv
dWdoQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaFN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CkBAIC0zNzYsMTkgKzM3NiwxOSBAQCBDb2xvciBU
ZXh0RGVjb3JhdGlvblBhaW50ZXI6OmRlY29yYXRpb25Db2xvcihjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZp
bHRlcihDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3IpOwogfQogCi1PcHRpb25TZXQ8VGV4
dERlY29yYXRpb24+IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZl
Y3RGb3JTdHlsZShjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgc3R5bGUpCitP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUoY29uc3QgVGV4dERlY29yYXRpb25QYWludGVyOjpT
dHlsZXMmIHN0eWxlKQogewotICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlv
bnM7CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnM7CiAgICAg
aWYgKHN0eWxlLnVuZGVybGluZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgZGVjb3JhdGlvbnMu
YWRkKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOworICAgICAgICBkZWNvcmF0aW9ucy5hZGQo
VGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwogICAgIGlmIChzdHlsZS5vdmVybGluZUNv
bG9yLmlzVmFsaWQoKSkKLSAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uOjpP
dmVybGluZSk7CisgICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6Ok92
ZXJsaW5lKTsKICAgICBpZiAoc3R5bGUubGluZXRocm91Z2hDb2xvci5pc1ZhbGlkKCkpCi0gICAg
ICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpOworICAgICAg
ICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCk7CiAgICAg
cmV0dXJuIGRlY29yYXRpb25zOwogfTsKIAotYXV0byBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnN0
eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbj4gcmVxdWVzdGVkRGVjb3JhdGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUs
IFBzZXVkb0lkIHBzZXVkb0lkKSAtPiBTdHlsZXMKK2F1dG8gVGV4dERlY29yYXRpb25QYWludGVy
OjpzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExp
bmVTdHlsZSwgUHNldWRvSWQgcHNldWRvSWQpIC0+IFN0eWxlcwogewogICAgIFN0eWxlcyByZXN1
bHQ7CiAgICAgY29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKHJlc3VsdCwgcmVuZGVyZXIsIHJlcXVl
c3RlZERlY29yYXRpb25zLCBmYWxzZSwgcHNldWRvSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmluZGV4IGVhYWQ0MDgzNTEwZjgzZDhj
NGQ0YjJhOWQyMjdjNTI5NWE3ZGYxNDMuLmU3NDFhNTk5NzdiZmIzYTkyZjQzNzRiOTE5ODVlMTMx
NmI4MWNhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3Jh
dGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRleHRE
ZWNvcmF0aW9uUGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFN0eWxlczsKLSAgICBUZXh0
RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uPiBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgc3RkOjpvcHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsK
KyAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlz
Rmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgdm9pZCBzZXRUZXh0Qm94KElubGluZUl0ZXJhdG9yOjpU
ZXh0Qm94SXRlcmF0b3IgdGV4dEJveCkgeyBtX3RleHRCb3ggPSB0ZXh0Qm94OyB9CiAgICAgdm9p
ZCBzZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBp
c0hvcml6b250YWw7IH0KQEAgLTY2LDEyICs2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFRleHRE
ZWNvcmF0aW9uU3R5bGUgbGluZXRocm91Z2hTdHlsZTsKICAgICB9OwogICAgIHN0YXRpYyBDb2xv
ciBkZWNvcmF0aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUmKTsKLSAgICBzdGF0aWMgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKGNvbnN0
IFN0eWxlcyYpOwotICAgIHN0YXRpYyBTdHlsZXMgc3R5bGVzRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiByZXF1ZXN0ZWREZWNvcmF0aW9u
cywgYm9vbCBmaXJzdExpbmVTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25l
KTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRp
b25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBTdHlsZXMmKTsKKyAgICBzdGF0aWMgU3R5bGVzIHN0
eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbkxpbmU+IHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFs
c2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwogCiBwcml2YXRlOgogICAgIEdyYXBoaWNz
Q29udGV4dCYgbV9jb250ZXh0OwotICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gbV9kZWNv
cmF0aW9uczsKKyAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBtX2RlY29yYXRpb25z
OwogICAgIGZsb2F0IG1fd2F2eU9mZnNldDsKICAgICBmbG9hdCBtX3dpZHRoIHsgMCB9OwogICAg
IEZsb2F0UG9pbnQgbV9ib3hPcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA2MDZjOTliODNkZmI3MWIyNjgyZTkxNDEyNzQ1YTZk
MGMzZjZiMTI0Li4xMzVlMmUxMTI4NGU2NTNmMDM1YzBkYmYwNjFlMjdmNjI1MTBjZjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEx
NjQsNyArMTE2NCw3IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElm
VGV4dE9yQm9yZGVyT3JPdXRsaW5lKGNvbnN0IFJlbmRlclN0eWxlCiB7CiAgICAgaWYgKG1faW5o
ZXJpdGVkRGF0YS0+Y29sb3IgIT0gb3RoZXIubV9pbmhlcml0ZWREYXRhLT5jb2xvcgogICAgICAg
ICB8fCBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyAhPSBvdGhlci5tX2luaGVyaXRl
ZEZsYWdzLnRleHREZWNvcmF0aW9ucwotICAgICAgICB8fCBtX3Zpc3VhbERhdGEtPnRleHREZWNv
cmF0aW9uICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24KKyAgICAgICAgfHwg
bV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbkxpbmUgIT0gb3RoZXIubV92aXN1YWxEYXRhLT50
ZXh0RGVjb3JhdGlvbkxpbmUKICAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4
dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVj
b3JhdGlvblN0eWxlCiAgICAgICAgIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNv
cmF0aW9uQ29sb3IgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRp
b25Db2xvcgogICAgICAgICB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNr
aXBJbmsgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwSW5r
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDIw
NTIwNDI0ZGYyMzQzNDMyMGI3MzNmNDI0MGQ5YThkMTA0NjkyZmIuLjVlNWYxNzY4MTA5ZDI5ZTM2
NDdhMzAyNmU1OGM4ODM1M2FjMmQ0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0zNzIsOCArMzcyLDggQEAgcHVibGljOgogICAgIGNvbnN0
IExlbmd0aCYgdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEt
PmluZGVudDsgfQogICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dEFsaWduTW9kZT4obV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24pOyB9
CiAgICAgVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dFRyYW5zZm9ybT4obV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtKTsgfQot
ICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBj
b25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3KG1faW5oZXJp
dGVkRmxhZ3MudGV4dERlY29yYXRpb25zKTsgfQotICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bj4gdGV4dERlY29yYXRpb24oKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+Ojpmcm9tUmF3KG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24pOyB9CisgICAgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7
IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPjo6ZnJvbVJhdyhtX2luaGVyaXRl
ZEZsYWdzLnRleHREZWNvcmF0aW9ucyk7IH0KKyAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25M
aW5lPiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbkxpbmU+Ojpmcm9tUmF3KG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb25MaW5lKTsgfQog
ICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRleHREZWNvcmF0aW9uU3R5bGUpOyB9CiAgICAgVGV4dERlY29yYXRpb25Ta2lwSW5rIHRl
eHREZWNvcmF0aW9uU2tpcEluaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNv
cmF0aW9uU2tpcEluaz4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwSW5r
KTsgfQogICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3NpdGlvbik7IH0KQEAgLTk4NSw5ICs5ODUsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0SW5kZW50KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRf
VkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGluZGVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAg
IHZvaWQgc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLnRl
eHRBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0VGV4dFRy
YW5zZm9ybShUZXh0VHJhbnNmb3JtIHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3Jt
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9Ci0gICAgdm9pZCBhZGRUb1RleHREZWNvcmF0
aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdikgeyBtX2luaGVyaXRlZEZs
YWdzLnRleHREZWNvcmF0aW9ucyB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odi50b1JhdygpKTsg
fQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QoT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zID0gdi50b1Jhdygp
OyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+
IHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHREZWNvcmF0aW9uLCB2LnRvUmF3KCkpOyB9
CisgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbkxpbmU+IHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgfD0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHYudG9SYXcoKSk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0
aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHYpIHsgbV9pbmhlcml0
ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgPSB2LnRvUmF3KCk7IH0KKyAgICB2b2lkIHNldFRleHRE
ZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHYpIHsgU0VUX1ZBUihtX3Zp
c3VhbERhdGEsIHRleHREZWNvcmF0aW9uTGluZSwgdi50b1JhdygpKTsgfQogICAgIHZvaWQgc2V0
VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIHYpIHsgU0VUX1ZBUihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblN0eWxlLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odikpOyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXBJbmsoVGV4dERlY29y
YXRpb25Ta2lwSW5rIHNraXBJbmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
RGVjb3JhdGlvblNraXBJbmssIHN0YXRpY19jYXN0PHVuc2lnbmVkPihza2lwSW5rKSk7IH0KICAg
ICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gcG9z
aXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRp
b24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikpOyB9CkBAIC0xNjE0LDcgKzE2MTQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuaW5nIC0xMDAlIHBlcmNlbnQgaGVyZSBtZWFucyB0
aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldC4KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxMaW5l
SGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpOyB9
CiAgICAgc3RhdGljIFRleHRBbGlnbk1vZGUgaW5pdGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRl
eHRBbGlnbk1vZGU6OlN0YXJ0OyB9Ci0gICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bj4gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uPiB7IH07IH0KKyAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gaW5p
dGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGlu
ZT4geyB9OyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNv
cmF0aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsgfQogICAg
IHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXBJbmsgaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcElu
aygpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU2tpcEluazo6QXV0bzsgfQogICAgIHN0YXRpYyBU
ZXh0VW5kZXJsaW5lUG9zaXRpb24gaW5pdGlhbFRleHRVbmRlcmxpbmVQb3NpdGlvbigpIHsgcmV0
dXJuIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKaW5kZXggZWUz
OGRkYTYwODgxZjhhN2Q0NzQ4NDQwMjk3NDY2MmFkOTQ3YjE0YS4uYTI5NGMxODUyYmY2OWFjNmVm
ODFjZWFlMWUwNzk1NTkzYzE3ZGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCkBAIC0xMDU1LDE0ICsxMDU1
LDE0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRleHRDb21iaW5l
IHRleHRDb21iaW5lKQogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRpb24pCi17Ci0gICAg
c3dpdGNoICh0ZXh0RGVjb3JhdGlvbikgewotICAgIGNhc2UgVGV4dERlY29yYXRpb246Ok5vbmU6
IHRzIDw8ICJub25lIjsgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5l
OiB0cyA8PCAidW5kZXJsaW5lIjsgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6T3Zl
cmxpbmU6IHRzIDw8ICJvdmVybGluZSI7IGJyZWFrOwotICAgIGNhc2UgVGV4dERlY29yYXRpb246
OkxpbmVUaHJvdWdoOiB0cyA8PCAibGluZS10aHJvdWdoIjsgYnJlYWs7Ci0gICAgY2FzZSBUZXh0
RGVjb3JhdGlvbjo6Qmxpbms6IHRzIDw8ICJibGluayI7IGJyZWFrOworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERlY29yYXRpb25MaW5lIGxpbmUpCit7CisgICAg
c3dpdGNoIChsaW5lKSB7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6Ok5vbmU6IHRzIDw8
ICJub25lIjsgYnJlYWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZTog
dHMgPDwgInVuZGVybGluZSI7IGJyZWFrOworICAgIGNhc2UgVGV4dERlY29yYXRpb25MaW5lOjpP
dmVybGluZTogdHMgPDwgIm92ZXJsaW5lIjsgYnJlYWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlv
bkxpbmU6OkxpbmVUaHJvdWdoOiB0cyA8PCAibGluZS10aHJvdWdoIjsgYnJlYWs7CisgICAgY2Fz
ZSBUZXh0RGVjb3JhdGlvbkxpbmU6OkJsaW5rOiB0cyA8PCAiYmxpbmsiOyBicmVhazsKICAgICB9
CiAgICAgcmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCA1ZDZlNzBjYTJhZGE0MjMyZWMyODhh
YjczZTYzNzM1MWIwNzkwMTdkLi5hY2IxOGQ4Yzk2YzE0ZDMwOTI1NDkxZGNhNjE2ZWU2MGQ4YjQw
ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaApAQCAtNzQ1LDcgKzc0NSw3IEBAIGVudW0gY2xhc3MgVGV4dFRyYW5z
Zm9ybSA6IHVpbnQ4X3QgewogfTsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBUZXh0RGVjb3JhdGlv
bkJpdHMgPSA0OwotZW51bSBjbGFzcyBUZXh0RGVjb3JhdGlvbiA6IHVpbnQ4X3QgeworZW51bSBj
bGFzcyBUZXh0RGVjb3JhdGlvbkxpbmUgOiB1aW50OF90IHsKICAgICBOb25lICAgICAgICAgID0g
MCwKICAgICBVbmRlcmxpbmUgICAgID0gMSA8PCAwLAogICAgIE92ZXJsaW5lICAgICAgPSAxIDw8
IDEsCkBAIC0xMzM5LDcgKzEzMzksNyBAQCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgU3R5bGVEaWZmZXJlbmNlKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUYWJsZUxheW91dFR5cGUpOwogV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRBbGlnbk1vZGUpOwogV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRDb21iaW5lKTsKLVdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUZXh0RGVjb3JhdGlvbik7
CitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dERlY29y
YXRpb25MaW5lKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBUZXh0RGVjb3JhdGlvblNraXBJbmspOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFRleHREZWNvcmF0aW9uU3R5bGUpOwogV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRFbXBoYXNpc0ZpbGwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcAppbmRleCAx
MGE0NDdiZDBhZTI0N2U1ZWE2NzVhNGI3YTQ3YTE2ZTFkYTI4MDU2Li42YmQ1ZTRjNGI5YzZmOTc4
N2Y4MGQ2MGUzZDQ0ZTEwZjI1NzUxMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKCkKICAgICA6
IGhhc0NsaXAoZmFsc2UpCi0gICAgLCB0ZXh0RGVjb3JhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlh
bFRleHREZWNvcmF0aW9uKCkudG9SYXcoKSkKKyAgICAsIHRleHREZWNvcmF0aW9uTGluZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCkudG9SYXcoKSkKICAgICAsIHpvb20oUmVu
ZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCiB7CiB9CkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBT
dHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0YShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90
aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZVZpc3VhbERhdGE+KCkKICAgICAsIGNsaXAob3Ro
ZXIuY2xpcCkKICAgICAsIGhhc0NsaXAob3RoZXIuaGFzQ2xpcCkKLSAgICAsIHRleHREZWNvcmF0
aW9uKG90aGVyLnRleHREZWNvcmF0aW9uKQorICAgICwgdGV4dERlY29yYXRpb25MaW5lKG90aGVy
LnRleHREZWNvcmF0aW9uTGluZSkKICAgICAsIHpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29t
KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVWaXN1YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmgKaW5kZXggZDQxOGFjYjUwYTI0ZjhhM2IyMThkZGUxOGMzM2UxYWE4OGE4Y2IzYi4u
ZDVkYTc4OTQyMzMyM2Q4Mjg0MDMxNjZmNTFkZDQ0NjUyMzZlY2QzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaApAQCAtNDEsMTQgKzQx
LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBjbGlwID09IG90aGVyLmNsaXAK
ICAgICAgICAgICAgICYmIGhhc0NsaXAgPT0gb3RoZXIuaGFzQ2xpcAotICAgICAgICAgICAgJiYg
dGV4dERlY29yYXRpb24gPT0gb3RoZXIudGV4dERlY29yYXRpb24KKyAgICAgICAgICAgICYmIHRl
eHREZWNvcmF0aW9uTGluZSA9PSBvdGhlci50ZXh0RGVjb3JhdGlvbkxpbmUKICAgICAgICAgICAg
ICYmIHpvb20gPT0gb3RoZXIuem9vbTsKICAgICB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAKICAgICBMZW5ndGhCb3ggY2xpcDsKICAgICBib29sIGhhc0NsaXAgOiAxOwotICAgIHVu
c2lnbmVkIHRleHREZWNvcmF0aW9uIDogVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29y
YXRpb25zIGRlZmluZWQgKm9ubHkqIGJ5IHRoaXMgZWxlbWVudC4KKyAgICB1bnNpZ25lZCB0ZXh0
RGVjb3JhdGlvbkxpbmUgOiBUZXh0RGVjb3JhdGlvbkJpdHM7IC8vIFRleHQgZGVjb3JhdGlvbnMg
ZGVmaW5lZCAqb25seSogYnkgdGhpcyBlbGVtZW50LgogICAgIGZsb2F0IHpvb207CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRl
eHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94
LmNwcAppbmRleCBjMjAyYjI1NDQ2ZmUwZWNiYjM1YzQ3MmI0ZDI5YmJmOGMyM2YzYzI4Li41NWU1
Y2NiMTk4ZTZkMDQ0ZDZiMTJlZTkyMzYyMTFhZWIxMzkxYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTI5NSwxMCArMjk1
LDEwIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICAgICAgLy8gU3BlYzogQWxsIHRl
eHQgZGVjb3JhdGlvbnMgZXhjZXB0IGxpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYmVmb3Jl
IHRoZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tlZDsgdGh1cywgdGhlIHRleHQgaXMgcmVuZGVy
ZWQgb24gdG9wIG9mIHRoZXNlIGRlY29yYXRpb25zLgogICAgICAgICBhdXRvIGRlY29yYXRpb25z
ID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICAgICAgaWYgKGRlY29yYXRp
b25zICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3Jh
dGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lLCBmcmFn
bWVudCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uOjpPdmVybGlu
ZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0
RGVjb3JhdGlvbjo6T3ZlcmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25z
ICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCisgICAgICAgICAgICBwYWludERlY29y
YXRpb24ocGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUs
IGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSkKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4
dCgpLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAg
YXV0byBwYWludE9yZGVyID0gUmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQYWludE9yZGVyKHN0
eWxlLnBhaW50T3JkZXIoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlu
dE9yZGVyLnNpemUoKTsgKytpKSB7CkBAIC0zMjMsOCArMzIzLDggQEAgdm9pZCBTVkdJbmxpbmVU
ZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2UKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNwZWM6IExpbmUtdGhyb3VnaCBzaG91
bGQgYmUgZHJhd24gYWZ0ZXIgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0
aGUgbGluZS10aHJvdWdoIGlzIHJlbmRlcmVkIG9uIHRvcCBvZiB0aGUgdGV4dC4KLSAgICAgICAg
aWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQotICAgICAgICAg
ICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uOjpM
aW5lVGhyb3VnaCwgZnJhZ21lbnQpOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVj
b3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKQorICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBh
aW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gsIGZyYWdt
ZW50KTsKIAogICAgICAgICBzZXRQYWludGluZ1Jlc291cmNlTW9kZSh7IH0pOwogICAgIH0KQEAg
LTQzOCwyMiArNDM4LDIyIEBAIGJvb2wgU1ZHSW5saW5lVGV4dEJveDo6bWFwU3RhcnRFbmRQb3Np
dGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgcG9zaXRpb25PZmZzZXRGb3JEZWNvcmF0aW9u
KE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbiwgY29uc3QgRm9udE1ldHJpY3Mm
IGZvbnRNZXRyaWNzLCBmbG9hdCB0aGlja25lc3MpCitzdGF0aWMgaW5saW5lIGZsb2F0IHBvc2l0
aW9uT2Zmc2V0Rm9yRGVjb3JhdGlvbihPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNv
cmF0aW9uLCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGZsb2F0IHRoaWNrbmVzcykK
IHsKICAgICAvLyBGSVhNRTogRm9yIFNWRyBGb250cyB3ZSBuZWVkIHRvIHVzZSB0aGUgYXR0cmli
dXRlcyBkZWZpbmVkIGluIHRoZSA8Zm9udC1mYWNlPiBpZiBzcGVjaWZpZWQuCiAgICAgLy8gQ29t
cGF0aWJsZSB3aXRoIEJhdGlrL09wZXJhLgotICAgIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNv
cmF0aW9uOjpVbmRlcmxpbmUpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUpCiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgp
ICsgdGhpY2tuZXNzICogMS41ZjsKLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlv
bjo6T3ZlcmxpbmUpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpP
dmVybGluZSkKICAgICAgICAgcmV0dXJuIHRoaWNrbmVzczsKLSAgICBpZiAoZGVjb3JhdGlvbiA9
PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4
dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNz
LmZsb2F0QXNjZW50KCkgKiA1IC8gOC4wZjsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiAwLjBmOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRl
Y29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQpCitzdGF0aWMgaW5saW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uTGluZT4sIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAgIC8v
IEZJWE1FOiBGb3IgU1ZHIEZvbnRzIHdlIG5lZWQgdG8gdXNlIHRoZSBhdHRyaWJ1dGVzIGRlZmlu
ZWQgaW4gdGhlIDxmb250LWZhY2U+IGlmIHNwZWNpZmllZC4KICAgICAvLyBDb21wYXRpYmxlIHdp
dGggQmF0aWsvT3BlcmEKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJv
eE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4dERlY29yYXRpb24oTGVnYWN5
SQogICAgIHJldHVybiAqcmVuZGVyZXI7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFp
bnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQordm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9uLCBjb25zdCBTVkdU
ZXh0RnJhZ21lbnQmIGZyYWdtZW50KQogewogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUw
NSw3ICs1MDUsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0RAogICAgIH0KIH0KIAotdm9pZCBT
VkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb24sIGNvbnN0IFNW
R1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9u
UmVuZGVyZXIpCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbldpdGhTdHls
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+
IGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIFJlbmRlckJveE1v
ZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKCFtX3BhaW50aW5n
UmVzb3VyY2UpOwogICAgIEFTU0VSVCghcGFpbnRpbmdSZXNvdXJjZU1vZGUoKS5pc0VtcHR5KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApp
bmRleCA1M2VmNDc2NWZlZDYzZjNjNGEwYjVmZjM4MWE5Mjg2MmNiM2Q1NzFiLi4xMDY5Mjk0YmQ2
OGNjZDRiNDE2ZmEzNjU4ZWNkMzM0ZDIyNWFkOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtODMsOCArODMsOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgcHJlcGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyhHcmFwaGlj
c0NvbnRleHQqJiwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgY29uc3QgUmVuZGVyU3R5bGUmKTsKICAg
ICB2b2lkIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyhHcmFwaGljc0Nv
bnRleHQqJik7CiAKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb24+LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKTsKLSAgICB2
b2lkIHBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8
VGV4dERlY29yYXRpb24+LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2RlbE9i
amVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFw
aGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiwgY29uc3QgU1ZHVGV4
dEZyYWdtZW50Jik7CisgICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3ND
b250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4sIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwogICAgIHZv
aWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgdW5zaWduZWQgc3RhcnRQb3Np
dGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pOwogICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmIHNlbGVjdGlv
blN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBw
YWludFNlbGVjdGVkVGV4dE9ubHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmNwcAppbmRleCBiNGM0ZmM0Yjk1MDlmZTc5MjE2YWQzMTczZTFmY2QzNjQ1Zjc3
OGI5Li5hMzY3NzhkZTk1ZjcwNjkyY2ZjMWI4YmQwNDNlODljMzE2ZjM0ZmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RhdGljIGJvb2wgaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGNvbnN0IFJlbmRlcklubGluZSYg
YW5jZXN0b3IsIGNvbnN0IFJlbmRlck8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2
b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0
b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRl
ckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0
ZXh0RGVjb3JhdGlvbikKK3N0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlv
bkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQmIG1p
bkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb24pCiB7CiAgICAgZm9yIChh
dXRvIHJ1biA9IGxpbmUtPmZpcnN0UnVuKCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgp
KSB7CiAgICAgICAgIGlmIChydW4tPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3Jh
dGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvCiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9t
LCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24pCitzdGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9t
Rm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3Im
IGxpbmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNv
cmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0
aW9uKQogewogICAgIGZvciAoYXV0byBydW4gPSBsaW5lLT5maXJzdFJ1bigpOyBydW47IHJ1bi50
cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCBtYXhMb2dp
Y2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5l
SXRlcgogICAgIH0KIH0KIAotc3RhdGljIGNvbnN0IFJlbmRlckVsZW1lbnQqIGVuY2xvc2luZ1Jl
bmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBPcHRp
b25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uLCBib29sIGZpcnN0TGluZSkKK3N0
YXRpYyBjb25zdCBSZW5kZXJFbGVtZW50KiBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3Jh
dGlvbihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
TGluZT4gdGV4dERlY29yYXRpb24sIGJvb2wgZmlyc3RMaW5lKQogewogICAgIGNvbnN0IFJlbmRl
ckVsZW1lbnQqIGN1cnJlbnQgPSByZW5kZXJlci5wYXJlbnQoKTsKICAgICBkbyB7CkBAIC0xMzUs
MTYgKzEzNSwxNiBAQCBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQ
b3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybAogICAgICAgICBBU1NFUlQodGV4
dFJ1bik7CiAgICAgICAgIC8vIFBvc2l0aW9uIHVuZGVybGluZSByZWxhdGl2ZSB0byB0aGUgYm90
dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBlbGVtZW50J3MgY29udGVudCBib3guCiAgICAgICAgIGF1
dG8gbGluZSA9IHRleHRSdW4tPmxpbmUoKTsKLSAgICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRl
cmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVy
ZXIoKSwgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgbGluZS0+aXNGaXJzdCgpKTsKKyAgICAg
ICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERl
Y29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUsIGxpbmUtPmlzRmlyc3QoKSk7CiAgICAgICAgIAogICAgICAgICBmbG9hdCBvZmZzZXQ7CiAg
ICAgICAgIGlmICh0ZXh0UnVuLT5yZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0
aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICBvZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsVG9wKCk7
Ci0gICAgICAgICAgICBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9m
ZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAg
ICAgICAgICAgIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zmc2V0
LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKICAg
ICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxUb3AoKSAtIG9mZnNldDsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxCb3R0b20o
KTsKLSAgICAgICAgICAgIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGlu
ZSwgb2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
OworICAgICAgICAgICAgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShsaW5l
LCBvZmZzZXQsIGRlY29yYXRpb25SZW5kZXJlciwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpOwogICAgICAgICAgICAgb2Zmc2V0IC09IHRleHRSdW4tPmxvZ2ljYWxCb3R0b20oKTsKICAg
ICAgICAgfQogICAgICAgICBhdXRvIGRlc2lyZWRPZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsSGVp
Z2h0KCkgKyBnYXAgKyBzdGQ6Om1heChvZmZzZXQsIDAuMGYpICsgdW5kZXJsaW5lT2Zmc2V0Lmxl
bmd0aE9yKDApOwpAQCAtMTkwLDcgKzE5MCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZs
b3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAK
ICAgICAvLyBUaGVzZSBtZXRyaWNzIG11c3QgbWF0Y2ggd2hlcmUgdW5kZXJsaW5lcyBnZXQgZHJh
d24uCiAgICAgLy8gRklYTUU6IFNoYXJlIHRoZSBjb2RlIGluIFRleHREZWNvcmF0aW9uUGFpbnRl
cjo6cGFpbnRUZXh0RGVjb3JhdGlvbigpIHNvIHdlIGNhbiBqdXN0IHF1ZXJ5IGl0IGZvciB0aGUg
cGFpbnRlZCBnZW9tZXRyeS4KLSAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUpIHsKKyAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5k
ZXJsaW5lKSB7CiAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBpbnRlZ3JhbCBjZWlsaW5n
IGluIEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2Rl
Rm9yVGV4dCgpCiAgICAgICAgIGludCB1bmRlcmxpbmVPZmZzZXQgPSAxOwogICAgICAgICBmbG9h
dCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwpAQCAtMjA0LDcgKzIwNCw3IEBAIEds
eXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHls
ZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgICAgICAgICBvdmVyZmxvd1Jlc3VsdC5leHRlbmRU
b3AoLXVuZGVybGluZU9mZnNldCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGRlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpIHsKKyAgICBpZiAoZGVjb3JhdGlvbiAmIFRl
eHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxv
YXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhpY2tuZXNzKSk7CiAgICAgICAgIGZsb2F0
IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpj
cmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGlu
ZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwogICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7CkBAIC0yMTcs
NyArMjE3LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNv
bnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICAgICAgb3ZlcmZsb3dSZXN1
bHQuZXh0ZW5kVG9wKC1yZWN0LnkoKSk7CiAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJv
dHRvbShyZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAgICAgfQotICAgIGlmIChkZWNvcmF0aW9uICYg
VGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSB7CisgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0
RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KEZs
b2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAgICBmbG9h
dCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6
Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxp
bmVTdHlsZS5mb250TWV0cmljcygpKTsKICAgICAgICAgYXV0byBjZW50ZXIgPSAyICogbGluZVN0
eWxlLmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKSAvIDMgKyBhdXRvVGV4dERlY29yYXRpb25U
aGlja25lc3MgLyAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaAppbmRleCBiZDg5M2VmZDdlOTU0N2JlZGQ3NzllNDA1Zjk4ZTk1ZjJmYWRiMGVlLi4wOWI0
ZDk2ZWI4ZjczMjM0YzQxOWFlY2JlOWU3YTk5NmU3NjM1NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIExlbmd0aFNpemUgY29udmVydFJhZGl1cyhCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0UG9zaXRpb24oQnVp
bGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgY29u
dmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAg
c3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gY29udmVydFRleHREZWNvcmF0aW9uKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbkxpbmU+IGNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25z
dCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnRO
dW1iZXIoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyT3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIHNob3J0IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1p
dExpbmVzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CkBAIC00MjMsNyArNDIzLDcg
QEAgaW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9y
QXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXIKICAgICByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3Ro
KExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOwogfQogCi1pbmxp
bmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4
dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5l
IE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
ZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CiAg
ICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYWJhMTA0MTNjZDg3ODliN2RhMzNhYzk2M2NiODBl
MzEwMjJlMzg2ZS4uYzM0YWU0ZDc0YmI3YjRjYzg4ZGIyNjU2NjUzMmQ2ZjBiNWMyOTdlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTUwNiw3ICs5
NTA2LDcgQEAgc3RhdGljIE5TVGV4dEFsaWdubWVudCBuc1RleHRBbGlnbm1lbnRGcm9tUmVuZGVy
U3R5bGUoY29uc3QgV2ViQ29yZTo6UmVuZGVyU3R5bGUKICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIHZhbHVlID0gdHlwaW5nU3R5bGUtPnN0eWxlKCktPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7CiAgICAgICAgICAgICAgICAgICAg
IFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRJc1VuZGVybGlu
ZWQ6dmFsdWUuY29udGFpbnMoInVuZGVybGluZSIpXTsKICAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgW19wcml2YXRlLT5fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xs
ZXIgc2V0VGV4dElzVW5kZXJsaW5lZDpzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5j
b250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKV07CisgICAgICAgICAgICAgICAgICAg
IFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRJc1VuZGVybGlu
ZWQ6c3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuY29udGFpbnMoVGV4dERlY29yYXRp
b25MaW5lOjpVbmRlcmxpbmUpXTsKIAogICAgICAgICAgICAgICAgIENvbG9yIHRleHRDb2xvciA9
IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgICAg
ICAgICAgICAgaWYgKHRleHRDb2xvci5pc1ZhbGlkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443365</attachid>
            <date>2021-11-04 18:05:44 -0700</date>
            <delta_ts>2021-11-05 12:36:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232729-20211104180544.patch</filename>
            <type>text/plain</type>
            <size>55759</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ2NDM4MmY1NDAzOTA2
NjEwODk1ZGNkYWMwNTk4NjA0NjAxZTVhNy4uYmQ3MTEyNjJlN2E3ZTNjNTQzYTEyMzI1NDY2NDIx
NTdhMjM4Nzc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAyMS0xMS0wNCAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgVGV4dERlY29yYXRpb24gdG8gVGV4dERlY29yYXRpb25MaW5lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI3MjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRjaCBieSBUaW0gTmd1
eWVuOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDgzLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwOgorICAgICAgICAoZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9i
amVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6dGV4dEF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZSk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVy
dHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uTGlu
ZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyRmFzdFBhdGhz
Ojppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNp
bmdsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudDo6SFRNTFRleHREZWNvcmF0aW9u
RXF1aXZhbGVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpzdHlsZVdpdGhSZXNvbHZlZFRleHREZWNvcmF0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbGxhcHNlVGV4
dERlY29yYXRpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHREZWNvcmF0aW9u
VmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0
aElubGluZVN0eWxlT2ZFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdT
dHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5vZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUNoYW5nZTo6U3R5bGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDaGFuZ2U6
OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RQcm9wZXJ0aWVz
Tm90SW4pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVz
Ojpwcm9wZXJ0eVZhbHVlRm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRl
ZEF0dHJpYnV0ZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRpbmdBdHRyaWJ1
dGVkU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZUludGVybmFsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29y
YXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRl
cjo6VGV4dERlY29yYXRpb25QYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0
aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb2xs
ZWN0U3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25Q
YWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJl
bmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dGV4dERlY29yYXRpb25zSW5FZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnRleHREZWNvcmF0aW9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlVmlzdWFsRGF0YTo6
U3R5bGVWaXN1YWxEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVZpc3VhbERhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dGhpY2tu
ZXNzRm9yRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUmVuZGVyZXJEZWZpbmlu
aW5nVGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbldpdGhTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94Lmg6CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1Byb3Bl
cnR5Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6c2hvdWxkQXBwbHlQcm9w
ZXJ0eUluUGFyc2VPcmRlcik6CisgICAgICAgICogc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QWRqdXN0ZXI6OmFkanVzdCBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9u
KTogRGVsZXRlZC4KKwogMjAyMS0xMS0wNCAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRh
cmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNjcm9sbGJhciBvcmllbnRhdGlvbiBhbiBl
bnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNGY4YzY5MWE4NThkY2Nj
M2JhOGY1OTMyNGExNmU2MjI5MzQ1YjMxOS4uODBjYWM4MDhmNTJlMTQyNjQwNzAyODE5M2YxMGJl
NzE4ZjA3NmEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTExLTA0ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHVwZGF0ZVRleHRUb3VjaEJhcl0pOgor
CiAyMDIxLTExLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggM2U1Njkz
OWM2YWNjNjVkOGU4ZDU0Y2VkNDg5N2U3YzZhY2RmMGU4My4uMDk5ZmIxNTRmYmVhMzI3YjZkZGM4
NTk3MjZhNjgwYTk5OTNmMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zODg0LDcgKzM4
ODQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVybGluZSgpIGNv
bnN0CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5j
b250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICByZXR1cm4gbV9yZW5kZXJl
ci0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lKTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbQppbmRleCBhZTY1ZTQ5YWFkMDZiYmZhMzFiOGRjOTE4YjA1MDAwZWY0NzBhZjYzLi4z
N2Q2Y2M2MmE5NTYxODQ4MTVkNGJhNmE0OWM5ZTcxNWRiMjlmY2Y4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZv
aWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nLCBSZW4KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEZvbnQoYXR0clN0cmluZywg
c3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgpLCByYW5nZSk7CiAK
ICAgICBhdXRvIGRlY29yID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBp
ZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKQorICAgIGlmIChkZWNvciAmIFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKQogICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dE51bWJlcihhdHRyU3RyaW5nLCBVSUFjY2Vzc2liaWxpdHlUb2tlblVuZGVybGluZSwgQFlFUywg
cmFuZ2UpOwogCiAgICAgLy8gQWRkIGNvZGUgY29udGV4dCBpZiB0aGlzIG5vZGUgaXMgd2l0aGlu
IGEgPGNvZGU+IGJsb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpp
bmRleCAxMThhZTZkNjBhZGZlZWRhMmQxMDdjN2E4Mjk4ZjE1NDU4OGRiNDVlLi5kMDZkN2QzZTAx
ZWEzNzQxMTZlZjhmZjc3ZjM2ZTBlODRmOWY1MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQpAQCAtODY4LDM0ICs4NjgsMzQgQEAgc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5n
LCBSZW4KICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5U2hhZG93VGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwogICAgIGVsc2UK
ICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNoYWRv
d1RleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotICAgIAorCiAgICAgLy8gc2V0IHVuZGVybGlu
ZSBhbmQgc3RyaWtldGhyb3VnaAogICAgIGF1dG8gZGVjb3IgPSBzdHlsZS50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpOwotICAgIGlmICghKGRlY29yICYgVGV4dERlY29yYXRpb246OlVuZGVybGlu
ZSkpIHsKKyAgICBpZiAoIShkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkg
ewogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5VW5k
ZXJsaW5lVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAgICAgIFthdHRyU3RyaW5nIHJl
bW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUg
cmFuZ2U6cmFuZ2VdOwogICAgIH0KLSAgICAKLSAgICBpZiAoIShkZWNvciAmIFRleHREZWNvcmF0
aW9uOjpMaW5lVGhyb3VnaCkpIHsKKworICAgIGlmICghKGRlY29yICYgVGV4dERlY29yYXRpb25M
aW5lOjpMaW5lVGhyb3VnaCkpIHsKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRl
Ok5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsK
ICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVN0cmlr
ZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogICAgIH0KIAotICAgIGlm
IChkZWNvciAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUgfHwgZGVjb3IgJiBUZXh0RGVjb3Jh
dGlvbjo6TGluZVRocm91Z2gpIHsKKyAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6
OlVuZGVybGluZSB8fCBkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsK
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgdW5kZXJsaW5lIHN0eWxlIGJlIHJlcG9ydGVk
IGhlcmU/CiAgICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxlcyA9IFRleHREZWNvcmF0aW9uUGFp
bnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoKnJlbmRlcmVyLCBkZWNvcik7CiAKLSAgICAgICAgaWYg
KGRlY29yICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkgeworICAgICAgICBpZiAoZGVjb3Ig
JiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkgewogICAgICAgICAgICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4
dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRy
aWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmVDb2xvcikuZ2V0KCks
IHJhbmdlKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGRlY29yICYgVGV4dERl
Y29yYXRpb246OkxpbmVUaHJvdWdoKSB7CisKKyAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29y
YXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRy
aWJ1dGUsIEBZRVMsIHJhbmdlKTsKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29s
b3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJp
YnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IpLmdldCgp
LCByYW5nZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICAvLyBJbmRpY2F0ZSBiYWNr
Z3JvdW5kIGhpZ2hsaWdodGluZy4KICAgICBmb3IgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9k
ZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChub2Rl
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bWFya1RhZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAwOGFlNTk3Y2U0YjU4MmU4
ODcwNmVhYjk4M2YyMmRjMjhiNWM2OWE1Li5kNzJiZTc0YWJlOWE5MDExOGRiM2RhYWEwODMyOTgx
ODYyYTdhMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAKQEAgLTI2MDQsNyArMjYwNCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9u
V3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgbmV3
IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPFJ1YnlQb3NpdGlvbj4oQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb24sICZSZW5kZXJTdHlsZTo6cnVieVBvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OnNl
dFJ1YnlQb3NpdGlvbiksCiAgICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxUYWJs
ZUxheW91dFR5cGU+KENTU1Byb3BlcnR5VGFibGVMYXlvdXQsICZSZW5kZXJTdHlsZTo6dGFibGVM
YXlvdXQsICZSZW5kZXJTdHlsZTo6c2V0VGFibGVMYXlvdXQpLAogICAgICAgICBuZXcgRGlzY3Jl
dGVQcm9wZXJ0eVdyYXBwZXI8VGV4dEFsaWduTW9kZT4oQ1NTUHJvcGVydHlUZXh0QWxpZ24sICZS
ZW5kZXJTdHlsZTo6dGV4dEFsaWduLCAmUmVuZGVyU3R5bGU6OnNldFRleHRBbGlnbiksCi0gICAg
ICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+
PihDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZSwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3Jh
dGlvbiwgJlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvbiksCisgICAgICAgIG5ldyBEaXNj
cmV0ZVByb3BlcnR5V3JhcHBlcjxPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPj4oQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbkxpbmUsICZSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24sICZS
ZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb24pLAogICAgICAgICBuZXcgRGlzY3JldGVQcm9w
ZXJ0eVdyYXBwZXI8VGV4dERlY29yYXRpb25TdHlsZT4oQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
blN0eWxlLCAmUmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uU3R5bGUsICZSZW5kZXJTdHlsZTo6
c2V0VGV4dERlY29yYXRpb25TdHlsZSksCiAgICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3Jh
cHBlcjxjb25zdCBDb2xvciY+KENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsICZS
ZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhh
c2lzQ29sb3IpLAogICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8T3B0aW9uU2V0
PFRleHRFbXBoYXNpc1Bvc2l0aW9uPj4oQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3Np
dGlvbiwgJlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjpz
ZXRUZXh0RW1waGFzaXNQb3NpdGlvbiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDJmMmUwODliYWIxNDY1NzQ2Y2Y3MzNm
NjZkOTFiNTUxMGFiNmQxZmMuLjAwNjRhZGM1MGMwN2RmMGI4Y2YxZTdjODNlNTI1YWU0MjhhNjFl
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC0xNTk1LDE2ICsxNTk1LDE2IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHRv
dWNoQWN0aW9uRmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxUb3VjaEFjdGlvbj4gdG91Y2hBY3Rp
CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHRE
ZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERl
Y29yYXRpb24pCitzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkxpbmVG
bGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRp
b25MaW5lKQogewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCk7CiAgICAgLy8gQmxpbmsgdmFsdWUgaXMgaWdub3JlZC4KICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgaWYgKHRleHREZWNvcmF0
aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICBpZiAodGV4dERlY29yYXRpb25M
aW5lICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCiAgICAgICAgIGxpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKSk7
Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKQorICAg
IGlmICh0ZXh0RGVjb3JhdGlvbkxpbmUgJiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKQog
ICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU92ZXJsaW5lKSk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRp
b246OkxpbmVUaHJvdWdoKQorICAgIGlmICh0ZXh0RGVjb3JhdGlvbkxpbmUgJiBUZXh0RGVjb3Jh
dGlvbkxpbmU6OkxpbmVUaHJvdWdoKQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29s
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVUaHJvdWdoKSk7CiAKICAgICBpZiAo
IWxpc3QtPmxlbmd0aCgpKQpAQCAtMzI1NCw3ICszMjU0LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5k
ZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEFsaWduKCkpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gcmVu
ZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb24oKSk7
CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25MaW5lRmxhZ3NUb0NTU1Zh
bHVlKHN0eWxlLnRleHREZWNvcmF0aW9uKCkpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0QWxpZ25MYXN0OgogICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0QWxpZ25MYXN0KCkpOwpAQCAt
MzI2NCw3ICszMjY0LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGdldENT
U1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyh3ZWJraXRUZXh0RGVjb3JhdGlv
blNob3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGlu
ZToKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1
ZShzdHlsZS50ZXh0RGVjb3JhdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0
RGVjb3JhdGlvbkxpbmVGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb24oKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgogICAgICAgICAgICAg
cmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4
dERlY29yYXRpb25TdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uQ29sb3I6CkBAIC0zMjgwLDcgKzMyODAsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25UaGlja25lc3M6CiAgICAgICAg
ICAgICByZXR1cm4gdGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKHN0eWxlLnRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29y
YXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25MaW5lRmxhZ3NUb0NTU1ZhbHVl
KHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JP
clZhbGlkQ29sb3IoJnN0eWxlLCBzdHlsZS50ZXh0RmlsbENvbG9yKCkpOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCBmNjRiYjE2NGI5NjNlYzE4Mjhk
MDRlOTc2MjljNTNlMjRjMDdjMDk5Li42ZWQ2MDkxYmUxYmM0OGE2OWJlYjQ1NjJjN2EwNmI1ZTMw
OTQ0ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgKQEAgLTI0MTIsMjcgKzI0MTIsMjcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRKdXN0aWZ5KCkgY29uc3QKIH0KICNlbmRpZiAvLyBDU1Mz
X1RFWFQKIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+KCkgY29u
c3QKIHsKICAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZh
bHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4geyB9OworICAgICAgICByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uTGluZT4geyB9OwogICAgIGNhc2UgQ1NTVmFsdWVVbmRlcmxpbmU6Ci0gICAgICAgIHJl
dHVybiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lOworICAgICAgICByZXR1cm4gVGV4dERlY29y
YXRpb25MaW5lOjpVbmRlcmxpbmU7CiAgICAgY2FzZSBDU1NWYWx1ZU92ZXJsaW5lOgotICAgICAg
ICByZXR1cm4gVGV4dERlY29yYXRpb246Ok92ZXJsaW5lOworICAgICAgICByZXR1cm4gVGV4dERl
Y29yYXRpb25MaW5lOjpPdmVybGluZTsKICAgICBjYXNlIENTU1ZhbHVlTGluZVRocm91Z2g6Ci0g
ICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2g7CisgICAgICAgIHJldHVy
biBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoOwogICAgIGNhc2UgQ1NTVmFsdWVCbGlu
azoKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uOjpCbGluazsKKyAgICAgICAgcmV0dXJu
IFRleHREZWNvcmF0aW9uTGluZTo6Qmxpbms7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4geyB9OworICAgIHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b25MaW5lPiB7IH07CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBUZXh0RGVjb3JhdGlvblN0eWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCBjNjcxMDIyN2RkZDE0ZjUwNmQ4ZjUyMGMwZTg5NmNjOWNkNGU2OWRiLi45ZmJl
MWI2MGMzZDYwNDY0MjcxZmQ2NzRmZjM1MDUyZWVjNGI4Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCkBAIC00MDk3LDkgKzQwOTcsOSBAQCBGb250QXR0cmlidXRlcyBFZGl0b3I6OmZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpCiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KTsKLSAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gp
CisgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3Vn
aCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFzU3RyaWtlVGhyb3VnaCA9IHRydWU7Ci0gICAg
ICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICAgICAg
aWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkKICAgICAgICAg
ICAgIGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkOTQ0ZDk4NGRjM2Y4
ZTE5MzlmMWZjNzQzZjhhOTQwYTE3N2ExZTJlLi4wMTc5Y2FjNTlhZWJkNTFhZjFmNTUyNDhmYTA0
NWUwMjIxNmU2NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCkBAIC0yMzgwLDkgKzIzODAsOSBAQCBBdHRyaWJ1dGVkU3RyaW5nIGVkaXRpbmdB
dHRyaWJ1dGVkU3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgSW5jbHVkZUltYWdlcwog
ICAgICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1
dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS50ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICAgICAg
aWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6
OlVuZGVybGluZSkKICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZvcktleTpOU1VuZGVybGluZVN0
eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCgpICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQorICAgICAgICBpZiAoc3R5bGUu
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91
Z2gpCiAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50
ZWdlcjpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVB
dHRyaWJ1dGVOYW1lXTsKICAgICAgICAgaWYgKGF1dG8gZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRl
KCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSkKICAgICAgICAgICAgIFthdHRycyBzZXRPYmpl
Y3Q6dG9OU0ZvbnQoZm9udCkgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCmluZGV4IDA0N2YwMmExNzlm
YTU2MTNiZDgzYTZmNTc5NzliZjZiMTQwNDI2ZTEuLmRiMmMzNjNjZmUxNTczNjZmN2ZiZTJhYTdh
MjY2ZGUyZmI5ZjhlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHls
ZWRNYXJrZWRUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFy
a2VkVGV4dC5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBzdGF0aWMgU3R5bGVkTWFya2VkVGV4dCBy
ZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFRleHQsCiAg
ICAgICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3Jh
dGlvblN0eWxlKCk7CiAgICAgICAgICAgICBhdXRvIGRlY29yYXRpb25zID0gcmVuZGVyU3R5bGUt
PnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CiAKLSAgICAgICAgICAgIGlmIChkZWNvcmF0aW9u
cy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgeworICAgICAgICAgICAgaWYg
KGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewog
ICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNvbG9y
ID0gY29sb3I7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5k
ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSkgewor
ICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6
T3ZlcmxpbmUpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMu
b3ZlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0
aW9uU3R5bGVzLm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Okxp
bmVUaHJvdWdoKSkgeworICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4
dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAg
ICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUgPSBkZWNvcmF0
aW9uU3R5bGU7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCmluZGV4IGVhMDkwMDZmZWQyNjg4MjU3ZTgwMmE3
ZTllYzczODA0YmU1MGUxMTQuLjA4NDI5NDQ0YmFjNjU3YjVmM2UwNjg2ZmNmMmRhMTk2MWE1NTQy
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OlN0eWxlczo6b3BlcmF0b3I9PShjb25zdCBTdHlsZXMmIG90aGVyKSBjb25zdAogICAgICAgICAm
JiB1bmRlcmxpbmVTdHlsZSA9PSBvdGhlci51bmRlcmxpbmVTdHlsZSAmJiBvdmVybGluZVN0eWxl
ID09IG90aGVyLm92ZXJsaW5lU3R5bGUgJiYgbGluZXRocm91Z2hTdHlsZSA9PSBvdGhlci5saW5l
dGhyb3VnaFN0eWxlOwogfQogCi1UZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9u
UGFpbnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bj4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29sIGlzRmlyc3RM
aW5lLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgc3RkOjpvcHRpb25hbDxTdHlsZXM+IHN0eWxl
cykKK1RleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlv
bnMsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgc3RkOjpvcHRpb25hbDxTdHlsZXM+IHN0eWxlcykKICAgICA6IG1f
Y29udGV4dCB7IGNvbnRleHQgfQogICAgICwgbV9kZWNvcmF0aW9ucyB7IGRlY29yYXRpb25zIH0K
ICAgICAsIG1fd2F2eU9mZnNldCB7IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpIH0KQEAgLTIx
NSwxNCArMjE1LDE0IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNv
cmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgZmxvYXQgdGV4dERl
Y29yYXRpb25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygp
LnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyk7CiAg
ICAgRmxvYXRQb2ludCBsb2NhbE9yaWdpbiA9IGJveE9yaWdpbjsKIAotICAgIGF1dG8gcGFpbnRE
ZWNvcmF0aW9uID0gWyZdIChUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlv
blN0eWxlIHN0eWxlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkg
eworICAgIGF1dG8gcGFpbnREZWNvcmF0aW9uID0gWyZdIChUZXh0RGVjb3JhdGlvbkxpbmUgZGVj
b3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpIHsKICAgICAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9y
KGNvbG9yKTsKIAogICAgICAgICBhdXRvIHN0cm9rZVN0eWxlID0gdGV4dERlY29yYXRpb25TdHls
ZVRvU3Ryb2tlU3R5bGUoc3R5bGUpOwogCiAgICAgICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3Jh
dGlvblN0eWxlOjpXYXZ5KQogICAgICAgICAgICAgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKG1f
Y29udGV4dCwgcmVjdCwgbV9saW5lU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOwotICAg
ICAgICBlbHNlIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUgfHwg
ZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpIHsKKyAgICAgICAgZWxzZSBp
ZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSB8fCBkZWNvcmF0
aW9uID09IFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHsKICAgICAgICAgICAgIGlmICgo
bV9saW5lU3R5bGUudGV4dERlY29yYXRpb25Ta2lwSW5rKCkgPT0gVGV4dERlY29yYXRpb25Ta2lw
SW5rOjpBdXRvIHx8IG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcEluaygpID09IFRleHRE
ZWNvcmF0aW9uU2tpcEluazo6QWxsKSAmJiBtX2lzSG9yaXpvbnRhbCkgewogICAgICAgICAgICAg
ICAgIGlmICghbV9jb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkgewogICAgICAgICAgICAgICAg
ICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lQm91bmRpbmdCb3ggPSBtX2NvbnRleHQuY29tcHV0ZVVu
ZGVybGluZUJvdW5kc0ZvclRleHQocmVjdCwgbV9pc1ByaW50aW5nKTsKQEAgLTIzNywxNCArMjM3
LDE0IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgICAgICAgICAgbV9jb250ZXh0
LmRyYXdMaW5lRm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0
aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb246
OkxpbmVUaHJvdWdoKTsKKyAgICAgICAgICAgIEFTU0VSVChkZWNvcmF0aW9uID09IFRleHREZWNv
cmF0aW9uTGluZTo6TGluZVRocm91Z2gpOwogICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdMaW5l
Rm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6
OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICB9CiAgICAgfTsKIAotICAgIGJvb2wgYXJl
TGluZXNPcGFxdWUgPSAhbV9pc1ByaW50aW5nICYmICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRlcmxpbmVDb2xvci5pc09w
YXF1ZSgpKQotICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRp
b246Ok92ZXJsaW5lKSB8fCBtX3N0eWxlcy5vdmVybGluZUNvbG9yLmlzT3BhcXVlKCkpCi0gICAg
ICAgICYmICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91
Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IuaXNPcGFxdWUoKSk7CisgICAgYm9vbCBh
cmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYgKCFtX2RlY29yYXRpb25zLmNvbnRhaW5z
KFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRlcmxpbmVDb2xv
ci5pc09wYXF1ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERl
Y29yYXRpb25MaW5lOjpPdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvci5pc09wYXF1
ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25M
aW5lOjpMaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRocm91Z2hDb2xvci5pc09wYXF1ZSgp
KTsKIAogICAgIGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFy
ZUxpbmVzT3BhcXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93LT5uZXh0KCk7CkBAIC0yODUsMjgg
KzI4NSwyOCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlv
bihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAogICAgICAgICB9CiAKICAgICAgICAg
Ly8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNv
bXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KLSAgICAgICAgaWYgKG1f
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKKyAgICAg
ICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpKSB7CiAgICAgICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2
OwogICAgICAgICAgICAgYXV0byBkZWZhdWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250
U2l6ZSgpIC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7CiAgICAgICAgICAgICBmbG9hdCBv
ZmZzZXQgPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQ
b3NpdGlvbigpLCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxl
LmZvbnRNZXRyaWNzKCksIG1fdGV4dEJveCwgZGVmYXVsdEdhcCk7CiAgICAgICAgICAgICBmbG9h
dCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVj
dChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KSk7CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7Ci0gICAg
ICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgbV9zdHls
ZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKKyAgICAg
ICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbV9z
dHlsZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKICAg
ICAgICAgfQotICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlv
bjo6T3ZlcmxpbmUpKSB7CisgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0
ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8g
bV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2lu
LCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKICAgICAgICAg
ICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250
U2l6ZSgpLCBmb250TWV0cmljcyk7CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29yYXRpb25UaGlja25lc3MgLSB3YXZ5T2Zmc2V0
KTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUs
IG1fc3R5bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHJlY3QpOwor
ICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUs
IG1fc3R5bGVzLm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHJlY3QpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uOjpMaW5lVGhyb3VnaCkpIHsKKyAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVj
dCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlj
a25lc3MpKTsKICAgICAgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9
IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV9saW5l
U3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyk7CiAgICAgICAgICAgICBhdXRv
IGNlbnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyAvIDI7CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgY2VudGVyIC0g
dGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyKTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gsIG1fc3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUs
IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHJlY3QpOworICAgICAgICAgICAgcGFpbnREZWNv
cmF0aW9uKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gsIG1fc3R5bGVzLmxpbmV0aHJv
dWdoU3R5bGUsIG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHJlY3QpOwogICAgICAgICB9CiAg
ICAgfSB3aGlsZSAoc2hhZG93KTsKIApAQCAtMzE2LDI0ICszMTYsMjQgQEAgdm9pZCBUZXh0RGVj
b3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1
biwgY29uc3QgRmwKICAgICAgICAgbV9jb250ZXh0LmNsZWFyU2hhZG93KCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0
eWxlcyYgcmVzdWx0LCBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4
dERlY29yYXRpb24+IHJlbWFpbmluZ0RlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlLCBQ
c2V1ZG9JZCBwc2V1ZG9JZCkKK3N0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihU
ZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiByZW1haW5pbmdEZWNvcmF0
aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgYXV0
byBleHRyYWN0RGVjb3JhdGlvbnMgPSBbJl0gKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucykgeworICAgIGF1dG8gZXh0cmFjdERl
Y29yYXRpb25zID0gWyZdIChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb25zKSB7CiAgICAgICAgIGF1dG8gY29sb3IgPSBUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OmRlY29yYXRpb25Db2xvcihzdHlsZSk7CiAgICAgICAgIGF1dG8g
ZGVjb3JhdGlvblN0eWxlID0gc3R5bGUudGV4dERlY29yYXRpb25TdHlsZSgpOwogCi0gICAgICAg
IGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgewot
ICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUpOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRp
b25MaW5lOjpVbmRlcmxpbmUpKSB7CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5y
ZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwogICAgICAgICAgICAgcmVzdWx0
LnVuZGVybGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lU3R5
bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRlY29yYXRpb25z
LmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKLSAgICAgICAgICAgIHJlbWFp
bmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpOworICAgICAg
ICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkp
IHsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlv
bkxpbmU6Ok92ZXJsaW5lKTsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZUNvbG9yID0gY29s
b3I7CiAgICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRp
b246OkxpbmVUaHJvdWdoKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVt
b3ZlKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9u
cy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkgeworICAgICAgICAg
ICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRo
cm91Z2gpOwogICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoQ29sb3IgPSBjb2xvcjsKICAg
ICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaFN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAg
ICAgICB9CkBAIC0zNzYsMTkgKzM3NiwxOSBAQCBDb2xvciBUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OmRlY29yYXRpb25Db2xvcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIHN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uQ29sb3IpOwogfQogCi1PcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgc3R5bGUpCitPcHRpb25TZXQ8VGV4dERlY29yYXRp
b25MaW5lPiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHREZWNvcmF0aW9uc0luRWZmZWN0Rm9y
U3R5bGUoY29uc3QgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMmIHN0eWxlKQogewotICAg
IE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbnM7CisgICAgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnM7CiAgICAgaWYgKHN0eWxlLnVuZGVybGluZUNv
bG9yLmlzVmFsaWQoKSkKLSAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUpOworICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5lOjpV
bmRlcmxpbmUpOwogICAgIGlmIChzdHlsZS5vdmVybGluZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAg
ICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSk7CisgICAgICAgIGRl
Y29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKTsKICAgICBpZiAoc3R5
bGUubGluZXRocm91Z2hDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGRlY29yYXRpb25zLmFkZChU
ZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpOworICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4
dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCk7CiAgICAgcmV0dXJuIGRlY29yYXRpb25zOwog
fTsKIAotYXV0byBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gcmVxdWVz
dGVkRGVjb3JhdGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lkKSAt
PiBTdHlsZXMKK2F1dG8gVGV4dERlY29yYXRpb25QYWludGVyOjpzdHlsZXNGb3JSZW5kZXJlcihj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5l
PiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNldWRvSWQgcHNl
dWRvSWQpIC0+IFN0eWxlcwogewogICAgIFN0eWxlcyByZXN1bHQ7CiAgICAgY29sbGVjdFN0eWxl
c0ZvclJlbmRlcmVyKHJlc3VsdCwgcmVuZGVyZXIsIHJlcXVlc3RlZERlY29yYXRpb25zLCBmYWxz
ZSwgcHNldWRvSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5oCmluZGV4IGVhYWQ0MDgzNTEwZjgzZDhjNGQ0YjJhOWQyMjdjNTI5NWE3ZGYx
NDMuLmU3NDFhNTk5NzdiZmIzYTkyZjQzNzRiOTE5ODVlMTMxNmI4MWNhNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRleHREZWNvcmF0aW9uUGFpbnRlciB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IFN0eWxlczsKLSAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3Jh
cGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucywgY29u
c3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgc3Rk
OjpvcHRpb25hbDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBUZXh0RGVjb3JhdGlvblBh
aW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVj
b3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250
Q2FzY2FkZSYsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAg
ICAgdm9pZCBzZXRUZXh0Qm94KElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgdGV4dEJv
eCkgeyBtX3RleHRCb3ggPSB0ZXh0Qm94OyB9CiAgICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9v
bCBpc0hvcml6b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hvcml6b250YWw7IH0KQEAgLTY2
LDEyICs2NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgbGluZXRo
cm91Z2hTdHlsZTsKICAgICB9OwogICAgIHN0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoY29u
c3QgUmVuZGVyU3R5bGUmKTsKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKGNvbnN0IFN0eWxlcyYpOwotICAgIHN0YXRp
YyBTdHlsZXMgc3R5bGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHls
ZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKKyAgICBzdGF0aWMgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShj
b25zdCBTdHlsZXMmKTsKKyAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHJlcXVlc3RlZERl
Y29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gUHNldWRv
SWQ6Ok5vbmUpOwogCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0Owot
ICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gbV9kZWNvcmF0aW9uczsKKyAgICBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiBtX2RlY29yYXRpb25zOwogICAgIGZsb2F0IG1fd2F2eU9m
ZnNldDsKICAgICBmbG9hdCBtX3dpZHRoIHsgMCB9OwogICAgIEZsb2F0UG9pbnQgbV9ib3hPcmln
aW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApp
bmRleCA2MDZjOTliODNkZmI3MWIyNjgyZTkxNDEyNzQ1YTZkMGMzZjZiMTI0Li4xMzVlMmUxMTI4
NGU2NTNmMDM1YzBkYmYwNjFlMjdmNjI1MTBjZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTExNjQsNyArMTE2NCw3IEBAIGJvb2wg
UmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVyT3JPdXRsaW5l
KGNvbnN0IFJlbmRlclN0eWxlCiB7CiAgICAgaWYgKG1faW5oZXJpdGVkRGF0YS0+Y29sb3IgIT0g
b3RoZXIubV9pbmhlcml0ZWREYXRhLT5jb2xvcgogICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdz
LnRleHREZWNvcmF0aW9ucyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9u
cwotICAgICAgICB8fCBtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLm1fdmlz
dWFsRGF0YS0+dGV4dERlY29yYXRpb24KKyAgICAgICAgfHwgbV92aXN1YWxEYXRhLT50ZXh0RGVj
b3JhdGlvbkxpbmUgIT0gb3RoZXIubV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbkxpbmUKICAg
ICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSAhPSBv
dGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlCiAgICAgICAg
IHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXIu
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Db2xvcgogICAgICAgICB8fCBt
X3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNraXBJbmsgIT0gb3RoZXIubV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwSW5rCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDIwNTIwNDI0ZGYyMzQzNDMyMGI3MzNm
NDI0MGQ5YThkMTA0NjkyZmIuLjVlNWYxNzY4MTA5ZDI5ZTM2NDdhMzAyNmU1OGM4ODM1M2FjMmQ0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBA
IC0zNzIsOCArMzcyLDggQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgdGV4dEluZGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmluZGVudDsgfQogICAgIFRleHRB
bGlnbk1vZGUgdGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEFsaWdu
TW9kZT4obV9pbmhlcml0ZWRGbGFncy50ZXh0QWxpZ24pOyB9CiAgICAgVGV4dFRyYW5zZm9ybSB0
ZXh0VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFRyYW5zZm9ybT4o
bV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtKTsgfQotICAgIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4gdGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3KG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRp
b25zKTsgfQotICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24oKSBj
b25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3KG1fdmlzdWFs
RGF0YS0+dGV4dERlY29yYXRpb24pOyB9CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGlu
ZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4
dERlY29yYXRpb25MaW5lPjo6ZnJvbVJhdyhtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9u
cyk7IH0KKyAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+Ojpmcm9tUmF3KG1f
dmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb25MaW5lKTsgfQogICAgIFRleHREZWNvcmF0aW9uU3R5
bGUgdGV4dERlY29yYXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRE
ZWNvcmF0aW9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5
bGUpOyB9CiAgICAgVGV4dERlY29yYXRpb25Ta2lwSW5rIHRleHREZWNvcmF0aW9uU2tpcEluaygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU2tpcEluaz4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwSW5rKTsgfQogICAgIFRleHRVbmRlcmxp
bmVQb3NpdGlvbiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRl
cmxpbmVQb3NpdGlvbik7IH0KQEAgLTk4NSw5ICs5ODUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUZXh0SW5kZW50KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERh
dGEsIGluZGVudCwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0VGV4dEFsaWduKFRl
eHRBbGlnbk1vZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShUZXh0VHJhbnNmb3Jt
IHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYpOyB9Ci0gICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyB8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odi50b1JhdygpKTsgfQotICAgIHZvaWQgc2V0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB2KSB7IG1faW5oZXJp
dGVkRmxhZ3MudGV4dERlY29yYXRpb25zID0gdi50b1JhdygpOyB9Ci0gICAgdm9pZCBzZXRUZXh0
RGVjb3JhdGlvbihPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHYpIHsgU0VUX1ZBUihtX3Zpc3Vh
bERhdGEsIHRleHREZWNvcmF0aW9uLCB2LnRvUmF3KCkpOyB9CisgICAgdm9pZCBhZGRUb1RleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHYpIHsgbV9p
bmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYu
dG9SYXcoKSk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbkxpbmU+IHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlv
bnMgPSB2LnRvUmF3KCk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbkxpbmU+IHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHREZWNvcmF0
aW9uTGluZSwgdi50b1JhdygpKTsgfQogICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShU
ZXh0RGVjb3JhdGlvblN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0
ZXh0RGVjb3JhdGlvblN0eWxlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAgICAgdm9p
ZCBzZXRUZXh0RGVjb3JhdGlvblNraXBJbmsoVGV4dERlY29yYXRpb25Ta2lwSW5rIHNraXBJbmsp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblNraXBJbmssIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihza2lwSW5rKSk7IH0KICAgICB2b2lkIHNldFRleHRVbmRlcmxp
bmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihwb3NpdGlvbikpOyB9CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJuaW5nIC0xMDAlIHBlcmNlbnQgaGVyZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90
IHNldC4KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVu
Z3RoKC0xMDAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpOyB9CiAgICAgc3RhdGljIFRleHRBbGln
bk1vZGUgaW5pdGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OyB9
Ci0gICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gaW5pdGlhbFRleHREZWNvcmF0
aW9uKCkgeyByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB7IH07IH0KKyAgICBzdGF0
aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkg
eyByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4geyB9OyB9CiAgICAgc3RhdGlj
IFRleHREZWNvcmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSB7IHJldHVy
biBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlv
blNraXBJbmsgaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcEluaygpIHsgcmV0dXJuIFRleHREZWNv
cmF0aW9uU2tpcEluazo6QXV0bzsgfQogICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24g
aW5pdGlhbFRleHRVbmRlcmxpbmVQb3NpdGlvbigpIHsgcmV0dXJuIFRleHRVbmRlcmxpbmVQb3Np
dGlvbjo6QXV0bzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKaW5kZXggZWUzOGRkYTYwODgxZjhhN2Q0NzQ4NDQw
Mjk3NDY2MmFkOTQ3YjE0YS4uYTI5NGMxODUyYmY2OWFjNmVmODFjZWFlMWUwNzk1NTkzYzE3ZGU4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuY3BwCkBAIC0xMDU1LDE0ICsxMDU1LDE0IEBAIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFRleHRDb21iaW5lIHRleHRDb21iaW5lKQogICAgIHJl
dHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4
dERlY29yYXRpb24gdGV4dERlY29yYXRpb24pCi17Ci0gICAgc3dpdGNoICh0ZXh0RGVjb3JhdGlv
bikgewotICAgIGNhc2UgVGV4dERlY29yYXRpb246Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7
Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lOiB0cyA8PCAidW5kZXJsaW5lIjsg
YnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmU6IHRzIDw8ICJvdmVybGlu
ZSI7IGJyZWFrOwotICAgIGNhc2UgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoOiB0cyA8PCAi
bGluZS10aHJvdWdoIjsgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6Qmxpbms6IHRz
IDw8ICJibGluayI7IGJyZWFrOworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgVGV4dERlY29yYXRpb25MaW5lIGxpbmUpCit7CisgICAgc3dpdGNoIChsaW5lKSB7CisgICAg
Y2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7CisgICAg
Y2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZTogdHMgPDwgInVuZGVybGluZSI7IGJy
ZWFrOworICAgIGNhc2UgVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZTogdHMgPDwgIm92ZXJs
aW5lIjsgYnJlYWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoOiB0
cyA8PCAibGluZS10aHJvdWdoIjsgYnJlYWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6
OkJsaW5rOiB0cyA8PCAiYmxpbmsiOyBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuaAppbmRleCA1ZDZlNzBjYTJhZGE0MjMyZWMyODhhYjczZTYzNzM1MWIwNzkwMTdkLi5h
Y2IxOGQ4Yzk2YzE0ZDMwOTI1NDkxZGNhNjE2ZWU2MGQ4YjQwZThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAt
NzQ1LDcgKzc0NSw3IEBAIGVudW0gY2xhc3MgVGV4dFRyYW5zZm9ybSA6IHVpbnQ4X3QgewogfTsK
IAogc3RhdGljIGNvbnN0IHNpemVfdCBUZXh0RGVjb3JhdGlvbkJpdHMgPSA0OwotZW51bSBjbGFz
cyBUZXh0RGVjb3JhdGlvbiA6IHVpbnQ4X3QgeworZW51bSBjbGFzcyBUZXh0RGVjb3JhdGlvbkxp
bmUgOiB1aW50OF90IHsKICAgICBOb25lICAgICAgICAgID0gMCwKICAgICBVbmRlcmxpbmUgICAg
ID0gMSA8PCAwLAogICAgIE92ZXJsaW5lICAgICAgPSAxIDw8IDEsCkBAIC0xMzM5LDcgKzEzMzks
NyBAQCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3R5bGVE
aWZmZXJlbmNlKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBUYWJsZUxheW91dFR5cGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIFRleHRBbGlnbk1vZGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFRleHRDb21iaW5lKTsKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBUZXh0RGVjb3JhdGlvbik7CitXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dERlY29yYXRpb25MaW5lKTsKIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUZXh0RGVjb3JhdGlvblNraXBJ
bmspOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRE
ZWNvcmF0aW9uU3R5bGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFRleHRFbXBoYXNpc0ZpbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNwcAppbmRleCAxMGE0NDdiZDBhZTI0N2U1ZWE2NzVh
NGI3YTQ3YTE2ZTFkYTI4MDU2Li42YmQ1ZTRjNGI5YzZmOTc4N2Y4MGQ2MGUzZDQ0ZTEwZjI1NzUx
MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmNwcApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxl
VmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKCkKICAgICA6IGhhc0NsaXAoZmFsc2UpCi0gICAg
LCB0ZXh0RGVjb3JhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCkudG9S
YXcoKSkKKyAgICAsIHRleHREZWNvcmF0aW9uTGluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRE
ZWNvcmF0aW9uKCkudG9SYXcoKSkKICAgICAsIHpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29t
KCkpCiB7CiB9CkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxl
VmlzdWFsRGF0YShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRl
ZDxTdHlsZVZpc3VhbERhdGE+KCkKICAgICAsIGNsaXAob3RoZXIuY2xpcCkKICAgICAsIGhhc0Ns
aXAob3RoZXIuaGFzQ2xpcCkKLSAgICAsIHRleHREZWNvcmF0aW9uKG90aGVyLnRleHREZWNvcmF0
aW9uKQorICAgICwgdGV4dERlY29yYXRpb25MaW5lKG90aGVyLnRleHREZWNvcmF0aW9uTGluZSkK
ICAgICAsIHpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKaW5kZXggZDQxOGFj
YjUwYTI0ZjhhM2IyMThkZGUxOGMzM2UxYWE4OGE4Y2IzYi4uZDVkYTc4OTQyMzMyM2Q4Mjg0MDMx
NjZmNTFkZDQ0NjUyMzZlY2QzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVZpc3VhbERhdGEuaApAQCAtNDEsMTQgKzQxLDE0IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBjbGlwID09IG90aGVyLmNsaXAKICAgICAgICAgICAgICYmIGhhc0Ns
aXAgPT0gb3RoZXIuaGFzQ2xpcAotICAgICAgICAgICAgJiYgdGV4dERlY29yYXRpb24gPT0gb3Ro
ZXIudGV4dERlY29yYXRpb24KKyAgICAgICAgICAgICYmIHRleHREZWNvcmF0aW9uTGluZSA9PSBv
dGhlci50ZXh0RGVjb3JhdGlvbkxpbmUKICAgICAgICAgICAgICYmIHpvb20gPT0gb3RoZXIuem9v
bTsKICAgICB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBMZW5ndGhCb3gg
Y2xpcDsKICAgICBib29sIGhhc0NsaXAgOiAxOwotICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9u
IDogVGV4dERlY29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29yYXRpb25zIGRlZmluZWQgKm9ubHkq
IGJ5IHRoaXMgZWxlbWVudC4KKyAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbkxpbmUgOiBUZXh0
RGVjb3JhdGlvbkJpdHM7IC8vIFRleHQgZGVjb3JhdGlvbnMgZGVmaW5lZCAqb25seSogYnkgdGhp
cyBlbGVtZW50LgogICAgIGZsb2F0IHpvb207CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBjMjAyYjI1NDQ2
ZmUwZWNiYjM1YzQ3MmI0ZDI5YmJmOGMyM2YzYzI4Li41NWU1Y2NiMTk4ZTZkMDQ0ZDZiMTJlZTky
MzYyMTFhZWIxMzkxYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTI5NSwxMCArMjk1LDEwIEBAIHZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNlCiAKICAgICAgICAgLy8gU3BlYzogQWxsIHRleHQgZGVjb3JhdGlvbnMgZXhjZXB0
IGxpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYmVmb3JlIHRoZSB0ZXh0IGlzIGZpbGxlZCBh
bmQgc3Ryb2tlZDsgdGh1cywgdGhlIHRleHQgaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZXNlIGRl
Y29yYXRpb25zLgogICAgICAgICBhdXRvIGRlY29yYXRpb25zID0gc3R5bGUudGV4dERlY29yYXRp
b25zSW5FZmZlY3QoKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb246
OlVuZGVybGluZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4
dCgpLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lLCBmcmFnbWVudCk7Ci0gICAgICAgIGlmIChk
ZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkKLSAgICAgICAgICAgIHBhaW50
RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUs
IGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmUpCisgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRl
eHQoKSwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAg
aWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkKKyAgICAgICAg
ICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbkxp
bmU6Ok92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAgYXV0byBwYWludE9yZGVyID0gUmVu
ZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQYWludE9yZGVyKHN0eWxlLnBhaW50T3JkZXIoKSk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWludE9yZGVyLnNpemUoKTsgKytpKSB7
CkBAIC0zMjMsOCArMzIzLDggQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFNwZWM6IExpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgdGhl
IHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0aGUgbGluZS10aHJvdWdoIGlzIHJl
bmRlcmVkIG9uIHRvcCBvZiB0aGUgdGV4dC4KLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4
dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBh
aW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCwgZnJhZ21lbnQp
OworICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJv
dWdoKQorICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRl
eHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gsIGZyYWdtZW50KTsKIAogICAgICAgICBzZXRQ
YWludGluZ1Jlc291cmNlTW9kZSh7IH0pOwogICAgIH0KQEAgLTQzOCwyMiArNDM4LDIyIEBAIGJv
b2wgU1ZHSW5saW5lVGV4dEJveDo6bWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29y
ZGluYXRlcyhjb25zdCBTVkdUZXh0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgZmxvYXQgcG9zaXRpb25PZmZzZXRGb3JEZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbj4gZGVjb3JhdGlvbiwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBmbG9hdCB0
aGlja25lc3MpCitzdGF0aWMgaW5saW5lIGZsb2F0IHBvc2l0aW9uT2Zmc2V0Rm9yRGVjb3JhdGlv
bihPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9uLCBjb25zdCBGb250TWV0
cmljcyYgZm9udE1ldHJpY3MsIGZsb2F0IHRoaWNrbmVzcykKIHsKICAgICAvLyBGSVhNRTogRm9y
IFNWRyBGb250cyB3ZSBuZWVkIHRvIHVzZSB0aGUgYXR0cmlidXRlcyBkZWZpbmVkIGluIHRoZSA8
Zm9udC1mYWNlPiBpZiBzcGVjaWZpZWQuCiAgICAgLy8gQ29tcGF0aWJsZSB3aXRoIEJhdGlrL09w
ZXJhLgotICAgIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCisg
ICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCiAgICAg
ICAgIHJldHVybiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpICsgdGhpY2tuZXNzICogMS41ZjsK
LSAgICBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpCisgICAgaWYg
KGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkKICAgICAgICAgcmV0
dXJuIHRoaWNrbmVzczsKLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbjo6TGlu
ZVRocm91Z2gpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpMaW5l
VGhyb3VnaCkKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgKiA1IC8g
OC4wZjsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwLjBmOwogfQog
Ci1zdGF0aWMgaW5saW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCitzdGF0aWMgaW5saW5lIGZs
b2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4s
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAgIC8vIEZJWE1FOiBGb3IgU1ZHIEZvbnRz
IHdlIG5lZWQgdG8gdXNlIHRoZSBhdHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIDxmb250LWZhY2U+
IGlmIHNwZWNpZmllZC4KICAgICAvLyBDb21wYXRpYmxlIHdpdGggQmF0aWsvT3BlcmEKQEAgLTQ3
Nyw3ICs0NzcsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVu
ZGVyZXJEZWZpbmluaW5nVGV4dERlY29yYXRpb24oTGVnYWN5SQogICAgIHJldHVybiAqcmVuZGVy
ZXI7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9uLCBj
b25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQordm9pZCBTVkdJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb25MaW5lPiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50
KQogewogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFNW
R0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE9wdGlvblNldDxUZXh0RAogICAgIH0KIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8
VGV4dERlY29yYXRpb24+IGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21l
bnQsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpCit2b2lkIFNWR0lu
bGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb24sIGNvbnN0IFNW
R1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9u
UmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKCFtX3BhaW50aW5nUmVzb3VyY2UpOwogICAgIEFTU0VS
VCghcGFpbnRpbmdSZXNvdXJjZU1vZGUoKS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAppbmRleCA1M2VmNDc2NWZlZDYzZjNj
NGEwYjVmZjM4MWE5Mjg2MmNiM2Q1NzFiLi4xMDY5Mjk0YmQ2OGNjZDRiNDE2ZmEzNjU4ZWNkMzM0
ZDIyNWFkOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaApAQCAtODMsOCArODMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgcHJlcGFyZUdy
YXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJiwgZmxvYXQgc2Nh
bGluZ0ZhY3RvciwgY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGlj
c0NvbnRleHRBZnRlclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJik7CiAKLSAgICB2b2lk
IHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKTsKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldp
dGhTdHlsZShHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+LCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRl
cmVyKTsKKyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7CisgICAgdm9p
ZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uTGluZT4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJlbmRlckJveE1vZGVs
T2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRv
d3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBUZXh0UnVuJiwgY29uc3Qg
U1ZHVGV4dEZyYWdtZW50JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9z
aXRpb24pOwogICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0
RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBi
NGM0ZmM0Yjk1MDlmZTc5MjE2YWQzMTczZTFmY2QzNjQ1Zjc3OGI5Li5hMzY3NzhkZTk1ZjcwNjky
Y2ZjMWI4YmQwNDNlODljMzE2ZjM0ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGlu
ZVRleHRCb3hTdHlsZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgaXNBbmNlc3Rv
ckFuZFdpdGhpbkJsb2NrKGNvbnN0IFJlbmRlcklubGluZSYgYW5jZXN0b3IsIGNvbnN0IFJlbmRl
ck8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JU
ZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGlu
ZSwgZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25S
ZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbikKK3N0YXRp
YyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRl
cmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJl
bmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
TGluZT4gdGV4dERlY29yYXRpb24pCiB7CiAgICAgZm9yIChhdXRvIHJ1biA9IGxpbmUtPmZpcnN0
UnVuKCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChydW4t
PnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCkBAIC02Niw3ICs2Niw3IEBAIHN0
YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBtYXhMb2dpY2Fs
Qm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRl
cmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50
KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29y
YXRpb24pCitzdGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5l
KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dp
Y2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlv
blNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uKQogewogICAgIGZvciAoYXV0
byBydW4gPSBsaW5lLT5maXJzdFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkg
ewogICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpA
QCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29y
YXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcgogICAgIH0KIH0KIAotc3Rh
dGljIGNvbnN0IFJlbmRlckVsZW1lbnQqIGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0
aW9uKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+
IHRleHREZWNvcmF0aW9uLCBib29sIGZpcnN0TGluZSkKK3N0YXRpYyBjb25zdCBSZW5kZXJFbGVt
ZW50KiBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihjb25zdCBSZW5kZXJUZXh0
JiByZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb24s
IGJvb2wgZmlyc3RMaW5lKQogewogICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIGN1cnJlbnQgPSBy
ZW5kZXJlci5wYXJlbnQoKTsKICAgICBkbyB7CkBAIC0xMzUsMTYgKzEzNSwxNiBAQCBmbG9hdCBj
b21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3Np
dGlvbiwgVGV4dFVuZGVybAogICAgICAgICBBU1NFUlQodGV4dFJ1bik7CiAgICAgICAgIC8vIFBv
c2l0aW9uIHVuZGVybGluZSByZWxhdGl2ZSB0byB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxvd2Vz
dCBlbGVtZW50J3MgY29udGVudCBib3guCiAgICAgICAgIGF1dG8gbGluZSA9IHRleHRSdW4tPmxp
bmUoKTsKLSAgICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVy
ZXJXaXRoVGV4dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb246
OlVuZGVybGluZSwgbGluZS0+aXNGaXJzdCgpKTsKKyAgICAgICAgYXV0byogZGVjb3JhdGlvblJl
bmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4dFJ1bi0+cmVu
ZGVyZXIoKSwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIGxpbmUtPmlzRmlyc3QoKSk7
CiAgICAgICAgIAogICAgICAgICBmbG9hdCBvZmZzZXQ7CiAgICAgICAgIGlmICh0ZXh0UnVuLT5y
ZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAg
ICAgICBvZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsVG9wKCk7Ci0gICAgICAgICAgICBtaW5Mb2dp
Y2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9mZnNldCwgZGVjb3JhdGlvblJlbmRl
cmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICAgICAgICAgIG1pbkxvZ2ljYWxU
b3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIs
IFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRl
eHRSdW4tPmxvZ2ljYWxUb3AoKSAtIG9mZnNldDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxCb3R0b20oKTsKLSAgICAgICAgICAgIG1heExv
Z2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zmc2V0LCBkZWNvcmF0aW9u
UmVuZGVyZXIsIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOworICAgICAgICAgICAgbWF4TG9n
aWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShsaW5lLCBvZmZzZXQsIGRlY29yYXRpb25S
ZW5kZXJlciwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwogICAgICAgICAgICAgb2Zm
c2V0IC09IHRleHRSdW4tPmxvZ2ljYWxCb3R0b20oKTsKICAgICAgICAgfQogICAgICAgICBhdXRv
IGRlc2lyZWRPZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsSGVpZ2h0KCkgKyBnYXAgKyBzdGQ6Om1h
eChvZmZzZXQsIDAuMGYpICsgdW5kZXJsaW5lT2Zmc2V0Lmxlbmd0aE9yKDApOwpAQCAtMTkwLDcg
KzE5MCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAKICAgICAvLyBUaGVzZSBtZXRyaWNz
IG11c3QgbWF0Y2ggd2hlcmUgdW5kZXJsaW5lcyBnZXQgZHJhd24uCiAgICAgLy8gRklYTUU6IFNo
YXJlIHRoZSBjb2RlIGluIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlv
bigpIHNvIHdlIGNhbiBqdXN0IHF1ZXJ5IGl0IGZvciB0aGUgcGFpbnRlZCBnZW9tZXRyeS4KLSAg
ICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpIHsKKyAgICBpZiAo
ZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSB7CiAgICAgICAgIC8v
IENvbXBlbnNhdGUgZm9yIHRoZSBpbnRlZ3JhbCBjZWlsaW5nIGluIEdyYXBoaWNzQ29udGV4dDo6
Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dCgpCiAgICAgICAgIGlu
dCB1bmRlcmxpbmVPZmZzZXQgPSAxOwogICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VG
b250U2l6ZSA9IDE2OwpAQCAtMjA0LDcgKzIwNCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3Zl
cmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJ
CiAgICAgICAgICAgICBvdmVyZmxvd1Jlc3VsdC5leHRlbmRUb3AoLXVuZGVybGluZU9mZnNldCk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6
T3ZlcmxpbmUpIHsKKyAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZTo6T3Zl
cmxpbmUpIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUo
MSwgc3Ryb2tlVGhpY2tuZXNzKSk7CiAgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29s
dmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkp
OwogICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gc3Ry
b2tlVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR2x5cGhPdmVy
ZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5l
U3R5bGUsIGNvbnN0IEkKICAgICAgICAgb3ZlcmZsb3dSZXN1bHQuZXh0ZW5kVG9wKC1yZWN0Lnko
KSk7CiAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRvbShyZWN0Lm1heFkoKSAtIGhl
aWdodCk7CiAgICAgfQotICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OkxpbmVU
aHJvdWdoKSB7CisgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVU
aHJvdWdoKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXpl
KDEsIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25U
aGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNv
bHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygp
KTsKICAgICAgICAgYXV0byBjZW50ZXIgPSAyICogbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZmxv
YXRBc2NlbnQoKSAvIDMgKyBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCBiZDg5M2VmZDdl
OTU0N2JlZGQ3NzllNDA1Zjk4ZTk1ZjJmYWRiMGVlLi4wOWI0ZDk2ZWI4ZjczMjM0YzQxOWFlY2Jl
OWU3YTk5NmU3NjM1NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aFNp
emUgY29udmVydFJhZGl1cyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFBvc2l0aW9uT3JBdXRvKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbj4gY29udmVydFRleHREZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGNvbnZl
cnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnROdW1iZXIoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252
ZXJ0TnVtYmVyT3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3Rh
dGljIHNob3J0IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CkBAIC00MjMsNyArNDIzLDcgQEAgaW5saW5lIExlbmd0aFBvaW50
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1
aWxkZXIKICAgICByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBM
ZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0
YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbkxpbmU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVy
U3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlz
dD4odmFsdWUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggYWJhMTA0MTNjZDg3ODliN2RhMzNhYzk2M2NiODBlMzEwMjJlMzg2ZS4uYzM0YWU0ZDc0
YmI3YjRjYzg4ZGIyNjU2NjUzMmQ2ZjBiNWMyOTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTUwNiw3ICs5NTA2LDcgQEAgc3RhdGljIE5TVGV4
dEFsaWdubWVudCBuc1RleHRBbGlnbm1lbnRGcm9tUmVuZGVyU3R5bGUoY29uc3QgV2ViQ29yZTo6
UmVuZGVyU3R5bGUKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gdHlwaW5nU3R5
bGUtPnN0eWxlKCktPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3Vj
aEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRJc1VuZGVybGluZWQ6dmFsdWUuY29udGFpbnMoInVu
ZGVybGluZSIpXTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
W19wcml2YXRlLT5fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dElzVW5kZXJsaW5l
ZDpzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5jb250YWlucyhUZXh0RGVjb3JhdGlv
bjo6VW5kZXJsaW5lKV07CisgICAgICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3Vj
aEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRJc1VuZGVybGluZWQ6c3R5bGUtPnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpXTsK
IAogICAgICAgICAgICAgICAgIENvbG9yIHRleHRDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRDb2xv
ci5pc1ZhbGlkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443424</attachid>
            <date>2021-11-05 12:36:42 -0700</date>
            <delta_ts>2021-11-15 19:56:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232729-20211105123642.patch</filename>
            <type>text/plain</type>
            <size>57403</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ2NDM4MmY1NDAzOTA2
NjEwODk1ZGNkYWMwNTk4NjA0NjAxZTVhNy4uYmQ3MTEyNjJlN2E3ZTNjNTQzYTEyMzI1NDY2NDIx
NTdhMjM4Nzc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAyMS0xMS0wNCAgTmlr
b2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgVGV4dERlY29yYXRpb24gdG8gVGV4dERlY29yYXRpb25MaW5lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI3MjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCB1cCBwYXRjaCBieSBUaW0gTmd1
eWVuOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDgzLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVybGluZSBj
b25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRleHQuY3BwOgorICAgICAgICAoZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9i
amVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6dGV4dEF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0U3R5bGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZSk6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVy
dHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uTGlu
ZUZsYWdzVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJU
ZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpvcGVyYXRvciBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyRmFzdFBhdGhz
Ojppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNp
bmdsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNo
b3J0aGFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudDo6SFRNTFRleHREZWNvcmF0aW9u
RXF1aXZhbGVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpzdHlsZVdpdGhSZXNvbHZlZFRleHREZWNvcmF0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbGxhcHNlVGV4
dERlY29yYXRpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHREZWNvcmF0aW9u
VmFsdWVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0
aElubGluZVN0eWxlT2ZFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdT
dHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5vZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUNoYW5nZTo6U3R5bGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDaGFuZ2U6
OmV4dHJhY3RUZXh0U3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RQcm9wZXJ0aWVz
Tm90SW4pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVz
Ojpwcm9wZXJ0eVZhbHVlRm9yTm9kZSk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpjb21wdXRl
ZEF0dHJpYnV0ZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRpbmdBdHRyaWJ1
dGVkU3RyaW5nKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZUludGVybmFsKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29y
YXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRl
cjo6VGV4dERlY29yYXRpb25QYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0
aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb2xs
ZWN0U3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25Q
YWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OlJl
bmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c1JlcGFpbnRJZlRleHRPckJvcmRlck9yT3V0bGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
dGV4dERlY29yYXRpb25zSW5FZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnRleHREZWNvcmF0aW9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlVmlzdWFsRGF0YTo6
U3R5bGVWaXN1YWxEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVZpc3VhbERhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dGhpY2tu
ZXNzRm9yRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUmVuZGVyZXJEZWZpbmlu
aW5nVGV4dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbldpdGhTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94Lmg6CisgICAgICAgICogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAqIHN0eWxlL1Byb3Bl
cnR5Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6c2hvdWxkQXBwbHlQcm9w
ZXJ0eUluUGFyc2VPcmRlcik6CisgICAgICAgICogc3R5bGUvU3R5bGVBZGp1c3Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QWRqdXN0ZXI6OmFkanVzdCBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9u
KTogRGVsZXRlZC4KKwogMjAyMS0xMS0wNCAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRh
cmlzQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNjcm9sbGJhciBvcmllbnRhdGlvbiBhbiBl
bnVtIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNGY4YzY5MWE4NThkY2Nj
M2JhOGY1OTMyNGExNmU2MjI5MzQ1YjMxOS4uODBjYWM4MDhmNTJlMTQyNjQwNzAyODE5M2YxMGJl
NzE4ZjA3NmEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTExLTA0ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHVwZGF0ZVRleHRUb3VjaEJhcl0pOgor
CiAyMDIxLTExLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggM2U1Njkz
OWM2YWNjNjVkOGU4ZDU0Y2VkNDg5N2U3YzZhY2RmMGU4My4uMDk5ZmIxNTRmYmVhMzI3YjZkZGM4
NTk3MjZhNjgwYTk5OTNmMDRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zODg0LDcgKzM4
ODQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVybGluZSgpIGNv
bnN0CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5j
b250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICByZXR1cm4gbV9yZW5kZXJl
ci0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lKTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNw
cAppbmRleCA4YTg3YWMzYjFiMjBkN2U3M2QxMzYwM2UxMjI3YjNlYjExYWI1OGEwLi5hM2Q3ZTgy
MWZhMzdjYjIwNWQzZjM2YmU4NjNlZWEwOGEzNWI3YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRleHQuY3BwCkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBzdGF0aWMgQXRrQXR0cmlidXRl
U2V0KiBnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2li
aWxpdAogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190
ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJT04pLCAiZmls
bCIpOwogICAgIH0KIAotICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwg
YXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfVU5ERVJMSU5FKSwgKHN0
eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkgPyAic2lu
Z2xlIiA6ICJub25lIik7CisgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0
LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9VTkRFUkxJTkUpLCAo
c3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkg
PyAic2luZ2xlIiA6ICJub25lIik7CiAKICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNl
dChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1NUWUxF
KSwgc3R5bGUtPmZvbnRDYXNjYWRlKCkuaXRhbGljKCkgPyAiaXRhbGljIiA6ICJub3JtYWwiKTsK
IAotICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0
cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU1RSSUtFVEhST1VHSCksIChzdHlsZS0+dGV4
dERlY29yYXRpb24oKSAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkgPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKKyAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190
ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1NUUklLRVRIUk9VR0gpLCAoc3R5
bGUtPnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSA/
ICJ0cnVlIiA6ICJmYWxzZSIpOwogCiAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQo
cmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9JTlZJU0lC
TEUpLCAoc3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4pID8gInRydWUi
IDogImZhbHNlIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpp
bmRleCBhZTY1ZTQ5YWFkMDZiYmZhMzFiOGRjOTE4YjA1MDAwZWY0NzBhZjYzLi4zN2Q2Y2M2MmE5
NTYxODQ4MTVkNGJhNmE0OWM5ZTcxNWRiMjlmY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tCkBAIC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5n
LCBSZW4KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEZvbnQoYXR0clN0cmluZywgc3R5bGUuZm9u
dENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgpLCByYW5nZSk7CiAKICAgICBhdXRv
IGRlY29yID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAoZGVjb3Ig
JiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKQorICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lKQogICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBVSUFjY2Vzc2liaWxpdHlUb2tlblVuZGVybGluZSwgQFlFUywgcmFuZ2UpOwog
CiAgICAgLy8gQWRkIGNvZGUgY29udGV4dCBpZiB0aGlzIG5vZGUgaXMgd2l0aGluIGEgPGNvZGU+
IGJsb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAxMThh
ZTZkNjBhZGZlZWRhMmQxMDdjN2E4Mjk4ZjE1NDU4OGRiNDVlLi5kMDZkN2QzZTAxZWEzNzQxMTZl
ZjhmZjc3ZjM2ZTBlODRmOWY1MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQpAQCAtODY4LDM0ICs4NjgsMzQgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJp
bmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmls
aXR5U2hhZG93VGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwogICAgIGVsc2UKICAgICAgICAg
W2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNoYWRvd1RleHRBdHRy
aWJ1dGUgcmFuZ2U6cmFuZ2VdOwotICAgIAorCiAgICAgLy8gc2V0IHVuZGVybGluZSBhbmQgc3Ry
aWtldGhyb3VnaAogICAgIGF1dG8gZGVjb3IgPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpOwotICAgIGlmICghKGRlY29yICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKKyAg
ICBpZiAoIShkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewogICAgICAg
ICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4
dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJp
YnV0ZTpOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFu
Z2VdOwogICAgIH0KLSAgICAKLSAgICBpZiAoIShkZWNvciAmIFRleHREZWNvcmF0aW9uOjpMaW5l
VGhyb3VnaCkpIHsKKworICAgIGlmICghKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5l
VGhyb3VnaCkpIHsKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNz
aWJpbGl0eVN0cmlrZXRocm91Z2hUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICAgICAg
W2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hD
b2xvclRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogICAgIH0KIAotICAgIGlmIChkZWNvciAm
IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUgfHwgZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6TGlu
ZVRocm91Z2gpIHsKKyAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGlu
ZSB8fCBkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB0aGUgdW5kZXJsaW5lIHN0eWxlIGJlIHJlcG9ydGVkIGhlcmU/CiAg
ICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxlcyA9IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5
bGVzRm9yUmVuZGVyZXIoKnJlbmRlcmVyLCBkZWNvcik7CiAKLSAgICAgICAgaWYgKGRlY29yICYg
VGV4dERlY29yYXRpb246OlVuZGVybGluZSkgeworICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVj
b3JhdGlvbkxpbmU6OlVuZGVybGluZSkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0
ZSwgQFlFUywgcmFuZ2UpOwogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIGNv
Y29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmVDb2xvcikuZ2V0KCksIHJhbmdlKTsK
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb246
OkxpbmVUaHJvdWdoKSB7CisKKyAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5l
OjpMaW5lVGhyb3VnaCkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIo
YXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUsIEBZ
RVMsIHJhbmdlKTsKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0
cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgY29j
b2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IpLmdldCgpLCByYW5nZSk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICAvLyBJbmRpY2F0ZSBiYWNrZ3JvdW5kIGhp
Z2hsaWdodGluZy4KICAgICBmb3IgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6bWFya1RhZykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAwOGFlNTk3Y2U0YjU4MmU4ODcwNmVhYjk4
M2YyMmRjMjhiNWM2OWE1Li5kNzJiZTc0YWJlOWE5MDExOGRiM2RhYWEwODMyOTgxODYyYTdhMWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKQEAgLTI2MDQsNyArMjYwNCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1h
cDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgbmV3IERpc2NyZXRl
UHJvcGVydHlXcmFwcGVyPFJ1YnlQb3NpdGlvbj4oQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRp
b24sICZSZW5kZXJTdHlsZTo6cnVieVBvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OnNldFJ1YnlQb3Np
dGlvbiksCiAgICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxUYWJsZUxheW91dFR5
cGU+KENTU1Byb3BlcnR5VGFibGVMYXlvdXQsICZSZW5kZXJTdHlsZTo6dGFibGVMYXlvdXQsICZS
ZW5kZXJTdHlsZTo6c2V0VGFibGVMYXlvdXQpLAogICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0
eVdyYXBwZXI8VGV4dEFsaWduTW9kZT4oQ1NTUHJvcGVydHlUZXh0QWxpZ24sICZSZW5kZXJTdHls
ZTo6dGV4dEFsaWduLCAmUmVuZGVyU3R5bGU6OnNldFRleHRBbGlnbiksCi0gICAgICAgIG5ldyBE
aXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+PihDU1NQcm9w
ZXJ0eVRleHREZWNvcmF0aW9uTGluZSwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbiwgJlJl
bmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvbiksCisgICAgICAgIG5ldyBEaXNjcmV0ZVByb3Bl
cnR5V3JhcHBlcjxPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPj4oQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbkxpbmUsICZSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24sICZSZW5kZXJTdHls
ZTo6c2V0VGV4dERlY29yYXRpb24pLAogICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBw
ZXI8VGV4dERlY29yYXRpb25TdHlsZT4oQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlLCAm
UmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0VGV4dERl
Y29yYXRpb25TdHlsZSksCiAgICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxjb25z
dCBDb2xvciY+KENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsICZSZW5kZXJTdHls
ZTo6dGV4dEVtcGhhc2lzQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lzQ29sb3Ip
LAogICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8T3B0aW9uU2V0PFRleHRFbXBo
YXNpc1Bvc2l0aW9uPj4oQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgJlJl
bmRlclN0eWxlOjp0ZXh0RW1waGFzaXNQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRUZXh0RW1w
aGFzaXNQb3NpdGlvbiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDJmMmUwODliYWIxNDY1NzQ2Y2Y3MzNmNjZkOTFiNTUx
MGFiNmQxZmMuLjAwNjRhZGM1MGMwN2RmMGI4Y2YxZTdjODNlNTI1YWU0MjhhNjFlZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC0xNTk1LDE2ICsxNTk1LDE2IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHRvdWNoQWN0aW9u
RmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxUb3VjaEFjdGlvbj4gdG91Y2hBY3RpCiAgICAgcmV0
dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0aW9u
RmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24p
CitzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkxpbmVGbGFnc1RvQ1NT
VmFsdWUoT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25MaW5lKQog
ewogICAgIGF1dG8mIGNzc1ZhbHVlUG9vbCA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCk7CiAg
ICAgLy8gQmxpbmsgdmFsdWUgaXMgaWdub3JlZC4KICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4
dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICBpZiAodGV4dERlY29yYXRpb25MaW5lICYgVGV4
dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1
ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKSk7Ci0gICAgaWYg
KHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKQorICAgIGlmICh0ZXh0
RGVjb3JhdGlvbkxpbmUgJiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKQogICAgICAgICBs
aXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU92
ZXJsaW5lKSk7Ci0gICAgaWYgKHRleHREZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OkxpbmVU
aHJvdWdoKQorICAgIGlmICh0ZXh0RGVjb3JhdGlvbkxpbmUgJiBUZXh0RGVjb3JhdGlvbkxpbmU6
OkxpbmVUaHJvdWdoKQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVUaHJvdWdoKSk7CiAKICAgICBpZiAoIWxpc3QtPmxl
bmd0aCgpKQpAQCAtMzI1NCw3ICszMjU0LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEFsaWduKCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb246Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERl
Y29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb24oKSk7CisgICAgICAg
ICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25MaW5lRmxhZ3NUb0NTU1ZhbHVlKHN0eWxl
LnRleHREZWNvcmF0aW9uKCkpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0QWxpZ25MYXN0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0QWxpZ25MYXN0KCkpOwpAQCAtMzI2NCw3ICsz
MjY0LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZv
clByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGdldENTU1Byb3BlcnR5
VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyh3ZWJraXRUZXh0RGVjb3JhdGlvblNob3J0aGFu
ZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZToKLSAgICAg
ICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS50
ZXh0RGVjb3JhdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlv
bkxpbmVGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb24oKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgogICAgICAgICAgICAgcmV0dXJuIHJl
bmRlclRleHREZWNvcmF0aW9uU3R5bGVGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRp
b25TdHlsZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3I6
CkBAIC0zMjgwLDcgKzMyODAsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25UaGlja25lc3M6CiAgICAgICAgICAgICByZXR1
cm4gdGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9u
VGhpY2tuZXNzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3Q6Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFn
c1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSk7CisgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25MaW5lRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29s
b3IoJnN0eWxlLCBzdHlsZS50ZXh0RmlsbENvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCBmNjRiYjE2NGI5NjNlYzE4MjhkMDRlOTc2Mjlj
NTNlMjRjMDdjMDk5Li42ZWQ2MDkxYmUxYmM0OGE2OWJlYjQ1NjJjN2EwNmI1ZTMwOTQ0ZjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAg
LTI0MTIsMjcgKzI0MTIsMjcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yIFRleHRKdXN0aWZ5KCkgY29uc3QKIH0KICNlbmRpZiAvLyBDU1MzX1RFWFQKIAot
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbj4oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+KCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaXNWYWx1ZUlEKCkpOwogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsK
ICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4geyB9OworICAgICAgICByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGlu
ZT4geyB9OwogICAgIGNhc2UgQ1NTVmFsdWVVbmRlcmxpbmU6Ci0gICAgICAgIHJldHVybiBUZXh0
RGVjb3JhdGlvbjo6VW5kZXJsaW5lOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmU7CiAgICAgY2FzZSBDU1NWYWx1ZU92ZXJsaW5lOgotICAgICAgICByZXR1cm4g
VGV4dERlY29yYXRpb246Ok92ZXJsaW5lOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25M
aW5lOjpPdmVybGluZTsKICAgICBjYXNlIENTU1ZhbHVlTGluZVRocm91Z2g6Ci0gICAgICAgIHJl
dHVybiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2g7CisgICAgICAgIHJldHVybiBUZXh0RGVj
b3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoOwogICAgIGNhc2UgQ1NTVmFsdWVCbGluazoKLSAgICAg
ICAgcmV0dXJuIFRleHREZWNvcmF0aW9uOjpCbGluazsKKyAgICAgICAgcmV0dXJuIFRleHREZWNv
cmF0aW9uTGluZTo6Qmxpbms7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4geyB9OworICAgIHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB7
IH07CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBU
ZXh0RGVjb3JhdGlvblN0eWxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjNjcxMDIyN2RkZDE0ZjUwNmQ4ZjUyMGMwZTg5NmNjOWNkNGU2OWRiLi45ZmJlMWI2MGMzZDYw
NDY0MjcxZmQ2NzRmZjM1MDUyZWVjNGI4Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC00MDk3LDkgKzQwOTcsOSBAQCBGb250QXR0cmlidXRlcyBFZGl0b3I6OmZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydCgpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBh
dXRvIGRlY29yYXRpb24gPSBzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICAg
ICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCisgICAgICAg
IGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkKICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMuaGFzU3RyaWtlVGhyb3VnaCA9IHRydWU7Ci0gICAgICAgIGlmIChk
ZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICAgICAgaWYgKGRlY29y
YXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkKICAgICAgICAgICAgIGF0dHJp
YnV0ZXMuaGFzVW5kZXJsaW5lID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkOTQ0ZDk4NGRjM2Y4ZTE5MzlmMWZj
NzQzZjhhOTQwYTE3N2ExZTJlLi4wMTc5Y2FjNTlhZWJkNTFhZjFmNTUyNDhmYTA0NWUwMjIxNmU2
NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
CkBAIC0yMzgwLDkgKzIzODAsOSBAQCBBdHRyaWJ1dGVkU3RyaW5nIGVkaXRpbmdBdHRyaWJ1dGVk
U3RyaW5nKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgSW5jbHVkZUltYWdlcwogICAgICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIHN0eWxl
ID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCgpICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICAgICAgaWYgKHN0eWxl
LnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGlu
ZSkKICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRl
Z2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmli
dXRlTmFtZV07Ci0gICAgICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYg
VGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQorICAgICAgICBpZiAoc3R5bGUudGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpCiAgICAg
ICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpOU1Vu
ZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVO
YW1lXTsKICAgICAgICAgaWYgKGF1dG8gZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFy
eUZvbnQoKS5nZXRDVEZvbnQoKSkKICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6dG9OU0Zv
bnQoZm9udCkgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCmluZGV4IDA0N2YwMmExNzlmYTU2MTNiZDgz
YTZmNTc5NzliZjZiMTQwNDI2ZTEuLmRiMmMzNjNjZmUxNTczNjZmN2ZiZTJhYTdhMjY2ZGUyZmI5
ZjhlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5j
cHAKQEAgLTU3LDE1ICs1NywxNSBAQCBzdGF0aWMgU3R5bGVkTWFya2VkVGV4dCByZXNvbHZlU3R5
bGVGb3JNYXJrZWRUZXh0KGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFRleHQsCiAgICAgICAgICAg
ICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvblN0eWxl
KCk7CiAgICAgICAgICAgICBhdXRvIGRlY29yYXRpb25zID0gcmVuZGVyU3R5bGUtPnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCk7CiAKLSAgICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgeworICAgICAgICAgICAgaWYgKGRlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICAg
ICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNvbG9yID0gY29sb3I7
CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lU3R5
bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGVj
b3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSkgeworICAgICAgICAg
ICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUp
KSB7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmVD
b2xvciA9IGNvbG9yOwogICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVz
Lm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdo
KSkgeworICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6TGluZVRocm91Z2gpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRp
b25TdHlsZXMubGluZXRocm91Z2hDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgICAgIHN0eWxl
LnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuY3BwCmluZGV4IGVhMDkwMDZmZWQyNjg4MjU3ZTgwMmE3ZTllYzczODA0
YmU1MGUxMTQuLjA4NDI5NDQ0YmFjNjU3YjVmM2UwNjg2ZmNmMmRhMTk2MWE1NTQyNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
CkBAIC0xOTgsNyArMTk4LDcgQEAgYm9vbCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlczo6
b3BlcmF0b3I9PShjb25zdCBTdHlsZXMmIG90aGVyKSBjb25zdAogICAgICAgICAmJiB1bmRlcmxp
bmVTdHlsZSA9PSBvdGhlci51bmRlcmxpbmVTdHlsZSAmJiBvdmVybGluZVN0eWxlID09IG90aGVy
Lm92ZXJsaW5lU3R5bGUgJiYgbGluZXRocm91Z2hTdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaFN0
eWxlOwogfQogCi1UZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9uUGFpbnRlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3Jh
dGlvbnMsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29sIGlzRmlyc3RMaW5lLCBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCwgc3RkOjpvcHRpb25hbDxTdHlsZXM+IHN0eWxlcykKK1RleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnMsIGNvbnN0
IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCwgc3RkOjpvcHRpb25hbDxTdHlsZXM+IHN0eWxlcykKICAgICA6IG1fY29udGV4dCB7
IGNvbnRleHQgfQogICAgICwgbV9kZWNvcmF0aW9ucyB7IGRlY29yYXRpb25zIH0KICAgICAsIG1f
d2F2eU9mZnNldCB7IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpIH0KQEAgLTIxNSwxNCArMjE1
LDE0IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgZmxvYXQgdGV4dERlY29yYXRpb25U
aGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUo
bV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyk7CiAgICAgRmxvYXRQ
b2ludCBsb2NhbE9yaWdpbiA9IGJveE9yaWdpbjsKIAotICAgIGF1dG8gcGFpbnREZWNvcmF0aW9u
ID0gWyZdIChUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxlIHN0
eWxlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeworICAgIGF1
dG8gcGFpbnREZWNvcmF0aW9uID0gWyZdIChUZXh0RGVjb3JhdGlvbkxpbmUgZGVjb3JhdGlvbiwg
VGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpIHsKICAgICAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsK
IAogICAgICAgICBhdXRvIHN0cm9rZVN0eWxlID0gdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tl
U3R5bGUoc3R5bGUpOwogCiAgICAgICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
OjpXYXZ5KQogICAgICAgICAgICAgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKG1fY29udGV4dCwg
cmVjdCwgbV9saW5lU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOwotICAgICAgICBlbHNl
IGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUgfHwgZGVjb3JhdGlv
biA9PSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpIHsKKyAgICAgICAgZWxzZSBpZiAoZGVjb3Jh
dGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSB8fCBkZWNvcmF0aW9uID09IFRl
eHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHsKICAgICAgICAgICAgIGlmICgobV9saW5lU3R5
bGUudGV4dERlY29yYXRpb25Ta2lwSW5rKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpBdXRv
IHx8IG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcEluaygpID09IFRleHREZWNvcmF0aW9u
U2tpcEluazo6QWxsKSAmJiBtX2lzSG9yaXpvbnRhbCkgewogICAgICAgICAgICAgICAgIGlmICgh
bV9jb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBGbG9h
dFJlY3QgdW5kZXJsaW5lQm91bmRpbmdCb3ggPSBtX2NvbnRleHQuY29tcHV0ZVVuZGVybGluZUJv
dW5kc0ZvclRleHQocmVjdCwgbV9pc1ByaW50aW5nKTsKQEAgLTIzNywxNCArMjM3LDE0IEBAIHZv
aWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRS
dW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdMaW5l
Rm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6
OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgQVNTRVJUKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb246OkxpbmVUaHJv
dWdoKTsKKyAgICAgICAgICAgIEFTU0VSVChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uTGlu
ZTo6TGluZVRocm91Z2gpOwogICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdMaW5lRm9yVGV4dChy
ZWN0LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwg
c3Ryb2tlU3R5bGUpOwogICAgICAgICB9CiAgICAgfTsKIAotICAgIGJvb2wgYXJlTGluZXNPcGFx
dWUgPSAhbV9pc1ByaW50aW5nICYmICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbjo6VW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRlcmxpbmVDb2xvci5pc09wYXF1ZSgpKQot
ICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJs
aW5lKSB8fCBtX3N0eWxlcy5vdmVybGluZUNvbG9yLmlzT3BhcXVlKCkpCi0gICAgICAgICYmICgh
bV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpIHx8IG1f
c3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IuaXNPcGFxdWUoKSk7CisgICAgYm9vbCBhcmVMaW5lc09w
YXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYgKCFtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNv
cmF0aW9uTGluZTo6VW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRlcmxpbmVDb2xvci5pc09wYXF1
ZSgpKQorICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25M
aW5lOjpPdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvci5pc09wYXF1ZSgpKQorICAg
ICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5l
VGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRocm91Z2hDb2xvci5pc09wYXF1ZSgpKTsKIAogICAg
IGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFyZUxpbmVzT3Bh
cXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93LT5uZXh0KCk7CkBAIC0yODUsMjggKzI4NSwyOCBA
QCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBU
ZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlc2Ug
ZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGlu
IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVybGluZSkpIHsKKyAgICAgICAgaWYgKG1f
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7CiAg
ICAgICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwogICAgICAg
ICAgICAgYXV0byBkZWZhdWx0R2FwID0gbV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpIC8g
dGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBj
b21wdXRlVW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigp
LCBtX2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCksIG1fbGluZVN0eWxlLmZvbnRNZXRy
aWNzKCksIG1fdGV4dEJveCwgZGVmYXVsdEdhcCk7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zm
c2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2
eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9y
aWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAg
ICAgICAgICByZWN0Lm1vdmUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBw
YWludERlY29yYXRpb24oVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJs
aW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKKyAgICAgICAgICAgIHBh
aW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbV9zdHlsZXMudW5k
ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKICAgICAgICAgfQot
ICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3Zlcmxp
bmUpKSB7CisgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6T3ZlcmxpbmUpKSB7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHls
ZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zm
c2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNp
emUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKICAgICAgICAgICAgIGZsb2F0
IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpj
cmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBm
b250TWV0cmljcyk7CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNvcmF0aW9u
VGhpY2tuZXNzIC0gdGV4dERlY29yYXRpb25UaGlja25lc3MgLSB3YXZ5T2Zmc2V0KTsKLSAgICAg
ICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUsIG1fc3R5bGVz
Lm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHJlY3QpOworICAgICAgICAg
ICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUsIG1fc3R5bGVz
Lm92ZXJsaW5lU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHJlY3QpOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5l
VGhyb3VnaCkpIHsKKyAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29y
YXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxv
Y2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsK
ICAgICAgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV9saW5lU3R5bGUuY29t
cHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyk7CiAgICAgICAgICAgICBhdXRvIGNlbnRlciA9
IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyAvIDI7CiAgICAgICAgICAgICByZWN0Lm1vdmUoMCwgY2VudGVyIC0gdGV4dERlY29y
YXRpb25UaGlja25lc3MgLyAyKTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVj
b3JhdGlvbjo6TGluZVRocm91Z2gsIG1fc3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUsIG1fc3R5bGVz
LmxpbmV0aHJvdWdoQ29sb3IsIHJlY3QpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRl
eHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gsIG1fc3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUs
IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHJlY3QpOwogICAgICAgICB9CiAgICAgfSB3aGls
ZSAoc2hhZG93KTsKIApAQCAtMzE2LDI0ICszMTYsMjQgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBh
aW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
RmwKICAgICAgICAgbV9jb250ZXh0LmNsZWFyU2hhZG93KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNv
bGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVz
dWx0LCBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+IHJlbWFpbmluZ0RlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlLCBQc2V1ZG9JZCBw
c2V1ZG9JZCkKK3N0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiByZW1haW5pbmdEZWNvcmF0aW9ucywgYm9v
bCBmaXJzdExpbmVTdHlsZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgYXV0byBleHRyYWN0
RGVjb3JhdGlvbnMgPSBbJl0gKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucykgeworICAgIGF1dG8gZXh0cmFjdERlY29yYXRpb25z
ID0gWyZdIChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bkxpbmU+IGRlY29yYXRpb25zKSB7CiAgICAgICAgIGF1dG8gY29sb3IgPSBUZXh0RGVjb3JhdGlv
blBhaW50ZXI6OmRlY29yYXRpb25Db2xvcihzdHlsZSk7CiAgICAgICAgIGF1dG8gZGVjb3JhdGlv
blN0eWxlID0gc3R5bGUudGV4dERlY29yYXRpb25TdHlsZSgpOwogCi0gICAgICAgIGlmIChkZWNv
cmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgewotICAgICAgICAg
ICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
OworICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpV
bmRlcmxpbmUpKSB7CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4
dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwogICAgICAgICAgICAgcmVzdWx0LnVuZGVybGlu
ZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lU3R5bGUgPSBkZWNv
cmF0aW9uU3R5bGU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5z
KFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29y
YXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpOworICAgICAgICBpZiAoZGVj
b3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKKyAgICAg
ICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6Ok92
ZXJsaW5lKTsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZUNvbG9yID0gY29sb3I7CiAgICAg
ICAgICAgICByZXN1bHQub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAg
fQotICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVU
aHJvdWdoKSkgewotICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHRE
ZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkgeworICAgICAgICAgICAgcmVtYWlu
aW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpOwog
ICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAg
IHJlc3VsdC5saW5ldGhyb3VnaFN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CkBA
IC0zNzYsMTkgKzM3NiwxOSBAQCBDb2xvciBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OmRlY29yYXRp
b25Db2xvcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
Q29sb3IpOwogfQogCi1PcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IFRleHREZWNvcmF0aW9uUGFp
bnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBUZXh0RGVjb3JhdGlv
blBhaW50ZXI6OlN0eWxlcyYgc3R5bGUpCitPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBU
ZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUoY29u
c3QgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMmIHN0eWxlKQogewotICAgIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbnM7CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT4gZGVjb3JhdGlvbnM7CiAgICAgaWYgKHN0eWxlLnVuZGVybGluZUNvbG9yLmlzVmFs
aWQoKSkKLSAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
OworICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUp
OwogICAgIGlmIChzdHlsZS5vdmVybGluZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgZGVjb3Jh
dGlvbnMuYWRkKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSk7CisgICAgICAgIGRlY29yYXRpb25z
LmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKTsKICAgICBpZiAoc3R5bGUubGluZXRo
cm91Z2hDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3Jh
dGlvbjo6TGluZVRocm91Z2gpOworICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCk7CiAgICAgcmV0dXJuIGRlY29yYXRpb25zOwogfTsKIAotYXV0
byBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gcmVxdWVzdGVkRGVjb3Jh
dGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lkKSAtPiBTdHlsZXMK
K2F1dG8gVGV4dERlY29yYXRpb25QYWludGVyOjpzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiByZXF1ZXN0
ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNldWRvSWQgcHNldWRvSWQpIC0+
IFN0eWxlcwogewogICAgIFN0eWxlcyByZXN1bHQ7CiAgICAgY29sbGVjdFN0eWxlc0ZvclJlbmRl
cmVyKHJlc3VsdCwgcmVuZGVyZXIsIHJlcXVlc3RlZERlY29yYXRpb25zLCBmYWxzZSwgcHNldWRv
SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5oCmluZGV4IGVhYWQ0MDgzNTEwZjgzZDhjNGQ0YjJhOWQyMjdjNTI5NWE3ZGYxNDMuLmU3NDFh
NTk5NzdiZmIzYTkyZjQzNzRiOTE5ODVlMTMxNmI4MWNhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRleHREZWNvcmF0aW9uUGFpbnRlciB7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IFN0eWxlczsKLSAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250
ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVy
VGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgc3RkOjpvcHRpb25h
bDxTdHlsZXM+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3Jh
cGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnMs
IGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYs
IHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgdm9pZCBz
ZXRUZXh0Qm94KElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgdGV4dEJveCkgeyBtX3Rl
eHRCb3ggPSB0ZXh0Qm94OyB9CiAgICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBpc0hvcml6
b250YWwpIHsgbV9pc0hvcml6b250YWwgPSBpc0hvcml6b250YWw7IH0KQEAgLTY2LDEyICs2Niwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgbGluZXRocm91Z2hTdHls
ZTsKICAgICB9OwogICAgIHN0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoY29uc3QgUmVuZGVy
U3R5bGUmKTsKLSAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdEZvclN0eWxlKGNvbnN0IFN0eWxlcyYpOwotICAgIHN0YXRpYyBTdHlsZXMg
c3R5bGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSA9IGZhbHNl
LCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKKyAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBTdHls
ZXMmKTsKKyAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHJlcXVlc3RlZERlY29yYXRpb25z
LCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUp
OwogCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwotICAgIE9wdGlv
blNldDxUZXh0RGVjb3JhdGlvbj4gbV9kZWNvcmF0aW9uczsKKyAgICBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb25MaW5lPiBtX2RlY29yYXRpb25zOwogICAgIGZsb2F0IG1fd2F2eU9mZnNldDsKICAg
ICBmbG9hdCBtX3dpZHRoIHsgMCB9OwogICAgIEZsb2F0UG9pbnQgbV9ib3hPcmlnaW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA2MDZj
OTliODNkZmI3MWIyNjgyZTkxNDEyNzQ1YTZkMGMzZjZiMTI0Li4xMzVlMmUxMTI4NGU2NTNmMDM1
YzBkYmYwNjFlMjdmNjI1MTBjZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTExNjQsNyArMTE2NCw3IEBAIGJvb2wgUmVuZGVyU3R5
bGU6OmNoYW5nZVJlcXVpcmVzUmVwYWludElmVGV4dE9yQm9yZGVyT3JPdXRsaW5lKGNvbnN0IFJl
bmRlclN0eWxlCiB7CiAgICAgaWYgKG1faW5oZXJpdGVkRGF0YS0+Y29sb3IgIT0gb3RoZXIubV9p
bmhlcml0ZWREYXRhLT5jb2xvcgogICAgICAgICB8fCBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNv
cmF0aW9ucyAhPSBvdGhlci5tX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucwotICAgICAg
ICB8fCBtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uICE9IG90aGVyLm1fdmlzdWFsRGF0YS0+
dGV4dERlY29yYXRpb24KKyAgICAgICAgfHwgbV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbkxp
bmUgIT0gb3RoZXIubV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbkxpbmUKICAgICAgICAgfHwg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci5tX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlCiAgICAgICAgIHx8IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uQ29sb3IgIT0gb3RoZXIubV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Db2xvcgogICAgICAgICB8fCBtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblNraXBJbmsgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dERlY29yYXRpb25Ta2lwSW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDIwNTIwNDI0ZGYyMzQzNDMyMGI3MzNmNDI0MGQ5YThk
MTA0NjkyZmIuLjVlNWYxNzY4MTA5ZDI5ZTM2NDdhMzAyNmU1OGM4ODM1M2FjMmQ0ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0zNzIsOCAr
MzcyLDggQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCYgdGV4dEluZGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmluZGVudDsgfQogICAgIFRleHRBbGlnbk1vZGUg
dGV4dEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEFsaWduTW9kZT4obV9p
bmhlcml0ZWRGbGFncy50ZXh0QWxpZ24pOyB9CiAgICAgVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFRyYW5zZm9ybT4obV9pbmhlcml0
ZWRGbGFncy50ZXh0VHJhbnNmb3JtKTsgfQotICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4g
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb24+Ojpmcm9tUmF3KG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zKTsgfQot
ICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24oKSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+Ojpmcm9tUmF3KG1fdmlzdWFsRGF0YS0+dGV4
dERlY29yYXRpb24pOyB9CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b25MaW5lPjo6ZnJvbVJhdyhtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyk7IH0KKyAg
ICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+Ojpmcm9tUmF3KG1fdmlzdWFsRGF0
YS0+dGV4dERlY29yYXRpb25MaW5lKTsgfQogICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERl
Y29yYXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9u
U3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUpOyB9CiAg
ICAgVGV4dERlY29yYXRpb25Ta2lwSW5rIHRleHREZWNvcmF0aW9uU2tpcEluaygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU2tpcEluaz4obV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dERlY29yYXRpb25Ta2lwSW5rKTsgfQogICAgIFRleHRVbmRlcmxpbmVQb3NpdGlv
biB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0
VW5kZXJsaW5lUG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3Np
dGlvbik7IH0KQEAgLTk4NSw5ICs5ODUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0SW5k
ZW50KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGluZGVu
dCwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0VGV4dEFsaWduKFRleHRBbGlnbk1v
ZGUgdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih2KTsgfQogICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShUZXh0VHJhbnNmb3JtIHYpIHsgbV9p
bmhlcml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9
Ci0gICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyB8PSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odi50b1JhdygpKTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QoT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB2KSB7IG1faW5oZXJpdGVkRmxhZ3Mu
dGV4dERlY29yYXRpb25zID0gdi50b1JhdygpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlv
bihPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRl
eHREZWNvcmF0aW9uLCB2LnRvUmF3KCkpOyB9CisgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9u
c0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHYpIHsgbV9pbmhlcml0ZWRG
bGFncy50ZXh0RGVjb3JhdGlvbnMgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYudG9SYXcoKSk7
IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbkxpbmU+IHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgPSB2LnRv
UmF3KCk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbkxpbmU+IHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHREZWNvcmF0aW9uTGluZSwg
di50b1JhdygpKTsgfQogICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3Jh
dGlvblN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3Jh
dGlvblN0eWxlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAgICAgdm9pZCBzZXRUZXh0
RGVjb3JhdGlvblNraXBJbmsoVGV4dERlY29yYXRpb25Ta2lwSW5rIHNraXBJbmspIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblNraXBJbmssIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihza2lwSW5rKSk7IH0KICAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3NpdGlv
bihUZXh0VW5kZXJsaW5lUG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3Np
dGlvbikpOyB9CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuaW5n
IC0xMDAlIHBlcmNlbnQgaGVyZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldC4KICAg
ICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAu
MGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpOyB9CiAgICAgc3RhdGljIFRleHRBbGlnbk1vZGUgaW5p
dGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OyB9Ci0gICAgc3Rh
dGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyBy
ZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB7IH07IH0KKyAgICBzdGF0aWMgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uTGluZT4gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4g
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4geyB9OyB9CiAgICAgc3RhdGljIFRleHREZWNv
cmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0RGVj
b3JhdGlvblN0eWxlOjpTb2xpZDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXBJbmsg
aW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcEluaygpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU2tp
cEluazo6QXV0bzsgfQogICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24gaW5pdGlhbFRl
eHRVbmRlcmxpbmVQb3NpdGlvbigpIHsgcmV0dXJuIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0
bzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5jcHAKaW5kZXggZWUzOGRkYTYwODgxZjhhN2Q0NzQ4NDQwMjk3NDY2MmFk
OTQ3YjE0YS4uYTI5NGMxODUyYmY2OWFjNmVmODFjZWFlMWUwNzk1NTkzYzE3ZGU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuY3BwCkBAIC0xMDU1LDE0ICsxMDU1LDE0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIFRleHRDb21iaW5lIHRleHRDb21iaW5lKQogICAgIHJldHVybiB0czsK
IH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERlY29yYXRp
b24gdGV4dERlY29yYXRpb24pCi17Ci0gICAgc3dpdGNoICh0ZXh0RGVjb3JhdGlvbikgewotICAg
IGNhc2UgVGV4dERlY29yYXRpb246Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7Ci0gICAgY2Fz
ZSBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lOiB0cyA8PCAidW5kZXJsaW5lIjsgYnJlYWs7Ci0g
ICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmU6IHRzIDw8ICJvdmVybGluZSI7IGJyZWFr
OwotICAgIGNhc2UgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoOiB0cyA8PCAibGluZS10aHJv
dWdoIjsgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6Qmxpbms6IHRzIDw8ICJibGlu
ayI7IGJyZWFrOworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERl
Y29yYXRpb25MaW5lIGxpbmUpCit7CisgICAgc3dpdGNoIChsaW5lKSB7CisgICAgY2FzZSBUZXh0
RGVjb3JhdGlvbkxpbmU6Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7CisgICAgY2FzZSBUZXh0
RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZTogdHMgPDwgInVuZGVybGluZSI7IGJyZWFrOworICAg
IGNhc2UgVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZTogdHMgPDwgIm92ZXJsaW5lIjsgYnJl
YWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoOiB0cyA8PCAibGlu
ZS10aHJvdWdoIjsgYnJlYWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6OkJsaW5rOiB0
cyA8PCAiYmxpbmsiOyBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApp
bmRleCA1ZDZlNzBjYTJhZGE0MjMyZWMyODhhYjczZTYzNzM1MWIwNzkwMTdkLi5hY2IxOGQ4Yzk2
YzE0ZDMwOTI1NDkxZGNhNjE2ZWU2MGQ4YjQwZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzQ1LDcgKzc0
NSw3IEBAIGVudW0gY2xhc3MgVGV4dFRyYW5zZm9ybSA6IHVpbnQ4X3QgewogfTsKIAogc3RhdGlj
IGNvbnN0IHNpemVfdCBUZXh0RGVjb3JhdGlvbkJpdHMgPSA0OwotZW51bSBjbGFzcyBUZXh0RGVj
b3JhdGlvbiA6IHVpbnQ4X3QgeworZW51bSBjbGFzcyBUZXh0RGVjb3JhdGlvbkxpbmUgOiB1aW50
OF90IHsKICAgICBOb25lICAgICAgICAgID0gMCwKICAgICBVbmRlcmxpbmUgICAgID0gMSA8PCAw
LAogICAgIE92ZXJsaW5lICAgICAgPSAxIDw8IDEsCkBAIC0xMzM5LDcgKzEzMzksNyBAQCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3R5bGVEaWZmZXJlbmNl
KTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUYWJsZUxh
eW91dFR5cGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IFRleHRBbGlnbk1vZGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIFRleHRDb21iaW5lKTsKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBUZXh0RGVjb3JhdGlvbik7CitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgVGV4dERlY29yYXRpb25MaW5lKTsKIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUZXh0RGVjb3JhdGlvblNraXBJbmspOwogV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHREZWNvcmF0aW9u
U3R5bGUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRl
eHRFbXBoYXNpc0ZpbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlVmlzdWFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVWaXN1YWxEYXRhLmNwcAppbmRleCAxMGE0NDdiZDBhZTI0N2U1ZWE2NzVhNGI3YTQ3YTE2
ZTFkYTI4MDU2Li42YmQ1ZTRjNGI5YzZmOTc4N2Y4MGQ2MGUzZDQ0ZTEwZjI1NzUxMzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmNw
cApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlVmlzdWFsRGF0
YTo6U3R5bGVWaXN1YWxEYXRhKCkKICAgICA6IGhhc0NsaXAoZmFsc2UpCi0gICAgLCB0ZXh0RGVj
b3JhdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKCkudG9SYXcoKSkKKyAg
ICAsIHRleHREZWNvcmF0aW9uTGluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9u
KCkudG9SYXcoKSkKICAgICAsIHpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCiB7CiB9
CkBAIC0zOSw3ICszOSw3IEBAIGlubGluZSBTdHlsZVZpc3VhbERhdGE6OlN0eWxlVmlzdWFsRGF0
YShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHlsZVZp
c3VhbERhdGE+KCkKICAgICAsIGNsaXAob3RoZXIuY2xpcCkKICAgICAsIGhhc0NsaXAob3RoZXIu
aGFzQ2xpcCkKLSAgICAsIHRleHREZWNvcmF0aW9uKG90aGVyLnRleHREZWNvcmF0aW9uKQorICAg
ICwgdGV4dERlY29yYXRpb25MaW5lKG90aGVyLnRleHREZWNvcmF0aW9uTGluZSkKICAgICAsIHpv
b20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKaW5kZXggZDQxOGFjYjUwYTI0Zjhh
M2IyMThkZGUxOGMzM2UxYWE4OGE4Y2IzYi4uZDVkYTc4OTQyMzMyM2Q4Mjg0MDMxNjZmNTFkZDQ0
NjUyMzZlY2QzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVZpc3VhbERhdGEuaApAQCAtNDEsMTQgKzQxLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBjbGlwID09IG90aGVyLmNsaXAKICAgICAgICAgICAgICYmIGhhc0NsaXAgPT0gb3Ro
ZXIuaGFzQ2xpcAotICAgICAgICAgICAgJiYgdGV4dERlY29yYXRpb24gPT0gb3RoZXIudGV4dERl
Y29yYXRpb24KKyAgICAgICAgICAgICYmIHRleHREZWNvcmF0aW9uTGluZSA9PSBvdGhlci50ZXh0
RGVjb3JhdGlvbkxpbmUKICAgICAgICAgICAgICYmIHpvb20gPT0gb3RoZXIuem9vbTsKICAgICB9
CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBMZW5ndGhCb3ggY2xpcDsKICAg
ICBib29sIGhhc0NsaXAgOiAxOwotICAgIHVuc2lnbmVkIHRleHREZWNvcmF0aW9uIDogVGV4dERl
Y29yYXRpb25CaXRzOyAvLyBUZXh0IGRlY29yYXRpb25zIGRlZmluZWQgKm9ubHkqIGJ5IHRoaXMg
ZWxlbWVudC4KKyAgICB1bnNpZ25lZCB0ZXh0RGVjb3JhdGlvbkxpbmUgOiBUZXh0RGVjb3JhdGlv
bkJpdHM7IC8vIFRleHQgZGVjb3JhdGlvbnMgZGVmaW5lZCAqb25seSogYnkgdGhpcyBlbGVtZW50
LgogICAgIGZsb2F0IHpvb207CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBjMjAyYjI1NDQ2ZmUwZWNiYjM1
YzQ3MmI0ZDI5YmJmOGMyM2YzYzI4Li41NWU1Y2NiMTk4ZTZkMDQ0ZDZiMTJlZTkyMzYyMTFhZWIx
MzkxYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAKQEAgLTI5NSwxMCArMjk1LDEwIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
CiAKICAgICAgICAgLy8gU3BlYzogQWxsIHRleHQgZGVjb3JhdGlvbnMgZXhjZXB0IGxpbmUtdGhy
b3VnaCBzaG91bGQgYmUgZHJhd24gYmVmb3JlIHRoZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tl
ZDsgdGh1cywgdGhlIHRleHQgaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZXNlIGRlY29yYXRpb25z
LgogICAgICAgICBhdXRvIGRlY29yYXRpb25zID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKTsKLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb246OlVuZGVybGlu
ZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0
RGVjb3JhdGlvbjo6VW5kZXJsaW5lLCBmcmFnbWVudCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9u
cyAmIFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUsIGZyYWdtZW50
KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpCisgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4
dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29y
YXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkKKyAgICAgICAgICAgIHBhaW50
RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJs
aW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAgYXV0byBwYWludE9yZGVyID0gUmVuZGVyU3R5bGU6
OnBhaW50VHlwZXNGb3JQYWludE9yZGVyKHN0eWxlLnBhaW50T3JkZXIoKSk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWludE9yZGVyLnNpemUoKTsgKytpKSB7CkBAIC0zMjMs
OCArMzIzLDggQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgfQogCiAgICAgICAg
IC8vIFNwZWM6IExpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgdGhlIHRleHQgaXMg
ZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0aGUgbGluZS10aHJvdWdoIGlzIHJlbmRlcmVkIG9u
IHRvcCBvZiB0aGUgdGV4dC4KLSAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRp
b246OkxpbmVUaHJvdWdoKQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5j
b250ZXh0KCksIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCwgZnJhZ21lbnQpOworICAgICAg
ICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKQorICAg
ICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0
aW9uTGluZTo6TGluZVRocm91Z2gsIGZyYWdtZW50KTsKIAogICAgICAgICBzZXRQYWludGluZ1Jl
c291cmNlTW9kZSh7IH0pOwogICAgIH0KQEAgLTQzOCwyMiArNDM4LDIyIEBAIGJvb2wgU1ZHSW5s
aW5lVGV4dEJveDo6bWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhj
b25zdCBTVkdUZXh0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQg
cG9zaXRpb25PZmZzZXRGb3JEZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVj
b3JhdGlvbiwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBmbG9hdCB0aGlja25lc3Mp
CitzdGF0aWMgaW5saW5lIGZsb2F0IHBvc2l0aW9uT2Zmc2V0Rm9yRGVjb3JhdGlvbihPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9uLCBjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MsIGZsb2F0IHRoaWNrbmVzcykKIHsKICAgICAvLyBGSVhNRTogRm9yIFNWRyBGb250
cyB3ZSBuZWVkIHRvIHVzZSB0aGUgYXR0cmlidXRlcyBkZWZpbmVkIGluIHRoZSA8Zm9udC1mYWNl
PiBpZiBzcGVjaWZpZWQuCiAgICAgLy8gQ29tcGF0aWJsZSB3aXRoIEJhdGlrL09wZXJhLgotICAg
IGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCisgICAgaWYgKGRl
Y29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCiAgICAgICAgIHJldHVy
biBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpICsgdGhpY2tuZXNzICogMS41ZjsKLSAgICBpZiAo
ZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpCisgICAgaWYgKGRlY29yYXRp
b24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkKICAgICAgICAgcmV0dXJuIHRoaWNr
bmVzczsKLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gp
CisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkK
ICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgKiA1IC8gOC4wZjsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwLjBmOwogfQogCi1zdGF0aWMg
aW5saW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uPiwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCitzdGF0aWMgaW5saW5lIGZsb2F0IHRoaWNr
bmVzc0ZvckRlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4sIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250KQogewogICAgIC8vIEZJWE1FOiBGb3IgU1ZHIEZvbnRzIHdlIG5lZWQg
dG8gdXNlIHRoZSBhdHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIDxmb250LWZhY2U+IGlmIHNwZWNp
ZmllZC4KICAgICAvLyBDb21wYXRpYmxlIHdpdGggQmF0aWsvT3BlcmEKQEAgLTQ3Nyw3ICs0Nzcs
NyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZp
bmluaW5nVGV4dERlY29yYXRpb24oTGVnYWN5SQogICAgIHJldHVybiAqcmVuZGVyZXI7CiB9CiAK
LXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9uLCBjb25zdCBTVkdU
ZXh0RnJhZ21lbnQmIGZyYWdtZW50KQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29y
YXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25M
aW5lPiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQogewogICAg
IGlmIChyZW5kZXJlcigpLnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFNWR0lubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNl
dDxUZXh0RAogICAgIH0KIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRp
b25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+IGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIFJlbmRl
ckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpCit2b2lkIFNWR0lubGluZVRleHRC
b3g6OnBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYgZnJhZ21lbnQsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIp
CiB7CiAgICAgQVNTRVJUKCFtX3BhaW50aW5nUmVzb3VyY2UpOwogICAgIEFTU0VSVCghcGFpbnRp
bmdSZXNvdXJjZU1vZGUoKS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAppbmRleCA1M2VmNDc2NWZlZDYzZjNjNGEwYjVmZjM4
MWE5Mjg2MmNiM2Q1NzFiLi4xMDY5Mjk0YmQ2OGNjZDRiNDE2ZmEzNjU4ZWNkMzM0ZDIyNWFkOWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
aApAQCAtODMsOCArODMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgcHJlcGFyZUdyYXBoaWNzQ29u
dGV4dEZvclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJiwgZmxvYXQgc2NhbGluZ0ZhY3Rv
ciwgY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGljc0NvbnRleHRB
ZnRlclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJik7CiAKLSAgICB2b2lkIHBhaW50RGVj
b3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+LCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmKTsKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShH
cmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+LCBjb25zdCBTVkdUZXh0
RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAg
ICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb25MaW5lPiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7CisgICAgdm9pZCBwYWludERl
Y29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBk
ZWNvcmF0aW9uUmVuZGVyZXIpOwogICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZy
YWdtZW50JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pOwog
ICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgUmVuZGVyU3R5bGUmIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQm
LCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBiNGM0ZmM0Yjk1
MDlmZTc5MjE2YWQzMTczZTFmY2QzNjQ1Zjc3OGI5Li5hMzY3NzhkZTk1ZjcwNjkyY2ZjMWI4YmQw
NDNlODljMzE2ZjM0ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVU
ZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hT
dHlsZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgaXNBbmNlc3RvckFuZFdpdGhp
bkJsb2NrKGNvbnN0IFJlbmRlcklubGluZSYgYW5jZXN0b3IsIGNvbnN0IFJlbmRlck8KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3Jh
dGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQm
IG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwg
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbikKK3N0YXRpYyB2b2lkIG1p
bkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6Okxp
bmVJdGVyYXRvciYgbGluZSwgZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1l
bnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4
dERlY29yYXRpb24pCiB7CiAgICAgZm9yIChhdXRvIHJ1biA9IGxpbmUtPmZpcnN0UnVuKCk7IHJ1
bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CiAgICAgICAgIGlmIChydW4tPnJlbmRlcmVy
KCkuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyB2b2lk
IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxpbmVJdGVyYXRvCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9y
VGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxp
bmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0
aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24pCitz
dGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElu
bGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9t
LCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uKQogewogICAgIGZvciAoYXV0byBydW4gPSBs
aW5lLT5maXJzdFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAg
ICBpZiAocnVuLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtODMsNyAr
ODMsNyBAQCBzdGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5l
KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcgogICAgIH0KIH0KIAotc3RhdGljIGNvbnN0
IFJlbmRlckVsZW1lbnQqIGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKGNvbnN0
IFJlbmRlclRleHQmIHJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNv
cmF0aW9uLCBib29sIGZpcnN0TGluZSkKK3N0YXRpYyBjb25zdCBSZW5kZXJFbGVtZW50KiBlbmNs
b3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJl
ciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb24sIGJvb2wgZmly
c3RMaW5lKQogewogICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIGN1cnJlbnQgPSByZW5kZXJlci5w
YXJlbnQoKTsKICAgICBkbyB7CkBAIC0xMzUsMTYgKzEzNSwxNiBAQCBmbG9hdCBjb21wdXRlVW5k
ZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4
dFVuZGVybAogICAgICAgICBBU1NFUlQodGV4dFJ1bik7CiAgICAgICAgIC8vIFBvc2l0aW9uIHVu
ZGVybGluZSByZWxhdGl2ZSB0byB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBlbGVtZW50
J3MgY29udGVudCBib3guCiAgICAgICAgIGF1dG8gbGluZSA9IHRleHRSdW4tPmxpbmUoKTsKLSAg
ICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4
dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb246OlVuZGVybGlu
ZSwgbGluZS0+aXNGaXJzdCgpKTsKKyAgICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0g
ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwg
VGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIGxpbmUtPmlzRmlyc3QoKSk7CiAgICAgICAg
IAogICAgICAgICBmbG9hdCBvZmZzZXQ7CiAgICAgICAgIGlmICh0ZXh0UnVuLT5yZW5kZXJlcigp
LnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICBvZmZz
ZXQgPSB0ZXh0UnVuLT5sb2dpY2FsVG9wKCk7Ci0gICAgICAgICAgICBtaW5Mb2dpY2FsVG9wRm9y
VGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0
RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICAgICAgICAgIG1pbkxvZ2ljYWxUb3BGb3JUZXh0
RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNv
cmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKICAgICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxv
Z2ljYWxUb3AoKSAtIG9mZnNldDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG9mZnNl
dCA9IHRleHRSdW4tPmxvZ2ljYWxCb3R0b20oKTsKLSAgICAgICAgICAgIG1heExvZ2ljYWxCb3R0
b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwgb2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIs
IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOworICAgICAgICAgICAgbWF4TG9naWNhbEJvdHRv
bUZvclRleHREZWNvcmF0aW9uTGluZShsaW5lLCBvZmZzZXQsIGRlY29yYXRpb25SZW5kZXJlciwg
VGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwogICAgICAgICAgICAgb2Zmc2V0IC09IHRl
eHRSdW4tPmxvZ2ljYWxCb3R0b20oKTsKICAgICAgICAgfQogICAgICAgICBhdXRvIGRlc2lyZWRP
ZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsSGVpZ2h0KCkgKyBnYXAgKyBzdGQ6Om1heChvZmZzZXQs
IDAuMGYpICsgdW5kZXJsaW5lT2Zmc2V0Lmxlbmd0aE9yKDApOwpAQCAtMTkwLDcgKzE5MCw3IEBA
IEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJT
dHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAKICAgICAvLyBUaGVzZSBtZXRyaWNzIG11c3QgbWF0
Y2ggd2hlcmUgdW5kZXJsaW5lcyBnZXQgZHJhd24uCiAgICAgLy8gRklYTUU6IFNoYXJlIHRoZSBj
b2RlIGluIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbigpIHNvIHdl
IGNhbiBqdXN0IHF1ZXJ5IGl0IGZvciB0aGUgcGFpbnRlZCBnZW9tZXRyeS4KLSAgICBpZiAoZGVj
b3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpIHsKKyAgICBpZiAoZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSB7CiAgICAgICAgIC8vIENvbXBlbnNh
dGUgZm9yIHRoZSBpbnRlZ3JhbCBjZWlsaW5nIGluIEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxp
bmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dCgpCiAgICAgICAgIGludCB1bmRlcmxp
bmVPZmZzZXQgPSAxOwogICAgICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9
IDE2OwpAQCAtMjA0LDcgKzIwNCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgICAg
ICAgICBvdmVyZmxvd1Jlc3VsdC5leHRlbmRUb3AoLXVuZGVybGluZU9mZnNldCk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUp
IHsKKyAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tl
VGhpY2tuZXNzKSk7CiAgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9
IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0
eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwogICAgICAg
ICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tu
ZXNzIC0gd2F2eU9mZnNldCk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNv
bnN0IEkKICAgICAgICAgb3ZlcmZsb3dSZXN1bHQuZXh0ZW5kVG9wKC1yZWN0LnkoKSk7CiAgICAg
ICAgIG92ZXJmbG93UmVzdWx0LmV4dGVuZEJvdHRvbShyZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAg
ICAgfQotICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSB7
CisgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB7
CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9r
ZVRoaWNrbmVzcykpOwogICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3Mg
PSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVT
dHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKICAgICAg
ICAgYXV0byBjZW50ZXIgPSAyICogbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQo
KSAvIDMgKyBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCBiZDg5M2VmZDdlOTU0N2JlZGQ3
NzllNDA1Zjk4ZTk1ZjJmYWRiMGVlLi4wOWI0ZDk2ZWI4ZjczMjM0YzQxOWFlY2JlOWU3YTk5NmU3
NjM1NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aFNpemUgY29udmVy
dFJhZGl1cyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5n
dGhQb2ludCBjb252ZXJ0UG9zaXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsK
ICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bj4gY29udmVydFRleHREZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
CisgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGNvbnZlcnRUZXh0RGVj
b3JhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBUIGNvbnZlcnROdW1iZXIoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NT
VmFsdWUmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVy
T3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIHNob3J0
IGNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENT
U1ZhbHVlJik7CkBAIC00MjMsNyArNDIzLDcgQEAgaW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXIKICAg
ICByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVu
Z3RoVHlwZTo6QXV0bykpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUmLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6
aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYWJh
MTA0MTNjZDg3ODliN2RhMzNhYzk2M2NiODBlMzEwMjJlMzg2ZS4uYzM0YWU0ZDc0YmI3YjRjYzg4
ZGIyNjU2NjUzMmQ2ZjBiNWMyOTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtOTUwNiw3ICs5NTA2LDcgQEAgc3RhdGljIE5TVGV4dEFsaWdubWVu
dCBuc1RleHRBbGlnbm1lbnRGcm9tUmVuZGVyU3R5bGUoY29uc3QgV2ViQ29yZTo6UmVuZGVyU3R5
bGUKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gdHlwaW5nU3R5bGUtPnN0eWxl
KCktPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1D
b250cm9sbGVyIHNldFRleHRJc1VuZGVybGluZWQ6dmFsdWUuY29udGFpbnMoInVuZGVybGluZSIp
XTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgW19wcml2YXRl
LT5fdGV4dFRvdWNoQmFySXRlbUNvbnRyb2xsZXIgc2V0VGV4dElzVW5kZXJsaW5lZDpzdHlsZS0+
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJs
aW5lKV07CisgICAgICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1D
b250cm9sbGVyIHNldFRleHRJc1VuZGVybGluZWQ6c3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpXTsKIAogICAgICAg
ICAgICAgICAgIENvbG9yIHRleHRDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvcik7CiAgICAgICAgICAgICAgICAgaWYgKHRleHRDb2xvci5pc1ZhbGlk
KCkpCg==
</data>
<flag name="review"
          id="468161"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444420</attachid>
            <date>2021-11-16 12:13:26 -0800</date>
            <delta_ts>2021-11-16 12:13:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232729-20211116121325.patch</filename>
            <type>text/plain</type>
            <size>51959</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk3ZDdiNDA2OWU0ODMz
M2QxYWUzNjMyNmE4NTZhMjM2NDYxYzVmNS4uY2I2ZWY4NGM5MTAyNzE0NWJlZWZkZjk0MTQzMDAz
NTVlZDc3MDVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTExLTE2ICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE15bGVzIEMuIE1heGZpZWxkLgorCisgICAgICAgIFNwbGl0IHVwIHBhdGNoIGJ5IFRpbSBO
Z3V5ZW46IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwODMuIFRo
aXMgcGF0Y2gKKyAgICAgICAgcmVuYW1lcyBlbnVtIFRleHREZWNvcmF0aW9uIHRvIFRleHREZWNv
cmF0aW9uTGluZSwgdG8gYmUgbW9yZSBpbiBsaW5lIHdpdGggdGhlIGN1cnJlbnQgc3BlYy4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNVbmRlcmxpbmUg
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlP
YmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZSk6CisgICAgICAgICog
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uTGluZUZsYWdzVG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3Bl
cnR5SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdz
VG9DU1NWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRp
bmdBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5
bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZFRvVGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2Zmc2V0Rm9yRGVjb3JhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjp0aGlja25lc3NGb3JEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29y
YXRpb25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Om1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVj
b3JhdGlvbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4
dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZU9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKToKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24pOgorCiAyMDIxLTEx
LTExICBSYWNoZWwgR2luc2JlcmcgIDxyZ2luc2JlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGluIFdlYkNvcmUgZm9yIHdlYiBhcHAgbWFuaWZlc3QgaWNvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCA5YjcwOTIzNWUwNTFlNWM1MDE4NDdiYTc4YzU2Yjg3MDYw
OWNlNDE5Li42ZTcxYWQzODJlMjdjODMwYTUyNWFkOTUwZjMzM2Y0OWEyZTE1Y2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTEtMTYgIE5pa29s
YW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1l
IFRleHREZWNvcmF0aW9uIHRvIFRleHREZWNvcmF0aW9uTGluZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNzI5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTXlsZXMgQy4gTWF4ZmllbGQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgdXBkYXRlVGV4dFRvdWNoQmFyXSk6CisKIDIwMjEtMTEtMTEgIE5p
a29sYW9zIE1vdWNodGFyaXMgIDxubW91Y2h0YXJpc0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBzY3JvbGwgZ3JhbnVsYXJpdHkgYW4gZW51bSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggNjM3MGRmOTVjY2IxNjBkZTRkNjliYmQzYWQyYjBkYWI0NTc2ZWVmZC4uYzRlMjZhMWI3MjJh
MTg5ZThjMzBhNmVmMDY2MDFhYTg3N2JkNjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0z
ODU4LDcgKzM4NTgsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhhc1VuZGVy
bGluZSgpIGNvbnN0CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5F
ZmZlY3QoKS5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICByZXR1cm4g
bV9yZW5kZXJlci0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6Om5hbWVGb3JNU0FBKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcAppbmRleCA4YTg3YWMzYjFiMjBkN2U3M2QxMzYwM2UxMjI3YjNlYjExYWI1OGEw
Li5hM2Q3ZTgyMWZhMzdjYjIwNWQzZjM2YmU4NjNlZWEwOGEzNWI3YTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBzdGF0aWMgQXRr
QXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0
IEFjY2Vzc2liaWxpdAogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1
bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0pVU1RJRklDQVRJ
T04pLCAiZmlsbCIpOwogICAgIH0KIAotICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0
KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfVU5ERVJM
SU5FKSwgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVGV4dERlY29yYXRpb246OlVuZGVybGlu
ZSkgPyAic2luZ2xlIiA6ICJub25lIik7CisgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVT
ZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9VTkRF
UkxJTkUpLCAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVu
ZGVybGluZSkgPyAic2luZ2xlIiA6ICJub25lIik7CiAKICAgICByZXN1bHQgPSBhZGRUb0F0a0F0
dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9B
VFRSX1NUWUxFKSwgc3R5bGUtPmZvbnRDYXNjYWRlKCkuaXRhbGljKCkgPyAiaXRhbGljIiA6ICJu
b3JtYWwiKTsKIAotICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRr
X3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU1RSSUtFVEhST1VHSCksIChz
dHlsZS0+dGV4dERlY29yYXRpb24oKSAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1
bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1NUUklLRVRIUk9V
R0gpLCAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVU
aHJvdWdoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCiAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRy
aWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRU
Ul9JTlZJU0lCTEUpLCAoc3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4p
ID8gInRydWUiIDogImZhbHNlIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbQppbmRleCBhZTY1ZTQ5YWFkMDZiYmZhMzFiOGRjOTE4YjA1MDAwZWY0NzBhZjYzLi4z
N2Q2Y2M2MmE5NTYxODQ4MTVkNGJhNmE0OWM5ZTcxNWRiMjlmY2Y4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZv
aWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nLCBSZW4KICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEZvbnQoYXR0clN0cmluZywg
c3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgpLCByYW5nZSk7CiAK
ICAgICBhdXRvIGRlY29yID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBp
ZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKQorICAgIGlmIChkZWNvciAmIFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKQogICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dE51bWJlcihhdHRyU3RyaW5nLCBVSUFjY2Vzc2liaWxpdHlUb2tlblVuZGVybGluZSwgQFlFUywg
cmFuZ2UpOwogCiAgICAgLy8gQWRkIGNvZGUgY29udGV4dCBpZiB0aGlzIG5vZGUgaXMgd2l0aGlu
IGEgPGNvZGU+IGJsb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpp
bmRleCBhMWQ2NWNjMGEwYWFjMTEzNzBmZDM3YWVkZTIyYWI0ODc0Y2Q2YWE1Li4xMWIxNmI5YTNl
MWZhNzZkZDI0YjVkMDU4ZTFiNzE0NTg4MzcyNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQpAQCAtODc5LDI2ICs4NzksMjUgQEAgc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5n
LCBSZW4KICAgICAKICAgICAvLyBzZXQgdW5kZXJsaW5lIGFuZCBzdHJpa2V0aHJvdWdoCiAgICAg
YXV0byBkZWNvciA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7Ci0gICAgaWYgKCEo
ZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSkgeworICAgIGlmICghKGRlY29yICYg
VGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7CiAgICAgICAgIFthdHRyU3RyaW5nIHJl
bW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlIHJhbmdl
OnJhbmdlXTsKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJp
bGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAgfQotICAg
IAotICAgIGlmICghKGRlY29yICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgeworICAg
IGlmICghKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKICAgICAg
ICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91
Z2hUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3Zl
QXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUg
cmFuZ2U6cmFuZ2VdOwogICAgIH0KIAotICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUgfHwgZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpIHsKKyAgICBp
ZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSB8fCBkZWNvciAmIFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0
aGUgdW5kZXJsaW5lIHN0eWxlIGJlIHJlcG9ydGVkIGhlcmU/CiAgICAgICAgIGF1dG8gZGVjb3Jh
dGlvblN0eWxlcyA9IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoKnJl
bmRlcmVyLCBkZWNvcik7CiAKLSAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb246OlVu
ZGVybGluZSkgeworICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVy
bGluZSkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwog
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vz
c2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlv
blN0eWxlcy51bmRlcmxpbmVDb2xvcikuZ2V0KCksIHJhbmdlKTsKICAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSB7CisK
KyAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgewog
ICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsKICAgICAg
ICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmls
aXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9u
U3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IpLmdldCgpLCByYW5nZSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4
IDc5NTc3ZjMyNmY5MmJkMWY0OTFlMjhmNjQ1MDUyMTU0Y2E1YWQ0ZDEuLjJhMDc2YmQxZjUwY2Q1
NzBlM2Q4MTA0MTkzNGQwZjIyYjE4YmUyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMjcwOSw3ICsyNzA5LDcgQEAgQ1NT
UHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJN
YXAoKQogICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8UnVieVBvc2l0aW9uPihD
U1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgJlJlbmRlclN0eWxlOjpydWJ5UG9zaXRpb24s
ICZSZW5kZXJTdHlsZTo6c2V0UnVieVBvc2l0aW9uKSwKICAgICAgICAgbmV3IERpc2NyZXRlUHJv
cGVydHlXcmFwcGVyPFRhYmxlTGF5b3V0VHlwZT4oQ1NTUHJvcGVydHlUYWJsZUxheW91dCwgJlJl
bmRlclN0eWxlOjp0YWJsZUxheW91dCwgJlJlbmRlclN0eWxlOjpzZXRUYWJsZUxheW91dCksCiAg
ICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxUZXh0QWxpZ25Nb2RlPihDU1NQcm9w
ZXJ0eVRleHRBbGlnbiwgJlJlbmRlclN0eWxlOjp0ZXh0QWxpZ24sICZSZW5kZXJTdHlsZTo6c2V0
VGV4dEFsaWduKSwKLSAgICAgICAgbmV3IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4+KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25MaW5lLCAmUmVuZGVy
U3R5bGU6OnRleHREZWNvcmF0aW9uLCAmUmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uKSwK
KyAgICAgICAgbmV3IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbkxpbmU+PihDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uTGluZSwgJlJlbmRlclN0eWxlOjp0
ZXh0RGVjb3JhdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvbiksCiAgICAgICAg
IG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxUZXh0RGVjb3JhdGlvblN0eWxlPihDU1NQcm9w
ZXJ0eVRleHREZWNvcmF0aW9uU3R5bGUsICZSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb25TdHls
ZSwgJlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvblN0eWxlKSwKICAgICAgICAgbmV3IERp
c2NyZXRlUHJvcGVydHlXcmFwcGVyPGNvbnN0IENvbG9yJj4oQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvciwgJlJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNDb2xvciwgJlJlbmRlclN0
eWxlOjpzZXRUZXh0RW1waGFzaXNDb2xvciksCiAgICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5
V3JhcHBlcjxPcHRpb25TZXQ8VGV4dEVtcGhhc2lzUG9zaXRpb24+PihDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1Bvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc1Bvc2l0aW9u
LCAmUmVuZGVyU3R5bGU6OnNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNWQ5ZmE3
ZGJiYmE2NGY1NjA5OTYwMGI3YjZkMDhjOTA3YWY2YTkxMi4uMjliOTc4MTVmODYwMDhlZDE5OWQ4
MDY1ODY3ZGEwYjdjOGNiZTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE2MTMsMTYgKzE2MTMsMTYgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdG91Y2hBY3Rpb25GbGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRvdWNo
QWN0aW9uPiB0b3VjaEFjdGkKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFJlZjxDU1NW
YWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbikKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRl
eHREZWNvcmF0aW9uTGluZUZsYWdzVG9DU1NWYWx1ZShPcHRpb25TZXQ8VGV4dERlY29yYXRpb25M
aW5lPiB0ZXh0RGVjb3JhdGlvbkxpbmUpCiB7CiAgICAgYXV0byYgY3NzVmFsdWVQb29sID0gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKTsKICAgICAvLyBCbGluayB2YWx1ZSBpcyBpZ25vcmVkLgog
ICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAg
ICBpZiAodGV4dERlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKQorICAgIGlm
ICh0ZXh0RGVjb3JhdGlvbkxpbmUgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkKICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVVbmRlcmxpbmUpKTsKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlv
bjo6T3ZlcmxpbmUpCisgICAgaWYgKHRleHREZWNvcmF0aW9uTGluZSAmIFRleHREZWNvcmF0aW9u
TGluZTo6T3ZlcmxpbmUpCiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlT3ZlcmxpbmUpKTsKLSAgICBpZiAodGV4dERlY29yYXRp
b24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCisgICAgaWYgKHRleHREZWNvcmF0aW9u
TGluZSAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpCiAgICAgICAgIGxpc3QtPmFw
cGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluZVRocm91
Z2gpKTsKIAogICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCkBAIC0zMjc2LDcgKzMyNzYsNyBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJ
blN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWdu
OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0
QWxpZ24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKLSAgICAg
ICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS50
ZXh0RGVjb3JhdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlv
bkxpbmVGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb24oKSk7CiAjaWYgRU5BQkxF
KENTUzNfVEVYVCkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRBbGlnbkxhc3Q6
CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRleHRB
bGlnbkxhc3QoKSk7CkBAIC0zMjg2LDcgKzMyODYsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0
eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb246CiAgICAgICAg
ICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKHdl
YmtpdFRleHREZWNvcmF0aW9uU2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb25MaW5lOgotICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHREZWNvcmF0
aW9uRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uKCkpOworICAgICAgICAgICAg
cmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9uTGluZUZsYWdzVG9DU1NWYWx1ZShzdHlsZS50ZXh0
RGVjb3JhdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uU3R5
bGU6CiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25TdHlsZUZsYWdzVG9D
U1NWYWx1ZShzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VGV4dERlY29yYXRpb25Db2xvcjoKQEAgLTMzMDIsNyArMzMwMiw3IEBAIFJlZlB0cjxD
U1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUo
Y29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblRo
aWNrbmVzczoKICAgICAgICAgICAgIHJldHVybiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzc1RvQ1NT
VmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKLSAgICAgICAgICAgIHJldHVy
biByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHlsZS50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpKTsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkxp
bmVGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgogICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcigmc3R5bGUsIHN0eWxlLnRleHRGaWxsQ29sb3Io
KSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IDY2
NTM5MjQ0NTFmZjUyN2JhZGRmZGE1ZjIwNDc2OGIzNWQ4Y2Y1MGYuLmMzNGYzNWIxYzUwYjE5NTk2
NzhhNDc1YTJiYTM1NzI2Njc4MjczMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtMjQxMiwyNyArMjQxMiwyNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dEp1c3RpZnkoKSBjb25zdAog
fQogI2VuZGlmIC8vIENTUzNfVEVYVAogCi10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPigpIGNvbnN0Cit0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uTGluZT4oKSBjb25zdAogewogICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBz
d2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAg
ICByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB7IH07CisgICAgICAgIHJldHVybiBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB7IH07CiAgICAgY2FzZSBDU1NWYWx1ZVVuZGVy
bGluZToKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmU7CisgICAgICAg
IHJldHVybiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZTsKICAgICBjYXNlIENTU1ZhbHVl
T3ZlcmxpbmU6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmU7CisgICAg
ICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lOwogICAgIGNhc2UgQ1NTVmFs
dWVMaW5lVGhyb3VnaDoKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3Vn
aDsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2g7CiAgICAg
Y2FzZSBDU1NWYWx1ZUJsaW5rOgotICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb246OkJsaW5r
OworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25MaW5lOjpCbGluazsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB7IH07CisgICAgcmV0dXJuIE9wdGlv
blNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHsgfTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGM2NzEwMjI3ZGRkMTRmNTA2ZDhmNTIwYzBlODk2
Y2M5Y2Q0ZTY5ZGIuLjlmYmUxYjYwYzNkNjA0NjQyNzFmZDY3NGZmMzUwNTJlZWM0YjhiNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQwOTcsOSArNDA5Nyw5IEBAIEZvbnRBdHRy
aWJ1dGVzIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gZGVjb3JhdGlvbiA9IHN0eWxlLT50ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCgpOwotICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0
aW9uOjpMaW5lVGhyb3VnaCkKKyAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlv
bkxpbmU6OkxpbmVUaHJvdWdoKQogICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJv
dWdoID0gdHJ1ZTsKLSAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6VW5k
ZXJsaW5lKQorICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5k
ZXJsaW5lKQogICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUgPSB0cnVlOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDE2NDc2NmRjMzI1Mzc1ZTdlYjFmOGE3NWRiYWNkNDIyMjEzMGZkN2QuLmQ0OGUxMWM5NmI3
ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzODAsOSArMjM4MCw5IEBAIEF0dHJpYnV0
ZWRTdHJpbmcgZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdl
LCBJbmNsdWRlSW1hZ2VzCiAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAg
aWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvbjo6VW5k
ZXJsaW5lKQorICAgICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9y
S2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICAgICAgaWYgKHN0eWxlLnRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCisg
ICAgICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCkKICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVTaW5nbGVdIGZvcktleTpOU1N0
cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOwogICAgICAgICBpZiAoYXV0byBmb250ID0g
c3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgpKQogICAgICAgICAg
ICAgW2F0dHJzIHNldE9iamVjdDp0b05TRm9udChmb250KSBmb3JLZXk6TlNGb250QXR0cmlidXRl
TmFtZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2Vk
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAK
aW5kZXggMDQ3ZjAyYTE3OWZhNTYxM2JkODNhNmY1Nzk3OWJmNmIxNDA0MjZlMS4uZGIyYzM2M2Nm
ZTE1NzM2NmY3ZmJlMmFhN2EyNjZkZTJmYjlmOGU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcApAQCAtNTcsMTUgKzU3LDE1IEBAIHN0YXRpYyBT
dHlsZWRNYXJrZWRUZXh0IHJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQoY29uc3QgTWFya2VkVGV4
dCYgbWFya2VkVGV4dCwKICAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlvblN0eWxlID0gcmVuZGVy
U3R5bGUtPnRleHREZWNvcmF0aW9uU3R5bGUoKTsKICAgICAgICAgICAgIGF1dG8gZGVjb3JhdGlv
bnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKIAotICAgICAgICAg
ICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpKSB7
CisgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHls
ZXMudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVj
b3JhdGlvblN0eWxlcy51bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlv
bjo6T3ZlcmxpbmUpKSB7CisgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4
dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZUNvbG9yID0gY29sb3I7CiAgICAgICAgICAgICAgICAg
c3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHls
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpKSB7CisgICAgICAgICAgICBpZiAoZGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKICAgICAgICAg
ICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9yID0gY29s
b3I7CiAgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGluZXRocm91
Z2hTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKaW5kZXggNTQ2YTRj
Y2JiNDU5YTVmNWYwOWQ2NGJkZmQ1MmJhZTRhNTZiNTM3ZS4uOGM1ZGM2ZjM1YjFlMTAzOTQyMjBm
ZTBkMWEwNjVjMmI3OWU2NjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCBib29sIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYgb3RoZXIp
IGNvbnN0CiAgICAgICAgICYmIHVuZGVybGluZVN0eWxlID09IG90aGVyLnVuZGVybGluZVN0eWxl
ICYmIG92ZXJsaW5lU3R5bGUgPT0gb3RoZXIub3ZlcmxpbmVTdHlsZSAmJiBsaW5ldGhyb3VnaFN0
eWxlID09IG90aGVyLmxpbmV0aHJvdWdoU3R5bGU7CiB9CiAKLVRleHREZWNvcmF0aW9uUGFpbnRl
cjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVy
ZXIsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBzdGQ6Om9wdGlv
bmFsPFN0eWxlcz4gc3R5bGVzKQorVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlv
blBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b25MaW5lPiBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGJvb2wgaXNG
aXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4g
c3R5bGVzKQogICAgIDogbV9jb250ZXh0IHsgY29udGV4dCB9CiAgICAgLCBtX2RlY29yYXRpb25z
IHsgZGVjb3JhdGlvbnMgfQogICAgICwgbV93YXZ5T2Zmc2V0IHsgd2F2eU9mZnNldEZyb21EZWNv
cmF0aW9uKCkgfQpAQCAtMjA3LDE0ICsyMDcsMTQgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwK
ICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRleHREZWNv
cmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCks
IGZvbnRNZXRyaWNzKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwog
Ci0gICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKFRleHREZWNvcmF0aW9uIGRlY29yYXRp
b24sIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSB7CisgICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKFRleHRE
ZWNvcmF0aW9uTGluZSBkZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlLCBjb25z
dCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgewogICAgICAgICBtX2NvbnRl
eHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IpOwogCiAgICAgICAgIGF1dG8gc3Ryb2tlU3R5bGUgPSB0
ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHlsZSk7CiAKICAgICAgICAgaWYgKHN0
eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpCiAgICAgICAgICAgICBzdHJva2VXYXZ5
VGV4dERlY29yYXRpb24obV9jb250ZXh0LCByZWN0LCBtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRQ
aXhlbFNpemUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRp
b246OlVuZGVybGluZSB8fCBkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkg
eworICAgICAgICBlbHNlIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uTGluZTo6VW5k
ZXJsaW5lIHx8IGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkgewog
ICAgICAgICAgICAgaWYgKChtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXBJbmsoKSA9PSBU
ZXh0RGVjb3JhdGlvblNraXBJbms6OkF1dG8gfHwgbV9saW5lU3R5bGUudGV4dERlY29yYXRpb25T
a2lwSW5rKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpBbGwpICYmIG1faXNIb3Jpem9udGFs
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIEZsb2F0UmVjdCB1bmRlcmxpbmVCb3VuZGluZ0JveCA9IG1f
Y29udGV4dC5jb21wdXRlVW5kZXJsaW5lQm91bmRzRm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcp
OwpAQCAtMjI5LDE0ICsyMjksMTQgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50
VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmwKICAgICAgICAg
ICAgICAgICBtX2NvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHJlY3QsIG1faXNQcmludGluZywgc3R5
bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6RG91YmxlLCBzdHJva2VTdHlsZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVjb3JhdGlvbiA9
PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpOworICAgICAgICAgICAgQVNTRVJUKGRlY29y
YXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCk7CiAgICAgICAgICAgICBt
X2NvbnRleHQuZHJhd0xpbmVGb3JUZXh0KHJlY3QsIG1faXNQcmludGluZywgc3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6RG91YmxlLCBzdHJva2VTdHlsZSk7CiAgICAgICAgIH0KICAgICB9
OwogCi0gICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYgKCFtX2RlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpIHx8IG1fc3R5bGVzLnVu
ZGVybGluZUNvbG9yLmlzT3BhcXVlKCkpCi0gICAgICAgICYmICghbV9kZWNvcmF0aW9ucy5jb250
YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpIHx8IG1fc3R5bGVzLm92ZXJsaW5lQ29sb3Iu
aXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNv
cmF0aW9uOjpMaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRocm91Z2hDb2xvci5pc09wYXF1
ZSgpKTsKKyAgICBib29sIGFyZUxpbmVzT3BhcXVlID0gIW1faXNQcmludGluZyAmJiAoIW1fZGVj
b3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpIHx8IG1fc3R5
bGVzLnVuZGVybGluZUNvbG9yLmlzT3BhcXVlKCkpCisgICAgICAgICYmICghbV9kZWNvcmF0aW9u
cy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB8fCBtX3N0eWxlcy5vdmVy
bGluZUNvbG9yLmlzT3BhcXVlKCkpCisgICAgICAgICYmICghbV9kZWNvcmF0aW9ucy5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3Vn
aENvbG9yLmlzT3BhcXVlKCkpOwogCiAgICAgZmxvYXQgZXh0cmFPZmZzZXQgPSAwOwogICAgIGJv
b2wgY2xpcHBpbmcgPSAhYXJlTGluZXNPcGFxdWUgJiYgbV9zaGFkb3cgJiYgbV9zaGFkb3ctPm5l
eHQoKTsKQEAgLTI3NywyOCArMjc3LDI4IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpw
YWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUaGVzZSBkZWNvcmF0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHZp
c3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygp
LgotICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5k
ZXJsaW5lKSkgeworICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbkxpbmU6OlVuZGVybGluZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHRleHREZWNvcmF0aW9u
QmFzZUZvbnRTaXplID0gMTY7CiAgICAgICAgICAgICBhdXRvIGRlZmF1bHRHYXAgPSBtX2xpbmVT
dHlsZS5jb21wdXRlZEZvbnRTaXplKCkgLyB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZTsKICAg
ICAgICAgICAgIGZsb2F0IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobV9saW5lU3R5
bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZz
ZXQoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV90ZXh0Qm94LCBkZWZhdWx0R2FwKTsK
ICAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAg
ICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERl
Y29yYXRpb25UaGlja25lc3MpKTsKICAgICAgICAgICAgIHJlY3QubW92ZSgwLCBvZmZzZXQgKyB3
YXZ5T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbjo6
VW5kZXJsaW5lLCBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSwgbV9zdHlsZXMudW5kZXJsaW5lQ29s
b3IsIHJlY3QpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uTGlu
ZTo6VW5kZXJsaW5lLCBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSwgbV9zdHlsZXMudW5kZXJsaW5l
Q29sb3IsIHJlY3QpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKKyAgICAgICAgaWYgKG1fZGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKICAgICAgICAgICAg
IGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0
aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAgICAgRmxvYXRSZWN0
IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVjb3JhdGlvblRoaWNr
bmVzcykpOwogICAgICAgICAgICAgZmxvYXQgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0g
VGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShtX2xpbmVT
dHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsKICAgICAgICAgICAgIHJlY3Qu
bW92ZSgwLCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgLSB0ZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyAtIHdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNv
cmF0aW9uOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9zdHlsZXMub3Zlcmxp
bmVDb2xvciwgcmVjdCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRp
b25MaW5lOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9zdHlsZXMub3Zlcmxp
bmVDb2xvciwgcmVjdCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgeworICAgICAgICBpZiAobV9kZWNv
cmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkgewogICAg
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwogICAgICAgICAgICAgZmxvYXQgYXV0b1RleHREZWNv
cmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRv
KCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKTsK
ICAgICAgICAgICAgIGF1dG8gY2VudGVyID0gMiAqIGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkg
LyAzICsgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC8gMjsKICAgICAgICAgICAgIHJlY3Qu
bW92ZSgwLCBjZW50ZXIgLSB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDIpOwotICAgICAgICAg
ICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCwgbV9zdHlsZXMu
bGluZXRocm91Z2hTdHlsZSwgbV9zdHlsZXMubGluZXRocm91Z2hDb2xvciwgcmVjdCk7CisgICAg
ICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCwg
bV9zdHlsZXMubGluZXRocm91Z2hTdHlsZSwgbV9zdHlsZXMubGluZXRocm91Z2hDb2xvciwgcmVj
dCk7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChzaGFkb3cpOwogCkBAIC0zMDgsMjQgKzMwOCwy
NCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25z
dCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAogICAgICAgICBtX2NvbnRleHQuY2xlYXJTaGFk
b3coKTsKIH0KIAotc3RhdGljIHZvaWQgY29sbGVjdFN0eWxlc0ZvclJlbmRlcmVyKFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6U3R5bGVzJiByZXN1bHQsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gcmVtYWluaW5nRGVjb3JhdGlvbnMsIGJvb2wg
Zmlyc3RMaW5lU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lkKQorc3RhdGljIHZvaWQgY29sbGVjdFN0
eWxlc0ZvclJlbmRlcmVyKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiByZXN1bHQsIGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+
IHJlbWFpbmluZ0RlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlLCBQc2V1ZG9JZCBwc2V1
ZG9JZCkKIHsKLSAgICBhdXRvIGV4dHJhY3REZWNvcmF0aW9ucyA9IFsmXSAoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zKSB7Cisg
ICAgYXV0byBleHRyYWN0RGVjb3JhdGlvbnMgPSBbJl0gKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnMpIHsKICAgICAgICAg
YXV0byBjb2xvciA9IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6ZGVjb3JhdGlvbkNvbG9yKHN0eWxl
KTsKICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUgPSBzdHlsZS50ZXh0RGVjb3JhdGlvblN0
eWxlKCk7CiAKLSAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
OjpVbmRlcmxpbmUpKSB7Ci0gICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUo
VGV4dERlY29yYXRpb246OlVuZGVybGluZSk7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250
YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpIHsKKyAgICAgICAgICAgIHJlbWFp
bmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CiAg
ICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJl
c3VsdC51bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSkgewot
ICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uOjpP
dmVybGluZSk7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlv
bkxpbmU6Ok92ZXJsaW5lKSkgeworICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVt
b3ZlKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpOwogICAgICAgICAgICAgcmVzdWx0Lm92
ZXJsaW5lQ29sb3IgPSBjb2xvcjsKICAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZVN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250
YWlucyhUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpKSB7Ci0gICAgICAgICAgICByZW1haW5p
bmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKTsKKyAgICAg
ICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91
Z2gpKSB7CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29y
YXRpb25MaW5lOjpMaW5lVGhyb3VnaCk7CiAgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hD
b2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoU3R5bGUgPSBkZWNv
cmF0aW9uU3R5bGU7CiAgICAgICAgIH0KQEAgLTM2OCwxOSArMzY4LDE5IEBAIENvbG9yIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6ZGVjb3JhdGlvbkNvbG9yKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKICAgICByZXR1cm4gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVy
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25Db2xvcik7CiB9CiAKLU9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4gVGV4dERlY29yYXRpb25QYWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZv
clN0eWxlKGNvbnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiBzdHlsZSkKK09wdGlv
blNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29y
YXRpb25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxl
cyYgc3R5bGUpCiB7Ci0gICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9uczsK
KyAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9uczsKICAgICBpZiAo
c3R5bGUudW5kZXJsaW5lQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBkZWNvcmF0aW9ucy5hZGQo
VGV4dERlY29yYXRpb246OlVuZGVybGluZSk7CisgICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0
RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CiAgICAgaWYgKHN0eWxlLm92ZXJsaW5lQ29sb3Iu
aXNWYWxpZCgpKQotICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb246Ok92ZXJs
aW5lKTsKKyAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uTGluZTo6T3Zlcmxp
bmUpOwogICAgIGlmIChzdHlsZS5saW5ldGhyb3VnaENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAg
ZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7CisgICAgICAgIGRl
Y29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKTsKICAgICByZXR1
cm4gZGVjb3JhdGlvbnM7CiB9OwogCi1hdXRvIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5bGVz
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNl
dWRvSWQgcHNldWRvSWQpIC0+IFN0eWxlcworYXV0byBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnN0
eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbkxpbmU+IHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0
eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkgLT4gU3R5bGVzCiB7CiAgICAgU3R5bGVzIHJlc3VsdDsK
ICAgICBjb2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIocmVzdWx0LCByZW5kZXJlciwgcmVxdWVzdGVk
RGVjb3JhdGlvbnMsIGZhbHNlLCBwc2V1ZG9JZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggZWFhZDQwODM1MTBmODNkOGM0ZDRi
MmE5ZDIyN2M1Mjk1YTdkZjE0My4uZTc0MWE1OTk3N2JmYjNhOTJmNDM3NGI5MTk4NWUxMzE2Yjgx
Y2E1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBUZXh0UnVuOwogY2xhc3MgVGV4dERlY29y
YXRpb25QYWludGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwotICAgIFRleHREZWNv
cmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+
IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3Qg
Rm9udENhc2NhZGUmLCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4gPSBzdGQ6Om51bGxvcHQpOworICAg
IFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb25MaW5lPiBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJz
dExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgc3RkOjpvcHRpb25hbDxTdHlsZXM+ID0gc3RkOjpu
dWxsb3B0KTsKICAgICAKICAgICB2b2lkIHNldFRleHRCb3goSW5saW5lSXRlcmF0b3I6OlRleHRC
b3hJdGVyYXRvciB0ZXh0Qm94KSB7IG1fdGV4dEJveCA9IHRleHRCb3g7IH0KICAgICB2b2lkIHNl
dElzSG9yaXpvbnRhbChib29sIGlzSG9yaXpvbnRhbCkgeyBtX2lzSG9yaXpvbnRhbCA9IGlzSG9y
aXpvbnRhbDsgfQpAQCAtNjYsMTIgKzY2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgVGV4dERlY29y
YXRpb25TdHlsZSBsaW5ldGhyb3VnaFN0eWxlOwogICAgIH07CiAgICAgc3RhdGljIENvbG9yIGRl
Y29yYXRpb25Db2xvcihjb25zdCBSZW5kZXJTdHlsZSYpOwotICAgIHN0YXRpYyBPcHRpb25TZXQ8
VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUoY29uc3QgU3R5
bGVzJik7Ci0gICAgc3RhdGljIFN0eWxlcyBzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJP
YmplY3QmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHJlcXVlc3RlZERlY29yYXRpb25zLCBi
b29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwor
ICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdEZvclN0eWxlKGNvbnN0IFN0eWxlcyYpOworICAgIHN0YXRpYyBTdHlsZXMgc3R5bGVz
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9u
TGluZT4gcmVxdWVzdGVkRGVjb3JhdGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUgPSBmYWxzZSwg
UHNldWRvSWQgPSBQc2V1ZG9JZDo6Tm9uZSk7CiAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250
ZXh0JiBtX2NvbnRleHQ7Ci0gICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBtX2RlY29yYXRp
b25zOworICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IG1fZGVjb3JhdGlvbnM7CiAg
ICAgZmxvYXQgbV93YXZ5T2Zmc2V0OwogICAgIGZsb2F0IG1fd2lkdGggeyAwIH07CiAgICAgRmxv
YXRQb2ludCBtX2JveE9yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKaW5kZXggMGE5YzFkNGZmZTU0N2I4ZTFhOTdjYzZlOGY5NWIwOTlhNzNiMTE1
ZC4uYTJjMDgxZTQ3ZGE1ZDgzNDI0ZTkyY2E2OGJlNzgzZTg1NjJkMDY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTM3MCw4ICszNzAsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoJiB0ZXh0SW5kZW50KCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlSW5oZXJpdGVkRGF0YS0+aW5kZW50OyB9CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxp
Z24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0QWxpZ25Nb2RlPihtX2luaGVyaXRl
ZEZsYWdzLnRleHRBbGlnbik7IH0KICAgICBUZXh0VHJhbnNmb3JtIHRleHRUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhbnNmb3JtPihtX2luaGVyaXRlZEZsYWdz
LnRleHRUcmFuc2Zvcm0pOyB9Ci0gICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bj46OmZyb21SYXcobV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMpOyB9Ci0gICAgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj46OmZyb21SYXcobV92aXN1YWxEYXRhLT50ZXh0RGVjb3Jh
dGlvbik7IH0KKyAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+
Ojpmcm9tUmF3KG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zKTsgfQorICAgIE9wdGlv
blNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT46OmZyb21SYXcobV92aXN1YWxEYXRhLT50ZXh0
RGVjb3JhdGlvbik7IH0KICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5
bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQogICAgIFRleHREZWNv
cmF0aW9uU2tpcEluayB0ZXh0RGVjb3JhdGlvblNraXBJbmsoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0RGVjb3JhdGlvblNraXBJbms+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRE
ZWNvcmF0aW9uU2tpcEluayk7IH0KICAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdGV4dFVuZGVy
bGluZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBv
c2l0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24pOyB9CkBA
IC05ODMsOSArOTgzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dEluZGVudChMZW5ndGgm
JiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIFdURk1vdmUo
bGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldFRleHRBbGlnbihUZXh0QWxpZ25Nb2RlIHYpIHsgbV9p
bmhlcml0ZWRGbGFncy50ZXh0QWxpZ24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odik7IH0KICAg
ICB2b2lkIHNldFRleHRUcmFuc2Zvcm0oVGV4dFRyYW5zZm9ybSB2KSB7IG1faW5oZXJpdGVkRmxh
Z3MudGV4dFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQotICAgIHZvaWQg
YWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHYp
IHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgfD0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHYudG9SYXcoKSk7IH0KLSAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0
aW9ucyA9IHYudG9SYXcoKTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb24oT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPiB2KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCB0ZXh0RGVjb3JhdGlv
biwgdi50b1JhdygpKTsgfQorICAgIHZvaWQgYWRkVG9UZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dERl
Y29yYXRpb25zIHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2LnRvUmF3KCkpOyB9CisgICAgdm9p
ZCBzZXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdChPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5l
PiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zID0gdi50b1JhdygpOyB9Cisg
ICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB2
KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCB0ZXh0RGVjb3JhdGlvbiwgdi50b1JhdygpKTsgfQog
ICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIHYpIHsg
U0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblN0eWxlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXBJ
bmsoVGV4dERlY29yYXRpb25Ta2lwSW5rIHNraXBJbmspIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblNraXBJbmssIHN0YXRpY19jYXN0PHVuc2lnbmVkPihza2lw
SW5rKSk7IH0KICAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQb3NpdGlvbihUZXh0VW5kZXJsaW5l
UG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5k
ZXJsaW5lUG9zaXRpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbikpOyB9CkBAIC0x
NjEyLDcgKzE2MTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuaW5nIC0xMDAlIHBlcmNlbnQg
aGVyZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNldC4KICAgICBzdGF0aWMgTGVuZ3Ro
IGluaXRpYWxMaW5lSGVpZ2h0KCkgeyByZXR1cm4gTGVuZ3RoKC0xMDAuMGYsIExlbmd0aFR5cGU6
OlBlcmNlbnQpOyB9CiAgICAgc3RhdGljIFRleHRBbGlnbk1vZGUgaW5pdGlhbFRleHRBbGlnbigp
IHsgcmV0dXJuIFRleHRBbGlnbk1vZGU6OlN0YXJ0OyB9Ci0gICAgc3RhdGljIE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbj4gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPiB7IH07IH0KKyAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT4gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uTGluZT4geyB9OyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uU3R5bGUgaW5p
dGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpT
b2xpZDsgfQogICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblNraXBJbmsgaW5pdGlhbFRleHREZWNv
cmF0aW9uU2tpcEluaygpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uU2tpcEluazo6QXV0bzsgfQog
ICAgIHN0YXRpYyBUZXh0VW5kZXJsaW5lUG9zaXRpb24gaW5pdGlhbFRleHRVbmRlcmxpbmVQb3Np
dGlvbigpIHsgcmV0dXJuIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHAKaW5kZXggNWI4MWEzYjZkZmQ1YzRjNjY2NWExMjIyZWY1N2MxMzYwMjA4YjIxNy4uM2YxNzVm
NTA2MjkzYWUyZDc2MmMwOTI5NDBiOTA5MThmMTE1MDNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCkBAIC0x
MDQ2LDE0ICsxMDQ2LDE0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IFRleHRDb21iaW5lIHRleHRDb21iaW5lKQogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERlY29yYXRpb24gdGV4dERlY29yYXRp
b24pCi17Ci0gICAgc3dpdGNoICh0ZXh0RGVjb3JhdGlvbikgewotICAgIGNhc2UgVGV4dERlY29y
YXRpb246Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVjb3JhdGlv
bjo6VW5kZXJsaW5lOiB0cyA8PCAidW5kZXJsaW5lIjsgYnJlYWs7Ci0gICAgY2FzZSBUZXh0RGVj
b3JhdGlvbjo6T3ZlcmxpbmU6IHRzIDw8ICJvdmVybGluZSI7IGJyZWFrOwotICAgIGNhc2UgVGV4
dERlY29yYXRpb246OkxpbmVUaHJvdWdoOiB0cyA8PCAibGluZS10aHJvdWdoIjsgYnJlYWs7Ci0g
ICAgY2FzZSBUZXh0RGVjb3JhdGlvbjo6Qmxpbms6IHRzIDw8ICJibGluayI7IGJyZWFrOworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVGV4dERlY29yYXRpb25MaW5lIGxp
bmUpCit7CisgICAgc3dpdGNoIChsaW5lKSB7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6
Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6
OlVuZGVybGluZTogdHMgPDwgInVuZGVybGluZSI7IGJyZWFrOworICAgIGNhc2UgVGV4dERlY29y
YXRpb25MaW5lOjpPdmVybGluZTogdHMgPDwgIm92ZXJsaW5lIjsgYnJlYWs7CisgICAgY2FzZSBU
ZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoOiB0cyA8PCAibGluZS10aHJvdWdoIjsgYnJl
YWs7CisgICAgY2FzZSBUZXh0RGVjb3JhdGlvbkxpbmU6OkJsaW5rOiB0cyA8PCAiYmxpbmsiOyBi
cmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCBiNDc2NjY5MTgy
YTM2N2E0MTBjMTQ1ZmIwZGYzNGEyYTkxOGRmYzM0Li5jY2MyMTdjMzM3NTI1NGRjODg4ZmE0YTY3
NDFlMDJiMTZmZTVmNjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzQwLDcgKzc0MCw3IEBAIGVudW0gY2xh
c3MgVGV4dFRyYW5zZm9ybSA6IHVpbnQ4X3QgewogfTsKIAogc3RhdGljIGNvbnN0IHNpemVfdCBU
ZXh0RGVjb3JhdGlvbkJpdHMgPSA0OwotZW51bSBjbGFzcyBUZXh0RGVjb3JhdGlvbiA6IHVpbnQ4
X3QgeworZW51bSBjbGFzcyBUZXh0RGVjb3JhdGlvbkxpbmUgOiB1aW50OF90IHsKICAgICBOb25l
ICAgICAgICAgID0gMCwKICAgICBVbmRlcmxpbmUgICAgID0gMSA8PCAwLAogICAgIE92ZXJsaW5l
ICAgICAgPSAxIDw8IDEsCkBAIC0xMzMzLDcgKzEzMzMsNyBAQCBXVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU3R5bGVEaWZmZXJlbmNlKTsKIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUYWJsZUxheW91dFR5cGUpOwogV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRBbGlnbk1vZGUp
OwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRDb21i
aW5lKTsKLVdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBUZXh0
RGVjb3JhdGlvbik7CitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgVGV4dERlY29yYXRpb25MaW5lKTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBUZXh0RGVjb3JhdGlvblNraXBJbmspOwogV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHREZWNvcmF0aW9uU3R5bGUpOwogV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHRFbXBoYXNpc0ZpbGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggYzIwMmIyNTQ0NmZlMGVjYmIzNWM0NzJiNGQyOWJiZjhjMjNmM2MyOC4uNTVlNWNj
YjE5OGU2ZDA0NGQ2YjEyZWU5MjM2MjExYWViMTM5MWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC0yOTUsMTAgKzI5NSwx
MCBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgICAgIC8vIFNwZWM6IEFsbCB0ZXh0
IGRlY29yYXRpb25zIGV4Y2VwdCBsaW5lLXRocm91Z2ggc2hvdWxkIGJlIGRyYXduIGJlZm9yZSB0
aGUgdGV4dCBpcyBmaWxsZWQgYW5kIHN0cm9rZWQ7IHRodXMsIHRoZSB0ZXh0IGlzIHJlbmRlcmVk
IG9uIHRvcCBvZiB0aGVzZSBkZWNvcmF0aW9ucy4KICAgICAgICAgYXV0byBkZWNvcmF0aW9ucyA9
IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9u
cyAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCi0gICAgICAgICAgICBwYWludERlY29yYXRp
b24ocGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgZnJhZ21l
bnQpOwotICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUp
Ci0gICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERl
Y29yYXRpb246Ok92ZXJsaW5lLCBmcmFnbWVudCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucyAm
IFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKQorICAgICAgICAgICAgcGFpbnREZWNvcmF0
aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBm
cmFnbWVudCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uTGluZTo6
T3ZlcmxpbmUpCisgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQo
KSwgVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSwgZnJhZ21lbnQpOwogCiAgICAgICAgIGF1
dG8gcGFpbnRPcmRlciA9IFJlbmRlclN0eWxlOjpwYWludFR5cGVzRm9yUGFpbnRPcmRlcihzdHls
ZS5wYWludE9yZGVyKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRP
cmRlci5zaXplKCk7ICsraSkgewpAQCAtMzIzLDggKzMyMyw4IEBAIHZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNlCiAgICAgICAgIH0KIAogICAgICAgICAvLyBTcGVjOiBMaW5lLXRocm91Z2ggc2hvdWxk
IGJlIGRyYXduIGFmdGVyIHRoZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tlZDsgdGh1cywgdGhl
IGxpbmUtdGhyb3VnaCBpcyByZW5kZXJlZCBvbiB0b3Agb2YgdGhlIHRleHQuCi0gICAgICAgIGlm
IChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkKLSAgICAgICAgICAg
IHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbjo6TGlu
ZVRocm91Z2gsIGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29y
YXRpb25MaW5lOjpMaW5lVGhyb3VnaCkKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWlu
dEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoLCBmcmFnbWVu
dCk7CiAKICAgICAgICAgc2V0UGFpbnRpbmdSZXNvdXJjZU1vZGUoeyB9KTsKICAgICB9CkBAIC00
MzgsMjIgKzQzOCwyMiBAQCBib29sIFNWR0lubGluZVRleHRCb3g6Om1hcFN0YXJ0RW5kUG9zaXRp
b25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoY29uc3QgU1ZHVGV4dAogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IHBvc2l0aW9uT2Zmc2V0Rm9yRGVjb3JhdGlvbihP
cHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb24sIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcywgZmxvYXQgdGhpY2tuZXNzKQorc3RhdGljIGlubGluZSBmbG9hdCBwb3NpdGlv
bk9mZnNldEZvckRlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3Jh
dGlvbiwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBmbG9hdCB0aGlja25lc3MpCiB7
CiAgICAgLy8gRklYTUU6IEZvciBTVkcgRm9udHMgd2UgbmVlZCB0byB1c2UgdGhlIGF0dHJpYnV0
ZXMgZGVmaW5lZCBpbiB0aGUgPGZvbnQtZmFjZT4gaWYgc3BlY2lmaWVkLgogICAgIC8vIENvbXBh
dGlibGUgd2l0aCBCYXRpay9PcGVyYS4KLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3Jh
dGlvbjo6VW5kZXJsaW5lKQorICAgIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uTGlu
ZTo6VW5kZXJsaW5lKQogICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSAr
IHRoaWNrbmVzcyAqIDEuNWY7Ci0gICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb246
Ok92ZXJsaW5lKQorICAgIGlmIChkZWNvcmF0aW9uID09IFRleHREZWNvcmF0aW9uTGluZTo6T3Zl
cmxpbmUpCiAgICAgICAgIHJldHVybiB0aGlja25lc3M7Ci0gICAgaWYgKGRlY29yYXRpb24gPT0g
VGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQorICAgIGlmIChkZWNvcmF0aW9uID09IFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpCiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy5m
bG9hdEFzY2VudCgpICogNSAvIDguMGY7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gMC4wZjsKIH0KIAotc3RhdGljIGlubGluZSBmbG9hdCB0aGlja25lc3NGb3JEZWNv
cmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4sIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250
KQorc3RhdGljIGlubGluZSBmbG9hdCB0aGlja25lc3NGb3JEZWNvcmF0aW9uKE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbkxpbmU+LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKIHsKICAgICAvLyBG
SVhNRTogRm9yIFNWRyBGb250cyB3ZSBuZWVkIHRvIHVzZSB0aGUgYXR0cmlidXRlcyBkZWZpbmVk
IGluIHRoZSA8Zm9udC1mYWNlPiBpZiBzcGVjaWZpZWQuCiAgICAgLy8gQ29tcGF0aWJsZSB3aXRo
IEJhdGlrL09wZXJhCkBAIC00NzcsNyArNDc3LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCb3hN
b2RlbE9iamVjdCYgZmluZFJlbmRlcmVyRGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKExlZ2FjeUkK
ICAgICByZXR1cm4gKnJlbmRlcmVyOwogfQogCi12b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbj4gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkKK3ZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4
dEZyYWdtZW50JiBmcmFnbWVudCkKIHsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC01MDUs
NyArNTA1LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dEQKICAgICB9CiB9CiAKLXZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNvcmF0aW9uLCBjb25zdCBTVkdU
ZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJl
bmRlcmVyKQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBk
ZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKQogewogICAgIEFTU0VSVCghbV9wYWludGluZ1Jl
c291cmNlKTsKICAgICBBU1NFUlQoIXBhaW50aW5nUmVzb3VyY2VNb2RlKCkuaXNFbXB0eSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKaW5k
ZXggNTNlZjQ3NjVmZWQ2M2YzYzRhMGI1ZmYzODFhOTI4NjJjYjNkNTcxYi4uMTA2OTI5NGJkNjhj
Y2Q0YjQxNmZhMzY1OGVjZDMzNGQyMjVhZDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKQEAgLTgzLDggKzgzLDggQEAgcHJpdmF0ZToK
ICAgICBib29sIHByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3ND
b250ZXh0KiYsIGZsb2F0IHNjYWxpbmdGYWN0b3IsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAg
dm9pZCByZXN0b3JlR3JhcGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250
ZXh0KiYpOwogCi0gICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uPiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7Ci0gICAgdm9p
ZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QmIGRlY29yYXRpb25SZW5kZXJlcik7CisgICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhp
Y3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4sIGNvbnN0IFNWR1RleHRG
cmFnbWVudCYpOworICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29u
dGV4dCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+LCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKICAgICB2b2lk
IHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxl
JiwgVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIHVuc2lnbmVkIHN0YXJ0UG9zaXRp
b24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKTsKICAgICB2b2lkIHBhaW50VGV4dChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBzZWxlY3Rpb25T
dHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgYm9vbCBoYXNTZWxlY3Rpb24sIGJvb2wgcGFp
bnRTZWxlY3RlZFRleHRPbmx5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
SW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHAKaW5kZXggYjRjNGZjNGI5NTA5ZmU3OTIxNmFkMzE3M2UxZmNkMzY0NWY3Nzhi
OS4uYTM2Nzc4ZGU5NWY3MDY5MmNmYzFiOGJkMDQzZTg5YzMxNmYzNGZjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0
YXRpYyBib29sIGlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhjb25zdCBSZW5kZXJJbmxpbmUmIGFu
Y2VzdG9yLCBjb25zdCBSZW5kZXJPCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9p
ZCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtaW5Mb2dpY2FsVG9wLCBjb25zdCBSZW5kZXJF
bGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4
dERlY29yYXRpb24pCitzdGF0aWMgdm9pZCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25M
aW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtaW5M
b2dpY2FsVG9wLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlv
blNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uKQogewogICAgIGZvciAoYXV0
byBydW4gPSBsaW5lLT5maXJzdFJ1bigpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkg
ewogICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpA
QCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgdm9pZCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRp
b25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0bwogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yJiBsaW5lLCBmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwg
Y29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb24+IHRleHREZWNvcmF0aW9uKQorc3RhdGljIHZvaWQgbWF4TG9naWNhbEJvdHRvbUZv
clRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0ZXJhdG9yJiBs
aW5lLCBmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3Jh
dGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlv
bikKIHsKICAgICBmb3IgKGF1dG8gcnVuID0gbGluZS0+Zmlyc3RSdW4oKTsgcnVuOyBydW4udHJh
dmVyc2VOZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKHJ1bi0+cmVuZGVyZXIoKS5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHZvaWQgbWF4TG9naWNh
bEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUl0
ZXIKICAgICB9CiB9CiAKLXN0YXRpYyBjb25zdCBSZW5kZXJFbGVtZW50KiBlbmNsb3NpbmdSZW5k
ZXJlcldpdGhUZXh0RGVjb3JhdGlvbihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbiwgYm9vbCBmaXJzdExpbmUpCitzdGF0
aWMgY29uc3QgUmVuZGVyRWxlbWVudCogZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRp
b24oY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxp
bmU+IHRleHREZWNvcmF0aW9uLCBib29sIGZpcnN0TGluZSkKIHsKICAgICBjb25zdCBSZW5kZXJF
bGVtZW50KiBjdXJyZW50ID0gcmVuZGVyZXIucGFyZW50KCk7CiAgICAgZG8gewpAQCAtMTM1LDE2
ICsxMzUsMTYgQEAgZmxvYXQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9z
aXRpb24gdW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmwKICAgICAgICAgQVNTRVJUKHRleHRS
dW4pOwogICAgICAgICAvLyBQb3NpdGlvbiB1bmRlcmxpbmUgcmVsYXRpdmUgdG8gdGhlIGJvdHRv
bSBlZGdlIG9mIHRoZSBsb3dlc3QgZWxlbWVudCdzIGNvbnRlbnQgYm94LgogICAgICAgICBhdXRv
IGxpbmUgPSB0ZXh0UnVuLT5saW5lKCk7Ci0gICAgICAgIGF1dG8qIGRlY29yYXRpb25SZW5kZXJl
ciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKHRleHRSdW4tPnJlbmRlcmVy
KCksIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIGxpbmUtPmlzRmlyc3QoKSk7CisgICAgICAg
IGF1dG8qIGRlY29yYXRpb25SZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNv
cmF0aW9uKHRleHRSdW4tPnJlbmRlcmVyKCksIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5l
LCBsaW5lLT5pc0ZpcnN0KCkpOwogICAgICAgICAKICAgICAgICAgZmxvYXQgb2Zmc2V0OwogICAg
ICAgICBpZiAodGV4dFJ1bi0+cmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGlu
Z01vZGUoKSkgewogICAgICAgICAgICAgb2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNhbFRvcCgpOwot
ICAgICAgICAgICAgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShsaW5lLCBvZmZz
ZXQsIGRlY29yYXRpb25SZW5kZXJlciwgVGV4dERlY29yYXRpb246OlVuZGVybGluZSk7CisgICAg
ICAgICAgICBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmUsIG9mZnNldCwg
ZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CiAgICAg
ICAgICAgICBvZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsVG9wKCkgLSBvZmZzZXQ7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBvZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7
Ci0gICAgICAgICAgICBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmUs
IG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsK
KyAgICAgICAgICAgIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwg
b2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5l
KTsKICAgICAgICAgICAgIG9mZnNldCAtPSB0ZXh0UnVuLT5sb2dpY2FsQm90dG9tKCk7CiAgICAg
ICAgIH0KICAgICAgICAgYXV0byBkZXNpcmVkT2Zmc2V0ID0gdGV4dFJ1bi0+bG9naWNhbEhlaWdo
dCgpICsgZ2FwICsgc3RkOjptYXgob2Zmc2V0LCAwLjBmKSArIHVuZGVybGluZU9mZnNldC5sZW5n
dGhPcigwKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93
Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSQogCiAg
ICAgLy8gVGhlc2UgbWV0cmljcyBtdXN0IG1hdGNoIHdoZXJlIHVuZGVybGluZXMgZ2V0IGRyYXdu
LgogICAgIC8vIEZJWE1FOiBTaGFyZSB0aGUgY29kZSBpbiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OnBhaW50VGV4dERlY29yYXRpb24oKSBzbyB3ZSBjYW4ganVzdCBxdWVyeSBpdCBmb3IgdGhlIHBh
aW50ZWQgZ2VvbWV0cnkuCi0gICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6VW5k
ZXJsaW5lKSB7CisgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVy
bGluZSkgewogICAgICAgICAvLyBDb21wZW5zYXRlIGZvciB0aGUgaW50ZWdyYWwgY2VpbGluZyBp
biBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZv
clRleHQoKQogICAgICAgICBpbnQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKICAgICAgICAgZmxvYXQg
dGV4dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNjsKQEAgLTIwNCw3ICsyMDQsNyBAQCBHbHlw
aE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUm
IGxpbmVTdHlsZSwgY29uc3QgSQogICAgICAgICAgICAgb3ZlcmZsb3dSZXN1bHQuZXh0ZW5kVG9w
KC11bmRlcmxpbmVPZmZzZXQpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChkZWNvcmF0aW9u
ICYgVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSB7CisgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0
RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0
UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAgICBmbG9hdCBh
dXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3Jl
YXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVT
dHlsZS5mb250TWV0cmljcygpKTsKICAgICAgICAgcmVjdC5tb3ZlKDAsIGF1dG9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyAtIHN0cm9rZVRoaWNrbmVzcyAtIHdhdnlPZmZzZXQpOwpAQCAtMjE3LDcg
KzIxNyw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgICAgIG92ZXJmbG93UmVzdWx0
LmV4dGVuZFRvcCgtcmVjdC55KCkpOwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5leHRlbmRCb3R0
b20ocmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogICAgIH0KLSAgICBpZiAoZGVjb3JhdGlvbiAmIFRl
eHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkgeworICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERl
Y29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgewogICAgICAgICBGbG9hdFJlY3QgcmVjdChGbG9h
dFBvaW50KCksIEZsb2F0U2l6ZSgxLCBzdHJva2VUaGlja25lc3MpKTsKICAgICAgICAgZmxvYXQg
YXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNy
ZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShsaW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBsaW5l
U3R5bGUuZm9udE1ldHJpY3MoKSk7CiAgICAgICAgIGF1dG8gY2VudGVyID0gMiAqIGxpbmVTdHls
ZS5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkgLyAzICsgYXV0b1RleHREZWNvcmF0aW9uVGhp
Y2tuZXNzIC8gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKaW5kZXggOTViYTViNGE2NDZhODFhM2RiOWZjOTBjMWU5YjI3YmIyZTk0NDExZS4uOWM4Y2Qx
ZTcyZTRiZmQxYTk3NjhjOTQwNDJiYTAwZDI1M2RlYzFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBMZW5ndGhTaXplIGNvbnZlcnRSYWRpdXMoQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgY29udmVydFBvc2l0aW9uKEJ1aWxk
ZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIExlbmd0aFBvaW50IGNvbnZl
cnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0
YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb25MaW5lPiBjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVt
YmVyKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIFQgY29udmVydE51bWJlck9yQXV0byhCdWlsZGVyU3RhdGUmLCBjb25zdCBD
U1NWYWx1ZSYpOwogICAgIHN0YXRpYyBzaG9ydCBjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRM
aW5lcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOwpAQCAtNDIzLDcgKzQyMyw3IEBA
IGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25PckF1
dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyCiAgICAgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChM
ZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKIH0KIAotaW5saW5l
IE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRE
ZWNvcmF0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4
dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8gcmVzdWx0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwogICAg
IGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGU5Y2U2ZGEwZmYzNDE2Nzk1YTA0MzUxMjkwNTY0Y2M0
YjYzNDQ5MmUuLjBjNzQ0ZGRjZWIzMzI2ZDA2NzE0N2EwNmViOTEyMWZiMTBlNTdmNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTk1MDksNyArOTUw
OSw3IEBAIHN0YXRpYyBOU1RleHRBbGlnbm1lbnQgbnNUZXh0QWxpZ25tZW50RnJvbVJlbmRlclN0
eWxlKGNvbnN0IFdlYkNvcmU6OlJlbmRlclN0eWxlCiAgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyB2YWx1ZSA9IHR5cGluZ1N0eWxlLT5zdHlsZSgpLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwogICAgICAgICAgICAgICAgICAgICBb
X3ByaXZhdGUtPl90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0SXNVbmRlcmxpbmVk
OnZhbHVlLmNvbnRhaW5zKCJ1bmRlcmxpbmUiKV07CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVy
IHNldFRleHRJc1VuZGVybGluZWQ6c3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuY29u
dGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVybGluZSldOworICAgICAgICAgICAgICAgICAgICBb
X3ByaXZhdGUtPl90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRUZXh0SXNVbmRlcmxpbmVk
OnN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6VW5kZXJsaW5lKV07CiAKICAgICAgICAgICAgICAgICBDb2xvciB0ZXh0Q29sb3IgPSBz
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgICAgICAg
ICAgICAgIGlmICh0ZXh0Q29sb3IuaXNWYWxpZCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444448</attachid>
            <date>2021-11-16 16:31:51 -0800</date>
            <delta_ts>2021-11-16 17:27:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232729-20211116163150.patch</filename>
            <type>text/plain</type>
            <size>51967</size>
            <attacher name="Nikos Mouchtaris">nmouchtaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRhZGFlNDIwY2IwZTc1
NjQxNTIwMzQ3YWQxMWRmNjk4MDRjYWUwNS4uZTgzNTA4MWM4MDk2NDRhNDkyZmJhNjgyY2FkZGU0
OTdiZjMxZmM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTExLTE2ICBOaWtv
bGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSBUZXh0RGVjb3JhdGlvbiB0byBUZXh0RGVjb3JhdGlvbkxpbmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcyOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE15bGVzIEMuIE1heGZpZWxkLgorCisgICAgICAgIFNwbGl0IHVwIHBhdGNoIGJ5IFRpbSBO
Z3V5ZW46IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwODMuIFRo
aXMgcGF0Y2gKKyAgICAgICAgcmVuYW1lcyBlbnVtIFRleHREZWNvcmF0aW9uIHRvIFRleHREZWNv
cmF0aW9uTGluZSwgdG8gYmUgbW9yZSBpbiBsaW5lIHdpdGggdGhlIGN1cnJlbnQgc3BlYy4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNVbmRlcmxpbmUg
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlP
YmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZSk6CisgICAgICAgICog
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlbmRlclRleHREZWNvcmF0aW9uTGluZUZsYWdzVG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3Bl
cnR5SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdz
VG9DU1NWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRp
bmdBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlU3R5bGVGb3JNYXJrZWRUZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dEZvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6c3R5
bGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZFRvVGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2Zmc2V0Rm9yRGVjb3JhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjp0aGlja25lc3NGb3JEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29y
YXRpb25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Om1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVj
b3JhdGlvbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4
dERlY29yYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZU9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjp2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKToKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24pOgorCiAyMDIxLTEx
LTE2ICBOaWtvbGFvcyBNb3VjaHRhcmlzICA8bm1vdWNodGFyaXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBvdmVyc2Nyb2xsIGJlaGF2aW9yIHRvIFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDliNzA5MjM1ZTA1MWU1YzUwMTg0N2JhNzhj
NTZiODcwNjA5Y2U0MTkuLjZlNzFhZDM4MmUyN2M4MzBhNTI1YWQ5NTBmMzMzZjQ5YTJlMTVjY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMS0x
NiAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW5hbWUgVGV4dERlY29yYXRpb24gdG8gVGV4dERlY29yYXRpb25MaW5lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI3MjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV2ViVmlldyB1cGRhdGVUZXh0VG91Y2hCYXJdKToKKwogMjAyMS0x
MS0xMSAgTmlrb2xhb3MgTW91Y2h0YXJpcyAgPG5tb3VjaHRhcmlzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYWtlIHNjcm9sbCBncmFudWxhcml0eSBhbiBlbnVtIGNsYXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAppbmRleCA2MzcwZGY5NWNjYjE2MGRlNGQ2OWJiZDNhZDJiMGRhYjQ1NzZlZWZkLi5jNGUy
NmExYjcyMmExODllOGMzMGE2ZWYwNjYwMWFhODc3YmQ2ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKQEAgLTM4NTgsNyArMzg1OCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aGFzVW5kZXJsaW5lKCkgY29uc3QKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKS50ZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOworICAg
IHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwogfQogCiBTdHJpbmcgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bmFtZUZvck1TQUEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJs
ZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDhhODdhYzNiMWIyMGQ3ZTczZDEzNjAzZTEyMjdiM2Vi
MTFhYjU4YTAuLmEzZDdlODIxZmEzN2NiMjA1ZDNmMzZiZTg2M2VlYTA4YTM1YjdhNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAgLTE2NCwxMSArMTY0LDExIEBAIHN0
YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmpl
Y3QoY29uc3QgQWNjZXNzaWJpbGl0CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRl
U2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSlVT
VElGSUNBVElPTiksICJmaWxsIik7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRy
aWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRU
Ul9VTkRFUkxJTkUpLCAoc3R5bGUtPnRleHREZWNvcmF0aW9uKCkgJiBUZXh0RGVjb3JhdGlvbjo6
VW5kZXJsaW5lKSA/ICJzaW5nbGUiIDogIm5vbmUiKTsKKyAgICByZXN1bHQgPSBhZGRUb0F0a0F0
dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9B
VFRSX1VOREVSTElORSksIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIFRleHREZWNvcmF0aW9u
TGluZTo6VW5kZXJsaW5lKSA/ICJzaW5nbGUiIDogIm5vbmUiKTsKIAogICAgIHJlc3VsdCA9IGFk
ZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFU
S19URVhUX0FUVFJfU1RZTEUpLCBzdHlsZS0+Zm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFs
aWMiIDogIm5vcm1hbCIpOwogCi0gICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVz
dWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9TVFJJS0VUSFJP
VUdIKSwgKHN0eWxlLT50ZXh0RGVjb3JhdGlvbigpICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJv
dWdoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRl
U2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU1RS
SUtFVEhST1VHSCksIChzdHlsZS0+dGV4dERlY29yYXRpb24oKSAmIFRleHREZWNvcmF0aW9uTGlu
ZTo6TGluZVRocm91Z2gpID8gInRydWUiIDogImZhbHNlIik7CiAKICAgICByZXN1bHQgPSBhZGRU
b0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtf
VEVYVF9BVFRSX0lOVklTSUJMRSksIChzdHlsZS0+dmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6
OkhpZGRlbikgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLm1tCmluZGV4IGFlNjVlNDlhYWQwNmJiZmEzMWI4ZGM5MThiMDUwMDBlZjQ3
MGFmNjMuLjM3ZDZjYzYyYTk1NjE4NDgxNWQ0YmE2YTQ5YzllNzE1ZGIyOWZjZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTU5MSw3ICs1OTEsNyBAQCBz
dGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcqIGF0dHJTdHJpbmcsIFJlbgogICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9udChhdHRy
U3RyaW5nLCBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCksIHJh
bmdlKTsKIAogICAgIGF1dG8gZGVjb3IgPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgp
OwotICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCisgICAgaWYgKGRl
Y29yICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCiAgICAgICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIFVJQWNjZXNzaWJpbGl0eVRva2VuVW5kZXJsaW5l
LCBAWUVTLCByYW5nZSk7CiAKICAgICAvLyBBZGQgY29kZSBjb250ZXh0IGlmIHRoaXMgbm9kZSBp
cyB3aXRoaW4gYSA8Y29kZT4gYmxvY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCmluZGV4IDc4OGQzZjE3NDI4ODcwNGRhMDAxZjNhMDhkZWM3NzgyNmRjNzFmNTAuLjcw
MDRjNDZiNjQzOTM0OWNhNGY4ZWM4YmQ3YzEyNzJiNTZlOWVlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC04NzksMjYgKzg3OSwyNSBAQCBzdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0
dHJTdHJpbmcsIFJlbgogICAgIAogICAgIC8vIHNldCB1bmRlcmxpbmUgYW5kIHN0cmlrZXRocm91
Z2gKICAgICBhdXRvIGRlY29yID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAg
ICBpZiAoIShkZWNvciAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpKSB7CisgICAgaWYgKCEo
ZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpIHsKICAgICAgICAgW2F0dHJT
dHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1
dGUgcmFuZ2U6cmFuZ2VdOwogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNB
Y2Nlc3NpYmlsaXR5VW5kZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKICAg
ICB9Ci0gICAgCi0gICAgaWYgKCEoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gp
KSB7CisgICAgaWYgKCEoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkg
ewogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U3Ry
aWtldGhyb3VnaFRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogICAgICAgICBbYXR0clN0cmlu
ZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0
dHJpYnV0ZSByYW5nZTpyYW5nZV07CiAgICAgfQogCi0gICAgaWYgKGRlY29yICYgVGV4dERlY29y
YXRpb246OlVuZGVybGluZSB8fCBkZWNvciAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkg
eworICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lIHx8IGRlY29y
ICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgewogICAgICAgICAvLyBGSVhNRTog
U2hvdWxkIHRoZSB1bmRlcmxpbmUgc3R5bGUgYmUgcmVwb3J0ZWQgaGVyZT8KICAgICAgICAgYXV0
byBkZWNvcmF0aW9uU3R5bGVzID0gVGV4dERlY29yYXRpb25QYWludGVyOjpzdHlsZXNGb3JSZW5k
ZXJlcigqcmVuZGVyZXIsIGRlY29yKTsKIAotICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3Jh
dGlvbjo6VW5kZXJsaW5lKSB7CisgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uTGlu
ZTo6VW5kZXJsaW5lKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlLCBAWUVTLCBy
YW5nZSk7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcs
IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihk
ZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNvbG9yKS5nZXQoKSwgcmFuZ2UpOwogICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91
Z2gpIHsKKworICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJv
dWdoKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5n
LCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2Up
OwogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0Fj
Y2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKGRl
Y29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJhbmdlKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5j
cHAKaW5kZXggZGU4N2JiODY1ZjVlZGY1N2RhZTI5YTgzZDJlYzk0ZTRlMzBmNTBhNC4uZTY5Mjkw
NDU3MGEzNDg2MTUyNGZiZjY3ZmM0YmE3YzY1MmExMWIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0yNzQ2LDcgKzI3NDYs
NyBAQCBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9u
V3JhcHBlck1hcCgpCiAgICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5V3JhcHBlcjxSdWJ5UG9z
aXRpb24+KENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OnJ1YnlQ
b3NpdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRSdWJ5UG9zaXRpb24pLAogICAgICAgICBuZXcgRGlz
Y3JldGVQcm9wZXJ0eVdyYXBwZXI8VGFibGVMYXlvdXRUeXBlPihDU1NQcm9wZXJ0eVRhYmxlTGF5
b3V0LCAmUmVuZGVyU3R5bGU6OnRhYmxlTGF5b3V0LCAmUmVuZGVyU3R5bGU6OnNldFRhYmxlTGF5
b3V0KSwKICAgICAgICAgbmV3IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPFRleHRBbGlnbk1vZGU+
KENTU1Byb3BlcnR5VGV4dEFsaWduLCAmUmVuZGVyU3R5bGU6OnRleHRBbGlnbiwgJlJlbmRlclN0
eWxlOjpzZXRUZXh0QWxpZ24pLAotICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPj4oQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmUs
ICZSZW5kZXJTdHlsZTo6dGV4dERlY29yYXRpb24sICZSZW5kZXJTdHlsZTo6c2V0VGV4dERlY29y
YXRpb24pLAorICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8T3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uTGluZT4+KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25MaW5lLCAmUmVuZGVy
U3R5bGU6OnRleHREZWNvcmF0aW9uLCAmUmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uKSwK
ICAgICAgICAgbmV3IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPFRleHREZWNvcmF0aW9uU3R5bGU+
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25TdHlsZSwgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3Jh
dGlvblN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uU3R5bGUpLAogICAgICAg
ICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgQ29sb3ImPihDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc0NvbG9yLCAmUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc0NvbG9yLCAm
UmVuZGVyU3R5bGU6OnNldFRleHRFbXBoYXNpc0NvbG9yKSwKICAgICAgICAgbmV3IERpc2NyZXRl
UHJvcGVydHlXcmFwcGVyPE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4+KENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lz
UG9zaXRpb24sICZSZW5kZXJTdHlsZTo6c2V0VGV4dEVtcGhhc2lzUG9zaXRpb24pLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCBjYWFlYTQwZDgzMzNkZDEzOWM4OTUwMTIzOGYzMTg4MGQxYjFiNDhhLi5mMDU3OTNiN2IwZmY1
YTgyNDdlOWZlZGRjNDNmMDZhOTQwZTYwMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTYxMywxNiArMTYxMywxNiBA
QCBzdGF0aWMgUmVmPENTU1ZhbHVlPiB0b3VjaEFjdGlvbkZsYWdzVG9DU1NWYWx1ZShPcHRpb25T
ZXQ8VG91Y2hBY3Rpb24+IHRvdWNoQWN0aQogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMg
UmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4g
cmVuZGVyVGV4dERlY29yYXRpb25MaW5lRmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uTGluZSkKIHsKICAgICBhdXRvJiBjc3NWYWx1ZVBv
b2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwogICAgIC8vIEJsaW5rIHZhbHVlIGlzIGln
bm9yZWQuCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwotICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
CisgICAgaWYgKHRleHREZWNvcmF0aW9uTGluZSAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJs
aW5lKQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZVVuZGVybGluZSkpOwotICAgIGlmICh0ZXh0RGVjb3JhdGlvbiAmIFRleHRE
ZWNvcmF0aW9uOjpPdmVybGluZSkKKyAgICBpZiAodGV4dERlY29yYXRpb25MaW5lICYgVGV4dERl
Y29yYXRpb25MaW5lOjpPdmVybGluZSkKICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9v
bC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVPdmVybGluZSkpOwotICAgIGlmICh0ZXh0
RGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkKKyAgICBpZiAodGV4dERl
Y29yYXRpb25MaW5lICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkKICAgICAgICAg
bGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVM
aW5lVGhyb3VnaCkpOwogCiAgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKQEAgLTMyOTEsNyArMzI5
MSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQ
cm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0QWxpZ246CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0
eWxlLnRleHRBbGlnbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
OgotICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVl
KHN0eWxlLnRleHREZWNvcmF0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHRE
ZWNvcmF0aW9uTGluZUZsYWdzVG9DU1NWYWx1ZShzdHlsZS50ZXh0RGVjb3JhdGlvbigpKTsKICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEFs
aWduTGFzdDoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUudGV4dEFsaWduTGFzdCgpKTsKQEAgLTMzMDEsNyArMzMwMSw3IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3Qg
UmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbjoK
ICAgICAgICAgICAgIHJldHVybiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFuZFByb3Bl
cnRpZXMod2Via2l0VGV4dERlY29yYXRpb25TaG9ydGhhbmQoKSk7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvbkxpbmU6Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4
dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb24oKSk7CisgICAg
ICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25MaW5lRmxhZ3NUb0NTU1ZhbHVlKHN0
eWxlLnRleHREZWNvcmF0aW9uKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29y
YXRpb25TdHlsZToKICAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvblN0eWxl
RmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGUoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgpAQCAtMzMxNyw3ICszMzE3LDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5
SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOgogICAgICAgICAgICAgcmV0dXJuIHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzVG9DU1NWYWx1ZShzdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpKTsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0OgotICAgICAgICAg
ICAgcmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KCkpOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHREZWNv
cmF0aW9uTGluZUZsYWdzVG9DU1NWYWx1ZShzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CiAgICAgICAg
ICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKCZzdHlsZSwgc3R5bGUudGV4dEZp
bGxDb2xvcigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0Nv
bG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFw
cGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgK
aW5kZXggNjY1MzkyNDQ1MWZmNTI3YmFkZGZkYTVmMjA0NzY4YjM1ZDhjZjUwZi4uYzM0ZjM1YjFj
NTBiMTk1OTY3OGE0NzVhMmJhMzU3MjY2NzgyNzMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC0yNDEyLDI3ICsyNDEyLDI3IEBAIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0SnVzdGlmeSgp
IGNvbnN0CiB9CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+KCkgY29uc3QK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBPcHRpb25TZXQ8
VGV4dERlY29yYXRpb25MaW5lPigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsK
IAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6
Ci0gICAgICAgIHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHsgfTsKKyAgICAgICAg
cmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHsgfTsKICAgICBjYXNlIENTU1Zh
bHVlVW5kZXJsaW5lOgotICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb246OlVuZGVybGluZTsK
KyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lOwogICAgIGNhc2Ug
Q1NTVmFsdWVPdmVybGluZToKLSAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uOjpPdmVybGlu
ZTsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmU7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUxpbmVUaHJvdWdoOgotICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb246Okxp
bmVUaHJvdWdoOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3Vn
aDsKICAgICBjYXNlIENTU1ZhbHVlQmxpbms6Ci0gICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
bjo6Qmxpbms7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbkxpbmU6OkJsaW5rOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHsgfTsKKyAgICByZXR1
cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4geyB9OwogfQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgVGV4dERlY29yYXRpb25TdHlsZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjVlMzQ0Njg4ODZiNzEyNDdkOTgy
ODE4ZGI4YjlkM2EyZTgyMGYxOC4uMTcyNGNmMGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIw
N2FhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDA5OCw5ICs0MDk4LDkgQEAg
Rm9udEF0dHJpYnV0ZXMgRWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKQog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBkZWNvcmF0aW9uID0gc3R5bGUt
PnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4
dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQorICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1N0
cmlrZVRocm91Z2ggPSB0cnVlOwotICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0
aW9uOjpVbmRlcmxpbmUpCisgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1VuZGVybGluZSA9IHRy
dWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggMTY0NzY2ZGMzMjUzNzVlN2ViMWY4YTc1ZGJhY2Q0MjIyMTMwZmQ3ZC4uZDQ4
ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjM4MCw5ICsyMzgwLDkgQEAg
QXR0cmlidXRlZFN0cmluZyBlZGl0aW5nQXR0cmlidXRlZFN0cmluZyhjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UsIEluY2x1ZGVJbWFnZXMKICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwot
ICAgICAgICBpZiAoc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0
aW9uOjpVbmRlcmxpbmUpCisgICAgICAgIGlmIChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCiAgICAgICAgICAgICBbYXR0cnMg
c2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpOU1VuZGVybGluZVN0eWxlU2lu
Z2xlXSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwotICAgICAgICBpZiAo
c3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhy
b3VnaCkKKyAgICAgICAgaWYgKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0
RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9y
S2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07CiAgICAgICAgIGlmIChhdXRv
IGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCkpCiAg
ICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OnRvTlNGb250KGZvbnQpIGZvcktleTpOU0ZvbnRB
dHRyaWJ1dGVOYW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHls
ZWRNYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRU
ZXh0LmNwcAppbmRleCAwNDdmMDJhMTc5ZmE1NjEzYmQ4M2E2ZjU3OTc5YmY2YjE0MDQyNmUxLi5k
YjJjMzYzY2ZlMTU3MzY2ZjdmYmUyYWE3YTI2NmRlMmZiOWY4ZTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCkBAIC01NywxNSArNTcsMTUgQEAg
c3RhdGljIFN0eWxlZE1hcmtlZFRleHQgcmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dChjb25zdCBN
YXJrZWRUZXh0JiBtYXJrZWRUZXh0LAogICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9uU3R5bGUg
PSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25TdHlsZSgpOwogICAgICAgICAgICAgYXV0byBk
ZWNvcmF0aW9ucyA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwogCi0g
ICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVy
bGluZSkpIHsKKyAgICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3Jh
dGlvbkxpbmU6OlVuZGVybGluZSkpIHsKICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3Jh
dGlvblN0eWxlcy51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgICAgIHN0eWxl
LnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKKyAgICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250
YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkgewogICAgICAgICAgICAgICAgIHN0
eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lQ29sb3IgPSBjb2xvcjsKICAgICAgICAg
ICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZVN0eWxlID0gZGVjb3Jh
dGlvblN0eWxlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNv
bnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkpIHsKKyAgICAgICAgICAgIGlmIChk
ZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkgewog
ICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29s
b3IgPSBjb2xvcjsKICAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5s
aW5ldGhyb3VnaFN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRl
eCA1NDZhNGNjYmI0NTlhNWY1ZjA5ZDY0YmRmZDUyYmFlNGE1NmI1MzdlLi44YzVkYzZmMzViMWUx
MDM5NDIyMGZlMGQxYTA2NWMyYjc5ZTY2NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIGJv
b2wgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXM6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVz
JiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgdW5kZXJsaW5lU3R5bGUgPT0gb3RoZXIudW5kZXJs
aW5lU3R5bGUgJiYgb3ZlcmxpbmVTdHlsZSA9PSBvdGhlci5vdmVybGluZVN0eWxlICYmIGxpbmV0
aHJvdWdoU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2hTdHlsZTsKIH0KIAotVGV4dERlY29yYXRp
b25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0
JiByZW5kZXJlciwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIHN0
ZDo6b3B0aW9uYWw8U3R5bGVzPiBzdHlsZXMpCitUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHRE
ZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0
RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwg
Ym9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIHN0ZDo6b3B0aW9uYWw8
U3R5bGVzPiBzdHlsZXMpCiAgICAgOiBtX2NvbnRleHQgeyBjb250ZXh0IH0KICAgICAsIG1fZGVj
b3JhdGlvbnMgeyBkZWNvcmF0aW9ucyB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0
RnJvbURlY29yYXRpb24oKSB9CkBAIC0yMDcsMTQgKzIwNywxNCBAQCB2b2lkIFRleHREZWNvcmF0
aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBj
b25zdCBGbAogICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gbV9saW5lU3R5bGUu
dGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9u
dFNpemUoKSwgZm9udE1ldHJpY3MpOwogICAgIEZsb2F0UG9pbnQgbG9jYWxPcmlnaW4gPSBib3hP
cmlnaW47CiAKLSAgICBhdXRvIHBhaW50RGVjb3JhdGlvbiA9IFsmXSAoVGV4dERlY29yYXRpb24g
ZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9y
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsKKyAgICBhdXRvIHBhaW50RGVjb3JhdGlvbiA9IFsm
XSAoVGV4dERlY29yYXRpb25MaW5lIGRlY29yYXRpb24sIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5
bGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7CiAgICAgICAg
IG1fY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7CiAKICAgICAgICAgYXV0byBzdHJva2VT
dHlsZSA9IHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKHN0eWxlKTsKIAogICAgICAg
ICBpZiAoc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkKICAgICAgICAgICAgIHN0
cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihtX2NvbnRleHQsIHJlY3QsIG1fbGluZVN0eWxlLmNvbXB1
dGVkRm9udFBpeGVsU2l6ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0
RGVjb3JhdGlvbjo6VW5kZXJsaW5lIHx8IGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb246Ok92
ZXJsaW5lKSB7CisgICAgICAgIGVsc2UgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJs
aW5lKSB7CiAgICAgICAgICAgICBpZiAoKG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcElu
aygpID09IFRleHREZWNvcmF0aW9uU2tpcEluazo6QXV0byB8fCBtX2xpbmVTdHlsZS50ZXh0RGVj
b3JhdGlvblNraXBJbmsoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbms6OkFsbCkgJiYgbV9pc0hv
cml6b250YWwpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fY29udGV4dC5wYWludGluZ0Rpc2Fi
bGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHVuZGVybGluZUJvdW5kaW5n
Qm94ID0gbV9jb250ZXh0LmNvbXB1dGVVbmRlcmxpbmVCb3VuZHNGb3JUZXh0KHJlY3QsIG1faXNQ
cmludGluZyk7CkBAIC0yMjksMTQgKzIyOSwxNCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRl
cjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAog
ICAgICAgICAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQocmVjdCwgbV9pc1ByaW50
aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChkZWNv
cmF0aW9uID09IFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCk7CisgICAgICAgICAgICBBU1NF
UlQoZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKTsKICAgICAg
ICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQocmVjdCwgbV9pc1ByaW50aW5nLCBzdHls
ZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAg
fQogICAgIH07CiAKLSAgICBib29sIGFyZUxpbmVzT3BhcXVlID0gIW1faXNQcmludGluZyAmJiAo
IW1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OlVuZGVybGluZSkgfHwgbV9z
dHlsZXMudW5kZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX2RlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkgfHwgbV9zdHlsZXMub3Zlcmxp
bmVDb2xvci5pc09wYXF1ZSgpKQotICAgICAgICAmJiAoIW1fZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3VnaENvbG9y
LmlzT3BhcXVlKCkpOworICAgIGJvb2wgYXJlTGluZXNPcGFxdWUgPSAhbV9pc1ByaW50aW5nICYm
ICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkg
fHwgbV9zdHlsZXMudW5kZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgJiYgKCFtX2Rl
Y29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHx8IG1fc3R5
bGVzLm92ZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgJiYgKCFtX2RlY29yYXRpb25z
LmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxp
bmV0aHJvdWdoQ29sb3IuaXNPcGFxdWUoKSk7CiAKICAgICBmbG9hdCBleHRyYU9mZnNldCA9IDA7
CiAgICAgYm9vbCBjbGlwcGluZyA9ICFhcmVMaW5lc09wYXF1ZSAmJiBtX3NoYWRvdyAmJiBtX3No
YWRvdy0+bmV4dCgpOwpAQCAtMjc3LDI4ICsyNzcsMjggQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBh
aW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
RmwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXNlIGRlY29yYXRpb25zIHNob3VsZCBtYXRj
aCB0aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1YWxPdmVyZmxvd0ZvckRlY29y
YXRpb25zKCkuCi0gICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uOjpVbmRlcmxpbmUpKSB7CisgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICAgICAgZmxvYXQgdGV4dERl
Y29yYXRpb25CYXNlRm9udFNpemUgPSAxNjsKICAgICAgICAgICAgIGF1dG8gZGVmYXVsdEdhcCA9
IG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSAvIHRleHREZWNvcmF0aW9uQmFzZUZvbnRT
aXplOwogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldCht
X2xpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbV9saW5lU3R5bGUudGV4dFVuZGVy
bGluZU9mZnNldCgpLCBtX2xpbmVTdHlsZS5mb250TWV0cmljcygpLCBtX3RleHRCb3gsIGRlZmF1
bHRHYXApOwogICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLnVuZGVybGlu
ZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwog
ICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRo
LCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwogICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIG9m
ZnNldCArIHdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNv
cmF0aW9uOjpVbmRlcmxpbmUsIG1fc3R5bGVzLnVuZGVybGluZVN0eWxlLCBtX3N0eWxlcy51bmRl
cmxpbmVDb2xvciwgcmVjdCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29y
YXRpb25MaW5lOjpVbmRlcmxpbmUsIG1fc3R5bGVzLnVuZGVybGluZVN0eWxlLCBtX3N0eWxlcy51
bmRlcmxpbmVDb2xvciwgcmVjdCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb246Ok92ZXJsaW5lKSkgeworICAgICAgICBpZiAobV9k
ZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkgewogICAg
ICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLm92ZXJsaW5lU3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBG
bG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0
aW9uVGhpY2tuZXNzKSk7CiAgICAgICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlj
a25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZl
KG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgZm9udE1ldHJpY3MpOwogICAgICAgICAg
ICAgcmVjdC5tb3ZlKDAsIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHREZWNvcmF0
aW9uVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBwYWludERlY29yYXRpb24o
VGV4dERlY29yYXRpb246Ok92ZXJsaW5lLCBtX3N0eWxlcy5vdmVybGluZVN0eWxlLCBtX3N0eWxl
cy5vdmVybGluZUNvbG9yLCByZWN0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0
RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lLCBtX3N0eWxlcy5vdmVybGluZVN0eWxlLCBtX3N0eWxl
cy5vdmVybGluZUNvbG9yLCByZWN0KTsKICAgICAgICAgfQotICAgICAgICBpZiAobV9kZWNvcmF0
aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpKSB7CisgICAgICAgIGlm
IChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gp
KSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1f
d2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAgICAgICAgICBmbG9hdCBhdXRv
VGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRl
V2l0aEF1dG8oKS5yZXNvbHZlKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgZm9udE1l
dHJpY3MpOwogICAgICAgICAgICAgYXV0byBjZW50ZXIgPSAyICogZm9udE1ldHJpY3MuZmxvYXRB
c2NlbnQoKSAvIDMgKyBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyOwogICAgICAgICAg
ICAgcmVjdC5tb3ZlKDAsIGNlbnRlciAtIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzIC8gMik7Ci0g
ICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoLCBt
X3N0eWxlcy5saW5ldGhyb3VnaFN0eWxlLCBtX3N0eWxlcy5saW5ldGhyb3VnaENvbG9yLCByZWN0
KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVU
aHJvdWdoLCBtX3N0eWxlcy5saW5ldGhyb3VnaFN0eWxlLCBtX3N0eWxlcy5saW5ldGhyb3VnaENv
bG9yLCByZWN0KTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiAKQEAgLTMwOCwy
NCArMzA4LDI0IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0
aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgIG1fY29udGV4dC5j
bGVhclNoYWRvdygpOwogfQogCi1zdGF0aWMgdm9pZCBjb2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIo
VGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMmIHJlc3VsdCwgY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiByZW1haW5pbmdEZWNvcmF0aW9u
cywgYm9vbCBmaXJzdExpbmVTdHlsZSwgUHNldWRvSWQgcHNldWRvSWQpCitzdGF0aWMgdm9pZCBj
b2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIoVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMmIHJl
c3VsdCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT4gcmVtYWluaW5nRGVjb3JhdGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUsIFBzZXVk
b0lkIHBzZXVkb0lkKQogewotICAgIGF1dG8gZXh0cmFjdERlY29yYXRpb25zID0gWyZdIChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlv
bnMpIHsKKyAgICBhdXRvIGV4dHJhY3REZWNvcmF0aW9ucyA9IFsmXSAoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9ucykgewog
ICAgICAgICBhdXRvIGNvbG9yID0gVGV4dERlY29yYXRpb25QYWludGVyOjpkZWNvcmF0aW9uQ29s
b3Ioc3R5bGUpOwogICAgICAgICBhdXRvIGRlY29yYXRpb25TdHlsZSA9IHN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGUoKTsKIAotICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERl
Y29yYXRpb246OlVuZGVybGluZSkpIHsKLSAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25z
LnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICAgICAgaWYgKGRlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgeworICAgICAgICAg
ICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJs
aW5lKTsKICAgICAgICAgICAgIHJlc3VsdC51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAg
ICAgICAgcmVzdWx0LnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3Zlcmxp
bmUpKSB7Ci0gICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29y
YXRpb246Ok92ZXJsaW5lKTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CisgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0
aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSk7CiAgICAgICAgICAgICBy
ZXN1bHQub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwogICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5l
U3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkpIHsKLSAgICAgICAgICAg
IHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gp
OworICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpM
aW5lVGhyb3VnaCkpIHsKKyAgICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShU
ZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKTsKICAgICAgICAgICAgIHJlc3VsdC5saW5l
dGhyb3VnaENvbG9yID0gY29sb3I7CiAgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hTdHls
ZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQpAQCAtMzY4LDE5ICszNjgsMTkgQEAgQ29s
b3IgVGV4dERlY29yYXRpb25QYWludGVyOjpkZWNvcmF0aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogICAgIHJldHVybiBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29s
b3JGaWx0ZXIoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yKTsKIH0KIAotT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHREZWNvcmF0aW9uc0lu
RWZmZWN0Rm9yU3R5bGUoY29uc3QgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMmIHN0eWxl
KQorT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gVGV4dERlY29yYXRpb25QYWludGVyOjp0
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKGNvbnN0IFRleHREZWNvcmF0aW9uUGFpbnRl
cjo6U3R5bGVzJiBzdHlsZSkKIHsKLSAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29y
YXRpb25zOworICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb25zOwog
ICAgIGlmIChzdHlsZS51bmRlcmxpbmVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGRlY29yYXRp
b25zLmFkZChUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsKKyAgICAgICAgZGVjb3JhdGlvbnMu
YWRkKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKICAgICBpZiAoc3R5bGUub3Zlcmxp
bmVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlv
bjo6T3ZlcmxpbmUpOworICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSk7CiAgICAgaWYgKHN0eWxlLmxpbmV0aHJvdWdoQ29sb3IuaXNWYWxpZCgpKQot
ICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKTsKKyAg
ICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpOwog
ICAgIHJldHVybiBkZWNvcmF0aW9uczsKIH07CiAKLWF1dG8gVGV4dERlY29yYXRpb25QYWludGVy
OjpzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb24+IHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0
eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkgLT4gU3R5bGVzCithdXRvIFRleHREZWNvcmF0aW9uUGFp
bnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gcmVxdWVzdGVkRGVjb3JhdGlvbnMsIGJvb2wgZmly
c3RMaW5lU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lkKSAtPiBTdHlsZXMKIHsKICAgICBTdHlsZXMg
cmVzdWx0OwogICAgIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihyZXN1bHQsIHJlbmRlcmVyLCBy
ZXF1ZXN0ZWREZWNvcmF0aW9ucywgZmFsc2UsIHBzZXVkb0lkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCBlYWFkNDA4MzUxMGY4
M2Q4YzRkNGIyYTlkMjI3YzUyOTVhN2RmMTQzLi5lNzQxYTU5OTc3YmZiM2E5MmY0Mzc0YjkxOTg1
ZTEzMTZiODFjYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFRleHRSdW47CiBjbGFzcyBU
ZXh0RGVjb3JhdGlvblBhaW50ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBTdHlsZXM7Ci0gICAg
VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlzRmlyc3RMaW5l
LCBjb25zdCBGb250Q2FzY2FkZSYsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgVGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9v
bCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmLCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4g
PSBzdGQ6Om51bGxvcHQpOwogICAgIAogICAgIHZvaWQgc2V0VGV4dEJveChJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveEl0ZXJhdG9yIHRleHRCb3gpIHsgbV90ZXh0Qm94ID0gdGV4dEJveDsgfQogICAg
IHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1faXNIb3Jpem9udGFs
ID0gaXNIb3Jpem9udGFsOyB9CkBAIC02NiwxMiArNjYsMTIgQEAgcHVibGljOgogICAgICAgICBU
ZXh0RGVjb3JhdGlvblN0eWxlIGxpbmV0aHJvdWdoU3R5bGU7CiAgICAgfTsKICAgICBzdGF0aWMg
Q29sb3IgZGVjb3JhdGlvbkNvbG9yKGNvbnN0IFJlbmRlclN0eWxlJik7Ci0gICAgc3RhdGljIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShj
b25zdCBTdHlsZXMmKTsKLSAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gcmVxdWVzdGVkRGVjb3Jh
dGlvbnMsIGJvb2wgZmlyc3RMaW5lU3R5bGUgPSBmYWxzZSwgUHNldWRvSWQgPSBQc2V1ZG9JZDo6
Tm9uZSk7CisgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNv
cmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUoY29uc3QgU3R5bGVzJik7CisgICAgc3RhdGljIFN0eWxl
cyBzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmLCBPcHRpb25TZXQ8VGV4dERl
Y29yYXRpb25MaW5lPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSA9
IGZhbHNlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKIAogcHJpdmF0ZToKICAgICBHcmFw
aGljc0NvbnRleHQmIG1fY29udGV4dDsKLSAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IG1f
ZGVjb3JhdGlvbnM7CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gbV9kZWNvcmF0
aW9uczsKICAgICBmbG9hdCBtX3dhdnlPZmZzZXQ7CiAgICAgZmxvYXQgbV93aWR0aCB7IDAgfTsK
ICAgICBGbG9hdFBvaW50IG1fYm94T3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAzN2JlYzU2Y2UwZDUzZjI1YjA0MjEzNmFkYTVjZjM4
OGRhODVlMDk5Li43NzA3ZjBmY2YwYWUxNzI0NDdkNzM4OGRmYzZmNWE0MzkwMDZiYzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzcxLDgg
KzM3MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIHRleHRJbmRlbnQoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KICAgICBUZXh0QWxpZ25Nb2Rl
IHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGlnbk1vZGU+KG1f
aW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQogICAgIFRleHRUcmFuc2Zvcm0gdGV4dFRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRUcmFuc2Zvcm0+KG1faW5oZXJp
dGVkRmxhZ3MudGV4dFRyYW5zZm9ybSk7IH0KLSAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+
IHRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uPjo6ZnJvbVJhdyhtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyk7IH0K
LSAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPjo6ZnJvbVJhdyhtX3Zpc3VhbERhdGEtPnRl
eHREZWNvcmF0aW9uKTsgfQorICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT46OmZyb21SYXcobV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMpOyB9Cisg
ICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb24oKSBjb25zdCB7
IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPjo6ZnJvbVJhdyhtX3Zpc3VhbERh
dGEtPnRleHREZWNvcmF0aW9uKTsgfQogICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdGV4dERlY29y
YXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU3R5
bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUpOyB9CiAgICAg
VGV4dERlY29yYXRpb25Ta2lwSW5rIHRleHREZWNvcmF0aW9uU2tpcEluaygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHREZWNvcmF0aW9uU2tpcEluaz4obV9yYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dERlY29yYXRpb25Ta2lwSW5rKTsgfQogICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0
ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VW5k
ZXJsaW5lUG9zaXRpb24+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3NpdGlv
bik7IH0KQEAgLTk4NCw5ICs5ODQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0SW5kZW50
KExlbmd0aCYmIGxlbmd0aCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIGluZGVudCwg
V1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGUg
dikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHRBbGlnbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2
KTsgfQogICAgIHZvaWQgc2V0VGV4dFRyYW5zZm9ybShUZXh0VHJhbnNmb3JtIHYpIHsgbV9pbmhl
cml0ZWRGbGFncy50ZXh0VHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9Ci0g
ICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbj4gdikgeyBtX2luaGVyaXRlZEZsYWdzLnRleHREZWNvcmF0aW9ucyB8PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odi50b1JhdygpKTsgfQotICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QoT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiB2KSB7IG1faW5oZXJpdGVkRmxhZ3MudGV4
dERlY29yYXRpb25zID0gdi50b1JhdygpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvbihP
cHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHRE
ZWNvcmF0aW9uLCB2LnRvUmF3KCkpOyB9CisgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0lu
RWZmZWN0KE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHYpIHsgbV9pbmhlcml0ZWRGbGFn
cy50ZXh0RGVjb3JhdGlvbnMgfD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYudG9SYXcoKSk7IH0K
KyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbkxpbmU+IHYpIHsgbV9pbmhlcml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgPSB2LnRvUmF3
KCk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bkxpbmU+IHYpIHsgU0VUX1ZBUihtX3Zpc3VhbERhdGEsIHRleHREZWNvcmF0aW9uLCB2LnRvUmF3
KCkpOyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRleHREZWNvcmF0aW9uU3R5
bGUgdikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU3R5
bGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KSk7IH0KICAgICB2b2lkIHNldFRleHREZWNvcmF0
aW9uU2tpcEluayhUZXh0RGVjb3JhdGlvblNraXBJbmsgc2tpcEluaykgeyBTRVRfVkFSKG1fcmFy
ZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcEluaywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHNraXBJbmspKTsgfQogICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKFRleHRV
bmRlcmxpbmVQb3NpdGlvbiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IHRleHRVbmRlcmxpbmVQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvc2l0aW9uKSk7
IH0KQEAgLTE2MTMsNyArMTYxMyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5pbmcgLTEwMCUg
cGVyY2VudCBoZXJlIG1lYW5zIHRoZSBsaW5lLWhlaWdodCBpcyBub3Qgc2V0LgogICAgIHN0YXRp
YyBMZW5ndGggaW5pdGlhbExpbmVIZWlnaHQoKSB7IHJldHVybiBMZW5ndGgoLTEwMC4wZiwgTGVu
Z3RoVHlwZTo6UGVyY2VudCk7IH0KICAgICBzdGF0aWMgVGV4dEFsaWduTW9kZSBpbml0aWFsVGV4
dEFsaWduKCkgeyByZXR1cm4gVGV4dEFsaWduTW9kZTo6U3RhcnQ7IH0KLSAgICBzdGF0aWMgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uPiBpbml0aWFsVGV4dERlY29yYXRpb24oKSB7IHJldHVybiBP
cHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHsgfTsgfQorICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4
dERlY29yYXRpb25MaW5lPiBpbml0aWFsVGV4dERlY29yYXRpb24oKSB7IHJldHVybiBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiB7IH07IH0KICAgICBzdGF0aWMgVGV4dERlY29yYXRpb25T
dHlsZSBpbml0aWFsVGV4dERlY29yYXRpb25TdHlsZSgpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9u
U3R5bGU6OlNvbGlkOyB9CiAgICAgc3RhdGljIFRleHREZWNvcmF0aW9uU2tpcEluayBpbml0aWFs
VGV4dERlY29yYXRpb25Ta2lwSW5rKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpB
dXRvOyB9CiAgICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBpbml0aWFsVGV4dFVuZGVy
bGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25z
dGFudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmNwcAppbmRleCA1YjgxYTNiNmRmZDVjNGM2NjY1YTEyMjJlZjU3YzEzNjAyMDhiMjE3
Li4zZjE3NWY1MDYyOTNhZTJkNzYyYzA5Mjk0MGI5MDkxOGYxMTUwM2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5j
cHAKQEAgLTEwNDYsMTQgKzEwNDYsMTQgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgVGV4dENvbWJpbmUgdGV4dENvbWJpbmUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1U
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBUZXh0RGVjb3JhdGlvbiB0ZXh0
RGVjb3JhdGlvbikKLXsKLSAgICBzd2l0Y2ggKHRleHREZWNvcmF0aW9uKSB7Ci0gICAgY2FzZSBU
ZXh0RGVjb3JhdGlvbjo6Tm9uZTogdHMgPDwgIm5vbmUiOyBicmVhazsKLSAgICBjYXNlIFRleHRE
ZWNvcmF0aW9uOjpVbmRlcmxpbmU6IHRzIDw8ICJ1bmRlcmxpbmUiOyBicmVhazsKLSAgICBjYXNl
IFRleHREZWNvcmF0aW9uOjpPdmVybGluZTogdHMgPDwgIm92ZXJsaW5lIjsgYnJlYWs7Ci0gICAg
Y2FzZSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2g6IHRzIDw8ICJsaW5lLXRocm91Z2giOyBi
cmVhazsKLSAgICBjYXNlIFRleHREZWNvcmF0aW9uOjpCbGluazogdHMgPDwgImJsaW5rIjsgYnJl
YWs7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBUZXh0RGVjb3JhdGlv
bkxpbmUgbGluZSkKK3sKKyAgICBzd2l0Y2ggKGxpbmUpIHsKKyAgICBjYXNlIFRleHREZWNvcmF0
aW9uTGluZTo6Tm9uZTogdHMgPDwgIm5vbmUiOyBicmVhazsKKyAgICBjYXNlIFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lOiB0cyA8PCAidW5kZXJsaW5lIjsgYnJlYWs7CisgICAgY2FzZSBU
ZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lOiB0cyA8PCAib3ZlcmxpbmUiOyBicmVhazsKKyAg
ICBjYXNlIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2g6IHRzIDw8ICJsaW5lLXRocm91
Z2giOyBicmVhazsKKyAgICBjYXNlIFRleHREZWNvcmF0aW9uTGluZTo6Qmxpbms6IHRzIDw8ICJi
bGluayI7IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHM7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGI0
NzY2NjkxODJhMzY3YTQxMGMxNDVmYjBkZjM0YTJhOTE4ZGZjMzQuLmNjYzIxN2MzMzc1MjU0ZGM4
ODhmYTRhNjc0MWUwMmIxNmZlNWY2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC03NDAsNyArNzQwLDcgQEAg
ZW51bSBjbGFzcyBUZXh0VHJhbnNmb3JtIDogdWludDhfdCB7CiB9OwogCiBzdGF0aWMgY29uc3Qg
c2l6ZV90IFRleHREZWNvcmF0aW9uQml0cyA9IDQ7Ci1lbnVtIGNsYXNzIFRleHREZWNvcmF0aW9u
IDogdWludDhfdCB7CitlbnVtIGNsYXNzIFRleHREZWNvcmF0aW9uTGluZSA6IHVpbnQ4X3Qgewog
ICAgIE5vbmUgICAgICAgICAgPSAwLAogICAgIFVuZGVybGluZSAgICAgPSAxIDw8IDAsCiAgICAg
T3ZlcmxpbmUgICAgICA9IDEgPDwgMSwKQEAgLTEzMzMsNyArMTMzMyw3IEBAIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBTdHlsZURpZmZlcmVuY2UpOwogV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFRhYmxlTGF5b3V0VHlw
ZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dEFs
aWduTW9kZSk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
VGV4dENvbWJpbmUpOwotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIFRleHREZWNvcmF0aW9uKTsKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBUZXh0RGVjb3JhdGlvbkxpbmUpOwogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIFRleHREZWNvcmF0aW9uU2tpcEluayk7CiBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dERlY29yYXRpb25TdHlsZSk7
CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgVGV4dEVtcGhh
c2lzRmlsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmNwcAppbmRleCBjMjAyYjI1NDQ2ZmUwZWNiYjM1YzQ3MmI0ZDI5YmJmOGMyM2YzYzI4
Li41NWU1Y2NiMTk4ZTZkMDQ0ZDZiMTJlZTkyMzYyMTFhZWIxMzkxYzQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTI5NSwx
MCArMjk1LDEwIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICAgICAgLy8gU3BlYzog
QWxsIHRleHQgZGVjb3JhdGlvbnMgZXhjZXB0IGxpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24g
YmVmb3JlIHRoZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tlZDsgdGh1cywgdGhlIHRleHQgaXMg
cmVuZGVyZWQgb24gdG9wIG9mIHRoZXNlIGRlY29yYXRpb25zLgogICAgICAgICBhdXRvIGRlY29y
YXRpb25zID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICAgICAgaWYgKGRl
Y29yYXRpb25zICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKLSAgICAgICAgICAgIHBhaW50
RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5l
LCBmcmFnbWVudCk7Ci0gICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uOjpP
dmVybGluZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgp
LCBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29y
YXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpCisgICAgICAgICAgICBwYWlu
dERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb25MaW5lOjpVbmRl
cmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRp
b25MaW5lOjpPdmVybGluZSkKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8u
Y29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAg
ICAgICAgYXV0byBwYWludE9yZGVyID0gUmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQYWludE9y
ZGVyKHN0eWxlLnBhaW50T3JkZXIoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwYWludE9yZGVyLnNpemUoKTsgKytpKSB7CkBAIC0zMjMsOCArMzIzLDggQEAgdm9pZCBTVkdJ
bmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2UKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNwZWM6IExpbmUtdGhyb3Vn
aCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0
aHVzLCB0aGUgbGluZS10aHJvdWdoIGlzIHJlbmRlcmVkIG9uIHRvcCBvZiB0aGUgdGV4dC4KLSAg
ICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKQotICAg
ICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0
aW9uOjpMaW5lVGhyb3VnaCwgZnJhZ21lbnQpOworICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBU
ZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKQorICAgICAgICAgICAgcGFpbnREZWNvcmF0
aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gs
IGZyYWdtZW50KTsKIAogICAgICAgICBzZXRQYWludGluZ1Jlc291cmNlTW9kZSh7IH0pOwogICAg
IH0KQEAgLTQzOCwyMiArNDM4LDIyIEBAIGJvb2wgU1ZHSW5saW5lVGV4dEJveDo6bWFwU3RhcnRF
bmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgcG9zaXRpb25PZmZzZXRGb3JEZWNv
cmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbiwgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzLCBmbG9hdCB0aGlja25lc3MpCitzdGF0aWMgaW5saW5lIGZsb2F0
IHBvc2l0aW9uT2Zmc2V0Rm9yRGVjb3JhdGlvbihPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5l
PiBkZWNvcmF0aW9uLCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGZsb2F0IHRoaWNr
bmVzcykKIHsKICAgICAvLyBGSVhNRTogRm9yIFNWRyBGb250cyB3ZSBuZWVkIHRvIHVzZSB0aGUg
YXR0cmlidXRlcyBkZWZpbmVkIGluIHRoZSA8Zm9udC1mYWNlPiBpZiBzcGVjaWZpZWQuCiAgICAg
Ly8gQ29tcGF0aWJsZSB3aXRoIEJhdGlrL09wZXJhLgotICAgIGlmIChkZWNvcmF0aW9uID09IFRl
eHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29y
YXRpb25MaW5lOjpVbmRlcmxpbmUpCiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy5mbG9hdEFz
Y2VudCgpICsgdGhpY2tuZXNzICogMS41ZjsKLSAgICBpZiAoZGVjb3JhdGlvbiA9PSBUZXh0RGVj
b3JhdGlvbjo6T3ZlcmxpbmUpCisgICAgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25M
aW5lOjpPdmVybGluZSkKICAgICAgICAgcmV0dXJuIHRoaWNrbmVzczsKLSAgICBpZiAoZGVjb3Jh
dGlvbiA9PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCisgICAgaWYgKGRlY29yYXRpb24g
PT0gVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkKICAgICAgICAgcmV0dXJuIGZvbnRN
ZXRyaWNzLmZsb2F0QXNjZW50KCkgKiA1IC8gOC4wZjsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiAwLjBmOwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IHRoaWNrbmVz
c0ZvckRlY29yYXRpb24oT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQpCitzdGF0aWMgaW5saW5lIGZsb2F0IHRoaWNrbmVzc0ZvckRlY29yYXRpb24oT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4sIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewog
ICAgIC8vIEZJWE1FOiBGb3IgU1ZHIEZvbnRzIHdlIG5lZWQgdG8gdXNlIHRoZSBhdHRyaWJ1dGVz
IGRlZmluZWQgaW4gdGhlIDxmb250LWZhY2U+IGlmIHNwZWNpZmllZC4KICAgICAvLyBDb21wYXRp
YmxlIHdpdGggQmF0aWsvT3BlcmEKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBzdGF0aWMgaW5saW5lIFJl
bmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4dERlY29yYXRpb24o
TGVnYWN5SQogICAgIHJldHVybiAqcmVuZGVyZXI7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uPiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50
KQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9uLCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQogewogICAgIGlmIChyZW5kZXJlcigpLnN0eWxl
KCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0RAogICAgIH0KIH0KIAot
dm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRpb24sIGNv
bnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNv
cmF0aW9uUmVuZGVyZXIpCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbldp
dGhTdHlsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bkxpbmU+IGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIFJlbmRl
ckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKCFtX3Bh
aW50aW5nUmVzb3VyY2UpOwogICAgIEFTU0VSVCghcGFpbnRpbmdSZXNvdXJjZU1vZGUoKS5pc0Vt
cHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guaAppbmRleCA1M2VmNDc2NWZlZDYzZjNjNGEwYjVmZjM4MWE5Mjg2MmNiM2Q1NzFiLi4xMDY5
Mjk0YmQ2OGNjZDRiNDE2ZmEzNjU4ZWNkMzM0ZDIyNWFkOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtODMsOCArODMsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgcHJlcGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyhH
cmFwaGljc0NvbnRleHQqJiwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgY29uc3QgUmVuZGVyU3R5bGUm
KTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyhHcmFw
aGljc0NvbnRleHQqJik7CiAKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRl
eHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKTsK
LSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmLCBPcHRp
b25TZXQ8VGV4dERlY29yYXRpb24+LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBSZW5kZXJCb3hN
b2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50RGVjb3JhdGlv
bihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiwgY29uc3Qg
U1ZHVGV4dEZyYWdtZW50Jik7CisgICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3Jh
cGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4sIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwog
ICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgdW5zaWduZWQgc3Rh
cnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24pOwogICAgIHZvaWQgcGFpbnRUZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmIHNl
bGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwg
Ym9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5s
aW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCBiNGM0ZmM0Yjk1MDlmZTc5MjE2YWQzMTczZTFmY2Qz
NjQ1Zjc3OGI5Li5hMzY3NzhkZTk1ZjcwNjkyY2ZjMWI4YmQwNDNlODljMzE2ZjM0ZmM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RhdGljIGJvb2wgaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGNvbnN0IFJlbmRlcklu
bGluZSYgYW5jZXN0b3IsIGNvbnN0IFJlbmRlck8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5l
SXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0
IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uPiB0ZXh0RGVjb3JhdGlvbikKK3N0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVj
b3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvciYgbGluZSwgZmxv
YXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJl
ciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb24pCiB7CiAgICAg
Zm9yIChhdXRvIHJ1biA9IGxpbmUtPmZpcnN0UnVuKCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9u
TGluZSgpKSB7CiAgICAgICAgIGlmIChydW4tPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0
RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVJdGVyYXRvCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNv
bnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRlcmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dpY2Fs
Qm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj4gdGV4dERlY29yYXRpb24pCitzdGF0aWMgdm9pZCBtYXhMb2dpY2Fs
Qm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lSXRl
cmF0b3ImIGxpbmUsIGZsb2F0JiBtYXhMb2dpY2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50
KiBkZWNvcmF0aW9uUmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHRE
ZWNvcmF0aW9uKQogewogICAgIGZvciAoYXV0byBydW4gPSBsaW5lLT5maXJzdFJ1bigpOyBydW47
IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAocnVuLT5yZW5kZXJlcigp
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCBt
YXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lSXRlcgogICAgIH0KIH0KIAotc3RhdGljIGNvbnN0IFJlbmRlckVsZW1lbnQqIGVuY2xv
c2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVy
LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHREZWNvcmF0aW9uLCBib29sIGZpcnN0TGlu
ZSkKK3N0YXRpYyBjb25zdCBSZW5kZXJFbGVtZW50KiBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0
RGVjb3JhdGlvbihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uTGluZT4gdGV4dERlY29yYXRpb24sIGJvb2wgZmlyc3RMaW5lKQogewogICAgIGNvbnN0
IFJlbmRlckVsZW1lbnQqIGN1cnJlbnQgPSByZW5kZXJlci5wYXJlbnQoKTsKICAgICBkbyB7CkBA
IC0xMzUsMTYgKzEzNSwxNiBAQCBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRl
cmxpbmVQb3NpdGlvbiB1bmRlcmxpbmVQb3NpdGlvbiwgVGV4dFVuZGVybAogICAgICAgICBBU1NF
UlQodGV4dFJ1bik7CiAgICAgICAgIC8vIFBvc2l0aW9uIHVuZGVybGluZSByZWxhdGl2ZSB0byB0
aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBlbGVtZW50J3MgY29udGVudCBib3guCiAgICAg
ICAgIGF1dG8gbGluZSA9IHRleHRSdW4tPmxpbmUoKTsKLSAgICAgICAgYXV0byogZGVjb3JhdGlv
blJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4dFJ1bi0+
cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgbGluZS0+aXNGaXJzdCgpKTsK
KyAgICAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRo
VGV4dERlY29yYXRpb24odGV4dFJ1bi0+cmVuZGVyZXIoKSwgVGV4dERlY29yYXRpb25MaW5lOjpV
bmRlcmxpbmUsIGxpbmUtPmlzRmlyc3QoKSk7CiAgICAgICAgIAogICAgICAgICBmbG9hdCBvZmZz
ZXQ7CiAgICAgICAgIGlmICh0ZXh0UnVuLT5yZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGlu
ZXNXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICBvZmZzZXQgPSB0ZXh0UnVuLT5sb2dpY2Fs
VG9wKCk7Ci0gICAgICAgICAgICBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGxp
bmUsIG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5l
KTsKKyAgICAgICAgICAgIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZSwg
b2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5l
KTsKICAgICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxUb3AoKSAtIG9mZnNldDsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG9mZnNldCA9IHRleHRSdW4tPmxvZ2ljYWxC
b3R0b20oKTsKLSAgICAgICAgICAgIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxp
bmUobGluZSwgb2Zmc2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uOjpVbmRl
cmxpbmUpOworICAgICAgICAgICAgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGlu
ZShsaW5lLCBvZmZzZXQsIGRlY29yYXRpb25SZW5kZXJlciwgVGV4dERlY29yYXRpb25MaW5lOjpV
bmRlcmxpbmUpOwogICAgICAgICAgICAgb2Zmc2V0IC09IHRleHRSdW4tPmxvZ2ljYWxCb3R0b20o
KTsKICAgICAgICAgfQogICAgICAgICBhdXRvIGRlc2lyZWRPZmZzZXQgPSB0ZXh0UnVuLT5sb2dp
Y2FsSGVpZ2h0KCkgKyBnYXAgKyBzdGQ6Om1heChvZmZzZXQsIDAuMGYpICsgdW5kZXJsaW5lT2Zm
c2V0Lmxlbmd0aE9yKDApOwpAQCAtMTkwLDcgKzE5MCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFs
T3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25z
dCBJCiAKICAgICAvLyBUaGVzZSBtZXRyaWNzIG11c3QgbWF0Y2ggd2hlcmUgdW5kZXJsaW5lcyBn
ZXQgZHJhd24uCiAgICAgLy8gRklYTUU6IFNoYXJlIHRoZSBjb2RlIGluIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbigpIHNvIHdlIGNhbiBqdXN0IHF1ZXJ5IGl0IGZv
ciB0aGUgcGFpbnRlZCBnZW9tZXRyeS4KLSAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0
aW9uOjpVbmRlcmxpbmUpIHsKKyAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uTGlu
ZTo6VW5kZXJsaW5lKSB7CiAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBpbnRlZ3JhbCBj
ZWlsaW5nIGluIEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNp
bmdNb2RlRm9yVGV4dCgpCiAgICAgICAgIGludCB1bmRlcmxpbmVPZmZzZXQgPSAxOwogICAgICAg
ICBmbG9hdCB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZSA9IDE2OwpAQCAtMjA0LDcgKzIwNCw3
IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgICAgICAgICBvdmVyZmxvd1Jlc3VsdC5l
eHRlbmRUb3AoLXVuZGVybGluZU9mZnNldCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGRl
Y29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpIHsKKyAgICBpZiAoZGVjb3JhdGlv
biAmIFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHsKICAgICAgICAgRmxvYXRSZWN0IHJl
Y3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoMSwgc3Ryb2tlVGhpY2tuZXNzKSk7CiAgICAgICAg
IGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IFRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUo
KSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwogICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1Rl
eHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gc3Ryb2tlVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7CkBA
IC0yMTcsNyArMjE3LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRp
b25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICAgICAgb3ZlcmZs
b3dSZXN1bHQuZXh0ZW5kVG9wKC1yZWN0LnkoKSk7CiAgICAgICAgIG92ZXJmbG93UmVzdWx0LmV4
dGVuZEJvdHRvbShyZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAgICAgfQotICAgIGlmIChkZWNvcmF0
aW9uICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSB7CisgICAgaWYgKGRlY29yYXRpb24g
JiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgIEZsb2F0UmVjdCBy
ZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKDEsIHN0cm9rZVRoaWNrbmVzcykpOwogICAgICAg
ICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKGxpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXpl
KCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKICAgICAgICAgYXV0byBjZW50ZXIgPSAyICog
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKSAvIDMgKyBhdXRvVGV4dERlY29y
YXRpb25UaGlja25lc3MgLyAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaAppbmRleCAwZjA4ZmVkM2QwZTZkMzIyYzEwNTkxNzdkMTNiZGNjZTNhZGQ4N2Y0
Li4wMDIxMWYxNmZjYzFhM2QxNWQ0NzUwOWRjNWIxYjM5NGI4MDM3ZDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtNzksNyArNzksNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIExlbmd0aFNpemUgY29udmVydFJhZGl1cyhCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBMZW5ndGhQb2ludCBjb252ZXJ0UG9zaXRp
b24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgTGVuZ3RoUG9p
bnQgY29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7
Ci0gICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gY29udmVydFRleHREZWNvcmF0
aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbkxpbmU+IGNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUm
LCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBUIGNv
bnZlcnROdW1iZXIoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVCBjb252ZXJ0TnVtYmVyT3JBdXRvKEJ1aWxkZXJTdGF0ZSYs
IGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIHNob3J0IGNvbnZlcnRXZWJraXRIeXBoZW5h
dGVMaW1pdExpbmVzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CkBAIC00MjksNyAr
NDI5LDcgQEAgaW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3Np
dGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXIKICAgICByZXR1cm4gTGVuZ3RoUG9pbnQo
TGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOwogfQog
Ci1pbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQor
aW5saW5lIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUZXh0RGVjb3JhdGlvbihCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgYXV0byByZXN1bHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9u
KCk7CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZTljZTZkYTBmZjM0MTY3OTVhMDQzNTEy
OTA1NjRjYzRiNjM0NDkyZS4uMGM3NDRkZGNlYjMzMjZkMDY3MTQ3YTA2ZWI5MTIxZmIxMGU1N2Y0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTUw
OSw3ICs5NTA5LDcgQEAgc3RhdGljIE5TVGV4dEFsaWdubWVudCBuc1RleHRBbGlnbm1lbnRGcm9t
UmVuZGVyU3R5bGUoY29uc3QgV2ViQ29yZTo6UmVuZGVyU3R5bGUKICAgICAgICAgICAgICAgICAg
ICAgU3RyaW5nIHZhbHVlID0gdHlwaW5nU3R5bGUtPnN0eWxlKCktPmdldFByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7CiAgICAgICAgICAgICAg
ICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRJc1Vu
ZGVybGluZWQ6dmFsdWUuY29udGFpbnMoInVuZGVybGluZSIpXTsKICAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgW19wcml2YXRlLT5fdGV4dFRvdWNoQmFySXRlbUNv
bnRyb2xsZXIgc2V0VGV4dElzVW5kZXJsaW5lZDpzdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZl
Y3QoKS5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKV07CisgICAgICAgICAgICAg
ICAgICAgIFtfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHNldFRleHRJc1Vu
ZGVybGluZWQ6c3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuY29udGFpbnMoVGV4dERl
Y29yYXRpb25MaW5lOjpVbmRlcmxpbmUpXTsKIAogICAgICAgICAgICAgICAgIENvbG9yIHRleHRD
b2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAg
ICAgICAgICAgICAgICAgaWYgKHRleHRDb2xvci5pc1ZhbGlkKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>