<?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>190530</bug_id>
          
          <creation_ts>2018-10-12 11:32:06 -0700</creation_ts>
          <short_desc>[Cocoa] Attachment dropped from one web view to another is missing its file wrapper</short_desc>
          <delta_ts>2019-04-06 19:34:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1468504</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-10-12 11:32:06 -0700</bug_when>
    <thetext>To reproduce this bug:

1. Create two editable, attachment-enabled web views
2. Drop a file into the first web view, thus creating an attachment
3. Drag the attachment from the first web view to the other one

Notice that the _WKAttachment instance passed to -_webView:didInsertAttachment:withSource: has a nil info.fileWrapper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468508</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-10-12 11:38:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/45232149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468530</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-10-12 12:41:32 -0700</bug_when>
    <thetext>Seems to also happen with copy and paste!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473417</commentid>
    <comment_count>3</comment_count>
      <attachid>353411</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 14:45:53 -0700</bug_when>
    <thetext>Created attachment 353411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473436</commentid>
    <comment_count>4</comment_count>
      <attachid>353417</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 15:28:30 -0700</bug_when>
    <thetext>Created attachment 353417
Try to fix macOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473494</commentid>
    <comment_count>5</comment_count>
      <attachid>353435</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 16:45:57 -0700</bug_when>
    <thetext>Created attachment 353435
Try to fix the Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473505</commentid>
    <comment_count>6</comment_count>
      <attachid>353435</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-10-30 16:56:09 -0700</bug_when>
    <thetext>Comment on attachment 353435
Try to fix the Windows build

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

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:91
&gt; +    return URLParser(makeString(&quot;applewebdata://attachment/&quot;_s, identifier)).result();

It feels weird/scary to build a URL by concatenating strings. But it seems like we don&apos;t have a mutable URL? What happens if identifier (which comes from where?) has non-path-safe characters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473537</commentid>
    <comment_count>7</comment_count>
      <attachid>353435</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 17:42:51 -0700</bug_when>
    <thetext>Comment on attachment 353435
Try to fix the Windows build

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

&gt;&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:91
&gt;&gt; +    return URLParser(makeString(&quot;applewebdata://attachment/&quot;_s, identifier)).result();
&gt; 
&gt; It feels weird/scary to build a URL by concatenating strings. But it seems like we don&apos;t have a mutable URL? What happens if identifier (which comes from where?) has non-path-safe characters?

Good point — the identifier _normally_ comes from within WebKit (createCanonicalUUIDString()) and it&apos;s only exposed as a readonly attribute to internal clients. That being said, we do have a mechanism for temporarily saving the identifier as an attribute on the attachment element (see &quot;webkitattachmentid&quot;). Using this, it should be possible to influence the identifier of a pasted/dropped attachment element by writing a webarchive to the pasteboard with an attachment element that contains this attribute...

I&apos;ve changed this to use URL::setPath() to set the path of the URL, and verified that non-path-safe characters (e.g. space) are URL-encoded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473566</commentid>
    <comment_count>8</comment_count>
      <attachid>353456</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 19:10:00 -0700</bug_when>
    <thetext>Created attachment 353456
Try to fix the Windows build (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473584</commentid>
    <comment_count>9</comment_count>
      <attachid>353458</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 19:52:26 -0700</bug_when>
    <thetext>Created attachment 353458
Try to fix the Windows build (3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473586</commentid>
    <comment_count>10</comment_count>
      <attachid>353459</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 20:11:31 -0700</bug_when>
    <thetext>Created attachment 353459
Try to fix the Windows build (4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473587</commentid>
    <comment_count>11</comment_count>
      <attachid>353460</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 20:23:42 -0700</bug_when>
    <thetext>Created attachment 353460
Try to fix the Windows build (4.1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473590</commentid>
    <comment_count>12</comment_count>
      <attachid>353461</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-30 20:34:16 -0700</bug_when>
    <thetext>Created attachment 353461
Try to fix the Windows build (5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473607</commentid>
    <comment_count>13</comment_count>
      <attachid>353461</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-30 22:29:26 -0700</bug_when>
    <thetext>Comment on attachment 353461
Try to fix the Windows build (5)

Clearing flags on attachment: 353461

Committed r237624: &lt;https://trac.webkit.org/changeset/237624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473608</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-30 22:29:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525053</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2019-04-06 19:34:18 -0700</bug_when>
    <thetext>*** Bug 188904 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353411</attachid>
            <date>2018-10-30 14:45:53 -0700</date>
            <delta_ts>2018-10-30 15:28:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190530-20181030144552.patch</filename>
            <type>text/plain</type>
            <size>45694</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg0NjBmYzA5ZTI4YWI4
YjExZjc5NTY1MTkxODk5Y2UzNzkwZTY4Ny4uYWViMzUyMmFkNGJjNDQyMWU5YTBhMzY0OTY5ZjQ1
YzEwZWM5MmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBjb3B5aW5nIGFuZCBwYXN0aW5nIGF0dGFjaG1lbnQgZWxlbWVudHMgYWNyb3NzIHdlYiB2aWV3
cyBieSBlbmNvZGluZyBhbmQgYWRkaW5nIGZpbGUgd3JhcHBlcgorICAgICAgICBkYXRhIGFzIHN1
YnJlc291cmNlcyBpbiB0aGUgd2ViIGFyY2hpdmUgd2hlbiB3cml0aW5nIHNlbGVjdGVkIHdlYiBj
b250ZW50IHRvIHRoZSBwYXN0ZWJvYXJkLCBhbmQgdGhlbiBkZWNvZGluZworICAgICAgICBhbmQg
Y3JlYXRpbmcgTlNGaWxlV3JhcHBlcnMgdXBvbiByZWFkaW5nIHdlYiBjb250ZW50LgorCisgICAg
ICAgIFRlc3Q6IFdLQXR0YWNobWVudFRlc3RzLkNvcHlBbmRQYXN0ZUJldHdlZW5XZWJWaWV3cwor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVnaXN0ZXJB
dHRhY2htZW50cyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKworICAgICAgICBBZGQg
cmVnaXN0ZXJBdHRhY2htZW50cygpLCB3aGljaCByZWdpc3RlcnMgX1dLQXR0YWNobWVudHMgaW4g
dGhlIFVJIHByb2Nlc3MgZ2l2ZW4gYSBsaXN0IG9mCisgICAgICAgIFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS4gVGhpcyBiZWhhdmVzIHNpbWlsYXJseSB0byByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVycygpLCBidXQgZGlmZmVycyBpbiB0aGF0ICgxKSBpdAorICAgICAgICBzZW5kcyBzZXJp
YWxpemVkIGZpbGUgd3JhcHBlciBkYXRhLCBhbmQgKDIpIGl0IHNlbmRzIGEgbGlzdCBvZiBzZXJp
YWxpemVkIGF0dGFjaG1lbnRzLCByYXRoZXIgdGhhbiBpbmZvcm1hdGlvbgorICAgICAgICBhYm91
dCBqdXN0IGEgc2luZ2xlIGF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oOgorCisgICAgICAgIEludHJvZHVjZSBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGEsIGEgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHNlcmlh
bGl6ZSBhbmQgZGVzZXJpYWxpemUgYW4KKyAgICAgICAgYXR0YWNobWVudC4gVGhlc2UgYXJlIHVz
ZWQgYm90aCB3aGVuIHdyaXRpbmcgYXR0YWNobWVudCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLCBh
bmQgd2hlbiBjb25zdW1pbmcgYXR0YWNobWVudAorICAgICAgICBkYXRhIHVwb24gcGFzdGUuCisK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisKKyAgICAg
ICAgQWRkIGEgc3RlcCB3aGVuIHBhc3RpbmcgcmljaCBjb250ZW50IHdpdGggYXR0YWNobWVudHMs
IHRvIGNvbGxlY3QgYW5kIHNlbmQgc2VyaWFsaXplZCBhdHRhY2htZW50cyB0byB0aGUgY2xpZW50
LgorICAgICAgICBBbHNvLCBkcml2ZS1ieSBmaXg6IGRvbid0IFdURk1vdmUoKSB0aGUgUmVmIGhl
cmUgaWYgaXQncyBzdGlsbCBnb2luZyB0byBiZSB1c2VkIGJlbG93LgorCisgICAgICAgICogaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFj
aG1lbnRFbGVtZW50OjphcmNoaXZlUmVzb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRkIGEgc3RhdGljIGhlbHBlciBmdW5jdGlv
biB0byBjb21wdXRlIGEgVVJMIHRoYXQgcmVwcmVzZW50cyB0aGUgZGF0YSBmb3IgdGhlIGdpdmVu
IGF0dGFjaG1lbnQgaWRlbnRpZmllciwgZm9yCisgICAgICAgIHVzZSBpbiBhIHdlYiBhcmNoaXZl
IHJlc291cmNlLgorCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2htZW50RWxl
bWVudHNJZk5lY2Vzc2FyeSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNy
ZWF0ZSBhbmQgYXBwZW5kIEFyY2hpdmVSZXNvdXJjZXMgcmVwcmVzZW50aW5nIGF0dGFjaG1lbnQg
ZWxlbWVudCBkYXRhIHdoZW4gd3JpdGluZworICAgICAgICBhdHRhY2htZW50cyB0byB0aGUgcGFz
dGVib2FyZCB2aWEgd2ViIGFyY2hpdmUgZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorCiAyMDE4LTEwLTI3ICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbRU1FXSBBZGQgYSBsb2dnaW5nIG1hY3JvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM0
MTFiNWMxNGUyNjZjOTQ3N2Y3YWY5MmQ5Y2Q5NjRjZWUxOTlmZDUuLjE2OTYwMzQxY2NjNDVjMDdi
ZGU1MTU1OTAyMDczMjJhZTE0MmYyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTgt
MTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8gYW5vdGhlciBp
cyBtaXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUyMzIx
NDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vl
IFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCisgICAgICAgIEFkZCBJUEMgZW5jb2Rpbmcv
ZGVjb2Rpbmcgc3VwcG9ydCBmb3IgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisKKyAgICAgICAgQWRk
IGEgbWV0aG9kIHRvIHNlcmlhbGl6ZSBhbmQgcmV0dXJuIGF0dGFjaG1lbnQgaW5mbyBhcyBhIGJs
b2Igb2YgZGF0YS4KKworICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKToKKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gdXBkYXRlIHRo
ZSBhdHRhY2htZW50LCBnaXZlbiBhIHNlcmlhbGl6ZWQgYmxvYiBvZiBkYXRhLiBPbiBDb2NvYSBw
bGF0Zm9ybXMsIHRoaXMgZmFpbHMKKyAgICAgICAgZ3JhY2VmdWxseSBpZiB0aGUgc2VyaWFsaXpl
ZCBkYXRhIGNhbm5vdCBiZSBkZWNvZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVu
dEltcGxDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWxs
b2NGaWxlV3JhcHBlckluc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNl
KTogRGVsZXRlZC4KKworICAgICAgICBBZGQgYW4gYWRkaXRpb25hbCBob29rIHRvIHJldHVybiB0
aGUgbGlzdCBvZiBOU0ZpbGVXcmFwcGVyIHN1YmNsYXNzZXMgc3VpdGFibGUgZm9yIGRlc2VyaWFs
aXphdGlvbi4gVGhpcworICAgICAgICBhcnJheSBjb250YWlucyAoYXQgbWluaW11bSkgTlNGaWxl
V3JhcHBlciwgYnV0IG1heSBhZGRpdGlvbmFsbHkgaW5jbHVkZSBhIGN1c3RvbSBOU0ZpbGVXcmFw
cGVyIHN1YmNsYXNzLCBpZgorICAgICAgICBjb25maWd1cmVkLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6YWxsb2NGaWxl
V3JhcHBlckluc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6c2Vy
aWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudDo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKToKKworICAgICAgICBSZWdp
c3RlcnMgdGhlIGdpdmVuIHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhLCBjcmVhdGluZyBuZXcg
X1dLQXR0YWNobWVudCBpbnN0YW5jZXMgaWYgbmVjZXNzYXJ5LiBDdXJyZW50bHksCisgICAgICAg
IHRoaXMgZG9lcyBub3QgdXBkYXRlIHRoZSBmaWxlIHdyYXBwZXJzIG9mIGV4aXN0aW5nIF9XS0F0
dGFjaG1lbnRzOyB3ZSBzaG91bGQgcmV2aXNpdCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gc2VlCisg
ICAgICAgIGlmIHdlIGNhbiBhZGRpdGlvbmFsbHkgdXBkYXRlIGZpbGUgd3JhcHBlcnMgZm9yIGV4
aXN0aW5nIGF0dGFjaG1lbnRzLCB3aXRob3V0IGJyZWFraW5nIHRoZSBjYXNlIHdoZXJlIHRoZSB1
c2VyCisgICAgICAgIGNvcGllcyBhbmQgcGFzdGVzIG9yIGRyYWdzIGFuZCBkcm9wcyBhdHRhY2ht
ZW50cyB3aXRoaW4gYSBzaW5nbGUgd2ViIHZpZXcgYW5kIHRoZSBjbGllbnQgZXhwZWN0cyBfV0tB
dHRhY2htZW50CisgICAgICAgIGluc3RhbmNlcyB0byBiZSByZXVzZWQuCisKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVy
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0
b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0
b3JDbGllbnQ6OnNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKToKKworICAg
ICAgICBJbXBsZW1lbnQgYSBuZXcgSVBDIGhvb2sgdG8gZmV0Y2ggYW4gYXJyYXkgb2Ygc2VyaWFs
aXplZCBhdHRhY2htZW50IGRhdGEgYmxvYnMsIGdpdmVuIGEgbGlzdCBvZiBhdHRhY2htZW50Cisg
ICAgICAgIGlkZW50aWZpZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxOC0xMC0yNiAgTWVnYW4gR2FyZG5lciAgPG1lZ2Fu
X2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBVbnVzZWQgV2ViU2VsZWN0aW9u
QXNzaXN0YW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0NGYyYWZlNDc5NjczNjE0NmE4My4u
YTliMDRjZThlN2M2MjdiOGE0OTljMTMwZmQxY2VmNzU2ZTRhNGRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDg4Nyw2ICs0
ODg3LDcgQEAKIAkJRjQ5Nzg2ODgxRkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5Nzg2
ODcxRkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2
MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAvKiBEdW1w
RWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2MkMyNCAvKiBF
ZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9y
eVV0aWwuanMgKi87IH07CisJCUY0RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVk
QXR0YWNobWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0RDQzRDY0MjE4ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
NEU1N0VEQzIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RTU3RURBMjEzRjNGNUYw
MDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RUUxMjEzRjQzNEEwMDRFQTk4RSAvKiBX
ZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREYyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRjUwNjY0RjgxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTA2NjRGNjE1
N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCAqLzsgfTsKQEAgLTE0NzkzLDYgKzE0
Nzk0LDcgQEAKIAkJRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29sb3JDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDhEMkFBNDIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENvbG9yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTc4
Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
RDQzRDY0MjE4ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hh
bmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGb250QXR0cmlidXRlQ2hhbmdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5T
Rm9udE1hbmFnZXJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJF
eHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdFRTAyMTNGNDM0QTAw
NEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDYxNSw2ICsyMDYxNyw3IEBACiAJCQkJOTMzMDlEQkIwOTlFNjQ5MTAwNTZF
NTgxIC8qIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmggKi8sCiAJCQkJNTE0MDVDODYxOTBCMDE0
NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAgKi8sCiAJCQkJNTE0MDVDODcx
OTBCMDE0NDAwNzU0Rjk0IC8qIFNlbGVjdGlvblJlY3RHYXRoZXJlci5oICovLAorCQkJCUY0RDQz
RDY0MjE4ODAyRTYwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCAqLywKIAkJ
CQk5MzMwOURDMDA5OUU2NDkxMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3Bw
ICovLAogCQkJCTkzMzA5REMxMDk5RTY0OTEwMDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29t
bWFuZC5oICovLAogCQkJCUI4REJEQjQ3MTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25D
b21tYW5kLmNwcCAqLywKQEAgLTMwNjk1LDYgKzMwNjk4LDcgQEAKIAkJCQk0MTUwNzE1ODE2ODUw
NjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzMTA3
QkUyMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggaW4g
SGVhZGVycyAqLywKKwkJCQlGNEQ0M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMThERjMzNTE4QUFGMTJDMDA3NzNF
NTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0FG
MTQwMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCAzNTk1YTA0MGYyZmJiMDM1NWY3ZjEzMjEzOTI3ZDQ2NDIwYWI1
OTlmLi5kMDdjNDRiNDE5NmNkZWMzNDVjZjI5ZTIxN2ZiOWE0ZWY3ZjUzYTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MDEwLDYgKzQwMTAsMTIgQEAgdm9pZCBFZGl0b3I6OnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlk
ZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBmaWxlUGF0aCk7CiB9CiAKK3ZvaWQgRWRpdG9yOjpyZWdp
c3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYgZGF0YSkK
K3sKKyAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCisgICAgICAgIGNsaWVu
dC0+cmVnaXN0ZXJBdHRhY2htZW50cyhXVEZNb3ZlKGRhdGEpKTsKK30KKwogdm9pZCBFZGl0b3I6
OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQog
ewogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IGI5NjExZTM3YmUwODc0Y2JhYjczNTA3YzRlNzIyYTBlYmYzMzA5MzYuLjNi
YzhhMDYwZWVkZTRjMzE5NTgyOWUxM2YxZDU0MjM3NTAyY2UyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtODYsNiArODYsMTAgQEAgc3RydWN0IFBhc3RlYm9hcmRQbGFpblRleHQ7CiBz
dHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKKyNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YTsKKyNlbmRpZgorCiBlbnVtIEVkaXRvckNvbW1hbmRTb3VyY2UgeyBDb21tYW5kRnJvbU1lbnVP
cktleUJpbmRpbmcsIENvbW1hbmRGcm9tRE9NLCBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlIH07CiBlbnVtIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvciB7IEVkaXRvclBhcmFncmFwaFNl
cGFyYXRvcklzRGl2LCBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1AgfTsKIApAQCAtNTA5LDgg
KzUxMyw5IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgLyogY29udGVu
dFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcm
IC8qIGZpbGVQYXRoICovKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBw
cmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYp
OworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgdG9JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRFbGVt
ZW50KEhUTUxBdHRhY2htZW50RWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdhOWU4ZTU0Mzg5ZjMy
NTRiNDBjZTYzMWU2MjFhY2NkMjkzYWEzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK3N0cnVj
dCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgeworICAgIFN0cmluZyBpZGVudGlmaWVyOworICAg
IFN0cmluZyBtaW1lVHlwZTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFk
ZXJDb2NvYS5tbQppbmRleCAwYjc5ZWFlOGYxMzY3MmU1MTgwMTlmYzZjZjEzZmJhZDA0MmM0MjA4
Li5hZWZlYjFhZjFmNjkzYzM5MTJiZGY4ZDY4ZDNmZDlkNWNjNzY1ZmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpA
QCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUHVibGljVVJMTWFu
YWdlci5oIgogI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2ltcG9ydCAiU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgiCiAjaW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAi
U29ja2V0UHJvdmlkZXIuaCIKICNpbXBvcnQgIlR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oIgpAQCAtMjc0LDYgKzI3NSwyMCBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAg
ICAgICAgdXJsVG9SZXNvdXJjZU1hcC5zZXQodXJsLnN0cmluZygpLCBzdWJyZXNvdXJjZS5jb3B5
UmVmKCkpOwogICAgIH0KIAorICAgIFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YTsKKyAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBkZXNj
ZW5kYW50c09mVHlwZTxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KGZyYWdtZW50KSkgeworICAgICAg
ICBhdXRvIHJlc291cmNlVVJMID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphcmNoaXZlUmVzb3Vy
Y2VVUkwoYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvIHJlc291
cmNlRW50cnkgPSB1cmxUb1Jlc291cmNlTWFwLmZpbmQocmVzb3VyY2VVUkwuc3RyaW5nKCkpOwor
ICAgICAgICBpZiAocmVzb3VyY2VFbnRyeSA9PSB1cmxUb1Jlc291cmNlTWFwLmVuZCgpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVu
dHJ5LT52YWx1ZTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0
dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3Vy
Y2UtPmRhdGEoKSB9KTsKKyAgICB9CisKKyAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5pc0VtcHR5KCkpCisgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVyQXR0YWNobWVudHMo
V1RGTW92ZShzZXJpYWxpemVkQXR0YWNobWVudERhdGEpKTsKKwogICAgIFZlY3RvcjxSZWY8RWxl
bWVudD4+IGVsZW1lbnRzVG9SZW1vdmU7CiAgICAgVmVjdG9yPEF0dGFjaG1lbnRJbnNlcnRpb25J
bmZvPiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbzsKICAgICBmb3IgKGF1dG8mIGltYWdlIDogZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTEltYWdlRWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zMjMsNyAr
MzM4LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZy
YW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIGlmIChpczxIVE1M
SW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkpICYmIGNvbnRlbnRUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oaW5mby5jb250ZW50VHlwZSkpIHsKICAg
ICAgICAgICAgICAgICBhdXRvJiBpbWFnZSA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KG9y
aWdpbmFsRWxlbWVudC5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoaW5mby5kYXRhLCBpbmZv
LmNvbnRlbnRUeXBlKSkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dGFjaG1lbnRFbGVt
ZW50KFdURk1vdmUoYXR0YWNobWVudCkpOworICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dGFj
aG1lbnRFbGVtZW50KGF0dGFjaG1lbnQuY29weVJlZigpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhpbmZvLmRhdGEt
PnNpemUoKSwgaW5mby5jb250ZW50VHlwZSwgaW5mby5maWxlTmFtZSk7CiAgICAgICAgICAgICAg
ICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQoYXR0YWNobWVudCwgV1RGTW92ZShvcmlnaW5hbEVsZW1l
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCAwYzY4NjA5ZTE1NWQ0ZWRmMDdlYjlhYjQxMDk3MTFjM2NjYjU4NGIwLi4yZTUzM2YwZGE0
MjdhMzg4ZGVmYzY0ZDQyZGQ1NmI5MzE3YzFiOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlbmRlckF0dGFjaG1lbnQuaCIKICNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlIDxw
YWwvRmlsZVNpemVGb3JtYXR0ZXIuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CkBAIC04NSw2ICs4NiwxMSBAQCBjb25zdCBTdHJpbmcm
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Z2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRNTEltYWdl
RWxlbWVudCYgaQogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCitVUkwgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjphcmNoaXZlUmVzb3VyY2VVUkwoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQor
eworICAgIHJldHVybiBVUkxQYXJzZXIobWFrZVN0cmluZygiYXBwbGV3ZWJkYXRhOi8vYXR0YWNo
bWVudC8iX3MsIGlkZW50aWZpZXIpKS5yZXN1bHQoKTsKK30KKwogRmlsZSogSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpmaWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9maWxlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggMDQxMDQyNjYw
YmE1MGUwMDFkYmEzMjgyOGUyMDZiOWFjOGY2NDJiYy4uMDIwZGM0MDBhNzUxZDg4ZjQ4M2M0NTM1
OTdlNDFlY2VlZjgxNjBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBm
aW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1M
QXR0YWNobWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBnZXRBdHRhY2htZW50SWRlbnRpZmllcihIVE1M
SW1hZ2VFbGVtZW50Jik7CisgICAgc3RhdGljIFVSTCBhcmNoaXZlUmVzb3VyY2VVUkwoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgYmxvYlVSTCgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIEZpbGUqIGZpbGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggMGM1ODQ1
MjJhYjljNjRiN2Y3ZjU0NDY3OWRjYmU1N2Y2ZGY3ODI2Mi4uYTQxYzk0MDVhOGM4ZGJlMWY0N2M1
Y2M1NmViMjlkODE3ZGI2NmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTMyLDEwICszMiwxMyBAQAogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgorI2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVkaXRv
ckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgorI2lu
Y2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SUZyYW1lRWxlbWVudC5oIgpAQCAtNDcsNiArNTAsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hl
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC00NjQsNiArNDY5LDQyIEBAIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmFuZ2UqIHJhbmdlKQogICAgIHJl
dHVybiBjcmVhdGUobWFya3VwU3RyaW5nLCAqZnJhbWUsIG5vZGVMaXN0LCBudWxscHRyKTsKIH0K
IAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3N0YXRpYyB2b2lkIGFkZFN1YnJl
c291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50c0lmTmVjZXNzYXJ5KEZyYW1lJiBmcmFtZSwgY29u
c3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mIHN1
YnJlc291cmNlcykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzOworICAgIGZvciAoYXV0byogbm9kZSA6IG5v
ZGVzKSB7CisgICAgICAgIGlmICghaXM8SFRNTEF0dGFjaG1lbnRFbGVtZW50Pihub2RlKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gdW5pcXVlSWRlbnRpZmllciA9IGRv
d25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oKm5vZGUpLnVuaXF1ZUlkZW50aWZpZXIoKTsK
KyAgICAgICAgaWYgKHVuaXF1ZUlkZW50aWZpZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlSWRlbnRp
ZmllcikpOworICAgIH0KKworICAgIGlmIChpZGVudGlmaWVycy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIGVkaXRvckNsaWVudCA9IGZyYW1lLmVkaXRvcigpLmNsaWVu
dCgpOworICAgIGlmICghZWRpdG9yQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGZyYW1lTmFtZSA9IGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCk7CisgICAgZm9yIChhdXRvJiBk
YXRhIDogZWRpdG9yQ2xpZW50LT5zZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVy
cyhXVEZNb3ZlKGlkZW50aWZpZXJzKSkpIHsKKyAgICAgICAgYXV0byByZXNvdXJjZVVSTCA9IEhU
TUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGRhdGEuaWRlbnRpZmllcik7
CisgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0
YS5kYXRhLnB0cigpLCBXVEZNb3ZlKHJlc291cmNlVVJMKSwgZGF0YS5taW1lVHlwZSwgeyB9LCBm
cmFtZU5hbWUpKQorICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICB9Cit9CisKKyNlbmRpZgorCiBSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
LCBGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBXVEY6OkZ1bmN0aW9u
PGJvb2wgKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIpCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBm
cmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwpAQCAtNTI4LDYgKzU2
OSwxMCBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAgICAgICB9CiAgICAgfQogCisjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBhZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2ht
ZW50RWxlbWVudHNJZk5lY2Vzc2FyeShmcmFtZSwgbm9kZXMsIHN1YnJlc291cmNlcyk7CisjZW5k
aWYKKwogICAgIC8vIElmIHdlIGFyZSBhcmNoaXZpbmcgdGhlIGVudGlyZSBwYWdlLCBhZGQgYW55
IGxpbmsgaWNvbnMgdGhhdCB3ZSBoYXZlIGRhdGEgZm9yLgogICAgIGlmICghbm9kZXMuaXNFbXB0
eSgpICYmIG5vZGVzWzBdLT5pc0RvY3VtZW50Tm9kZSgpKSB7CiAgICAgICAgIGF1dG8qIGRvY3Vt
ZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCmluZGV4IGU4ZDEwYzI1NDE5ODQyYjFjMmZmOWE4NjUzZmQ0MmQyMjVh
MTA1MDEuLmM0YzVhNWM3MTJlMzljMzYwNDIwZWI5OTc2MmY3MDk4NzlmMjVhOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtNDksNiArNDksMTAgQEAgY2xhc3MgVmlzaWJsZVNl
bGVjdGlvbjsKIHN0cnVjdCBHYXBSZWN0czsKIHN0cnVjdCBHcmFtbWFyRGV0YWlsOwogCisjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3N0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERh
dGE7CisjZW5kaWYKKwogY2xhc3MgRWRpdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5FZGl0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC03NSwxMSArNzksMTMgQEAgcHVibGljOgog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25z
dCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZp
bGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8s
IGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBh
dGggKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGNsb25lQXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiAvKiBm
cm9tSWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiB0b0lkZW50aWZpZXIgKi8pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIHNvdXJjZSAqLywgYm9v
bCAvKiBoYXNFbmNsb3NpbmdJbWFnZSAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92
ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KSB7IHJldHVybiB7IH07IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRp
dGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IGM0YzQ3ODhkMmU4Yzg2MGI5OThiMDlmMjdlOTg3ZGE5NjRiZDM3ZjQuLmQx
ZTI3YTk1YTIzNTAwOTMzODU0NDVkNjFhNDc1NDAxNWJjZDNiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUGFy
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KQEAgLTY5LDYgKzcw
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VydmljZVdvcmtlckRhdGEuaD4KQEAgLTMwMTIsNCArMzAxNCwzMCBAQCBzdGQ6Om9wdGlv
bmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2Rl
KERlY29kZXImIGRlYwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKwordm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT46OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YSYgZGF0YSkKK3sKKyAgICBlbmNvZGVyIDw8IGRhdGEuaWRl
bnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSB7IGRhdGEuZGF0YS5nZXQoKSB9OworfQorCitzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0cmluZyBpZGVudGlmaWVyOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
aW1lVHlwZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciks
IFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpIH19OworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGQ4NzgxOGU3YmE3N2M4ZDMxYTFkNmE5YmM3NzRl
NGY4MDlkNmMzYzIuLmY1MDkyMTYxNmIyYmE0NTQ3NjIyMTA4YThiNTg4ZjA3ZjA2ODgwZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNjQs
NiArMTY0LDEwIEBAIGNsYXNzIE1lZGlhU2Vzc2lvbk1ldGFkYXRhOwogc3RydWN0IE1lZGlhQ29u
c3RyYWludHM7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCitzdHJ1
Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOworI2VuZGlmCisKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50PFN0cmluZywgVmVjdG9yPFN0
cmluZz4+OwogI2VuZGlmCkBAIC03MjAsNiArNzI0LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IHsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RG
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRl
eCA5Y2MwNDEwZjc0NzQ0YmE3YzY2MWFjOWQ1ZjVlZTcyNWM2N2MyNzk1Li5hMTM0YmZhZjYzNWFi
YjQ0NTc5Mzc5MzY0MzE0YTgwMmUyNDcyMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05Niw2ICs5NiwxNSBAQCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAg
IHJldHVybiBudWxscHRyOworfQorCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RG
OjpTdHJpbmcmKQoreworfQorCiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBiOGZiYmJlOWI1
YzJmNWU2NTEyZTBkYWYyY2ZjZWYzOWJlOWFmM2JjLi42NGQwMjQxZTcyZTBlMjk5YTQ2NTM1ZTZh
MzdhNGVkYjU2YmYwM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRW5jbG9z
aW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0g
aGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCisgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAg
dm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwg
V2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggYjg3NzEwMmVmNWY4
ZGQxZThkYmMyMzlmMGQ3YzY1MTFkYTMyNzQ1Ny4uZDMwZTA5ZGM4MGJiZDI1N2NjZTQ1MmEzNjZk
OGY5ODc1NTRmYTVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKIAorI2ltcG9ydCAiUGFnZUNs
aWVudC5oIgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xMjUs
NCArMTI2LDM1IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJu
ICFtX2ZpbGVXcmFwcGVyOwogfQogCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAoreworICAgIGlm
ICghbV9maWxlV3JhcHBlciB8fCAhbV93ZWJQYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIE5TRXJyb3IgKmFyY2hpdmluZ0Vycm9yID0gbmlsOworICAgIE5TRGF0YSAqc2VyaWFs
aXplZERhdGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0Om1f
ZmlsZVdyYXBwZXIuZ2V0KCkgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjomYXJjaGl2
aW5nRXJyb3JdOworICAgIGlmICghc2VyaWFsaXplZERhdGEgfHwgYXJjaGl2aW5nRXJyb3IpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKK30KKwordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
c2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUp
Cit7CisgICAgaWYgKCFtX3dlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2Vy
aWFsaXplZERhdGEgPSBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24tPmNyZWF0ZU5TRGF0YSgpOwor
ICAgIGlmICghc2VyaWFsaXplZERhdGEpCisgICAgICAgIHJldHVybjsKKworICAgIE5TRXJyb3Ig
KnVuYXJjaGl2aW5nRXJyb3IgPSBuaWw7CisgICAgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXIg
PSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczptX3dlYlBhZ2Ut
PnBhZ2VDbGllbnQoKS5zZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSBmcm9tRGF0YTpz
ZXJpYWxpemVkRGF0YS5nZXQoKSBlcnJvcjomdW5hcmNoaXZpbmdFcnJvcl07CisgICAgaWYgKCFm
aWxlV3JhcHBlciB8fCB1bmFyY2hpdmluZ0Vycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBz
ZXRGaWxlV3JhcHBlckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlw
ZSk7CisgICAgbV93ZWJQYWdlLT51cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcygqdGhpcywgW10g
KGF1dG8pIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGQ1MTU0ZWQz
NTU1NDJiMTliMzE4M2EzMTViNzA0OGYzYzM3ZDZlMWEuLmQ3MjczNzJiNjY3MTE2NTYxMzAyOGY2
Y2FjMTVhNTY4YmFiN2NlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGljOgogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50
KEFQSTo6QXR0YWNobWVudCYsIGNvbnN0IFN0cmluZyYgc291cmNlKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlbW92ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JikgZmluYWw7Ci0gICAgTlNGaWxl
V3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgZmluYWw7CisgICAgTlNGaWxlV3Jh
cHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QgZmluYWw7CisgICAgTlNTZXQg
KnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLm1tCmluZGV4IDFmOWQyOTIxYjM4YTEwOGQyMDc4NDRiNTZjMjU5MTNk
N2NhNmMxMTYuLjc1YWNlOWEwMjhmMzE0YmE0MzA0MWZmYTQ1MGYzNTcwOWQzZmEyN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5tbQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpZFJlbW92
ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQogI2VuZGlmCiB9CiAKLU5T
RmlsZVdyYXBwZXIgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5j
ZSgpCitOU0ZpbGVXcmFwcGVyICpQYWdlQ2xpZW50SW1wbENvY29hOjphbGxvY0ZpbGVXcmFwcGVy
SW5zdGFuY2UoKSBjb25zdAogewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgQ2xhc3MgY2xzID0g
bV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzID86IFtO
U0ZpbGVXcmFwcGVyIHNlbGZdOwpAQCAtNzYsNiArNzYsMTcgQEAgTlNGaWxlV3JhcHBlciAqUGFn
ZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkKICNlbmRpZgogfQog
CitOU1NldCAqUGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFz
c2VzKCkgY29uc3QKK3sKKyAgICBDbGFzcyBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcyA9IE5TRmls
ZVdyYXBwZXIuc2VsZjsKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIENsYXNzIGNvbmZpZ3VyZWRG
aWxlV3JhcHBlckNsYXNzID0gbV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRGaWxl
V3JhcHBlckNsYXNzOworICAgIGlmIChjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcyAmJiBjb25m
aWd1cmVkRmlsZVdyYXBwZXJDbGFzcyAhPSBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcykKKyAgICAg
ICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFz
cywgZGVmYXVsdEZpbGVXcmFwcGVyQ2xhc3MsIG5pbF07CisjZW5kaWYKKyAgICByZXR1cm4gW05T
U2V0IHNldFdpdGhPYmplY3RzOmRlZmF1bHRGaWxlV3JhcHBlckNsYXNzLCBuaWxdOworfQorCiAj
ZW5kaWYKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBiOGEw
YzE0MmVkOGE3MmQyNjI5NWIxMmU3MTMwODUxNTgyODJhZTRiLi4xZGVlZDI5NzY4ZDg3NzVkZjEw
Yjk1YjA3YTY3NzA5ZTE2MzNiMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC00NSw2ICs0NSw3IEBACiAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNG
aWxlV3JhcHBlcjsKK09CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTQ0NSw3ICs0NDYsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50Jiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2UpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRh
Y2htZW50KEFQSTo6QXR0YWNobWVudCYpIHsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZp
cnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlcklu
c3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTlNTZXQgKnNl
cmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
ICNlbmRpZgogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggOGVjNGJmZDVhNWY5ZDkyZDExNWQyZGE1ZGRhMTc4ZjI5YjUzZWJmOS4uZTYzZWNm
NTBmMDVlY2I0MWQwNzY0NDVlNjRhN2JiMjhlODhkODdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03OTAwLDYgKzc5MDAsMTUgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKQogICAgICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChp
ZGVudGlmaWVyLCBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJQ
YWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdl
YkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJiBkYXRhKQoreworICAgIGZvciAoYXV0
byYgc2VyaWFsaXplZERhdGEgOiBkYXRhKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFdU
Rk1vdmUoc2VyaWFsaXplZERhdGEuaWRlbnRpZmllcik7CisgICAgICAgIGlmICghYXR0YWNobWVu
dEZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgICAgICBlbnN1cmVBdHRhY2htZW50
KGlkZW50aWZpZXIpLT51cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFdURk1vdmUo
c2VyaWFsaXplZERhdGEuZGF0YSksIFdURk1vdmUoc2VyaWFsaXplZERhdGEubWltZVR5cGUpKTsK
KyAgICB9Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0
IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQogewog
ICAgIGF1dG8gbmV3QXR0YWNobWVudCA9IGVuc3VyZUF0dGFjaG1lbnQodG9JZGVudGlmaWVyKTsK
QEAgLTc5MjUsNiArNzkzNCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZUFsbEF0
dGFjaG1lbnRzKCkKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLmNs
ZWFyKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFG
b3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIFZlY3RvcjxX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiBzZXJpYWxpemVkRGF0YSkKK3sKKyAg
ICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gYXR0
YWNobWVudCA9IGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBp
ZiAoIWF0dGFjaG1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGRh
dGEgPSBhdHRhY2htZW50LT5jcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKTsKKyAgICAg
ICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2VyaWFsaXpl
ZERhdGEuYXBwZW5kKHsgaWRlbnRpZmllciwgYXR0YWNobWVudC0+bWltZVR5cGUoKSwgZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpIH0pOworICAgIH0KK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0
dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBjN2FlNWQ5ZDYzZDAxZjJi
YzgyNDVlMjQ1NWMzYTA3NDM3Y2E4ZGUuLjI1OGFmOTJiNDUxZmM2YmZlM2E0YTJlODhkODZjNTU4
ODVjZTM3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMzEs
NiArMjMxLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
OwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hv
dDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC0xMzQ0LDYgKzEzNDUsNyBAQCBwdWJsaWM6
CiAgICAgUmVmUHRyPEFQSTo6QXR0YWNobWVudD4gYXR0YWNobWVudEZvcklkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQo
UmVmPEFQSTo6QXR0YWNobWVudD4mJiwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0
dGFjaG1lbnQmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2
b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTgyOSw2ICsxODMx
LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjY2I5ODY0OWFj
MWVjZjA0MTA2N2IzZDA0MWQ4N2RlYjM0YWQzYjUxLi4xZmU4NjBlM2M2YTYyYWNhNDYwNTViNTVm
NTdmOGFhZGZiNGZmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzQsOSArNTM0LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKFN0cmlu
ZyBpZGVudGlmaWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBwcmVmZXJyZWRGaWxlTmFt
ZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgUmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIGNv
bnRlbnRUeXBlLCBTdHJpbmcgZmlsZVBhdGgpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
ZmllcihTdHJpbmcgaWRlbnRpZmllcikKKyAgICByZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlh
bGl6ZWREYXRhKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IGRhdGEp
CiAgICAgQ2xvbmVBdHRhY2htZW50RGF0YShTdHJpbmcgZnJvbUlkZW50aWZpZXIsIFN0cmluZyB0
b0lkZW50aWZpZXIpCiAgICAgRGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKFN0cmlu
ZyBpZGVudGlmaWVyLCBTdHJpbmcgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKQogICAg
IERpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKKyAg
ICBTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBp
ZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
IHNlcmFsaXplZERhdGEpIExlZ2FjeVN5bmMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IDdiOTBmNTkwNGRkZDViZTZlMmZlMjU5MzRhNDA4NjU5YWFjZmVmYzEuLmFj
ZGUyZjAwZDdkZDMxN2E0NzU0YTVmMWViNjAzYmE3ZGU4YTljOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVsbENoZWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0
eWxlUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CkBAIC0x
NjUsNiArMTY2LDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uCiAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9t
RGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIHsgZGF0YSB9
KSk7CiB9CiAKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKFZlY3Rv
cjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYgZGF0YSkKK3sKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21T
ZXJpYWxpemVkRGF0YShXVEZNb3ZlKGRhdGEpKSk7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21GaWxlUGF0aChpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgZmlsZVBhdGgp
KTsKQEAgLTE5MCw2ICsxOTYsMTMgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFJlbW92ZUF0
dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJ
ZGVudGlmaWVyKGlkZW50aWZpZXIpKTsKIH0KIAorVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4gV2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMpCit7CisgICAgVmVjdG9yPFdl
YkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZERhdGE7CisgICAgbV9w
YWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXJpYWxpemVkQXR0YWNobWVu
dERhdGFGb3JJZGVudGlmaWVycyhpZGVudGlmaWVycyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzOjpSZXBseShzZXJpYWxpemVk
RGF0YSkpOworICAgIHJldHVybiBzZXJpYWxpemVkRGF0YTsKK30KKwogI2VuZGlmCiAKIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpkaWRBcHBseVN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBk
ZDZmZTY5YzE1OTcwYjc0NGU1MmVkOGRkMjU3MWMyMWFkMzI0MWViLi40YjVhNmQzYWRkYjQ0M2U5
ODAwZjBhNTU0N2JiOTc5ZmM2NGQ4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02MywxMCAr
NjMsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBw
cmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAg
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsK
KyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNv
bnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKSBm
aW5hbDsKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIGhhc0VuY2xvc2lu
Z0ltYWdlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDbGll
bnRTaWRlQXR0YWNobWVudERhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAg
VmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBmaW5hbDsKICNl
bmRpZgogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NGQzOGRkMmFiMTNjNjM5NGM2
NWNiNWU1ZDIxZGZkZjQ2YTBkOTUwLi5iY2JhYTRjM2I1MzQ2ZjMxMTU0OTllMjllNTAyNTg2M2E3
ZGZkNDVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBv
bmUgd2ViIHZpZXcgdG8gYW5vdGhlciBpcyBtaXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDUzMAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDUyMzIxNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byB2ZXJpZnkgdGhhdCBjb3B5aW5nIGRp
ZmZlcmVudCB0eXBlcyBvZiBhdHRhY2htZW50cyBhbmQgcGFzdGluZyBpbiBhIG5ldyB3ZWIgdmll
dyBpbnNlcnRzCisgICAgICAgIGF0dGFjaG1lbnRzIGluIHRoZSBzZWNvbmQgd2ViIHZpZXcgdGhh
dCBhcmUgYmFja2VkIGJ5IF9XS0F0dGFjaG1lbnQgb2JqZWN0cywgd2hvc2UgTlNGaWxlV3JhcHBl
cnMgaG9sZCBkYXRhIHRoYXQKKyAgICAgICAgaXMgZXF1aXZhbGVudCB0byB0aGUgb3JpZ2luYWwg
ZmlsZSB3cmFwcGVycyB1c2VkIHRvIGluc2VydCBhdHRhY2htZW50cyBpbiB0aGUgZmlyc3Qgd2Vi
IHZpZXcuCisKKyAgICAgICAgRXhpc3RpbmcgQVBJIHRlc3RzIHZlcmlmeSB0aGF0IHdoZW4gY29w
eWluZyBhbmQgcGFzdGluZyB3aXRoaW4gYSBzaW5nbGUgd2ViIHZpZXcsIHRoZSBwYXN0ZWQgYXR0
YWNobWVudCBlbGVtZW50CisgICAgICAgIGlzIHN0aWxsIGJhY2tlZCBieSB0aGUgc2FtZSBOU0Zp
bGVXcmFwcGVyIGluc3RhbmNlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDE4LTEwLTI3ICBDaGFybGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBBZGQgYnViYmxld3JhcCBmZWF0dXJlIG9wdGlvbgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50
VGVzdHMubW0KaW5kZXggOTNmYjg3YTFkNTNkZDc4NjA1YjEwZDMwZTBiMDUyZjhiMTI3NTZjMS4u
Nzk2NGRmMWE1MTU3Nzk2MTM4ZDE3OTRmMmI1MTIyMTI4MjMzYzU0ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRl
c3RzLm1tCkBAIC0xNDYyLDYgKzE0NjIsNTIgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ3Vz
dG9tRmlsZVdyYXBwZXJTdWJjbGFzcykKICAgICBFWFBFQ1RfRVEoW0ZpbGVXcmFwcGVyIHNlbGZd
LCBbaW5zZXJ0ZWRBdHRhY2htZW50cy5maXJzdE9iamVjdC5pbmZvLmZpbGVXcmFwcGVyIGNsYXNz
XSk7CiB9CiAKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIENvcHlBbmRQYXN0ZUJldHdlZW5XZWJW
aWV3cykKK3sKKyAgICBhdXRvIGZpbGUgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RIVE1MRGF0YSgpXSk7CisgICAgW2ZpbGUg
c2V0UHJlZmVycmVkRmlsZW5hbWU6QCJ0ZXN0LmZvb2JhciJdOworICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnRlc3RJbWFnZURhdGEoKV0pOworICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RQREZEYXRhKCld
KTsKKyAgICBhdXRvIGZvbGRlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
RGlyZWN0b3J5V2l0aEZpbGVXcmFwcGVyczpAeyBAImltYWdlLnBuZyI6IGltYWdlLmdldCgpLCBA
ImRvY3VtZW50LnBkZiI6IGRvY3VtZW50LmdldCgpIH1dKTsKKyAgICBbZm9sZGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOkAiZm9sZGVyIl07CisgICAgYXV0byBhcmNoaXZlID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czp0ZXN0WklQRGF0
YSgpXSk7CisgICAgW2FyY2hpdmUgc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJhcmNoaXZlIl07CisK
KyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBmaXJzdFdlYlZpZXcgPSB3ZWJW
aWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAgICAgIFtmaXJzdFdlYlZpZXcgc3luY2hy
b25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZS5nZXQoKSBjb250ZW50
VHlwZTpAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdOworICAgICAgICBbZmlyc3RXZWJWaWV3
IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmZvbGRlci5nZXQo
KSBjb250ZW50VHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRm9sZGVyXTsKKyAgICAg
ICAgW2ZpcnN0V2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3Jh
cHBlcjphcmNoaXZlLmdldCgpIGNvbnRlbnRUeXBlOkAiYXBwbGljYXRpb24vemlwIl07CisgICAg
ICAgIFtmaXJzdFdlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisgICAgICAgIFtmaXJzdFdlYlZpZXcg
X2V4ZWN1dGVFZGl0Q29tbWFuZDpAIkNvcHkiIGFyZ3VtZW50Om5pbCBjb21wbGV0aW9uOm5pbF07
CisgICAgfQorCisgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRh
Y2htZW50cygpOworICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVy
KHNlY29uZFdlYlZpZXcuZ2V0KCkpOworICAgIFtzZWNvbmRXZWJWaWV3IHBhc3RlOm5pbF07Cisg
ICAgW3NlY29uZFdlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjMgdGFnTmFtZTpAImF0dGFjaG1l
bnQiXTsKKyAgICBFWFBFQ1RfRVEoM1UsIG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291
bnQpOworCisgICAgTlNTdHJpbmcgKnBsYWluRmlsZUlkZW50aWZpZXIgPSBbc2Vjb25kV2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
YXR0YWNobWVudFt0aXRsZV49dGVzdF0nKS51bmlxdWVJZGVudGlmaWVyIl07CisgICAgTlNTdHJp
bmcgKmZvbGRlcklkZW50aWZpZXIgPSBbc2Vjb25kV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudFt0aXRsZT1mb2xk
ZXJdJykudW5pcXVlSWRlbnRpZmllciJdOworICAgIE5TU3RyaW5nICphcmNoaXZlSWRlbnRpZmll
ciA9IFtzZWNvbmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50W3RpdGxlPWFyY2hpdmVdJykudW5pcXVlSWRlbnRp
ZmllciJdOworCisgICAgX1dLQXR0YWNobWVudEluZm8gKnBhc3RlZEZpbGVJbmZvID0gW3NlY29u
ZFdlYlZpZXcgX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOnBsYWluRmlsZUlkZW50aWZpZXJdLmlu
Zm87CisgICAgX1dLQXR0YWNobWVudEluZm8gKnBhc3RlZEZvbGRlckluZm8gPSBbc2Vjb25kV2Vi
VmlldyBfYXR0YWNobWVudEZvcklkZW50aWZpZXI6Zm9sZGVySWRlbnRpZmllcl0uaW5mbzsKKyAg
ICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkQXJjaGl2ZUluZm8gPSBbc2Vjb25kV2ViVmlldyBf
YXR0YWNobWVudEZvcklkZW50aWZpZXI6YXJjaGl2ZUlkZW50aWZpZXJdLmluZm87CisKKyAgICBO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNGaWxlV3JhcHBlciAqPiAqcGFzdGVkRm9sZGVyQ29u
dGVudHMgPSBwYXN0ZWRGb2xkZXJJbmZvLmZpbGVXcmFwcGVyLmZpbGVXcmFwcGVyczsKKyAgICBO
U0ZpbGVXcmFwcGVyICpkb2N1bWVudEZyb21Gb2xkZXIgPSBbcGFzdGVkRm9sZGVyQ29udGVudHMg
b2JqZWN0Rm9yS2V5OkAiZG9jdW1lbnQucGRmIl07CisgICAgTlNGaWxlV3JhcHBlciAqaW1hZ2VG
cm9tRm9sZGVyID0gW3Bhc3RlZEZvbGRlckNvbnRlbnRzIG9iamVjdEZvcktleTpAImltYWdlLnBu
ZyJdOworICAgIEVYUEVDVF9UUlVFKFtbZG9jdW1lbnQgcmVndWxhckZpbGVDb250ZW50c10gaXNF
cXVhbFRvRGF0YTpkb2N1bWVudEZyb21Gb2xkZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAg
IEVYUEVDVF9UUlVFKFtbaW1hZ2UgcmVndWxhckZpbGVDb250ZW50c10gaXNFcXVhbFRvRGF0YTpp
bWFnZUZyb21Gb2xkZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAgIEVYUEVDVF9UUlVFKFtb
ZmlsZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOnBhc3RlZEZpbGVJbmZvLmZp
bGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHNdKTsKKyAgICBFWFBFQ1RfVFJVRShbW2FyY2hp
dmUgcmVndWxhckZpbGVDb250ZW50c10gaXNFcXVhbFRvRGF0YTpwYXN0ZWRBcmNoaXZlSW5mby5m
aWxlV3JhcHBlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCBwYXN0ZWRGaWxlSW5mby5jb250ZW50VHlwZSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJwdWJsaWMuZGlyZWN0b3J5IiwgcGFzdGVkRm9sZGVySW5mby5j
b250ZW50VHlwZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi96aXAiLCBwYXN0
ZWRBcmNoaXZlSW5mby5jb250ZW50VHlwZSk7Cit9CisKICNwcmFnbWEgbWFyayAtIFBsYXRmb3Jt
LXNwZWNpZmljIHRlc3RzCiAKICNpZiBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353417</attachid>
            <date>2018-10-30 15:28:30 -0700</date>
            <delta_ts>2018-10-30 16:45:56 -0700</delta_ts>
            <desc>Try to fix macOS builds</desc>
            <filename>bug-190530-20181030152829.patch</filename>
            <type>text/plain</type>
            <size>45696</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVhYzA4OGEyNmNiYjA0
MjAxNjBhOTM2YzA5YzJmMDVhMmY5NDI4MC4uNDFiYWNjNTQ1NjBhN2M5MWUyMTdlMGM2ZTRlMmUw
Yjg2NjU1YjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBjb3B5aW5nIGFuZCBwYXN0aW5nIGF0dGFjaG1lbnQgZWxlbWVudHMgYWNyb3NzIHdlYiB2aWV3
cyBieSBlbmNvZGluZyBhbmQgYWRkaW5nIGZpbGUgd3JhcHBlcgorICAgICAgICBkYXRhIGFzIHN1
YnJlc291cmNlcyBpbiB0aGUgd2ViIGFyY2hpdmUgd2hlbiB3cml0aW5nIHNlbGVjdGVkIHdlYiBj
b250ZW50IHRvIHRoZSBwYXN0ZWJvYXJkLCBhbmQgdGhlbiBkZWNvZGluZworICAgICAgICBhbmQg
Y3JlYXRpbmcgTlNGaWxlV3JhcHBlcnMgdXBvbiByZWFkaW5nIHdlYiBjb250ZW50LgorCisgICAg
ICAgIFRlc3Q6IFdLQXR0YWNobWVudFRlc3RzLkNvcHlBbmRQYXN0ZUJldHdlZW5XZWJWaWV3cwor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVnaXN0ZXJB
dHRhY2htZW50cyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKworICAgICAgICBBZGQg
cmVnaXN0ZXJBdHRhY2htZW50cygpLCB3aGljaCByZWdpc3RlcnMgX1dLQXR0YWNobWVudHMgaW4g
dGhlIFVJIHByb2Nlc3MgZ2l2ZW4gYSBsaXN0IG9mCisgICAgICAgIFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS4gVGhpcyBiZWhhdmVzIHNpbWlsYXJseSB0byByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVycygpLCBidXQgZGlmZmVycyBpbiB0aGF0ICgxKSBpdAorICAgICAgICBzZW5kcyBzZXJp
YWxpemVkIGZpbGUgd3JhcHBlciBkYXRhLCBhbmQgKDIpIGl0IHNlbmRzIGEgbGlzdCBvZiBzZXJp
YWxpemVkIGF0dGFjaG1lbnRzLCByYXRoZXIgdGhhbiBpbmZvcm1hdGlvbgorICAgICAgICBhYm91
dCBqdXN0IGEgc2luZ2xlIGF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oOgorCisgICAgICAgIEludHJvZHVjZSBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGEsIGEgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHNlcmlh
bGl6ZSBhbmQgZGVzZXJpYWxpemUgYW4KKyAgICAgICAgYXR0YWNobWVudC4gVGhlc2UgYXJlIHVz
ZWQgYm90aCB3aGVuIHdyaXRpbmcgYXR0YWNobWVudCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLCBh
bmQgd2hlbiBjb25zdW1pbmcgYXR0YWNobWVudAorICAgICAgICBkYXRhIHVwb24gcGFzdGUuCisK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisKKyAgICAg
ICAgQWRkIGEgc3RlcCB3aGVuIHBhc3RpbmcgcmljaCBjb250ZW50IHdpdGggYXR0YWNobWVudHMs
IHRvIGNvbGxlY3QgYW5kIHNlbmQgc2VyaWFsaXplZCBhdHRhY2htZW50cyB0byB0aGUgY2xpZW50
LgorICAgICAgICBBbHNvLCBkcml2ZS1ieSBmaXg6IGRvbid0IFdURk1vdmUoKSB0aGUgUmVmIGhl
cmUgaWYgaXQncyBzdGlsbCBnb2luZyB0byBiZSB1c2VkIGJlbG93LgorCisgICAgICAgICogaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFj
aG1lbnRFbGVtZW50OjphcmNoaXZlUmVzb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRkIGEgc3RhdGljIGhlbHBlciBmdW5jdGlv
biB0byBjb21wdXRlIGEgVVJMIHRoYXQgcmVwcmVzZW50cyB0aGUgZGF0YSBmb3IgdGhlIGdpdmVu
IGF0dGFjaG1lbnQgaWRlbnRpZmllciwgZm9yCisgICAgICAgIHVzZSBpbiBhIHdlYiBhcmNoaXZl
IHJlc291cmNlLgorCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2htZW50RWxl
bWVudHNJZk5lY2Vzc2FyeSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNy
ZWF0ZSBhbmQgYXBwZW5kIEFyY2hpdmVSZXNvdXJjZXMgcmVwcmVzZW50aW5nIGF0dGFjaG1lbnQg
ZWxlbWVudCBkYXRhIHdoZW4gd3JpdGluZworICAgICAgICBhdHRhY2htZW50cyB0byB0aGUgcGFz
dGVib2FyZCB2aWEgd2ViIGFyY2hpdmUgZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorCiAyMDE4LTEwLTMwICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDYWxsaW5nIHdpbmRvdy5vcGVuKCIiLCAiX3NlbGYiKSBhbGxvd3Mgd29ya2lu
ZyBhcm91bmQgcmVzdHJpY3Rpb25zIG9uIHdpbmRvdy5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkOWU4
OGVlZDU4MGMwMzcwYWQyNTg3MzFjOWE2ZWY3YjBlN2QxNDcuLmEzMTQwZjEwOTljMTNiYTJhNWZm
MjRjZDM1YTdlYjk1MWEwMWM1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTgtMTAt
MzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8gYW5vdGhlciBpcyBt
aXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUyMzIxNDk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdl
YkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCisgICAgICAgIEFkZCBJUEMgZW5jb2RpbmcvZGVj
b2Rpbmcgc3VwcG9ydCBmb3IgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisKKyAgICAgICAgQWRkIGEg
bWV0aG9kIHRvIHNlcmlhbGl6ZSBhbmQgcmV0dXJuIGF0dGFjaG1lbnQgaW5mbyBhcyBhIGJsb2Ig
b2YgZGF0YS4KKworICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKToKKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gdXBkYXRlIHRoZSBh
dHRhY2htZW50LCBnaXZlbiBhIHNlcmlhbGl6ZWQgYmxvYiBvZiBkYXRhLiBPbiBDb2NvYSBwbGF0
Zm9ybXMsIHRoaXMgZmFpbHMKKyAgICAgICAgZ3JhY2VmdWxseSBpZiB0aGUgc2VyaWFsaXplZCBk
YXRhIGNhbm5vdCBiZSBkZWNvZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudElt
cGxDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NG
aWxlV3JhcHBlckluc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKTog
RGVsZXRlZC4KKworICAgICAgICBBZGQgYW4gYWRkaXRpb25hbCBob29rIHRvIHJldHVybiB0aGUg
bGlzdCBvZiBOU0ZpbGVXcmFwcGVyIHN1YmNsYXNzZXMgc3VpdGFibGUgZm9yIGRlc2VyaWFsaXph
dGlvbi4gVGhpcworICAgICAgICBhcnJheSBjb250YWlucyAoYXQgbWluaW11bSkgTlNGaWxlV3Jh
cHBlciwgYnV0IG1heSBhZGRpdGlvbmFsbHkgaW5jbHVkZSBhIGN1c3RvbSBOU0ZpbGVXcmFwcGVy
IHN1YmNsYXNzLCBpZgorICAgICAgICBjb25maWd1cmVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6YWxsb2NGaWxlV3Jh
cHBlckluc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6c2VyaWFs
aXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudDo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKToKKworICAgICAgICBSZWdpc3Rl
cnMgdGhlIGdpdmVuIHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhLCBjcmVhdGluZyBuZXcgX1dL
QXR0YWNobWVudCBpbnN0YW5jZXMgaWYgbmVjZXNzYXJ5LiBDdXJyZW50bHksCisgICAgICAgIHRo
aXMgZG9lcyBub3QgdXBkYXRlIHRoZSBmaWxlIHdyYXBwZXJzIG9mIGV4aXN0aW5nIF9XS0F0dGFj
aG1lbnRzOyB3ZSBzaG91bGQgcmV2aXNpdCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gc2VlCisgICAg
ICAgIGlmIHdlIGNhbiBhZGRpdGlvbmFsbHkgdXBkYXRlIGZpbGUgd3JhcHBlcnMgZm9yIGV4aXN0
aW5nIGF0dGFjaG1lbnRzLCB3aXRob3V0IGJyZWFraW5nIHRoZSBjYXNlIHdoZXJlIHRoZSB1c2Vy
CisgICAgICAgIGNvcGllcyBhbmQgcGFzdGVzIG9yIGRyYWdzIGFuZCBkcm9wcyBhdHRhY2htZW50
cyB3aXRoaW4gYSBzaW5nbGUgd2ViIHZpZXcgYW5kIHRoZSBjbGllbnQgZXhwZWN0cyBfV0tBdHRh
Y2htZW50CisgICAgICAgIGluc3RhbmNlcyB0byBiZSByZXVzZWQuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JD
bGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JD
bGllbnQ6OnNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKToKKworICAgICAg
ICBJbXBsZW1lbnQgYSBuZXcgSVBDIGhvb2sgdG8gZmV0Y2ggYW4gYXJyYXkgb2Ygc2VyaWFsaXpl
ZCBhdHRhY2htZW50IGRhdGEgYmxvYnMsIGdpdmVuIGEgbGlzdCBvZiBhdHRhY2htZW50CisgICAg
ICAgIGlkZW50aWZpZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxOC0xMC0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgSW5zdGFsbEFQSSBmb3IgaU9TIHVuY29uZGl0
aW9uYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDIxZDI1ZmQ4NTFhNmUyMWE4MWNlZTNmZjdmNmM2MzNlYWM2ZDI1MTYuLmM3
ODUwZTM1NTI1MjdhNjkyMjJiOTQ2ZTIzODQxZjdhYTA4NmZiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4ODksNiArNDg4
OSw3IEBACiAJCUY0OTc4Njg4MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTc4Njg3
MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJD
MjQgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVk
aXRpbmdIaXN0b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRp
dGluZ0hpc3RvcnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlV
dGlsLmpzICovOyB9OworCQlGNEQ0M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRF
NTdFREMyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEU1N0VEQTIxM0YzRjVGMDA0
RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEU1N0VFMTIxM0Y0MzRBMDA0RUE5OEUgLyogV2Vi
Q29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY1MDY2NEY4MTU3RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUwNjY0RjYxNTdG
NTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi87IH07CkBAIC0xNDc5OCw2ICsxNDc5
OSw3IEBACiAJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbG9yQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4
RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBDb2xvckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDk3ODY4
NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhc3RlYm9hcmRJdGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEQ0
M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5n
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdFREYyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0
cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTU3RUUwMjEzRjQzNEEwMDRF
QTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA2MjEsNiArMjA2MjMsNyBAQAogCQkJCTkzMzA5REJCMDk5RTY0OTEwMDU2RTU4
MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oICovLAogCQkJCTUxNDA1Qzg2MTkwQjAxNDQw
MDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwICovLAogCQkJCTUxNDA1Qzg3MTkw
QjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLywKKwkJCQlGNEQ0M0Q2
NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi8sCiAJCQkJ
OTMzMDlEQzAwOTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCAq
LywKIAkJCQk5MzMwOURDMTA5OUU2NDkxMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1h
bmQuaCAqLywKIAkJCQlCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5jcHAgKi8sCkBAIC0zMDcwNCw2ICszMDcwNyw3IEBACiAJCQkJNDE1MDcxNTgxNjg1MDY3
MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzEwN0JF
MjE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4REYzMzUxOEFBRjEyQzAwNzczRTU5
IC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzdBRjE0
MDE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggMzU5NWEwNDBmMmZiYjAzNTVmN2YxMzIxMzkyN2Q0NjQyMGFiNTk5
Zi4uZDA3YzQ0YjQxOTZjZGVjMzQ1Y2YyOWUyMTdmYjlhNGVmN2Y1M2E4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtNDAxMCw2ICs0MDEwLDEyIEBAIHZvaWQgRWRpdG9yOjpyZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nCiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVu
dGlmaWVyLCBjb250ZW50VHlwZSwgZmlsZVBhdGgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVnaXN0
ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7
CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQt
PnJlZ2lzdGVyQXR0YWNobWVudHMoV1RGTW92ZShkYXRhKSk7Cit9CisKIHZvaWQgRWRpdG9yOjpy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsK
ICAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAppbmRleCBiOTYxMWUzN2JlMDg3NGNiYWI3MzUwN2M0ZTcyMmEwZWJmMzMwOTM2Li4zYmM4
YTA2MGVlZGU0YzMxOTU4MjllMTNmMWQ1NDIzNzUwMmNlMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKQEAgLTg2LDYgKzg2LDEwIEBAIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0Owogc3Ry
dWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogCisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3N0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7
CisjZW5kaWYKKwogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JL
ZXlCaW5kaW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFj
ZSB9OwogZW51bSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBh
cmF0b3JJc0RpdiwgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQIH07CiAKQEAgLTUwOSw4ICs1
MTMsOSBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRU
eXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAv
KiBmaWxlUGF0aCAqLyk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJl
ZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsK
KyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
Y2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHRvSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVu
dChIVE1MQXR0YWNobWVudEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3YTllOGU1NDM4OWYzMjU0
YjQwY2U2MzFlNjIxYWNjZDI5M2FhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitzdHJ1Y3Qg
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKKyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBT
dHJpbmcgbWltZVR5cGU7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggMGI3OWVhZThmMTM2NzJlNTE4MDE5ZmM2Y2YxM2ZiYWQwNDJjNDIwOC4u
YWVmZWIxYWYxZjY5M2MzOTEyYmRmOGQ2OGQzZmQ5ZDVjYzc2NWZlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlB1YmxpY1VSTE1hbmFn
ZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbXBvcnQgIlNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNv
Y2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aCIKQEAgLTI3NCw2ICsyNzUsMjAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
ICAgIHVybFRvUmVzb3VyY2VNYXAuc2V0KHVybC5zdHJpbmcoKSwgc3VicmVzb3VyY2UuY29weVJl
ZigpKTsKICAgICB9CiAKKyAgICBWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJp
YWxpemVkQXR0YWNobWVudERhdGE7CisgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8SFRNTEF0dGFjaG1lbnRFbGVtZW50PihmcmFnbWVudCkpIHsKKyAgICAgICAg
YXV0byByZXNvdXJjZVVSTCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNl
VVJMKGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byByZXNvdXJj
ZUVudHJ5ID0gdXJsVG9SZXNvdXJjZU1hcC5maW5kKHJlc291cmNlVVJMLnN0cmluZygpKTsKKyAg
ICAgICAgaWYgKHJlc291cmNlRW50cnkgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRy
eS0+dmFsdWU7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkgfSk7CisgICAgfQorCisgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aXNFbXB0eSgpKQorICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRzKFdU
Rk1vdmUoc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhKSk7CisKICAgICBWZWN0b3I8UmVmPEVsZW1l
bnQ+PiBlbGVtZW50c1RvUmVtb3ZlOwogICAgIFZlY3RvcjxBdHRhY2htZW50SW5zZXJ0aW9uSW5m
bz4gYXR0YWNobWVudEluc2VydGlvbkluZm87CiAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRlc2Nl
bmRhbnRzT2ZUeXBlPEhUTUxJbWFnZUVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzIzLDcgKzMz
OCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFt
ZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBpZiAoaXM8SFRNTElt
YWdlRWxlbWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFi
bGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihvcmln
aW5hbEVsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9i
amVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5j
b250ZW50VHlwZSkpKTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxlbWVu
dChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRhY2ht
ZW50RWxlbWVudChhdHRhY2htZW50LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoaW5mby5kYXRhLT5z
aXplKCksIGluZm8uY29udGVudFR5cGUsIGluZm8uZmlsZU5hbWUpOwogICAgICAgICAgICAgICAg
IHBhcmVudC0+cmVwbGFjZUNoaWxkKGF0dGFjaG1lbnQsIFdURk1vdmUob3JpZ2luYWxFbGVtZW50
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5k
ZXggMGM2ODYwOWUxNTVkNGVkZjA3ZWI5YWI0MTA5NzExYzNjY2I1ODRiMC4uMmU1MzNmMGRhNDI3
YTM4OGRlZmM2NGQ0MmRkNTZiOTMxN2MxYjlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8cGFs
L0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtODUsNiArODYsMTEgQEAgY29uc3QgU3RyaW5nJiBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVs
ZW1lbnQmIGkKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAorVVJMIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICByZXR1cm4gVVJMUGFyc2VyKG1ha2VTdHJpbmcoImFwcGxld2ViZGF0YTovL2F0dGFjaG1l
bnQvIl9zLCBpZGVudGlmaWVyKSkucmVzdWx0KCk7Cit9CisKIEZpbGUqIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6ZmlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmlsZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDA0MTA0MjY2MGJh
NTBlMDAxZGJhMzI4MjhlMjA2YjlhYzhmNjQyYmMuLjAyMGRjNDAwYTc1MWQ4OGY0ODNjNDUzNTk3
ZTQxZWNlZWY4MTYwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmlu
YWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0
dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRNTElt
YWdlRWxlbWVudCYpOworICAgIHN0YXRpYyBVUkwgYXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGJsb2JVUkwoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBGaWxlKiBmaWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IDBjNTg0NTIy
YWI5YzY0YjdmN2Y1NDQ2NzlkY2JlNTdmNmRmNzgyNjIuLmE0MWM5NDA1YThjOGRiZTFmNDdjNWNj
NTZlYjI5ZDgxN2RiNjZmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0zMiwxMCArMzIsMTMgQEAKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFZGl0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNs
dWRlICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElG
cmFtZUVsZW1lbnQuaCIKQEAgLTQ3LDYgKzUwLDggQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNDY0LDYgKzQ2OSw0MiBAQCBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJhbmdlKiByYW5nZSkKICAgICByZXR1
cm4gY3JlYXRlKG1hcmt1cFN0cmluZywgKmZyYW1lLCBub2RlTGlzdCwgbnVsbHB0cik7CiB9CiAK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCitzdGF0aWMgdm9pZCBhZGRTdWJyZXNv
dXJjZXNGb3JBdHRhY2htZW50RWxlbWVudHNJZk5lY2Vzc2FyeShGcmFtZSYgZnJhbWUsIGNvbnN0
IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJy
ZXNvdXJjZXMpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVyczsKKyAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rl
cykgeworICAgICAgICBpZiAoIWlzPEhUTUxBdHRhY2htZW50RWxlbWVudD4obm9kZSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHVuaXF1ZUlkZW50aWZpZXIgPSBkb3du
Y2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpub2RlKS51bmlxdWVJZGVudGlmaWVyKCk7Cisg
ICAgICAgIGlmICh1bmlxdWVJZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGlkZW50aWZpZXJzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZUlkZW50aWZp
ZXIpKTsKKyAgICB9CisKKyAgICBpZiAoaWRlbnRpZmllcnMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvKiBlZGl0b3JDbGllbnQgPSBmcmFtZS5lZGl0b3IoKS5jbGllbnQo
KTsKKyAgICBpZiAoIWVkaXRvckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBm
cmFtZU5hbWUgPSBmcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpOworICAgIGZvciAoYXV0byYgZGF0
YSA6IGVkaXRvckNsaWVudC0+c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMo
V1RGTW92ZShpZGVudGlmaWVycykpKSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2VVUkwgPSBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTChkYXRhLmlkZW50aWZpZXIpOwor
ICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEu
ZGF0YS5wdHIoKSwgV1RGTW92ZShyZXNvdXJjZVVSTCksIGRhdGEubWltZVR5cGUsIHsgfSwgZnJh
bWVOYW1lKSkKKyAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgfQorfQorCisjZW5kaWYKKwogUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywg
RnJhbWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgV1RGOjpGdW5jdGlvbjxi
b29sIChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyKQogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKQEAgLTUyOCw2ICs1Njks
MTAgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKICAgICAgICAgfQogICAgIH0KIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgYWRkU3VicmVzb3VyY2VzRm9yQXR0YWNobWVu
dEVsZW1lbnRzSWZOZWNlc3NhcnkoZnJhbWUsIG5vZGVzLCBzdWJyZXNvdXJjZXMpOworI2VuZGlm
CisKICAgICAvLyBJZiB3ZSBhcmUgYXJjaGl2aW5nIHRoZSBlbnRpcmUgcGFnZSwgYWRkIGFueSBs
aW5rIGljb25zIHRoYXQgd2UgaGF2ZSBkYXRhIGZvci4KICAgICBpZiAoIW5vZGVzLmlzRW1wdHko
KSAmJiBub2Rlc1swXS0+aXNEb2N1bWVudE5vZGUoKSkgewogICAgICAgICBhdXRvKiBkb2N1bWVu
dExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAppbmRleCBlOGQxMGMyNTQxOTg0MmIxYzJmZjlhODY1M2ZkNDJkMjI1YTEw
NTAxLi5jNGM1YTVjNzEyZTM5YzM2MDQyMGViOTk3NjJmNzA5ODc5ZjI1YTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIGNsYXNzIFZpc2libGVTZWxl
Y3Rpb247CiBzdHJ1Y3QgR2FwUmVjdHM7CiBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCitzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
OworI2VuZGlmCisKIGNsYXNzIEVkaXRvckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RWRpdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNzUsMTEgKzc5LDEzIEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3Qg
U3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxl
TmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBj
b25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRo
ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgLyogZnJv
bUlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogdG9JZGVudGlmaWVyICovKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBzb3VyY2UgKi8sIGJvb2wg
LyogaGFzRW5jbG9zaW5nSW1hZ2UgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVB
dHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
eyByZXR1cm4geyB9OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRp
bmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCBjNGM0Nzg4ZDJlOGM4NjBiOTk4YjA5ZjI3ZTk4N2RhOTY0YmQzN2Y0Li5kMWUy
N2E5NWEyMzUwMDkzMzg1NDQ1ZDYxYTQ3NTQwMTViY2QzYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlBhcnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CkBAIC02OSw2ICs3MCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJEYXRhLmg+CkBAIC0zMDEyLDQgKzMwMTQsMzAgQEAgc3RkOjpvcHRpb25h
bDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShE
ZWNvZGVyJiBkZWMKICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0KIAorI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJp
YWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCit7CisgICAgZW5jb2RlciA8PCBkYXRhLmlkZW50
aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
eyBkYXRhLmRhdGEuZ2V0KCkgfTsKK30KKworc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+IEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWlt
ZVR5cGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGE7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBkODc4MThlN2JhNzdjOGQzMWExZDZhOWJjNzc0ZTRm
ODA5ZDZjM2MyLi5mNTA5MjE2MTZiMmJhNDU0NzYyMjEwOGE4YjU4OGYwN2YwNjg4MGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTY0LDYg
KzE2NCwxMCBAQCBjbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YTsKIHN0cnVjdCBNZWRpYUNvbnN0
cmFpbnRzOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorc3RydWN0
IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJp
bmc+PjsKICNlbmRpZgpAQCAtNzIwLDYgKzcyNCwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCisj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXgg
OWNjMDQxMGY3NDc0NGJhN2M2NjFhYzlkNWY1ZWU3MjVjNjdjMjc5NS4uYTEzNGJmYWY2MzVhYmI0
NDU3OTM3OTM2NDMxNGE4MDJlMjQ3MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTYsNiArOTYsMTUgQEAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6
U3RyaW5nJikKK3sKK30KKwogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYjhmYmJiZTliNWMy
ZjVlNjUxMmUwZGFmMmNmY2VmMzliZTlhZjNiYy4uNjRkMDI0MWU3MmUwZTI5OWE0NjUzNWU2YTM3
YTRlZGI1NmJmMDNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2lu
Z0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhh
c0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAorICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZv
aWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdl
YktpdDo6V2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGI4NzcxMDJlZjVmOGRk
MWU4ZGJjMjM5ZjBkN2M2NTExZGEzMjc0NTcuLmI0ZWM5YzhlYjZjY2E0ZmQ3ODZkYzg3Y2M1YjU1
ZGVkMjZhYWI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJBUElBdHRhY2htZW50LmgiCiAKKyNpbXBvcnQgIlBhZ2VDbGll
bnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzMsNiAr
MzQsNyBAQAogI2Vsc2UKICNpbXBvcnQgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KICNl
bmRpZgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogbmFt
ZXNwYWNlIEFQSSB7CiAKQEAgLTEyNSw0ICsxMjcsMzMgQEAgYm9vbCBBdHRhY2htZW50Ojppc0Vt
cHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXI7CiB9CiAKK1JlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZpbGVXcmFwcGVyIHx8ICFtX3dlYlBhZ2UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNEYXRhICpzZXJpYWxpemVkRGF0YSA9IHNl
Y3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3QobV9maWxlV3JhcHBlci5nZXQoKSk7Cisg
ICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworfQor
Cit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IHNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbi0+Y3JlYXRlTlNEYXRhKCk7CisgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXIgPSB1bmFyY2hpdmVk
T2JqZWN0T2ZDbGFzc2VzRnJvbURhdGEobV93ZWJQYWdlLT5wYWdlQ2xpZW50KCkuc2VyaWFsaXph
YmxlRmlsZVdyYXBwZXJDbGFzc2VzKCksIHNlcmlhbGl6ZWREYXRhLmdldCgpKTsKKyAgICBpZiAo
IWZpbGVXcmFwcGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRGaWxlV3JhcHBlckFuZFVw
ZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7CisgICAgbV93ZWJQYWdl
LT51cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcygqdGhpcywgW10gKGF1dG8pIHsgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGQ1MTU0ZWQzNTU1NDJiMTliMzE4M2EzMTVi
NzA0OGYzYzM3ZDZlMWEuLmQ3MjczNzJiNjY3MTE2NTYxMzAyOGY2Y2FjMTVhNTY4YmFiN2NlMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBs
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYs
IGNvbnN0IFN0cmluZyYgc291cmNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1l
bnQoQVBJOjpBdHRhY2htZW50JikgZmluYWw7Ci0gICAgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxl
V3JhcHBlckluc3RhbmNlKCkgZmluYWw7CisgICAgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3Jh
cHBlckluc3RhbmNlKCkgY29uc3QgZmluYWw7CisgICAgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVX
cmFwcGVyQ2xhc3NlcygpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1t
CmluZGV4IDFmOWQyOTIxYjM4YTEwOGQyMDc4NDRiNTZjMjU5MTNkN2NhNmMxMTYuLjc1YWNlOWEw
MjhmMzE0YmE0MzA0MWZmYTQ1MGYzNTcwOWQzZmEyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpZFJlbW92ZUF0dGFjaG1lbnQoQVBJOjpB
dHRhY2htZW50JiBhdHRhY2htZW50KQogI2VuZGlmCiB9CiAKLU5TRmlsZVdyYXBwZXIgKlBhZ2VD
bGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpCitOU0ZpbGVXcmFwcGVy
ICpQYWdlQ2xpZW50SW1wbENvY29hOjphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBjb25zdAog
ewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgQ2xhc3MgY2xzID0gbV93ZWJWaWV3LmNvbmZpZ3Vy
YXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzID86IFtOU0ZpbGVXcmFwcGVyIHNlbGZd
OwpAQCAtNzYsNiArNzYsMTcgQEAgTlNGaWxlV3JhcHBlciAqUGFnZUNsaWVudEltcGxDb2NvYTo6
YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkKICNlbmRpZgogfQogCitOU1NldCAqUGFnZUNsaWVu
dEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKK3sKKyAg
ICBDbGFzcyBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcyA9IE5TRmlsZVdyYXBwZXIuc2VsZjsKKyNp
ZiBXS19BUElfRU5BQkxFRAorICAgIENsYXNzIGNvbmZpZ3VyZWRGaWxlV3JhcHBlckNsYXNzID0g
bV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzOworICAg
IGlmIChjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcyAmJiBjb25maWd1cmVkRmlsZVdyYXBwZXJD
bGFzcyAhPSBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcykKKyAgICAgICAgcmV0dXJuIFtOU1NldCBz
ZXRXaXRoT2JqZWN0czpjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcywgZGVmYXVsdEZpbGVXcmFw
cGVyQ2xhc3MsIG5pbF07CisjZW5kaWYKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3Rz
OmRlZmF1bHRGaWxlV3JhcHBlckNsYXNzLCBuaWxdOworfQorCiAjZW5kaWYKICAgICAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBiOGEwYzE0MmVkOGE3MmQyNjI5NWIx
MmU3MTMwODUxNTgyODJhZTRiLi4xZGVlZDI5NzY4ZDg3NzVkZjEwYjk1YjA3YTY3NzA5ZTE2MzNi
MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NSw2ICs0NSw3IEBA
CiAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKK09CSkNf
Q0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAjaWYg
VVNFKEFQUEtJVCkKQEAgLTQ0NSw3ICs0NDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEluc2VydEF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2UpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KEFQSTo6QXR0YWNo
bWVudCYpIHsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgTlNGaWxlV3JhcHBl
ciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVXcmFw
cGVyQ2xhc3NlcygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2VuZGlmCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGVjNGJmZDVh
NWY5ZDkyZDExNWQyZGE1ZGRhMTc4ZjI5YjUzZWJmOS4uZTYzZWNmNTBmMDVlY2I0MWQwNzY0NDVl
NjRhN2JiMjhlODhkODdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC03OTAwLDYgKzc5MDAsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAgICAgICBtX2F0
dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChpZGVudGlmaWVyLCBlbnN1cmVB
dHRhY2htZW50KGlkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVy
QXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJiBkYXRhKQoreworICAgIGZvciAoYXV0byYgc2VyaWFsaXplZERhdGEg
OiBkYXRhKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFdURk1vdmUoc2VyaWFsaXplZERh
dGEuaWRlbnRpZmllcik7CisgICAgICAgIGlmICghYXR0YWNobWVudEZvcklkZW50aWZpZXIoaWRl
bnRpZmllcikpCisgICAgICAgICAgICBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZpZXIpLT51cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFdURk1vdmUoc2VyaWFsaXplZERhdGEuZGF0
YSksIFdURk1vdmUoc2VyaWFsaXplZERhdGEubWltZVR5cGUpKTsKKyAgICB9Cit9CisKIHZvaWQg
V2ViUGFnZVByb3h5OjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQogewogICAgIGF1dG8gbmV3QXR0YWNo
bWVudCA9IGVuc3VyZUF0dGFjaG1lbnQodG9JZGVudGlmaWVyKTsKQEAgLTc5MjUsNiArNzkzNCwy
MSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCkKICAgICBt
X2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLmNsZWFyKCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+JiBzZXJpYWxpemVkRGF0YSkKK3sKKyAgICBmb3IgKGF1dG8gaWRlbnRp
ZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1l
bnRGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWF0dGFjaG1lbnQpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGRhdGEgPSBhdHRhY2htZW50LT5j
cmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2VyaWFsaXplZERhdGEuYXBwZW5kKHsgaWRl
bnRpZmllciwgYXR0YWNobWVudC0+bWltZVR5cGUoKSwgZGF0YS5yZWxlYXNlTm9uTnVsbCgpIH0p
OworICAgIH0KK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDBjN2FlNWQ5ZDYzZDAxZjJiYzgyNDVlMjQ1NWMzYTA3NDM3
Y2E4ZGUuLjI1OGFmOTJiNDUxZmM2YmZlM2E0YTJlODhkODZjNTU4ODVjZTM3Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMzEsNiArMjMxLDcgQEAgY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5
OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U7CiBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRM
aW5rU3RvcmU7CkBAIC0xMzQ0LDYgKzEzNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6
QXR0YWNobWVudD4gYXR0YWNobWVudEZvcklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKSBjb25zdDsKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVu
dD4mJiwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCB1
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmLCBGdW5jdGlv
bjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFdl
YkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTgyOSw2ICsxODMxLDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0
aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERh
dGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
Y2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHRvSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjY2I5ODY0OWFjMWVjZjA0MTA2N2IzZDA0MWQ4
N2RlYjM0YWQzYjUxLi4xZmU4NjBlM2M2YTYyYWNhNDYwNTViNTVmNTdmOGFhZGZiNGZmNjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC01MzQsOSArNTM0LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKFN0cmluZyBpZGVudGlmaWVyLCBTdHJp
bmcgY29udGVudFR5cGUsIFN0cmluZyBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZy
b21GaWxlUGF0aChTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcg
ZmlsZVBhdGgpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihTdHJpbmcgaWRlbnRp
ZmllcikKKyAgICByZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZlY3RvcjxX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IGRhdGEpCiAgICAgQ2xvbmVBdHRhY2ht
ZW50RGF0YShTdHJpbmcgZnJvbUlkZW50aWZpZXIsIFN0cmluZyB0b0lkZW50aWZpZXIpCiAgICAg
RGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKFN0cmluZyBpZGVudGlmaWVyLCBTdHJp
bmcgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKQogICAgIERpZFJlbW92ZUF0dGFjaG1l
bnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKKyAgICBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgLT4gKFZl
Y3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmFsaXplZERhdGEpIExl
Z2FjeVN5bmMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VT
U19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDdiOTBm
NTkwNGRkZDViZTZlMmZlMjU5MzRhNDA4NjU5YWFjZmVmYzEuLmFjZGUyZjAwZDdkZDMxN2E0NzU0
YTVmMWViNjAzYmE3ZGU4YTljOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TcGVsbENoZWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CkBAIC0xNjUsNiArMTY2LDExIEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBj
b250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIHsgZGF0YSB9KSk7CiB9CiAKK3ZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+JiYgZGF0YSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShXVEZN
b3ZlKGRhdGEpKSk7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxl
UGF0aChpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgZmlsZVBhdGgpKTsKQEAgLTE5MCw2ICsxOTYs
MTMgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKTsKIH0KIAorVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gV2ViRWRpdG9yQ2xp
ZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlbnRpZmllcnMpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4gc2VyaWFsaXplZERhdGE7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVy
cyhpZGVudGlmaWVycyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YUZvcklkZW50aWZpZXJzOjpSZXBseShzZXJpYWxpemVkRGF0YSkpOworICAgIHJldHVy
biBzZXJpYWxpemVkRGF0YTsKK30KKwogI2VuZGlmCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpk
aWRBcHBseVN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBkZDZmZTY5YzE1OTcwYjc0NGU1
MmVkOGRkMjU3MWMyMWFkMzI0MWViLi40YjVhNmQzYWRkYjQ0M2U5ODAwZjBhNTU0N2JiOTc5ZmM2
NGQ4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02MywxMCArNjMsMTIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikg
ZmluYWw7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERh
dGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgVmVjdG9yPFdlYkNvcmU6OlNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBk
aWRCZWdpbkVkaXRpbmcoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4ODkwYzc2MDQ2ZjM0MGQ1ZmI1YzRlMWQ1NTI3ZThlNjJmZGY5
ZjBhLi5lYjQ5MTMzOWU1MmEzN2JhNDY2ZWZiZDIyMGNkZDA5YzA2NWU2OTJiIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTgtMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8gYW5v
dGhlciBpcyBtaXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDUyMzIxNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgdGVzdCB0byB2ZXJpZnkgdGhhdCBjb3B5aW5nIGRpZmZlcmVudCB0eXBlcyBvZiBh
dHRhY2htZW50cyBhbmQgcGFzdGluZyBpbiBhIG5ldyB3ZWIgdmlldyBpbnNlcnRzCisgICAgICAg
IGF0dGFjaG1lbnRzIGluIHRoZSBzZWNvbmQgd2ViIHZpZXcgdGhhdCBhcmUgYmFja2VkIGJ5IF9X
S0F0dGFjaG1lbnQgb2JqZWN0cywgd2hvc2UgTlNGaWxlV3JhcHBlcnMgaG9sZCBkYXRhIHRoYXQK
KyAgICAgICAgaXMgZXF1aXZhbGVudCB0byB0aGUgb3JpZ2luYWwgZmlsZSB3cmFwcGVycyB1c2Vk
IHRvIGluc2VydCBhdHRhY2htZW50cyBpbiB0aGUgZmlyc3Qgd2ViIHZpZXcuCisKKyAgICAgICAg
RXhpc3RpbmcgQVBJIHRlc3RzIHZlcmlmeSB0aGF0IHdoZW4gY29weWluZyBhbmQgcGFzdGluZyB3
aXRoaW4gYSBzaW5nbGUgd2ViIHZpZXcsIHRoZSBwYXN0ZWQgYXR0YWNobWVudCBlbGVtZW50Cisg
ICAgICAgIGlzIHN0aWxsIGJhY2tlZCBieSB0aGUgc2FtZSBOU0ZpbGVXcmFwcGVyIGluc3RhbmNl
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTEwLTMw
ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bV1BFXSBGaXhlcyB0byB0aGUgUHVibGljU3VmZml4IGltcGxlbWVudGF0aW9uCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRl
c3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbQppbmRleCA5M2ZiODdhMWQ1M2RkNzg2MDViMTBkMzBlMGIwNTJmOGIxMjc1NmMx
Li43OTY0ZGYxYTUxNTc3OTYxMzhkMTc5NGYyYjUxMjIxMjgyMzNjNTRmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50
VGVzdHMubW0KQEAgLTE0NjIsNiArMTQ2Miw1MiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBD
dXN0b21GaWxlV3JhcHBlclN1YmNsYXNzKQogICAgIEVYUEVDVF9FUShbRmlsZVdyYXBwZXIgc2Vs
Zl0sIFtpbnNlcnRlZEF0dGFjaG1lbnRzLmZpcnN0T2JqZWN0LmluZm8uZmlsZVdyYXBwZXIgY2xh
c3NdKTsKIH0KIAorVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ29weUFuZFBhc3RlQmV0d2Vlbldl
YlZpZXdzKQoreworICAgIGF1dG8gZmlsZSA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdEhUTUxEYXRhKCldKTsKKyAgICBbZmls
ZSBzZXRQcmVmZXJyZWRGaWxlbmFtZTpAInRlc3QuZm9vYmFyIl07CisgICAgYXV0byBpbWFnZSA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6dGVzdEltYWdlRGF0YSgpXSk7CisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdFBERkRhdGEo
KV0pOworICAgIGF1dG8gZm9sZGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXREaXJlY3RvcnlXaXRoRmlsZVdyYXBwZXJzOkB7IEAiaW1hZ2UucG5nIjogaW1hZ2UuZ2V0KCks
IEAiZG9jdW1lbnQucGRmIjogZG9jdW1lbnQuZ2V0KCkgfV0pOworICAgIFtmb2xkZXIgc2V0UHJl
ZmVycmVkRmlsZW5hbWU6QCJmb2xkZXIiXTsKKyAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RaSVBE
YXRhKCldKTsKKyAgICBbYXJjaGl2ZSBzZXRQcmVmZXJyZWRGaWxlbmFtZTpAImFyY2hpdmUiXTsK
KworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIGZpcnN0V2ViVmlldyA9IHdl
YlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBzeW5j
aHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxlLmdldCgpIGNvbnRl
bnRUeXBlOkAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl07CisgICAgICAgIFtmaXJzdFdlYlZp
ZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Zm9sZGVyLmdl
dCgpIGNvbnRlbnRUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVGb2xkZXJdOworICAg
ICAgICBbZmlyc3RXZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVX
cmFwcGVyOmFyY2hpdmUuZ2V0KCkgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi96aXAiXTsKKyAg
ICAgICAgW2ZpcnN0V2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICAgICAgW2ZpcnN0V2ViVmll
dyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiQ29weSIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246bmls
XTsKKyAgICB9CisKKyAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0
dGFjaG1lbnRzKCk7CisgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2
ZXIoc2Vjb25kV2ViVmlldy5nZXQoKSk7CisgICAgW3NlY29uZFdlYlZpZXcgcGFzdGU6bmlsXTsK
KyAgICBbc2Vjb25kV2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MyB0YWdOYW1lOkAiYXR0YWNo
bWVudCJdOworICAgIEVYUEVDVF9FUSgzVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5j
b3VudCk7CisKKyAgICBOU1N0cmluZyAqcGxhaW5GaWxlSWRlbnRpZmllciA9IFtzZWNvbmRXZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdhdHRhY2htZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXTsKKyAgICBOU1N0
cmluZyAqZm9sZGVySWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50W3RpdGxlPWZv
bGRlcl0nKS51bmlxdWVJZGVudGlmaWVyIl07CisgICAgTlNTdHJpbmcgKmFyY2hpdmVJZGVudGlm
aWVyID0gW3NlY29uZFdlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0bGU9YXJjaGl2ZV0nKS51bmlxdWVJZGVu
dGlmaWVyIl07CisKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRmlsZUluZm8gPSBbc2Vj
b25kV2ViVmlldyBfYXR0YWNobWVudEZvcklkZW50aWZpZXI6cGxhaW5GaWxlSWRlbnRpZmllcl0u
aW5mbzsKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRm9sZGVySW5mbyA9IFtzZWNvbmRX
ZWJWaWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpmb2xkZXJJZGVudGlmaWVyXS5pbmZvOwor
ICAgIF9XS0F0dGFjaG1lbnRJbmZvICpwYXN0ZWRBcmNoaXZlSW5mbyA9IFtzZWNvbmRXZWJWaWV3
IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjphcmNoaXZlSWRlbnRpZmllcl0uaW5mbzsKKworICAg
IE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU0ZpbGVXcmFwcGVyICo+ICpwYXN0ZWRGb2xkZXJD
b250ZW50cyA9IHBhc3RlZEZvbGRlckluZm8uZmlsZVdyYXBwZXIuZmlsZVdyYXBwZXJzOworICAg
IE5TRmlsZVdyYXBwZXIgKmRvY3VtZW50RnJvbUZvbGRlciA9IFtwYXN0ZWRGb2xkZXJDb250ZW50
cyBvYmplY3RGb3JLZXk6QCJkb2N1bWVudC5wZGYiXTsKKyAgICBOU0ZpbGVXcmFwcGVyICppbWFn
ZUZyb21Gb2xkZXIgPSBbcGFzdGVkRm9sZGVyQ29udGVudHMgb2JqZWN0Rm9yS2V5OkAiaW1hZ2Uu
cG5nIl07CisgICAgRVhQRUNUX1RSVUUoW1tkb2N1bWVudCByZWd1bGFyRmlsZUNvbnRlbnRzXSBp
c0VxdWFsVG9EYXRhOmRvY3VtZW50RnJvbUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW1tpbWFnZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRh
OmltYWdlRnJvbUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1RSVUUo
W1tmaWxlIHJlZ3VsYXJGaWxlQ29udGVudHNdIGlzRXF1YWxUb0RhdGE6cGFzdGVkRmlsZUluZm8u
ZmlsZVdyYXBwZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAgIEVYUEVDVF9UUlVFKFtbYXJj
aGl2ZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOnBhc3RlZEFyY2hpdmVJbmZv
LmZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHNdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIHBhc3RlZEZpbGVJbmZvLmNvbnRlbnRUeXBlKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoInB1YmxpYy5kaXJlY3RvcnkiLCBwYXN0ZWRGb2xkZXJJbmZv
LmNvbnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3ppcCIsIHBh
c3RlZEFyY2hpdmVJbmZvLmNvbnRlbnRUeXBlKTsKK30KKwogI3ByYWdtYSBtYXJrIC0gUGxhdGZv
cm0tc3BlY2lmaWMgdGVzdHMKIAogI2lmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353435</attachid>
            <date>2018-10-30 16:45:57 -0700</date>
            <delta_ts>2018-10-30 19:09:59 -0700</delta_ts>
            <desc>Try to fix the Windows build</desc>
            <filename>bug-190530-20181030164556.patch</filename>
            <type>text/plain</type>
            <size>45963</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVhYzA4OGEyNmNiYjA0
MjAxNjBhOTM2YzA5YzJmMDVhMmY5NDI4MC4uNDFiYWNjNTQ1NjBhN2M5MWUyMTdlMGM2ZTRlMmUw
Yjg2NjU1YjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBjb3B5aW5nIGFuZCBwYXN0aW5nIGF0dGFjaG1lbnQgZWxlbWVudHMgYWNyb3NzIHdlYiB2aWV3
cyBieSBlbmNvZGluZyBhbmQgYWRkaW5nIGZpbGUgd3JhcHBlcgorICAgICAgICBkYXRhIGFzIHN1
YnJlc291cmNlcyBpbiB0aGUgd2ViIGFyY2hpdmUgd2hlbiB3cml0aW5nIHNlbGVjdGVkIHdlYiBj
b250ZW50IHRvIHRoZSBwYXN0ZWJvYXJkLCBhbmQgdGhlbiBkZWNvZGluZworICAgICAgICBhbmQg
Y3JlYXRpbmcgTlNGaWxlV3JhcHBlcnMgdXBvbiByZWFkaW5nIHdlYiBjb250ZW50LgorCisgICAg
ICAgIFRlc3Q6IFdLQXR0YWNobWVudFRlc3RzLkNvcHlBbmRQYXN0ZUJldHdlZW5XZWJWaWV3cwor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVnaXN0ZXJB
dHRhY2htZW50cyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKworICAgICAgICBBZGQg
cmVnaXN0ZXJBdHRhY2htZW50cygpLCB3aGljaCByZWdpc3RlcnMgX1dLQXR0YWNobWVudHMgaW4g
dGhlIFVJIHByb2Nlc3MgZ2l2ZW4gYSBsaXN0IG9mCisgICAgICAgIFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS4gVGhpcyBiZWhhdmVzIHNpbWlsYXJseSB0byByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVycygpLCBidXQgZGlmZmVycyBpbiB0aGF0ICgxKSBpdAorICAgICAgICBzZW5kcyBzZXJp
YWxpemVkIGZpbGUgd3JhcHBlciBkYXRhLCBhbmQgKDIpIGl0IHNlbmRzIGEgbGlzdCBvZiBzZXJp
YWxpemVkIGF0dGFjaG1lbnRzLCByYXRoZXIgdGhhbiBpbmZvcm1hdGlvbgorICAgICAgICBhYm91
dCBqdXN0IGEgc2luZ2xlIGF0dGFjaG1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oOgorCisgICAgICAgIEludHJvZHVjZSBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGEsIGEgc3RydWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHNlcmlh
bGl6ZSBhbmQgZGVzZXJpYWxpemUgYW4KKyAgICAgICAgYXR0YWNobWVudC4gVGhlc2UgYXJlIHVz
ZWQgYm90aCB3aGVuIHdyaXRpbmcgYXR0YWNobWVudCBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLCBh
bmQgd2hlbiBjb25zdW1pbmcgYXR0YWNobWVudAorICAgICAgICBkYXRhIHVwb24gcGFzdGUuCisK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisKKyAgICAg
ICAgQWRkIGEgc3RlcCB3aGVuIHBhc3RpbmcgcmljaCBjb250ZW50IHdpdGggYXR0YWNobWVudHMs
IHRvIGNvbGxlY3QgYW5kIHNlbmQgc2VyaWFsaXplZCBhdHRhY2htZW50cyB0byB0aGUgY2xpZW50
LgorICAgICAgICBBbHNvLCBkcml2ZS1ieSBmaXg6IGRvbid0IFdURk1vdmUoKSB0aGUgUmVmIGhl
cmUgaWYgaXQncyBzdGlsbCBnb2luZyB0byBiZSB1c2VkIGJlbG93LgorCisgICAgICAgICogaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFj
aG1lbnRFbGVtZW50OjphcmNoaXZlUmVzb3VyY2VVUkwpOgorICAgICAgICAqIGh0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRkIGEgc3RhdGljIGhlbHBlciBmdW5jdGlv
biB0byBjb21wdXRlIGEgVVJMIHRoYXQgcmVwcmVzZW50cyB0aGUgZGF0YSBmb3IgdGhlIGdpdmVu
IGF0dGFjaG1lbnQgaWRlbnRpZmllciwgZm9yCisgICAgICAgIHVzZSBpbiBhIHdlYiBhcmNoaXZl
IHJlc291cmNlLgorCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2htZW50RWxl
bWVudHNJZk5lY2Vzc2FyeSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNy
ZWF0ZSBhbmQgYXBwZW5kIEFyY2hpdmVSZXNvdXJjZXMgcmVwcmVzZW50aW5nIGF0dGFjaG1lbnQg
ZWxlbWVudCBkYXRhIHdoZW4gd3JpdGluZworICAgICAgICBhdHRhY2htZW50cyB0byB0aGUgcGFz
dGVib2FyZCB2aWEgd2ViIGFyY2hpdmUgZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudDo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorCiAyMDE4LTEwLTMwICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDYWxsaW5nIHdpbmRvdy5vcGVuKCIiLCAiX3NlbGYiKSBhbGxvd3Mgd29ya2lu
ZyBhcm91bmQgcmVzdHJpY3Rpb25zIG9uIHdpbmRvdy5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkOWU4
OGVlZDU4MGMwMzcwYWQyNTg3MzFjOWE2ZWY3YjBlN2QxNDcuLmEzMTQwZjEwOTljMTNiYTJhNWZm
MjRjZDM1YTdlYjk1MWEwMWM1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTgtMTAt
MzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8gYW5vdGhlciBpcyBt
aXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUyMzIxNDk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdl
YkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCisgICAgICAgIEFkZCBJUEMgZW5jb2RpbmcvZGVj
b2Rpbmcgc3VwcG9ydCBmb3IgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisKKyAgICAgICAgQWRkIGEg
bWV0aG9kIHRvIHNlcmlhbGl6ZSBhbmQgcmV0dXJuIGF0dGFjaG1lbnQgaW5mbyBhcyBhIGJsb2Ig
b2YgZGF0YS4KKworICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKToKKworICAgICAgICBBZGQgYSBtZXRob2QgdG8gdXBkYXRlIHRoZSBh
dHRhY2htZW50LCBnaXZlbiBhIHNlcmlhbGl6ZWQgYmxvYiBvZiBkYXRhLiBPbiBDb2NvYSBwbGF0
Zm9ybXMsIHRoaXMgZmFpbHMKKyAgICAgICAgZ3JhY2VmdWxseSBpZiB0aGUgc2VyaWFsaXplZCBk
YXRhIGNhbm5vdCBiZSBkZWNvZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudElt
cGxDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NG
aWxlV3JhcHBlckluc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKTog
RGVsZXRlZC4KKworICAgICAgICBBZGQgYW4gYWRkaXRpb25hbCBob29rIHRvIHJldHVybiB0aGUg
bGlzdCBvZiBOU0ZpbGVXcmFwcGVyIHN1YmNsYXNzZXMgc3VpdGFibGUgZm9yIGRlc2VyaWFsaXph
dGlvbi4gVGhpcworICAgICAgICBhcnJheSBjb250YWlucyAoYXQgbWluaW11bSkgTlNGaWxlV3Jh
cHBlciwgYnV0IG1heSBhZGRpdGlvbmFsbHkgaW5jbHVkZSBhIGN1c3RvbSBOU0ZpbGVXcmFwcGVy
IHN1YmNsYXNzLCBpZgorICAgICAgICBjb25maWd1cmVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6YWxsb2NGaWxlV3Jh
cHBlckluc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudDo6c2VyaWFs
aXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudDo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKToKKworICAgICAgICBSZWdpc3Rl
cnMgdGhlIGdpdmVuIHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhLCBjcmVhdGluZyBuZXcgX1dL
QXR0YWNobWVudCBpbnN0YW5jZXMgaWYgbmVjZXNzYXJ5LiBDdXJyZW50bHksCisgICAgICAgIHRo
aXMgZG9lcyBub3QgdXBkYXRlIHRoZSBmaWxlIHdyYXBwZXJzIG9mIGV4aXN0aW5nIF9XS0F0dGFj
aG1lbnRzOyB3ZSBzaG91bGQgcmV2aXNpdCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gc2VlCisgICAg
ICAgIGlmIHdlIGNhbiBhZGRpdGlvbmFsbHkgdXBkYXRlIGZpbGUgd3JhcHBlcnMgZm9yIGV4aXN0
aW5nIGF0dGFjaG1lbnRzLCB3aXRob3V0IGJyZWFraW5nIHRoZSBjYXNlIHdoZXJlIHRoZSB1c2Vy
CisgICAgICAgIGNvcGllcyBhbmQgcGFzdGVzIG9yIGRyYWdzIGFuZCBkcm9wcyBhdHRhY2htZW50
cyB3aXRoaW4gYSBzaW5nbGUgd2ViIHZpZXcgYW5kIHRoZSBjbGllbnQgZXhwZWN0cyBfV0tBdHRh
Y2htZW50CisgICAgICAgIGluc3RhbmNlcyB0byBiZSByZXVzZWQuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JD
bGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JD
bGllbnQ6OnNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKToKKworICAgICAg
ICBJbXBsZW1lbnQgYSBuZXcgSVBDIGhvb2sgdG8gZmV0Y2ggYW4gYXJyYXkgb2Ygc2VyaWFsaXpl
ZCBhdHRhY2htZW50IGRhdGEgYmxvYnMsIGdpdmVuIGEgbGlzdCBvZiBhdHRhY2htZW50CisgICAg
ICAgIGlkZW50aWZpZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxOC0xMC0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgSW5zdGFsbEFQSSBmb3IgaU9TIHVuY29uZGl0
aW9uYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDIxZDI1ZmQ4NTFhNmUyMWE4MWNlZTNmZjdmNmM2MzNlYWM2ZDI1MTYuLmM3
ODUwZTM1NTI1MjdhNjkyMjJiOTQ2ZTIzODQxZjdhYTA4NmZiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4ODksNiArNDg4
OSw3IEBACiAJCUY0OTc4Njg4MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTc4Njg3
MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJD
MjQgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVk
aXRpbmdIaXN0b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRp
dGluZ0hpc3RvcnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlV
dGlsLmpzICovOyB9OworCQlGNEQ0M0Q2NjIxODgwMzhCMDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEQ0M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRF
NTdFREMyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEU1N0VEQTIxM0YzRjVGMDA0
RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEU1N0VFMTIxM0Y0MzRBMDA0RUE5OEUgLyogV2Vi
Q29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUY1MDY2NEY4MTU3RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUwNjY0RjYxNTdG
NTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi87IH07CkBAIC0xNDc5OCw2ICsxNDc5
OSw3IEBACiAJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbG9yQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4
RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBDb2xvckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDk3ODY4
NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhc3RlYm9hcmRJdGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEQ0
M0Q2NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5n
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdFREYyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0
cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTU3RUUwMjEzRjQzNEEwMDRF
QTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjA2MjEsNiArMjA2MjMsNyBAQAogCQkJCTkzMzA5REJCMDk5RTY0OTEwMDU2RTU4
MSAvKiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oICovLAogCQkJCTUxNDA1Qzg2MTkwQjAxNDQw
MDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwICovLAogCQkJCTUxNDA1Qzg3MTkw
QjAxNDQwMDc1NEY5NCAvKiBTZWxlY3Rpb25SZWN0R2F0aGVyZXIuaCAqLywKKwkJCQlGNEQ0M0Q2
NDIxODgwMkU2MDBFQ0VDQUMgLyogU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggKi8sCiAJCQkJ
OTMzMDlEQzAwOTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCAq
LywKIAkJCQk5MzMwOURDMTA5OUU2NDkxMDA1NkU1ODEgLyogU2V0Tm9kZUF0dHJpYnV0ZUNvbW1h
bmQuaCAqLywKIAkJCQlCOERCREI0NzEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29t
bWFuZC5jcHAgKi8sCkBAIC0zMDcwNCw2ICszMDcwNyw3IEBACiAJCQkJNDE1MDcxNTgxNjg1MDY3
MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzEwN0JF
MjE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4REYzMzUxOEFBRjEyQzAwNzczRTU5
IC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzdBRjE0
MDE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggMzU5NWEwNDBmMmZiYjAzNTVmN2YxMzIxMzkyN2Q0NjQyMGFiNTk5
Zi4uM2E1MWYyYzYxZmM3MTVjZGRmOTMyN2Y3Mzk2YTA3MGQ2YjM2ZWU1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIlJlcGxhY2VSYW5n
ZVdpdGhUZXh0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgi
CiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgogI2luY2x1ZGUgIlNpbXBsaWZ5TWFya3VwQ29tbWFuZC5oIgpAQCAtNDAxMCw2
ICs0MDExLDEyIEBAIHZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nCiAgICAgICAgIGNsaWVudC0+cmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgZmlsZVBh
dGgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRo
aXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudHMoV1RGTW92
ZShkYXRhKSk7Cit9CisKIHZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byogY2xpZW50ID0gdGhp
cy0+Y2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBiOTYxMWUzN2JlMDg3NGNi
YWI3MzUwN2M0ZTcyMmEwZWJmMzMwOTM2Li4zYmM4YTA2MGVlZGU0YzMxOTU4MjllMTNmMWQ1NDIz
NzUwMmNlMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTg2LDYgKzg2LDEwIEBAIHN0
cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0Owogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3Qg
VGV4dENoZWNraW5nUmVzdWx0OwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3N0
cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisjZW5kaWYKKwogZW51bSBFZGl0b3JDb21t
YW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nLCBDb21tYW5kRnJvbURPTSwg
Q29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9OwogZW51bSBFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0RpdiwgRWRpdG9yUGFyYWdyYXBo
U2VwYXJhdG9ySXNQIH07CiAKQEAgLTUwOSw4ICs1MTMsOSBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHBy
ZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKTsKLSAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiAvKiBj
b250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLyk7CisgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBT
dHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CiAgICAg
dm9pZCBkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChIVE1MQXR0YWNobWVudEVsZW1lbnQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM3YTllOGU1NDM4OWYzMjU0YjQwY2U2MzFlNjIxYWNjZDI5M2FhMzIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2hhcmVkQnVmZmVyOworCitzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsK
KyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMGI3OWVhZThmMTM2
NzJlNTE4MDE5ZmM2Y2YxM2ZiYWQwNDJjNDIwOC4uYWVmZWIxYWYxZjY5M2MzOTEyYmRmOGQ2OGQz
ZmQ5ZDVjYzc2NWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgIlBh
Z2UuaCIKICNpbXBvcnQgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKKyNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2lt
cG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKQEAgLTI3NCw2ICsyNzUsMjAgQEAgc3Rh
dGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIHVybFRvUmVzb3VyY2VNYXAuc2V0KHVy
bC5zdHJpbmcoKSwgc3VicmVzb3VyY2UuY29weVJlZigpKTsKICAgICB9CiAKKyAgICBWZWN0b3I8
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisgICAg
Zm9yIChhdXRvJiBhdHRhY2htZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEF0dGFjaG1lbnRF
bGVtZW50PihmcmFnbWVudCkpIHsKKyAgICAgICAgYXV0byByZXNvdXJjZVVSTCA9IEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGF0dGFjaG1lbnQudW5pcXVlSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgYXV0byByZXNvdXJjZUVudHJ5ID0gdXJsVG9SZXNvdXJjZU1hcC5m
aW5kKHJlc291cmNlVVJMLnN0cmluZygpKTsKKyAgICAgICAgaWYgKHJlc291cmNlRW50cnkgPT0g
dXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7CisgICAgICAgIHNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwg
cmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgfQorCisgICAg
aWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQorICAgICAgICBmcmFtZS5l
ZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRzKFdURk1vdmUoc2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhKSk7CisKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBlbGVtZW50c1RvUmVtb3ZlOwogICAg
IFZlY3RvcjxBdHRhY2htZW50SW5zZXJ0aW9uSW5mbz4gYXR0YWNobWVudEluc2VydGlvbkluZm87
CiAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxJbWFnZUVsZW1l
bnQ+KGZyYWdtZW50KSkgewpAQCAtMzIzLDcgKzMzOCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VS
aWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQm
IGZyCiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4ob3JpZ2luYWxFbGVtZW50
LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0
aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgaW1hZ2UgPSBk
b3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwg
QmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKLSAgICAgICAgICAg
ICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKKyAg
ICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50LmNvcHlS
ZWYoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQt
PnVwZGF0ZUF0dHJpYnV0ZXMoaW5mby5kYXRhLT5zaXplKCksIGluZm8uY29udGVudFR5cGUsIGlu
Zm8uZmlsZU5hbWUpOwogICAgICAgICAgICAgICAgIHBhcmVudC0+cmVwbGFjZUNoaWxkKGF0dGFj
aG1lbnQsIFdURk1vdmUob3JpZ2luYWxFbGVtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggMGM2ODYwOWUxNTVkNGVkZjA3ZWI5YWI0
MTA5NzExYzNjY2I1ODRiMC4uMmU1MzNmMGRhNDI3YTM4OGRlZmM2NGQ0MmRkNTZiOTMxN2MxYjlk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJSZW5kZXJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVk
ZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAt
ODUsNiArODYsMTEgQEAgY29uc3QgU3RyaW5nJiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmdldEF0
dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQmIGkKICAgICByZXR1cm4gaWRlbnRp
ZmllcjsKIH0KIAorVVJMIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJM
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gVVJMUGFyc2VyKG1ha2VT
dHJpbmcoImFwcGxld2ViZGF0YTovL2F0dGFjaG1lbnQvIl9zLCBpZGVudGlmaWVyKSkucmVzdWx0
KCk7Cit9CisKIEZpbGUqIEhUTUxBdHRhY2htZW50RWxlbWVudDo6ZmlsZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZmlsZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCmluZGV4IDA0MTA0MjY2MGJhNTBlMDAxZGJhMzI4MjhlMjA2YjlhYzhmNjQy
YmMuLjAyMGRjNDAwYTc1MWQ4OGY0ODNjNDUzNTk3ZTQxZWNlZWY4MTYwYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtNDEsNiArNDEsNyBAQCBj
bGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYg
Z2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRNTEltYWdlRWxlbWVudCYpOworICAgIHN0YXRpYyBV
UkwgYXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgVVJMIGJsb2JVUkwoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBGaWxlKiBmaWxlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwCmluZGV4IDBjNTg0NTIyYWI5YzY0YjdmN2Y1NDQ2NzlkY2JlNTdmNmRm
NzgyNjIuLmE0MWM5NDA1YThjOGRiZTFmNDdjNWNjNTZlYjI5ZDgxN2RiNjZmOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCkBAIC0zMiwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRl
ICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJIVE1MQXR0YWNobWVudEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKQEAgLTQ3LDYgKzUw
LDggQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtNDY0
LDYgKzQ2OSw0MiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKFJhbmdlKiByYW5nZSkKICAgICByZXR1cm4gY3JlYXRlKG1hcmt1cFN0cmluZywgKmZy
YW1lLCBub2RlTGlzdCwgbnVsbHB0cik7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQorCitzdGF0aWMgdm9pZCBhZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2htZW50RWxlbWVudHNJ
Zk5lY2Vzc2FyeShGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBWZWN0
b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMpCit7CisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVy
czsKKyAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2RlcykgeworICAgICAgICBpZiAoIWlzPEhUTUxB
dHRhY2htZW50RWxlbWVudD4obm9kZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBhdXRvIHVuaXF1ZUlkZW50aWZpZXIgPSBkb3duY2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+
KCpub2RlKS51bmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGlmICh1bmlxdWVJZGVudGlmaWVy
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlkZW50aWZpZXJz
LmFwcGVuZChXVEZNb3ZlKHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICB9CisKKyAgICBpZiAoaWRl
bnRpZmllcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBlZGl0b3JD
bGllbnQgPSBmcmFtZS5lZGl0b3IoKS5jbGllbnQoKTsKKyAgICBpZiAoIWVkaXRvckNsaWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBmcmFtZU5hbWUgPSBmcmFtZS50cmVlKCkudW5p
cXVlTmFtZSgpOworICAgIGZvciAoYXV0byYgZGF0YSA6IGVkaXRvckNsaWVudC0+c2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoV1RGTW92ZShpZGVudGlmaWVycykpKSB7Cisg
ICAgICAgIGF1dG8gcmVzb3VyY2VVUkwgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmFyY2hpdmVS
ZXNvdXJjZVVSTChkYXRhLmlkZW50aWZpZXIpOworICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEuZGF0YS5wdHIoKSwgV1RGTW92ZShyZXNvdXJj
ZVVSTCksIGRhdGEubWltZVR5cGUsIHsgfSwgZnJhbWVOYW1lKSkKKyAgICAgICAgICAgIHN1YnJl
c291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorfQorCisj
ZW5kaWYKKwogUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnJhbWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8
Tm9kZSo+JiBub2RlcywgV1RGOjpGdW5jdGlvbjxib29sIChGcmFtZSYpPiYmIGZyYW1lRmlsdGVy
KQogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKTsKQEAgLTUyOCw2ICs1NjksMTAgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywg
RnIKICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisg
ICAgYWRkU3VicmVzb3VyY2VzRm9yQXR0YWNobWVudEVsZW1lbnRzSWZOZWNlc3NhcnkoZnJhbWUs
IG5vZGVzLCBzdWJyZXNvdXJjZXMpOworI2VuZGlmCisKICAgICAvLyBJZiB3ZSBhcmUgYXJjaGl2
aW5nIHRoZSBlbnRpcmUgcGFnZSwgYWRkIGFueSBsaW5rIGljb25zIHRoYXQgd2UgaGF2ZSBkYXRh
IGZvci4KICAgICBpZiAoIW5vZGVzLmlzRW1wdHkoKSAmJiBub2Rlc1swXS0+aXNEb2N1bWVudE5v
ZGUoKSkgewogICAgICAgICBhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBlOGQxMGMy
NTQxOTg0MmIxYzJmZjlhODY1M2ZkNDJkMjI1YTEwNTAxLi5jNGM1YTVjNzEyZTM5YzM2MDQyMGVi
OTk3NjJmNzA5ODc5ZjI1YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTQ5
LDYgKzQ5LDEwIEBAIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiBzdHJ1Y3QgR2FwUmVjdHM7CiBz
dHJ1Y3QgR3JhbW1hckRldGFpbDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCitz
dHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOworI2VuZGlmCisKIGNsYXNzIEVkaXRvckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RWRpdG9yQ2xpZW50KCkgPSBkZWZhdWx0OwpA
QCAtNzUsMTEgKzc5LDEzIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywg
Y29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBl
ICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbG9uZUF0dGFj
aG1lbnREYXRhKGNvbnN0IFN0cmluZyYgLyogZnJvbUlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmlu
ZyYgLyogdG9JZGVudGlmaWVyICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkSW5zZXJ0QXR0
YWNobWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29u
c3QgU3RyaW5nJiAvKiBzb3VyY2UgKi8sIGJvb2wgLyogaGFzRW5jbG9zaW5nSW1hZ2UgKi8pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFj
aG1lbnREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1cm4geyB9OyB9CiAjZW5kaWYKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjNGM0Nzg4ZDJlOGM4NjBi
OTk4YjA5ZjI3ZTk4N2RhOTY0YmQzN2Y0Li5hYzRkOWJlZGY4ODBhYjA3M2UwYTVhOTk5YTE0MWM0
YWRhMDFkZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlBhcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
UXVlcnlPcHRpb25zLmg+CkBAIC02OSw2ICs3MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jv
bGxpbmdDb29yZGluYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJEYXRhLmg+CkBAIC0z
MDEyLDQgKzMwMTQsMzAgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRD
b2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICByZXR1cm4gYXR0
cmlidXRlczsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEp
Cit7CisgICAgZW5jb2RlciA8PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKK30KKwor
c3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU3RyaW5n
IG1pbWVUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9
fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIH0gLy8gbmFt
ZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCBkODc4MThlN2JhNzdjOGQzMWExZDZhOWJjNzc0ZTRmODA5ZDZjM2MyLi5mNTA5MjE2
MTZiMmJhNDU0NzYyMjEwOGE4YjU4OGYwN2YwNjg4MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTY0LDYgKzE2NCwxMCBAQCBjbGFzcyBN
ZWRpYVNlc3Npb25NZXRhZGF0YTsKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiB1c2luZyBJ
REJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgpAQCAt
NzIwLDYgKzcyNCwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkZvbnRBdHRyaWJ1dGVzPiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCisjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
CiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggOWNjMDQxMGY3NDc0NGJhN2M2
NjFhYzlkNWY1ZWU3MjVjNjdjMjc5NS4uYTEzNGJmYWY2MzVhYmI0NDU3OTM3OTM2NDMxNGE4MDJl
MjQ3MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcApAQCAtOTYsNiArOTYsMTUgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
Kwordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3sKK30KKwog
I2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYjhmYmJiZTliNWMyZjVlNjUxMmUwZGFmMmNmY2Vm
MzliZTlhZjNiYy4uNjRkMDI0MWU3MmUwZTI5OWE0NjUzNWU2YTM3YTRlZGI1NmJmMDNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC04NSw2ICs4
NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5j
bG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9
CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9z
aW5nSW1hZ2U7IH0KIAorICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGVudFR5cGUpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFj
aG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElB
dHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCmluZGV4IGI4NzcxMDJlZjVmOGRkMWU4ZGJjMjM5ZjBkN2M2NTEx
ZGEzMjc0NTcuLmI0ZWM5YzhlYjZjY2E0ZmQ3ODZkYzg3Y2M1YjU1ZGVkMjZhYWI3YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1l
bnRDb2NvYS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJBUElBdHRhY2htZW50LmgiCiAKKyNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIu
aD4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzMsNiArMzQsNyBAQAogI2Vsc2UKICNp
bXBvcnQgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KICNlbmRpZgorI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAg
LTEyNSw0ICsxMjcsMzMgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICBy
ZXR1cm4gIW1fZmlsZVdyYXBwZXI7CiB9CiAKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2ZpbGVXcmFwcGVyIHx8ICFtX3dlYlBhZ2UpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgTlNEYXRhICpzZXJpYWxpemVkRGF0YSA9IHNlY3VyZWx5QXJjaGl2ZWREYXRh
V2l0aFJvb3RPYmplY3QobV9maWxlV3JhcHBlci5nZXQoKSk7CisgICAgaWYgKCFzZXJpYWxpemVk
RGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworfQorCit2b2lkIEF0dGFjaG1lbnQ6
OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50VHlwZSkKK3sKKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBzZXJpYWxpemVkRGF0YSA9IHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbi0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXIgPSB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzRnJv
bURhdGEobV93ZWJQYWdlLT5wYWdlQ2xpZW50KCkuc2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFz
c2VzKCksIHNlcmlhbGl6ZWREYXRhLmdldCgpKTsKKyAgICBpZiAoIWZpbGVXcmFwcGVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzZXRGaWxlV3JhcHBlckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZp
bGVXcmFwcGVyLCBjb250ZW50VHlwZSk7CisgICAgbV93ZWJQYWdlLT51cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcygqdGhpcywgW10gKGF1dG8pIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudElt
cGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5oCmluZGV4IGQ1MTU0ZWQzNTU1NDJiMTliMzE4M2EzMTViNzA0OGYzYzM3ZDZlMWEuLmQ3
MjczNzJiNjY3MTE2NTYxMzAyOGY2Y2FjMTVhNTY4YmFiN2NlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKQEAgLTQ1LDcg
KzQ1LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9p
ZCBkaWRJbnNlcnRBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYsIGNvbnN0IFN0cmluZyYgc291
cmNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50
JikgZmluYWw7Ci0gICAgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkg
ZmluYWw7CisgICAgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29u
c3QgZmluYWw7CisgICAgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCmluZGV4IDFmOWQyOTIxYjM4
YTEwOGQyMDc4NDRiNTZjMjU5MTNkN2NhNmMxMTYuLjc1YWNlOWEwMjhmMzE0YmE0MzA0MWZmYTQ1
MGYzNTcwOWQzZmEyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsQ29jb2E6OmRpZFJlbW92ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JiBhdHRhY2ht
ZW50KQogI2VuZGlmCiB9CiAKLU5TRmlsZVdyYXBwZXIgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFs
bG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpCitOU0ZpbGVXcmFwcGVyICpQYWdlQ2xpZW50SW1wbENv
Y29hOjphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBjb25zdAogewogI2lmIFdLX0FQSV9FTkFC
TEVECiAgICAgQ2xhc3MgY2xzID0gbV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRG
aWxlV3JhcHBlckNsYXNzID86IFtOU0ZpbGVXcmFwcGVyIHNlbGZdOwpAQCAtNzYsNiArNzYsMTcg
QEAgTlNGaWxlV3JhcHBlciAqUGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlcklu
c3RhbmNlKCkKICNlbmRpZgogfQogCitOU1NldCAqUGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFs
aXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKK3sKKyAgICBDbGFzcyBkZWZhdWx0Rmls
ZVdyYXBwZXJDbGFzcyA9IE5TRmlsZVdyYXBwZXIuc2VsZjsKKyNpZiBXS19BUElfRU5BQkxFRAor
ICAgIENsYXNzIGNvbmZpZ3VyZWRGaWxlV3JhcHBlckNsYXNzID0gbV93ZWJWaWV3LmNvbmZpZ3Vy
YXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzOworICAgIGlmIChjb25maWd1cmVkRmls
ZVdyYXBwZXJDbGFzcyAmJiBjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcyAhPSBkZWZhdWx0Rmls
ZVdyYXBwZXJDbGFzcykKKyAgICAgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpjb25m
aWd1cmVkRmlsZVdyYXBwZXJDbGFzcywgZGVmYXVsdEZpbGVXcmFwcGVyQ2xhc3MsIG5pbF07Cisj
ZW5kaWYKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3RzOmRlZmF1bHRGaWxlV3JhcHBl
ckNsYXNzLCBuaWxdOworfQorCiAjZW5kaWYKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAppbmRleCBiOGEwYzE0MmVkOGE3MmQyNjI5NWIxMmU3MTMwODUxNTgyODJhZTRi
Li4xZGVlZDI5NzY4ZDg3NzVkZjEwYjk1YjA3YTY3NzA5ZTE2MzNiMjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NSw2ICs0NSw3IEBACiAKIE9CSkNfQ0xBU1MgQ0FM
YXllcjsKIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKK09CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpD
X0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTQ0
NSw3ICs0NDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEluc2VydEF0dGFjaG1l
bnQoQVBJOjpBdHRhY2htZW50JiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYpIHsgfQogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBl
ckluc3RhbmNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTlNGaWxlV3JhcHBl
ciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIHZpcnR1YWwgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGVjNGJmZDVhNWY5ZDkyZDExNWQyZGE1ZGRh
MTc4ZjI5YjUzZWJmOS4uZTYzZWNmNTBmMDVlY2I0MWQwNzY0NDVlNjRhN2JiMjhlODhkODdiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03OTAwLDYgKzc5
MDAsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAgICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVy
VG9BdHRhY2htZW50TWFwLnNldChpZGVudGlmaWVyLCBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZp
ZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2Vy
aWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJiBk
YXRhKQoreworICAgIGZvciAoYXV0byYgc2VyaWFsaXplZERhdGEgOiBkYXRhKSB7CisgICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IFdURk1vdmUoc2VyaWFsaXplZERhdGEuaWRlbnRpZmllcik7Cisg
ICAgICAgIGlmICghYXR0YWNobWVudEZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAg
ICAgICBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZpZXIpLT51cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFdURk1vdmUoc2VyaWFsaXplZERhdGEuZGF0YSksIFdURk1vdmUoc2VyaWFs
aXplZERhdGEubWltZVR5cGUpKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9u
ZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdG9JZGVudGlmaWVyKQogewogICAgIGF1dG8gbmV3QXR0YWNobWVudCA9IGVuc3VyZUF0dGFj
aG1lbnQodG9JZGVudGlmaWVyKTsKQEAgLTc5MjUsNiArNzkzNCwyMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCkKICAgICBtX2F0dGFjaG1lbnRJZGVudGlm
aWVyVG9BdHRhY2htZW50TWFwLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXJp
YWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aWRlbnRpZmllcnMsIFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiBz
ZXJpYWxpemVkRGF0YSkKK3sKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGlkZW50aWZpZXJz
KSB7CisgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlk
ZW50aWZpZXIpOworICAgICAgICBpZiAoIWF0dGFjaG1lbnQpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIGRhdGEgPSBhdHRhY2htZW50LT5jcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgc2VyaWFsaXplZERhdGEuYXBwZW5kKHsgaWRlbnRpZmllciwgYXR0YWNobWVu
dC0+bWltZVR5cGUoKSwgZGF0YS5yZWxlYXNlTm9uTnVsbCgpIH0pOworICAgIH0KK30KKwogI2lm
ICFQTEFURk9STShDT0NPQSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJB
dHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDBjN2FlNWQ5ZDYzZDAxZjJiYzgyNDVlMjQ1NWMzYTA3NDM3Y2E4ZGUuLjI1OGFmOTJiNDUx
ZmM2YmZlM2E0YTJlODhkODZjNTU4ODVjZTM3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0yMzEsNiArMjMxLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247
CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5UHJv
eHlTdG9yZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBVc2VyRGF0
YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC0xMzQ0
LDYgKzEzNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6QXR0YWNobWVudD4gYXR0YWNo
bWVudEZvcklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKICAgICB2
b2lkIGluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgRnVuY3Rpb248dm9p
ZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQpAQCAtMTgyOSw2ICsxODMxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRh
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0
YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmll
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCBjY2I5ODY0OWFjMWVjZjA0MTA2N2IzZDA0MWQ4N2RlYjM0YWQzYjUxLi4xZmU4
NjBlM2M2YTYyYWNhNDYwNTViNTVmNTdmOGFhZGZiNGZmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzQsOSArNTM0LDEx
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllckZyb21EYXRhKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0
cmluZyBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRh
dGEpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChTdHJpbmcg
aWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZVBhdGgpCiAgICAgUmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKKyAgICByZWdpc3Rl
ckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+IGRhdGEpCiAgICAgQ2xvbmVBdHRhY2htZW50RGF0YShTdHJpbmcgZnJv
bUlkZW50aWZpZXIsIFN0cmluZyB0b0lkZW50aWZpZXIpCiAgICAgRGlkSW5zZXJ0QXR0YWNobWVu
dFdpdGhJZGVudGlmaWVyKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgc291cmNlLCBib29sIGhh
c0VuY2xvc2luZ0ltYWdlKQogICAgIERpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihT
dHJpbmcgaWRlbnRpZmllcikKKyAgICBTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+IHNlcmFsaXplZERhdGEpIExlZ2FjeVN5bmMKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDdiOTBmNTkwNGRkZDViZTZlMmZlMjU5
MzRhNDA4NjU5YWFjZmVmYzEuLmFjZGUyZjAwZDdkZDMxN2E0NzU0YTVmMWViNjAzYmE3ZGU4YTlj
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVsbENoZWNrZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dEl0ZXJhdG9yLmg+CkBAIC0xNjUsNiArMTY2LDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVy
cmVkRmlsZU5hbWUsIHsgZGF0YSB9KSk7CiB9CiAKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdp
c3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
JiYgZGF0YSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6cmVn
aXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShXVEZNb3ZlKGRhdGEpKSk7Cit9CisK
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChpZGVudGlmaWVyLCBj
b250ZW50VHlwZSwgZmlsZVBhdGgpKTsKQEAgLTE5MCw2ICsxOTYsMTMgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKTsKIH0KIAorVmVjdG9y
PFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gV2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0
YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmll
cnMpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2Vy
aWFsaXplZERhdGE7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhpZGVudGlmaWVycyksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZp
ZXJzOjpSZXBseShzZXJpYWxpemVkRGF0YSkpOworICAgIHJldHVybiBzZXJpYWxpemVkRGF0YTsK
K30KKwogI2VuZGlmCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRBcHBseVN0eWxlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCBkZDZmZTY5YzE1OTcwYjc0NGU1MmVkOGRkMjU3MWMyMWFkMzI0
MWViLi40YjVhNmQzYWRkYjQ0M2U5ODAwZjBhNTU0N2JiOTc5ZmM2NGQ4MGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC02MywxMCArNjMsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9y
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBj
bG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgdG9JZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRX
aXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUF0
dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4gc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mKSBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA4ODkwYzc2MDQ2ZjM0MGQ1ZmI1YzRlMWQ1NTI3ZThlNjJmZGY5ZjBhLi5lYjQ5MTMzOWU1MmEz
N2JhNDY2ZWZiZDIyMGNkZDA5YzA2NWU2OTJiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTAtMzAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBdHRh
Y2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8gYW5vdGhlciBpcyBtaXNzaW5nIGl0
cyBmaWxlIHdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUyMzIxNDk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0byB2
ZXJpZnkgdGhhdCBjb3B5aW5nIGRpZmZlcmVudCB0eXBlcyBvZiBhdHRhY2htZW50cyBhbmQgcGFz
dGluZyBpbiBhIG5ldyB3ZWIgdmlldyBpbnNlcnRzCisgICAgICAgIGF0dGFjaG1lbnRzIGluIHRo
ZSBzZWNvbmQgd2ViIHZpZXcgdGhhdCBhcmUgYmFja2VkIGJ5IF9XS0F0dGFjaG1lbnQgb2JqZWN0
cywgd2hvc2UgTlNGaWxlV3JhcHBlcnMgaG9sZCBkYXRhIHRoYXQKKyAgICAgICAgaXMgZXF1aXZh
bGVudCB0byB0aGUgb3JpZ2luYWwgZmlsZSB3cmFwcGVycyB1c2VkIHRvIGluc2VydCBhdHRhY2ht
ZW50cyBpbiB0aGUgZmlyc3Qgd2ViIHZpZXcuCisKKyAgICAgICAgRXhpc3RpbmcgQVBJIHRlc3Rz
IHZlcmlmeSB0aGF0IHdoZW4gY29weWluZyBhbmQgcGFzdGluZyB3aXRoaW4gYSBzaW5nbGUgd2Vi
IHZpZXcsIHRoZSBwYXN0ZWQgYXR0YWNobWVudCBlbGVtZW50CisgICAgICAgIGlzIHN0aWxsIGJh
Y2tlZCBieSB0aGUgc2FtZSBOU0ZpbGVXcmFwcGVyIGluc3RhbmNlLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTEwLTMwICBDbGF1ZGlvIFNhYXZlZHJh
ICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBGaXhlcyB0byB0
aGUgUHVibGljU3VmZml4IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCA5
M2ZiODdhMWQ1M2RkNzg2MDViMTBkMzBlMGIwNTJmOGIxMjc1NmMxLi43OTY0ZGYxYTUxNTc3OTYx
MzhkMTc5NGYyYjUxMjIxMjgyMzNjNTRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTE0NjIs
NiArMTQ2Miw1MiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBDdXN0b21GaWxlV3JhcHBlclN1
YmNsYXNzKQogICAgIEVYUEVDVF9FUShbRmlsZVdyYXBwZXIgc2VsZl0sIFtpbnNlcnRlZEF0dGFj
aG1lbnRzLmZpcnN0T2JqZWN0LmluZm8uZmlsZVdyYXBwZXIgY2xhc3NdKTsKIH0KIAorVEVTVChX
S0F0dGFjaG1lbnRUZXN0cywgQ29weUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzKQoreworICAgIGF1
dG8gZmlsZSA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6dGVzdEhUTUxEYXRhKCldKTsKKyAgICBbZmlsZSBzZXRQcmVmZXJyZWRGaWxl
bmFtZTpAInRlc3QuZm9vYmFyIl07CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdEltYWdlRGF0YSgp
XSk7CisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdFBERkRhdGEoKV0pOworICAgIGF1dG8gZm9s
ZGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXREaXJlY3RvcnlXaXRoRmls
ZVdyYXBwZXJzOkB7IEAiaW1hZ2UucG5nIjogaW1hZ2UuZ2V0KCksIEAiZG9jdW1lbnQucGRmIjog
ZG9jdW1lbnQuZ2V0KCkgfV0pOworICAgIFtmb2xkZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJm
b2xkZXIiXTsKKyAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RaSVBEYXRhKCldKTsKKyAgICBbYXJj
aGl2ZSBzZXRQcmVmZXJyZWRGaWxlbmFtZTpAImFyY2hpdmUiXTsKKworICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICBhdXRvIGZpcnN0V2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0
YWNobWVudHMoKTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0
YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxlLmdldCgpIGNvbnRlbnRUeXBlOkAiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIl07CisgICAgICAgIFtmaXJzdFdlYlZpZXcgc3luY2hyb25vdXNseUlu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Zm9sZGVyLmdldCgpIGNvbnRlbnRUeXBlOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVGb2xkZXJdOworICAgICAgICBbZmlyc3RXZWJWaWV3
IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmFyY2hpdmUuZ2V0
KCkgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi96aXAiXTsKKyAgICAgICAgW2ZpcnN0V2ViVmll
dyBzZWxlY3RBbGw6bmlsXTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBfZXhlY3V0ZUVkaXRDb21t
YW5kOkAiQ29weSIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246bmlsXTsKKyAgICB9CisKKyAgICBh
dXRvIHNlY29uZFdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAg
T2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIoc2Vjb25kV2ViVmlldy5n
ZXQoKSk7CisgICAgW3NlY29uZFdlYlZpZXcgcGFzdGU6bmlsXTsKKyAgICBbc2Vjb25kV2ViVmll
dyBleHBlY3RFbGVtZW50Q291bnQ6MyB0YWdOYW1lOkAiYXR0YWNobWVudCJdOworICAgIEVYUEVD
VF9FUSgzVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7CisKKyAgICBOU1N0
cmluZyAqcGxhaW5GaWxlSWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50W3RpdGxl
Xj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXTsKKyAgICBOU1N0cmluZyAqZm9sZGVySWRlbnRp
ZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50W3RpdGxlPWZvbGRlcl0nKS51bmlxdWVJZGVu
dGlmaWVyIl07CisgICAgTlNTdHJpbmcgKmFyY2hpdmVJZGVudGlmaWVyID0gW3NlY29uZFdlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2F0dGFjaG1lbnRbdGl0bGU9YXJjaGl2ZV0nKS51bmlxdWVJZGVudGlmaWVyIl07CisKKyAgICBf
V0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRmlsZUluZm8gPSBbc2Vjb25kV2ViVmlldyBfYXR0YWNo
bWVudEZvcklkZW50aWZpZXI6cGxhaW5GaWxlSWRlbnRpZmllcl0uaW5mbzsKKyAgICBfV0tBdHRh
Y2htZW50SW5mbyAqcGFzdGVkRm9sZGVySW5mbyA9IFtzZWNvbmRXZWJWaWV3IF9hdHRhY2htZW50
Rm9ySWRlbnRpZmllcjpmb2xkZXJJZGVudGlmaWVyXS5pbmZvOworICAgIF9XS0F0dGFjaG1lbnRJ
bmZvICpwYXN0ZWRBcmNoaXZlSW5mbyA9IFtzZWNvbmRXZWJWaWV3IF9hdHRhY2htZW50Rm9ySWRl
bnRpZmllcjphcmNoaXZlSWRlbnRpZmllcl0uaW5mbzsKKworICAgIE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU0ZpbGVXcmFwcGVyICo+ICpwYXN0ZWRGb2xkZXJDb250ZW50cyA9IHBhc3RlZEZv
bGRlckluZm8uZmlsZVdyYXBwZXIuZmlsZVdyYXBwZXJzOworICAgIE5TRmlsZVdyYXBwZXIgKmRv
Y3VtZW50RnJvbUZvbGRlciA9IFtwYXN0ZWRGb2xkZXJDb250ZW50cyBvYmplY3RGb3JLZXk6QCJk
b2N1bWVudC5wZGYiXTsKKyAgICBOU0ZpbGVXcmFwcGVyICppbWFnZUZyb21Gb2xkZXIgPSBbcGFz
dGVkRm9sZGVyQ29udGVudHMgb2JqZWN0Rm9yS2V5OkAiaW1hZ2UucG5nIl07CisgICAgRVhQRUNU
X1RSVUUoW1tkb2N1bWVudCByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOmRvY3Vt
ZW50RnJvbUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1RSVUUoW1tp
bWFnZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOmltYWdlRnJvbUZvbGRlci5y
ZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1RSVUUoW1tmaWxlIHJlZ3VsYXJGaWxl
Q29udGVudHNdIGlzRXF1YWxUb0RhdGE6cGFzdGVkRmlsZUluZm8uZmlsZVdyYXBwZXIucmVndWxh
ckZpbGVDb250ZW50c10pOworICAgIEVYUEVDVF9UUlVFKFtbYXJjaGl2ZSByZWd1bGFyRmlsZUNv
bnRlbnRzXSBpc0VxdWFsVG9EYXRhOnBhc3RlZEFyY2hpdmVJbmZvLmZpbGVXcmFwcGVyLnJlZ3Vs
YXJGaWxlQ29udGVudHNdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSIsIHBhc3RlZEZpbGVJbmZvLmNvbnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoInB1YmxpYy5kaXJlY3RvcnkiLCBwYXN0ZWRGb2xkZXJJbmZvLmNvbnRlbnRUeXBlKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3ppcCIsIHBhc3RlZEFyY2hpdmVJbmZvLmNv
bnRlbnRUeXBlKTsKK30KKwogI3ByYWdtYSBtYXJrIC0gUGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMK
IAogI2lmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353456</attachid>
            <date>2018-10-30 19:10:00 -0700</date>
            <delta_ts>2018-10-30 19:52:25 -0700</delta_ts>
            <desc>Try to fix the Windows build (2)</desc>
            <filename>bug-190530-20181030190959.patch</filename>
            <type>text/plain</type>
            <size>45992</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFmNDQ3ZDE1N2JlMDJh
MzA1Y2UyMDk2MDdlNTc5ZjYxNjM3YmNhOS4uYThlZGI1ZWNkNjgyZjQ3NTQ1NDllNmYwNTAxMWZm
NzMyNjFmYjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNv
cHlpbmcgYW5kIHBhc3RpbmcgYXR0YWNobWVudCBlbGVtZW50cyBhY3Jvc3Mgd2ViIHZpZXdzIGJ5
IGVuY29kaW5nIGFuZCBhZGRpbmcgZmlsZSB3cmFwcGVyCisgICAgICAgIGRhdGEgYXMgc3VicmVz
b3VyY2VzIGluIHRoZSB3ZWIgYXJjaGl2ZSB3aGVuIHdyaXRpbmcgc2VsZWN0ZWQgd2ViIGNvbnRl
bnQgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB0aGVuIGRlY29kaW5nCisgICAgICAgIGFuZCBjcmVh
dGluZyBOU0ZpbGVXcmFwcGVycyB1cG9uIHJlYWRpbmcgd2ViIGNvbnRlbnQuCisKKyAgICAgICAg
VGVzdDogV0tBdHRhY2htZW50VGVzdHMuQ29weUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWdpc3RlckF0dGFj
aG1lbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAgIEFkZCByZWdp
c3RlckF0dGFjaG1lbnRzKCksIHdoaWNoIHJlZ2lzdGVycyBfV0tBdHRhY2htZW50cyBpbiB0aGUg
VUkgcHJvY2VzcyBnaXZlbiBhIGxpc3Qgb2YKKyAgICAgICAgU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLiBUaGlzIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJzKCksIGJ1dCBkaWZmZXJzIGluIHRoYXQgKDEpIGl0CisgICAgICAgIHNlbmRzIHNlcmlhbGl6
ZWQgZmlsZSB3cmFwcGVyIGRhdGEsIGFuZCAoMikgaXQgc2VuZHMgYSBsaXN0IG9mIHNlcmlhbGl6
ZWQgYXR0YWNobWVudHMsIHJhdGhlciB0aGFuIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGp1
c3QgYSBzaW5nbGUgYXR0YWNobWVudC4KKworICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSwgYSBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2VyaWFsaXpl
IGFuZCBkZXNlcmlhbGl6ZSBhbgorICAgICAgICBhdHRhY2htZW50LiBUaGVzZSBhcmUgdXNlZCBi
b3RoIHdoZW4gd3JpdGluZyBhdHRhY2htZW50IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB3
aGVuIGNvbnN1bWluZyBhdHRhY2htZW50CisgICAgICAgIGRhdGEgdXBvbiBwYXN0ZS4KKworICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKworICAgICAgICBB
ZGQgYSBzdGVwIHdoZW4gcGFzdGluZyByaWNoIGNvbnRlbnQgd2l0aCBhdHRhY2htZW50cywgdG8g
Y29sbGVjdCBhbmQgc2VuZCBzZXJpYWxpemVkIGF0dGFjaG1lbnRzIHRvIHRoZSBjbGllbnQuCisg
ICAgICAgIEFsc28sIGRyaXZlLWJ5IGZpeDogZG9uJ3QgV1RGTW92ZSgpIHRoZSBSZWYgaGVyZSBp
ZiBpdCdzIHN0aWxsIGdvaW5nIHRvIGJlIHVzZWQgYmVsb3cuCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKworICAgICAgICBBZGQgYSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uIHRv
IGNvbXB1dGUgYSBVUkwgdGhhdCByZXByZXNlbnRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gYXR0
YWNobWVudCBpZGVudGlmaWVyLCBmb3IKKyAgICAgICAgdXNlIGluIGEgd2ViIGFyY2hpdmUgcmVz
b3VyY2UuCisKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50
c0lmTmVjZXNzYXJ5KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRl
IGFuZCBhcHBlbmQgQXJjaGl2ZVJlc291cmNlcyByZXByZXNlbnRpbmcgYXR0YWNobWVudCBlbGVt
ZW50IGRhdGEgd2hlbiB3cml0aW5nCisgICAgICAgIGF0dGFjaG1lbnRzIHRvIHRoZSBwYXN0ZWJv
YXJkIHZpYSB3ZWIgYXJjaGl2ZSBkYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyk6CisKIDIwMTgtMTAtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBvYnNvbGV0ZSBNQVhfQUxMT1dFRCBtYWNyb3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODEyMGVkYWIyNTY2ZjBlNzhjMThmMDIxNzYwODViZDM4ZWY0NmE2YS4uZGQzOWZk
YTRjMjAxNGUwM2VmYjM1NzhkOTUyNTFmYzcyM2NkNjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
OSBAQAorMjAxOC0xMC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIEF0dGFjaG1lbnQgZHJvcHBlZCBmcm9tIG9uZSB3ZWIgdmlldyB0
byBhbm90aGVyIGlzIG1pc3NpbmcgaXRzIGZpbGUgd3JhcHBlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNTMwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTIzMjE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICBBZGQgSVBDIGVu
Y29kaW5nL2RlY29kaW5nIHN1cHBvcnQgZm9yIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorCisgICAg
ICAgIEFkZCBhIG1ldGhvZCB0byBzZXJpYWxpemUgYW5kIHJldHVybiBhdHRhY2htZW50IGluZm8g
YXMgYSBibG9iIG9mIGRhdGEuCisKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIHVw
ZGF0ZSB0aGUgYXR0YWNobWVudCwgZ2l2ZW4gYSBzZXJpYWxpemVkIGJsb2Igb2YgZGF0YS4gT24g
Q29jb2EgcGxhdGZvcm1zLCB0aGlzIGZhaWxzCisgICAgICAgIGdyYWNlZnVsbHkgaWYgdGhlIHNl
cmlhbGl6ZWQgZGF0YSBjYW5ub3QgYmUgZGVjb2RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29j
b2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJ
bnN0YW5jZSk6IERlbGV0ZWQuCisKKyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgaG9vayB0byBy
ZXR1cm4gdGhlIGxpc3Qgb2YgTlNGaWxlV3JhcHBlciBzdWJjbGFzc2VzIHN1aXRhYmxlIGZvciBk
ZXNlcmlhbGl6YXRpb24uIFRoaXMKKyAgICAgICAgYXJyYXkgY29udGFpbnMgKGF0IG1pbmltdW0p
IE5TRmlsZVdyYXBwZXIsIGJ1dCBtYXkgYWRkaXRpb25hbGx5IGluY2x1ZGUgYSBjdXN0b20gTlNG
aWxlV3JhcHBlciBzdWJjbGFzcywgaWYKKyAgICAgICAgY29uZmlndXJlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmFs
bG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnQ6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnQ6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YSk6CisKKyAgICAg
ICAgUmVnaXN0ZXJzIHRoZSBnaXZlbiBzZXJpYWxpemVkIGF0dGFjaG1lbnQgZGF0YSwgY3JlYXRp
bmcgbmV3IF9XS0F0dGFjaG1lbnQgaW5zdGFuY2VzIGlmIG5lY2Vzc2FyeS4gQ3VycmVudGx5LAor
ICAgICAgICB0aGlzIGRvZXMgbm90IHVwZGF0ZSB0aGUgZmlsZSB3cmFwcGVycyBvZiBleGlzdGlu
ZyBfV0tBdHRhY2htZW50czsgd2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlIHRv
IHNlZQorICAgICAgICBpZiB3ZSBjYW4gYWRkaXRpb25hbGx5IHVwZGF0ZSBmaWxlIHdyYXBwZXJz
IGZvciBleGlzdGluZyBhdHRhY2htZW50cywgd2l0aG91dCBicmVha2luZyB0aGUgY2FzZSB3aGVy
ZSB0aGUgdXNlcgorICAgICAgICBjb3BpZXMgYW5kIHBhc3RlcyBvciBkcmFncyBhbmQgZHJvcHMg
YXR0YWNobWVudHMgd2l0aGluIGEgc2luZ2xlIHdlYiB2aWV3IGFuZCB0aGUgY2xpZW50IGV4cGVj
dHMgX1dLQXR0YWNobWVudAorICAgICAgICBpbnN0YW5jZXMgdG8gYmUgcmV1c2VkLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyk6
CisKKyAgICAgICAgSW1wbGVtZW50IGEgbmV3IElQQyBob29rIHRvIGZldGNoIGFuIGFycmF5IG9m
IHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhIGJsb2JzLCBnaXZlbiBhIGxpc3Qgb2YgYXR0YWNo
bWVudAorICAgICAgICBpZGVudGlmaWVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMTAtMzAgIERld2VpIFpodSAgPGRl
d2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSAnUHJvY2Vzc1N3YXBPbkNyb3NzU2l0
ZU5hdmlnYXRpb25FbmFibGVkJyB0byAnZXhwZXJpbWVudGFsJyBjYXRlZ29yeS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMWQy
NWZkODUxYTZlMjFhODFjZWUzZmY3ZjZjNjMzZWFjNmQyNTE2Li5jNzg1MGUzNTUyNTI3YTY5MjIy
Yjk0NmUyMzg0MWY3YWEwODZmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODg5LDYgKzQ4ODksNyBAQAogCQlGNDk3ODY4
ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIg
LyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5n
SGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5q
cyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJ
RjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDNENjQyMTg4
MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RURDMjEzRjNGNUYwMDRF
QTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2Vy
RXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNTA2NjRG
ODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY2MTU3RjUyREMwMEFDMjI2RiAvKiBG
b3JtQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTQ3OTgsNiArMTQ3OTksNyBAQAogCQlGNDhEMkFB
MzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQyQUE0MjE1OTc0MEQwMEM2
NzUyQiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFC
IC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRlbUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENDNENjQyMTg4MDJFNjAwRUNF
Q0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdF
REEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VFMDIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5T
Rm9udE1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjIxLDYg
KzIwNjIzLDcgQEAKIAkJCQk5MzMwOURCQjA5OUU2NDkxMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuaCAqLywKIAkJCQk1MTQwNUM4NjE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcCAqLywKIAkJCQk1MTQwNUM4NzE5MEIwMTQ0MDA3NTRGOTQgLyog
U2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8sCisJCQkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FD
IC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovLAogCQkJCTkzMzA5REMwMDk5RTY0OTEw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEQzEw
OTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggKi8sCiAJCQkJQjhE
QkRCNDcxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwICovLApAQCAt
MzA3MDQsNiArMzA3MDcsNyBAQAogCQkJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxl
Y3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4
IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MzIyQUMx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxOERGMzM1MThBQUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYx
IC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDM1OTVhMDQwZjJmYmIwMzU1ZjdmMTMyMTM5MjdkNDY0MjBhYjU5OWYuLjNhNTFmMmM2MWZjNzE1
Y2RkZjkzMjdmNzM5NmEwNzBkNmIzNmVlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlICJSZXBsYWNlUmFuZ2VXaXRoVGV4dENvbW1hbmQu
aCIKICNpbmNsdWRlICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNs
dWRlICJTaW1wbGlmeU1hcmt1cENvbW1hbmQuaCIKQEAgLTQwMTAsNiArNDAxMSwxMiBAQCB2b2lk
IEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZwogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIGZpbGVQYXRoKTsKIH0KIAordm9pZCBF
ZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4mJiBkYXRhKQoreworICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKKyAg
ICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRzKFdURk1vdmUoZGF0YSkpOworfQorCiB2
b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYjk2MTFlMzdiZTA4NzRjYmFiNzM1MDdjNGU3MjJhMGVi
ZjMzMDkzNi4uM2JjOGEwNjBlZWRlNGMzMTk1ODI5ZTEzZjFkNTQyMzc1MDJjZTIyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCkBAIC04Niw2ICs4NiwxMCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFBs
YWluVGV4dDsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3Vs
dDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCitzdHJ1Y3QgU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhOworI2VuZGlmCisKIGVudW0gRWRpdG9yQ29tbWFuZFNvdXJjZSB7IENvbW1h
bmRGcm9tTWVudU9yS2V5QmluZGluZywgQ29tbWFuZEZyb21ET00sIENvbW1hbmRGcm9tRE9NV2l0
aFVzZXJJbnRlcmZhY2UgfTsKIGVudW0gRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9yIHsgRWRpdG9y
UGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYsIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzUCB9Owog
CkBAIC01MDksOCArNTEzLDkgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAq
LywgUmVmPFNoYXJlZEJ1ZmZlcj4mJik7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNv
bnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8pOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRh
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4mJik7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGNsb25lQXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBmcm9tSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkSW5zZXJ0QXR0
YWNobWVudEVsZW1lbnQoSFRNTEF0dGFjaG1lbnRFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODgy
Y2RhMGEwOTcxMGUwYWFjNDQ3NGFkM2EzM2ZlYWEwOGNhNGRmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKKworc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CisgICAgU3RyaW5nIGlkZW50
aWZpZXI7CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDBiNzllYWU4ZjEzNjcyZTUxODAxOWZjNmNmMTNm
YmFkMDQyYzQyMDguLmFlZmViMWFmMWY2OTNjMzkxMmJkZjhkNjhkM2ZkOWQ1Y2M3NjVmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQ
dWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisj
aW1wb3J0ICJTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCIKICNpbXBvcnQgIlNldHRpbmdzLmgi
CiAjaW1wb3J0ICJTb2NrZXRQcm92aWRlci5oIgogI2ltcG9ydCAiVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgiCkBAIC0yNzQsNiArMjc1LDIwIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VS
aWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQm
IGZyCiAgICAgICAgICAgICB1cmxUb1Jlc291cmNlTWFwLnNldCh1cmwuc3RyaW5nKCksIHN1YnJl
c291cmNlLmNvcHlSZWYoKSk7CiAgICAgfQogCisgICAgVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4gc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOworICAgIGZvciAoYXV0byYgYXR0YWNo
bWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxBdHRhY2htZW50RWxlbWVudD4oZnJhZ21lbnQp
KSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2VVUkwgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmFy
Y2hpdmVSZXNvdXJjZVVSTChhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSk7CisgICAgICAg
IGF1dG8gcmVzb3VyY2VFbnRyeSA9IHVybFRvUmVzb3VyY2VNYXAuZmluZChyZXNvdXJjZVVSTC5z
dHJpbmcoKSk7CisgICAgICAgIGlmIChyZXNvdXJjZUVudHJ5ID09IHVybFRvUmVzb3VyY2VNYXAu
ZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiByZXNvdXJjZSA9
IHJlc291cmNlRW50cnktPnZhbHVlOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEu
YXBwZW5kKHsgYXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0pOworICAgIH0KKworICAgIGlmICghc2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJB
dHRhY2htZW50cyhXVEZNb3ZlKHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSkpOworCiAgICAgVmVj
dG9yPFJlZjxFbGVtZW50Pj4gZWxlbWVudHNUb1JlbW92ZTsKICAgICBWZWN0b3I8QXR0YWNobWVu
dEluc2VydGlvbkluZm8+IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvOwogICAgIGZvciAoYXV0byYg
aW1hZ2UgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MSW1hZ2VFbGVtZW50PihmcmFnbWVudCkpIHsK
QEAgLTMyMyw3ICszMzgsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0
YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAg
aWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KG9yaWdpbmFsRWxlbWVudC5nZXQoKSkgJiYgY29udGVu
dFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihpbmZvLmNvbnRlbnRU
eXBlKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdl
RWxlbWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgICAgICBpbWFnZS5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9N
VVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShpbmZv
LmRhdGEsIGluZm8uY29udGVudFR5cGUpKSk7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0
YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CisgICAgICAgICAgICAgICAgaW1h
Z2Uuc2V0QXR0YWNobWVudEVsZW1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVz
KGluZm8uZGF0YS0+c2l6ZSgpLCBpbmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKICAg
ICAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChhdHRhY2htZW50LCBXVEZNb3ZlKG9y
aWdpbmFsRWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCmluZGV4IDBjNjg2MDllMTU1ZDRlZGYwN2ViOWFiNDEwOTcxMWMzY2NiNTg0YjAu
LmVlYjY5Mjc3ZGNiMWMxOWM4ZWJkZmNhYjViOGZiNjdiMDQyYTQxNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVu
dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlVSTFBhcnNlci5oIgog
I2luY2x1ZGUgPHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KQEAgLTg1LDYgKzg2LDEzIEBAIGNv
bnN0IFN0cmluZyYgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpnZXRBdHRhY2htZW50SWRlbnRpZmll
cihIVE1MSW1hZ2VFbGVtZW50JiBpCiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKK1VSTCBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCit7CisgICAgYXV0byByZXNvdXJjZVVSTCA9IFVSTFBhcnNlcigiYXBwbGV3ZWJk
YXRhOi8vYXR0YWNobWVudC8iX3MpLnJlc3VsdCgpOworICAgIHJlc291cmNlVVJMLnNldFBhdGgo
aWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlc291cmNlVVJMOworfQorCiBGaWxlKiBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OmZpbGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZpbGUuZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCAwNDEw
NDI2NjBiYTUwZTAwMWRiYTMyODI4ZTIwNmI5YWM4ZjY0MmJjLi4wMjBkYzQwMGE3NTFkODhmNDgz
YzQ1MzU5N2U0MWVjZWVmODE2MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEhUTUxBdHRhY2htZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdldEF0dGFjaG1lbnRJZGVudGlmaWVy
KEhUTUxJbWFnZUVsZW1lbnQmKTsKKyAgICBzdGF0aWMgVVJMIGFyY2hpdmVSZXNvdXJjZVVSTChj
b25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBibG9iVVJMKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgRmlsZSogZmlsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAw
YzU4NDUyMmFiOWM2NGI3ZjdmNTQ0Njc5ZGNiZTU3ZjZkZjc4MjYyLi5hNDFjOTQwNWE4YzhkYmUx
ZjQ3YzVjYzU2ZWIyOWQ4MTdkYjY2Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtMzIsMTAgKzMyLDEzIEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAi
RWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgi
CisjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJRnJhbWVFbGVtZW50LmgiCkBAIC00Nyw2ICs1MCw4IEBACiAjaW5jbHVkZSAiTWVtb3J5
Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTQ2NCw2ICs0NjksNDIgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCiAg
ICAgcmV0dXJuIGNyZWF0ZShtYXJrdXBTdHJpbmcsICpmcmFtZSwgbm9kZUxpc3QsIG51bGxwdHIp
OwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKworc3RhdGljIHZvaWQgYWRk
U3VicmVzb3VyY2VzRm9yQXR0YWNobWVudEVsZW1lbnRzSWZOZWNlc3NhcnkoRnJhbWUmIGZyYW1l
LCBjb25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+
PiYgc3VicmVzb3VyY2VzKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnM7CisgICAgZm9yIChhdXRvKiBub2Rl
IDogbm9kZXMpIHsKKyAgICAgICAgaWYgKCFpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KG5vZGUp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byB1bmlxdWVJZGVudGlmaWVy
ID0gZG93bmNhc3Q8SFRNTEF0dGFjaG1lbnRFbGVtZW50Pigqbm9kZSkudW5pcXVlSWRlbnRpZmll
cigpOworICAgICAgICBpZiAodW5pcXVlSWRlbnRpZmllci5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZGVudGlmaWVycy5hcHBlbmQoV1RGTW92ZSh1bmlxdWVJ
ZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgaWYgKGlkZW50aWZpZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byogZWRpdG9yQ2xpZW50ID0gZnJhbWUuZWRpdG9yKCku
Y2xpZW50KCk7CisgICAgaWYgKCFlZGl0b3JDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gZnJhbWVOYW1lID0gZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKTsKKyAgICBmb3IgKGF1
dG8mIGRhdGEgOiBlZGl0b3JDbGllbnQtPnNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50
aWZpZXJzKFdURk1vdmUoaWRlbnRpZmllcnMpKSkgeworICAgICAgICBhdXRvIHJlc291cmNlVVJM
ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphcmNoaXZlUmVzb3VyY2VVUkwoZGF0YS5pZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShkYXRhLmRhdGEucHRyKCksIFdURk1vdmUocmVzb3VyY2VVUkwpLCBkYXRhLm1pbWVUeXBlLCB7
IH0sIGZyYW1lTmFtZSkpCisgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNl
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KK30KKworI2VuZGlmCisKIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBT
dHJpbmcsIEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIFdURjo6RnVu
Y3Rpb248Ym9vbCAoRnJhbWUmKT4mJiBmcmFtZUZpbHRlcikKIHsKICAgICBhdXRvJiByZXNwb25z
ZSA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CkBAIC01Mjgs
NiArNTY5LDEwIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiAgICAgICAgIH0KICAgICB9CiAK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGFkZFN1YnJlc291cmNlc0ZvckF0
dGFjaG1lbnRFbGVtZW50c0lmTmVjZXNzYXJ5KGZyYW1lLCBub2Rlcywgc3VicmVzb3VyY2VzKTsK
KyNlbmRpZgorCiAgICAgLy8gSWYgd2UgYXJlIGFyY2hpdmluZyB0aGUgZW50aXJlIHBhZ2UsIGFk
ZCBhbnkgbGluayBpY29ucyB0aGF0IHdlIGhhdmUgZGF0YSBmb3IuCiAgICAgaWYgKCFub2Rlcy5p
c0VtcHR5KCkgJiYgbm9kZXNbMF0tPmlzRG9jdW1lbnROb2RlKCkpIHsKICAgICAgICAgYXV0byog
ZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggZThkMTBjMjU0MTk4NDJiMWMyZmY5YTg2NTNmZDQy
ZDIyNWExMDUwMS4uYTY1ZDgwY2VhMGYyN2RhZjRiZmQyOGE1YWQwOGVhMGE2NGM0NjQ4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkVkaXRvckluc2VydEFjdGlvbi5oIgorI2luY2x1ZGUgIlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2luZy5oIgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCkBAIC03NSwxMSArNzYsMTMg
QEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlm
aWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8q
IHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlk
ZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmlu
ZyYgLyogZmlsZVBhdGggKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRp
ZmllciAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsb25lQXR0YWNobWVudERhdGEoY29uc3Qg
U3RyaW5nJiAvKiBmcm9tSWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiB0b0lkZW50aWZp
ZXIgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIHNv
dXJjZSAqLywgYm9vbCAvKiBoYXNFbmNsb3NpbmdJbWFnZSAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4gc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mKSB7IHJldHVybiB7IH07IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lk
IGRpZEJlZ2luRWRpdGluZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGM0YzQ3ODhkMmU4Yzg2MGI5OThiMDlmMjdlOTg3ZGE5
NjRiZDM3ZjQuLmFjNGQ5YmVkZjg4MGFiMDczZTBhNWE5OTlhMTQxYzRhZGEwMWRmZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9CbG9iUGFydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4K
QEAgLTY5LDYgKzcwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckRhdGEuaD4KQEAgLTMwMTIsNCArMzAxNCwzMCBA
QCBzdGQ6Om9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1
dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCisj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordm9pZCBBcmd1bWVudENvZGVyPFNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YT46OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSYgZGF0YSkKK3sKKyAgICBlbmNvZGVy
IDw8IGRhdGEuaWRlbnRpZmllciA8PCBkYXRhLm1pbWVUeXBlIDw8IElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YS5nZXQoKSB9OworfQorCitzdGQ6Om9wdGlvbmFsPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFN0
cmluZyBpZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7
IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGQ4NzgxOGU3
YmE3N2M4ZDMxYTFkNmE5YmM3NzRlNGY4MDlkNmMzYzIuLmY1MDkyMTYxNmIyYmE0NTQ3NjIyMTA4
YThiNTg4ZjA3ZjA2ODgwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCkBAIC0xNjQsNiArMTY0LDEwIEBAIGNsYXNzIE1lZGlhU2Vzc2lvbk1ldGFk
YXRhOwogc3RydWN0IE1lZGlhQ29uc3RyYWludHM7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCitzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhOworI2VuZGlm
CisKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIHVzaW5nIElEQktleVBhdGggPSBWYXJp
YW50PFN0cmluZywgVmVjdG9yPFN0cmluZz4+OwogI2VuZGlmCkBAIC03MjAsNiArNzI0LDE1IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+
IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIH0gLy8gbmFtZXNwYWNl
IElQQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcAppbmRleCA5Y2MwNDEwZjc0NzQ0YmE3YzY2MWFjOWQ1ZjVlZTcyNWM2
N2MyNzk1Li5hMTM0YmZhZjYzNWFiYjQ0NTc5Mzc5MzY0MzE0YTgwMmUyNDcyMGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05Niw2ICs5
NiwxNSBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3Np
bmdJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEF0dGFjaG1l
bnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQoreworfQorCiAjZW5kaWYgLy8gIVBMQVRG
T1JNKENPQ09BKQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaAppbmRleCBiOGZiYmJlOWI1YzJmNWU2NTEyZTBkYWYyY2ZjZWYzOWJlOWFmM2JjLi42NGQw
MjQxZTcyZTBlMjk5YTQ2NTM1ZTZhMzdhNGVkYjU2YmYwM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTg1LDYgKzg1LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBt
X2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0Vu
Y2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCisg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50VHlwZSk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6
OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW0KaW5kZXggYjg3NzEwMmVmNWY4ZGQxZThkYmMyMzlmMGQ3YzY1MTFkYTMyNzQ1Ny4uYjRlYzlj
OGViNmNjYTRmZDc4NmRjODdjYzViNTVkZWQyNmFhYjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkFQSUF0dGFjaG1lbnQu
aCIKIAorI2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCkBAIC0zMyw2ICszNCw3IEBACiAjZWxzZQogI2ltcG9ydCA8Q29yZVNlcnZp
Y2VzL0NvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5
ZWRBcmNoaXZlclNQSS5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtMTI1LDQgKzEyNywzMyBA
QCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3Jh
cHBlcjsKIH0KIAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmlsZVdy
YXBwZXIgfHwgIW1fd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBOU0Rh
dGEgKnNlcmlhbGl6ZWREYXRhID0gc2VjdXJlbHlBcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdCht
X2ZpbGVXcmFwcGVyLmdldCgpKTsKKyAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkRGF0YSk7Cit9CisKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAg
IGlmICghbV93ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlcmlhbGl6ZWRE
YXRhID0gc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBpZiAo
IXNlcmlhbGl6ZWREYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0ZpbGVXcmFwcGVyICpm
aWxlV3JhcHBlciA9IHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXNGcm9tRGF0YShtX3dlYlBhZ2Ut
PnBhZ2VDbGllbnQoKS5zZXJpYWxpemFibGVGaWxlV3JhcHBlckNsYXNzZXMoKSwgc2VyaWFsaXpl
ZERhdGEuZ2V0KCkpOworICAgIGlmICghZmlsZVdyYXBwZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHNldEZpbGVXcmFwcGVyQW5kVXBkYXRlQ29udGVudFR5cGUoZmlsZVdyYXBwZXIsIGNvbnRl
bnRUeXBlKTsKKyAgICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlz
LCBbXSAoYXV0bykgeyB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKaW5kZXggZDUx
NTRlZDM1NTU0MmIxOWIzMTgzYTMxNWI3MDQ4ZjNjMzdkNmUxYS4uZDcyNzM3MmI2NjcxMTY1NjEz
MDI4ZjZjYWMxNWE1NjhiYWI3Y2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaApAQCAtNDUsNyArNDUsOCBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGRpZEluc2VydEF0dGFj
aG1lbnQoQVBJOjpBdHRhY2htZW50JiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmKSBmaW5hbDsKLSAgICBO
U0ZpbGVXcmFwcGVyICphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBmaW5hbDsKKyAgICBOU0Zp
bGVXcmFwcGVyICphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBjb25zdCBmaW5hbDsKKyAgICBO
U1NldCAqc2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QgZmluYWw7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KaW5kZXggMWY5ZDI5MjFiMzhhMTA4ZDIwNzg0NGI1NmMy
NTkxM2Q3Y2E2YzExNi4uNzVhY2U5YTAyOGYzMTRiYTQzMDQxZmZhNDUwZjM1NzA5ZDNmYTI3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGxDb2NvYTo6ZGlk
UmVtb3ZlQXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiAjZW5kaWYKIH0K
IAotTlNGaWxlV3JhcHBlciAqUGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlcklu
c3RhbmNlKCkKK05TRmlsZVdyYXBwZXIgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGNvbnN0CiB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICBDbGFzcyBj
bHMgPSBtX3dlYlZpZXcuY29uZmlndXJhdGlvbi5fYXR0YWNobWVudEZpbGVXcmFwcGVyQ2xhc3Mg
PzogW05TRmlsZVdyYXBwZXIgc2VsZl07CkBAIC03Niw2ICs3NiwxNyBAQCBOU0ZpbGVXcmFwcGVy
ICpQYWdlQ2xpZW50SW1wbENvY29hOjphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKQogI2VuZGlm
CiB9CiAKK05TU2V0ICpQYWdlQ2xpZW50SW1wbENvY29hOjpzZXJpYWxpemFibGVGaWxlV3JhcHBl
ckNsYXNzZXMoKSBjb25zdAoreworICAgIENsYXNzIGRlZmF1bHRGaWxlV3JhcHBlckNsYXNzID0g
TlNGaWxlV3JhcHBlci5zZWxmOworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgQ2xhc3MgY29uZmln
dXJlZEZpbGVXcmFwcGVyQ2xhc3MgPSBtX3dlYlZpZXcuY29uZmlndXJhdGlvbi5fYXR0YWNobWVu
dEZpbGVXcmFwcGVyQ2xhc3M7CisgICAgaWYgKGNvbmZpZ3VyZWRGaWxlV3JhcHBlckNsYXNzICYm
IGNvbmZpZ3VyZWRGaWxlV3JhcHBlckNsYXNzICE9IGRlZmF1bHRGaWxlV3JhcHBlckNsYXNzKQor
ICAgICAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3RzOmNvbmZpZ3VyZWRGaWxlV3JhcHBl
ckNsYXNzLCBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcywgbmlsXTsKKyNlbmRpZgorICAgIHJldHVy
biBbTlNTZXQgc2V0V2l0aE9iamVjdHM6ZGVmYXVsdEZpbGVXcmFwcGVyQ2xhc3MsIG5pbF07Cit9
CisKICNlbmRpZgogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IGI4YTBjMTQyZWQ4YTcyZDI2Mjk1YjEyZTcxMzA4NTE1ODI4MmFlNGIuLjFkZWVkMjk3NjhkODc3
NWRmMTBiOTViMDdhNjc3MDllMTYzM2IyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogT0JKQ19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFT
UyBOU0ZpbGVXcmFwcGVyOworT0JKQ19DTEFTUyBOU1NldDsKIE9CSkNfQ0xBU1MgX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnk7CiAKICNpZiBVU0UoQVBQS0lUKQpAQCAtNDQ1LDcgKzQ0Niw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW5zZXJ0QXR0YWNobWVudChBUEk6OkF0dGFjaG1l
bnQmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92
ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JikgeyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCBOU0ZpbGVXcmFwcGVyICphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBOU0ZpbGVXcmFwcGVyICphbGxvY0ZpbGVXcmFw
cGVySW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBOU1Nl
dCAqc2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA4ZWM0YmZkNWE1ZjlkOTJkMTE1ZDJkYTVkZGExNzhmMjliNTNlYmY5Li5l
NjNlY2Y1MGYwNWVjYjQxZDA3NjQ0NWU2NGE3YmIyOGU4OGQ4N2IzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc5MDAsNiArNzkwMCwxNSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCiAgICAgICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAu
c2V0KGlkZW50aWZpZXIsIGVuc3VyZUF0dGFjaG1lbnQoaWRlbnRpZmllcikpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShWZWN0
b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7CisgICAgZm9y
IChhdXRvJiBzZXJpYWxpemVkRGF0YSA6IGRhdGEpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVy
ID0gV1RGTW92ZShzZXJpYWxpemVkRGF0YS5pZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFhdHRh
Y2htZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGVuc3VyZUF0dGFj
aG1lbnQoaWRlbnRpZmllciktPnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oV1RG
TW92ZShzZXJpYWxpemVkRGF0YS5kYXRhKSwgV1RGTW92ZShzZXJpYWxpemVkRGF0YS5taW1lVHlw
ZSkpOworICAgIH0KK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmNsb25lQXR0YWNobWVudERhdGEo
Y29uc3QgU3RyaW5nJiBmcm9tSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZpZXIp
CiB7CiAgICAgYXV0byBuZXdBdHRhY2htZW50ID0gZW5zdXJlQXR0YWNobWVudCh0b0lkZW50aWZp
ZXIpOwpAQCAtNzkyNSw2ICs3OTM0LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRl
QWxsQXR0YWNobWVudHMoKQogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRN
YXAuY2xlYXIoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgVmVj
dG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mIHNlcmlhbGl6ZWREYXRhKQor
eworICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0
byBhdHRhY2htZW50ID0gYXR0YWNobWVudEZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAg
ICAgIGlmICghYXR0YWNobWVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1
dG8gZGF0YSA9IGF0dGFjaG1lbnQtPmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpOwor
ICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzZXJp
YWxpemVkRGF0YS5hcHBlbmQoeyBpZGVudGlmaWVyLCBhdHRhY2htZW50LT5taW1lVHlwZSgpLCBk
YXRhLnJlbGVhc2VOb25OdWxsKCkgfSk7CisgICAgfQorfQorCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1SZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQ
STo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMGM3YWU1ZDlkNjNk
MDFmMmJjODI0NWUyNDU1YzNhMDc0MzdjYThkZS4uMjU4YWY5MmI0NTFmYzZiZmUzYTRhMmU4OGQ4
NmM1NTg4NWNlMzdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTIzMSw2ICsyMzEsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGE7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk7CiBjbGFzcyBTZWNLZXlQcm94eVN0b3JlOworY2xhc3Mg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgVmlld1Nu
YXBzaG90OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKQEAgLTEzNDQsNiArMTM0NSw3IEBAIHB1
YmxpYzoKICAgICBSZWZQdHI8QVBJOjpBdHRhY2htZW50PiBhdHRhY2htZW50Rm9ySWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogICAgIHZvaWQgaW5zZXJ0QXR0YWNo
bWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQ
STo6QXR0YWNobWVudCYsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwor
ICAgIHZvaWQgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC0xODI5LDYg
KzE4MzEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFt
ZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPiYmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYg
ZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGNjYjk4
NjQ5YWMxZWNmMDQxMDY3YjNkMDQxZDg3ZGViMzRhZDNiNTEuLjFmZTg2MGUzYzZhNjJhY2E0NjA1
NWI1NWY1N2Y4YWFkZmI0ZmY2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTUzNCw5ICs1MzQsMTEgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEo
U3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5nIHByZWZlcnJlZEZp
bGVOYW1lLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBSZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKFN0cmluZyBpZGVudGlmaWVyLCBTdHJp
bmcgY29udGVudFR5cGUsIFN0cmluZyBmaWxlUGF0aCkKICAgICBSZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKFN0cmluZyBpZGVudGlmaWVyKQorICAgIHJlZ2lzdGVyQXR0YWNobWVudHNGcm9t
U2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4g
ZGF0YSkKICAgICBDbG9uZUF0dGFjaG1lbnREYXRhKFN0cmluZyBmcm9tSWRlbnRpZmllciwgU3Ry
aW5nIHRvSWRlbnRpZmllcikKICAgICBEaWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIo
U3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2UsIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2Up
CiAgICAgRGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVyKFN0cmluZyBpZGVudGlmaWVy
KQorICAgIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKFZlY3RvcjxTdHJp
bmc+IGlkZW50aWZpZXJzKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4gc2VyYWxpemVkRGF0YSkgTGVnYWN5U3luYwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKaW5kZXggN2I5MGY1OTA0ZGRkNWJlNmUyZmUyNTkzNGE0MDg2NTlhYWNmZWZj
MS4uYWNkZTJmMDBkN2RkMzE3YTQ3NTRhNWYxZWI2MDNiYTdkZThhOWM5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJk
RXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkQXR0YWNobWVudERh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NwZWxsQ2hlY2tlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4K
QEAgLTE2NSw2ICsxNjYsMTEgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb24KICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
ckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgeyBk
YXRhIH0pKTsKIH0KIAordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMo
VmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJiBkYXRhKQoreworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRz
RnJvbVNlcmlhbGl6ZWREYXRhKFdURk1vdmUoZGF0YSkpKTsKK30KKwogdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQog
ewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyRnJvbUZpbGVQYXRoKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBmaWxl
UGF0aCkpOwpAQCAtMTkwLDYgKzE5NiwxMyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlkUmVt
b3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcgogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZW1vdmVBdHRhY2htZW50
V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcikpOwogfQogCitWZWN0b3I8U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPiBXZWJFZGl0b3JDbGllbnQ6OnNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycykKK3sKKyAgICBWZWN0
b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJpYWxpemVkRGF0YTsKKyAg
ICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YUZvcklkZW50aWZpZXJzKGlkZW50aWZpZXJzKSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnM6OlJlcGx5KHNlcmlh
bGl6ZWREYXRhKSk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZWREYXRhOworfQorCiAjZW5kaWYKIAog
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZEFwcGx5U3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IGRkNmZlNjljMTU5NzBiNzQ0ZTUyZWQ4ZGQyNTcxYzIxYWQzMjQxZWIuLjRiNWE2ZDNhZGRi
NDQzZTk4MDBmMGE1NTQ3YmI5NzlmYzY0ZDgwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTYz
LDEwICs2MywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZp
bmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGNsb25lQXR0YWNobWVudERh
dGEoY29uc3QgU3RyaW5nJiBmcm9tSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0b0lkZW50aWZp
ZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGJvb2wgaGFzRW5j
bG9zaW5nSW1hZ2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0
c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJpYWxpemVk
QXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGZpbmFs
OwogI2VuZGlmCiAKICAgICB2b2lkIGRpZEJlZ2luRWRpdGluZygpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNmMTA3ZjUxMTc3YTZk
MjkyMzczMWRhZmFkNmNiMzYxYTMwNDMyODQuLjE0YjU4YTBmOGYxN2U4NmRkZTdjZGYzYWM2MDdi
OGNmODI5YTMyMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEF0dGFjaG1lbnQgZHJvcHBlZCBm
cm9tIG9uZSB3ZWIgdmlldyB0byBhbm90aGVyIGlzIG1pc3NpbmcgaXRzIGZpbGUgd3JhcHBlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNTMwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTIzMjE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBhIHRlc3QgdG8gdmVyaWZ5IHRoYXQgY29weWluZyBk
aWZmZXJlbnQgdHlwZXMgb2YgYXR0YWNobWVudHMgYW5kIHBhc3RpbmcgaW4gYSBuZXcgd2ViIHZp
ZXcgaW5zZXJ0cworICAgICAgICBhdHRhY2htZW50cyBpbiB0aGUgc2Vjb25kIHdlYiB2aWV3IHRo
YXQgYXJlIGJhY2tlZCBieSBfV0tBdHRhY2htZW50IG9iamVjdHMsIHdob3NlIE5TRmlsZVdyYXBw
ZXJzIGhvbGQgZGF0YSB0aGF0CisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIG9yaWdpbmFs
IGZpbGUgd3JhcHBlcnMgdXNlZCB0byBpbnNlcnQgYXR0YWNobWVudHMgaW4gdGhlIGZpcnN0IHdl
YiB2aWV3LgorCisgICAgICAgIEV4aXN0aW5nIEFQSSB0ZXN0cyB2ZXJpZnkgdGhhdCB3aGVuIGNv
cHlpbmcgYW5kIHBhc3Rpbmcgd2l0aGluIGEgc2luZ2xlIHdlYiB2aWV3LCB0aGUgcGFzdGVkIGF0
dGFjaG1lbnQgZWxlbWVudAorICAgICAgICBpcyBzdGlsbCBiYWNrZWQgYnkgdGhlIHNhbWUgTlNG
aWxlV3JhcHBlciBpbnN0YW5jZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAxOC0xMC0zMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgd2Via2l0cHk6IFN1cHBvcnQgYWx0ZXJuYXRlIHNpbWN0bCBsaXN0IG91dHB1
dHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDkzZmI4N2ExZDUzZGQ3ODYwNWIxMGQzMGUwYjA1
MmY4YjEyNzU2YzEuLjc5NjRkZjFhNTE1Nzc5NjEzOGQxNzk0ZjJiNTEyMjEyODIzM2M1NGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2ht
ZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMTQ2Miw2ICsxNDYyLDUyIEBAIFRFU1QoV0tBdHRhY2ht
ZW50VGVzdHMsIEN1c3RvbUZpbGVXcmFwcGVyU3ViY2xhc3MpCiAgICAgRVhQRUNUX0VRKFtGaWxl
V3JhcHBlciBzZWxmXSwgW2luc2VydGVkQXR0YWNobWVudHMuZmlyc3RPYmplY3QuaW5mby5maWxl
V3JhcHBlciBjbGFzc10pOwogfQogCitURVNUKFdLQXR0YWNobWVudFRlc3RzLCBDb3B5QW5kUGFz
dGVCZXR3ZWVuV2ViVmlld3MpCit7CisgICAgYXV0byBmaWxlID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czp0ZXN0SFRNTERhdGEoKV0p
OworICAgIFtmaWxlIHNldFByZWZlcnJlZEZpbGVuYW1lOkAidGVzdC5mb29iYXIiXTsKKyAgICBh
dXRvIGltYWdlID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czp0ZXN0SW1hZ2VEYXRhKCldKTsKKyAgICBhdXRvIGRvY3VtZW50ID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czp0
ZXN0UERGRGF0YSgpXSk7CisgICAgYXV0byBmb2xkZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdERpcmVjdG9yeVdpdGhGaWxlV3JhcHBlcnM6QHsgQCJpbWFnZS5wbmciOiBp
bWFnZS5nZXQoKSwgQCJkb2N1bWVudC5wZGYiOiBkb2N1bWVudC5nZXQoKSB9XSk7CisgICAgW2Zv
bGRlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpAImZvbGRlciJdOworICAgIGF1dG8gYXJjaGl2ZSA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6dGVzdFpJUERhdGEoKV0pOworICAgIFthcmNoaXZlIHNldFByZWZlcnJlZEZpbGVuYW1lOkAi
YXJjaGl2ZSJdOworCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGF1dG8gZmlyc3RX
ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgICAgICBbZmlyc3RX
ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmZpbGUu
Z2V0KCkgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXTsKKyAgICAgICAg
W2ZpcnN0V2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBl
cjpmb2xkZXIuZ2V0KCkgY29udGVudFR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZv
bGRlcl07CisgICAgICAgIFtmaXJzdFdlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZVdyYXBwZXI6YXJjaGl2ZS5nZXQoKSBjb250ZW50VHlwZTpAImFwcGxpY2F0aW9u
L3ppcCJdOworICAgICAgICBbZmlyc3RXZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAgICAgICBb
Zmlyc3RXZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJDb3B5IiBhcmd1bWVudDpuaWwgY29t
cGxldGlvbjpuaWxdOworICAgIH0KKworICAgIGF1dG8gc2Vjb25kV2ViVmlldyA9IHdlYlZpZXdG
b3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JT
Y29wZSBvYnNlcnZlcihzZWNvbmRXZWJWaWV3LmdldCgpKTsKKyAgICBbc2Vjb25kV2ViVmlldyBw
YXN0ZTpuaWxdOworICAgIFtzZWNvbmRXZWJWaWV3IGV4cGVjdEVsZW1lbnRDb3VudDozIHRhZ05h
bWU6QCJhdHRhY2htZW50Il07CisgICAgRVhQRUNUX0VRKDNVLCBvYnNlcnZlci5vYnNlcnZlcigp
Lmluc2VydGVkLmNvdW50KTsKKworICAgIE5TU3RyaW5nICpwbGFpbkZpbGVJZGVudGlmaWVyID0g
W3NlY29uZFdlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0bGVePXRlc3RdJykudW5pcXVlSWRlbnRpZmllciJd
OworICAgIE5TU3RyaW5nICpmb2xkZXJJZGVudGlmaWVyID0gW3NlY29uZFdlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1l
bnRbdGl0bGU9Zm9sZGVyXScpLnVuaXF1ZUlkZW50aWZpZXIiXTsKKyAgICBOU1N0cmluZyAqYXJj
aGl2ZUlkZW50aWZpZXIgPSBbc2Vjb25kV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudFt0aXRsZT1hcmNoaXZlXScp
LnVuaXF1ZUlkZW50aWZpZXIiXTsKKworICAgIF9XS0F0dGFjaG1lbnRJbmZvICpwYXN0ZWRGaWxl
SW5mbyA9IFtzZWNvbmRXZWJWaWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpwbGFpbkZpbGVJ
ZGVudGlmaWVyXS5pbmZvOworICAgIF9XS0F0dGFjaG1lbnRJbmZvICpwYXN0ZWRGb2xkZXJJbmZv
ID0gW3NlY29uZFdlYlZpZXcgX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOmZvbGRlcklkZW50aWZp
ZXJdLmluZm87CisgICAgX1dLQXR0YWNobWVudEluZm8gKnBhc3RlZEFyY2hpdmVJbmZvID0gW3Nl
Y29uZFdlYlZpZXcgX2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOmFyY2hpdmVJZGVudGlmaWVyXS5p
bmZvOworCisgICAgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TRmlsZVdyYXBwZXIgKj4gKnBh
c3RlZEZvbGRlckNvbnRlbnRzID0gcGFzdGVkRm9sZGVySW5mby5maWxlV3JhcHBlci5maWxlV3Jh
cHBlcnM7CisgICAgTlNGaWxlV3JhcHBlciAqZG9jdW1lbnRGcm9tRm9sZGVyID0gW3Bhc3RlZEZv
bGRlckNvbnRlbnRzIG9iamVjdEZvcktleTpAImRvY3VtZW50LnBkZiJdOworICAgIE5TRmlsZVdy
YXBwZXIgKmltYWdlRnJvbUZvbGRlciA9IFtwYXN0ZWRGb2xkZXJDb250ZW50cyBvYmplY3RGb3JL
ZXk6QCJpbWFnZS5wbmciXTsKKyAgICBFWFBFQ1RfVFJVRShbW2RvY3VtZW50IHJlZ3VsYXJGaWxl
Q29udGVudHNdIGlzRXF1YWxUb0RhdGE6ZG9jdW1lbnRGcm9tRm9sZGVyLnJlZ3VsYXJGaWxlQ29u
dGVudHNdKTsKKyAgICBFWFBFQ1RfVFJVRShbW2ltYWdlIHJlZ3VsYXJGaWxlQ29udGVudHNdIGlz
RXF1YWxUb0RhdGE6aW1hZ2VGcm9tRm9sZGVyLnJlZ3VsYXJGaWxlQ29udGVudHNdKTsKKyAgICBF
WFBFQ1RfVFJVRShbW2ZpbGUgcmVndWxhckZpbGVDb250ZW50c10gaXNFcXVhbFRvRGF0YTpwYXN0
ZWRGaWxlSW5mby5maWxlV3JhcHBlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNU
X1RSVUUoW1thcmNoaXZlIHJlZ3VsYXJGaWxlQ29udGVudHNdIGlzRXF1YWxUb0RhdGE6cGFzdGVk
QXJjaGl2ZUluZm8uZmlsZVdyYXBwZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwgcGFzdGVkRmlsZUluZm8uY29u
dGVudFR5cGUpOworICAgIEVYUEVDVF9XS19TVFJFUSgicHVibGljLmRpcmVjdG9yeSIsIHBhc3Rl
ZEZvbGRlckluZm8uY29udGVudFR5cGUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRp
b24vemlwIiwgcGFzdGVkQXJjaGl2ZUluZm8uY29udGVudFR5cGUpOworfQorCiAjcHJhZ21hIG1h
cmsgLSBQbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cwogCiAjaWYgUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353458</attachid>
            <date>2018-10-30 19:52:26 -0700</date>
            <delta_ts>2018-10-30 20:11:29 -0700</delta_ts>
            <desc>Try to fix the Windows build (3)</desc>
            <filename>bug-190530-20181030195226.patch</filename>
            <type>text/plain</type>
            <size>46143</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFmNDQ3ZDE1N2JlMDJh
MzA1Y2UyMDk2MDdlNTc5ZjYxNjM3YmNhOS4uYThlZGI1ZWNkNjgyZjQ3NTQ1NDllNmYwNTAxMWZm
NzMyNjFmYjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNv
cHlpbmcgYW5kIHBhc3RpbmcgYXR0YWNobWVudCBlbGVtZW50cyBhY3Jvc3Mgd2ViIHZpZXdzIGJ5
IGVuY29kaW5nIGFuZCBhZGRpbmcgZmlsZSB3cmFwcGVyCisgICAgICAgIGRhdGEgYXMgc3VicmVz
b3VyY2VzIGluIHRoZSB3ZWIgYXJjaGl2ZSB3aGVuIHdyaXRpbmcgc2VsZWN0ZWQgd2ViIGNvbnRl
bnQgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB0aGVuIGRlY29kaW5nCisgICAgICAgIGFuZCBjcmVh
dGluZyBOU0ZpbGVXcmFwcGVycyB1cG9uIHJlYWRpbmcgd2ViIGNvbnRlbnQuCisKKyAgICAgICAg
VGVzdDogV0tBdHRhY2htZW50VGVzdHMuQ29weUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWdpc3RlckF0dGFj
aG1lbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAgIEFkZCByZWdp
c3RlckF0dGFjaG1lbnRzKCksIHdoaWNoIHJlZ2lzdGVycyBfV0tBdHRhY2htZW50cyBpbiB0aGUg
VUkgcHJvY2VzcyBnaXZlbiBhIGxpc3Qgb2YKKyAgICAgICAgU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLiBUaGlzIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJzKCksIGJ1dCBkaWZmZXJzIGluIHRoYXQgKDEpIGl0CisgICAgICAgIHNlbmRzIHNlcmlhbGl6
ZWQgZmlsZSB3cmFwcGVyIGRhdGEsIGFuZCAoMikgaXQgc2VuZHMgYSBsaXN0IG9mIHNlcmlhbGl6
ZWQgYXR0YWNobWVudHMsIHJhdGhlciB0aGFuIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGp1
c3QgYSBzaW5nbGUgYXR0YWNobWVudC4KKworICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSwgYSBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2VyaWFsaXpl
IGFuZCBkZXNlcmlhbGl6ZSBhbgorICAgICAgICBhdHRhY2htZW50LiBUaGVzZSBhcmUgdXNlZCBi
b3RoIHdoZW4gd3JpdGluZyBhdHRhY2htZW50IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB3
aGVuIGNvbnN1bWluZyBhdHRhY2htZW50CisgICAgICAgIGRhdGEgdXBvbiBwYXN0ZS4KKworICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKworICAgICAgICBB
ZGQgYSBzdGVwIHdoZW4gcGFzdGluZyByaWNoIGNvbnRlbnQgd2l0aCBhdHRhY2htZW50cywgdG8g
Y29sbGVjdCBhbmQgc2VuZCBzZXJpYWxpemVkIGF0dGFjaG1lbnRzIHRvIHRoZSBjbGllbnQuCisg
ICAgICAgIEFsc28sIGRyaXZlLWJ5IGZpeDogZG9uJ3QgV1RGTW92ZSgpIHRoZSBSZWYgaGVyZSBp
ZiBpdCdzIHN0aWxsIGdvaW5nIHRvIGJlIHVzZWQgYmVsb3cuCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKworICAgICAgICBBZGQgYSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uIHRv
IGNvbXB1dGUgYSBVUkwgdGhhdCByZXByZXNlbnRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gYXR0
YWNobWVudCBpZGVudGlmaWVyLCBmb3IKKyAgICAgICAgdXNlIGluIGEgd2ViIGFyY2hpdmUgcmVz
b3VyY2UuCisKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50
c0lmTmVjZXNzYXJ5KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRl
IGFuZCBhcHBlbmQgQXJjaGl2ZVJlc291cmNlcyByZXByZXNlbnRpbmcgYXR0YWNobWVudCBlbGVt
ZW50IGRhdGEgd2hlbiB3cml0aW5nCisgICAgICAgIGF0dGFjaG1lbnRzIHRvIHRoZSBwYXN0ZWJv
YXJkIHZpYSB3ZWIgYXJjaGl2ZSBkYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyk6CisKIDIwMTgtMTAtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBvYnNvbGV0ZSBNQVhfQUxMT1dFRCBtYWNyb3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODEyMGVkYWIyNTY2ZjBlNzhjMThmMDIxNzYwODViZDM4ZWY0NmE2YS4uZGQzOWZk
YTRjMjAxNGUwM2VmYjM1NzhkOTUyNTFmYzcyM2NkNjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
OSBAQAorMjAxOC0xMC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIEF0dGFjaG1lbnQgZHJvcHBlZCBmcm9tIG9uZSB3ZWIgdmlldyB0
byBhbm90aGVyIGlzIG1pc3NpbmcgaXRzIGZpbGUgd3JhcHBlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNTMwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTIzMjE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICBBZGQgSVBDIGVu
Y29kaW5nL2RlY29kaW5nIHN1cHBvcnQgZm9yIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorCisgICAg
ICAgIEFkZCBhIG1ldGhvZCB0byBzZXJpYWxpemUgYW5kIHJldHVybiBhdHRhY2htZW50IGluZm8g
YXMgYSBibG9iIG9mIGRhdGEuCisKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIHVw
ZGF0ZSB0aGUgYXR0YWNobWVudCwgZ2l2ZW4gYSBzZXJpYWxpemVkIGJsb2Igb2YgZGF0YS4gT24g
Q29jb2EgcGxhdGZvcm1zLCB0aGlzIGZhaWxzCisgICAgICAgIGdyYWNlZnVsbHkgaWYgdGhlIHNl
cmlhbGl6ZWQgZGF0YSBjYW5ub3QgYmUgZGVjb2RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29j
b2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJ
bnN0YW5jZSk6IERlbGV0ZWQuCisKKyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgaG9vayB0byBy
ZXR1cm4gdGhlIGxpc3Qgb2YgTlNGaWxlV3JhcHBlciBzdWJjbGFzc2VzIHN1aXRhYmxlIGZvciBk
ZXNlcmlhbGl6YXRpb24uIFRoaXMKKyAgICAgICAgYXJyYXkgY29udGFpbnMgKGF0IG1pbmltdW0p
IE5TRmlsZVdyYXBwZXIsIGJ1dCBtYXkgYWRkaXRpb25hbGx5IGluY2x1ZGUgYSBjdXN0b20gTlNG
aWxlV3JhcHBlciBzdWJjbGFzcywgaWYKKyAgICAgICAgY29uZmlndXJlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmFs
bG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnQ6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnQ6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YSk6CisKKyAgICAg
ICAgUmVnaXN0ZXJzIHRoZSBnaXZlbiBzZXJpYWxpemVkIGF0dGFjaG1lbnQgZGF0YSwgY3JlYXRp
bmcgbmV3IF9XS0F0dGFjaG1lbnQgaW5zdGFuY2VzIGlmIG5lY2Vzc2FyeS4gQ3VycmVudGx5LAor
ICAgICAgICB0aGlzIGRvZXMgbm90IHVwZGF0ZSB0aGUgZmlsZSB3cmFwcGVycyBvZiBleGlzdGlu
ZyBfV0tBdHRhY2htZW50czsgd2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlIHRv
IHNlZQorICAgICAgICBpZiB3ZSBjYW4gYWRkaXRpb25hbGx5IHVwZGF0ZSBmaWxlIHdyYXBwZXJz
IGZvciBleGlzdGluZyBhdHRhY2htZW50cywgd2l0aG91dCBicmVha2luZyB0aGUgY2FzZSB3aGVy
ZSB0aGUgdXNlcgorICAgICAgICBjb3BpZXMgYW5kIHBhc3RlcyBvciBkcmFncyBhbmQgZHJvcHMg
YXR0YWNobWVudHMgd2l0aGluIGEgc2luZ2xlIHdlYiB2aWV3IGFuZCB0aGUgY2xpZW50IGV4cGVj
dHMgX1dLQXR0YWNobWVudAorICAgICAgICBpbnN0YW5jZXMgdG8gYmUgcmV1c2VkLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyk6
CisKKyAgICAgICAgSW1wbGVtZW50IGEgbmV3IElQQyBob29rIHRvIGZldGNoIGFuIGFycmF5IG9m
IHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhIGJsb2JzLCBnaXZlbiBhIGxpc3Qgb2YgYXR0YWNo
bWVudAorICAgICAgICBpZGVudGlmaWVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMTAtMzAgIERld2VpIFpodSAgPGRl
d2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSAnUHJvY2Vzc1N3YXBPbkNyb3NzU2l0
ZU5hdmlnYXRpb25FbmFibGVkJyB0byAnZXhwZXJpbWVudGFsJyBjYXRlZ29yeS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMWQy
NWZkODUxYTZlMjFhODFjZWUzZmY3ZjZjNjMzZWFjNmQyNTE2Li5jNzg1MGUzNTUyNTI3YTY5MjIy
Yjk0NmUyMzg0MWY3YWEwODZmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODg5LDYgKzQ4ODksNyBAQAogCQlGNDk3ODY4
ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIg
LyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5n
SGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5q
cyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJ
RjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDNENjQyMTg4
MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RURDMjEzRjNGNUYwMDRF
QTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2Vy
RXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNTA2NjRG
ODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY2MTU3RjUyREMwMEFDMjI2RiAvKiBG
b3JtQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTQ3OTgsNiArMTQ3OTksNyBAQAogCQlGNDhEMkFB
MzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQyQUE0MjE1OTc0MEQwMEM2
NzUyQiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFC
IC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRlbUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENDNENjQyMTg4MDJFNjAwRUNF
Q0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdF
REEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VFMDIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5T
Rm9udE1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjIxLDYg
KzIwNjIzLDcgQEAKIAkJCQk5MzMwOURCQjA5OUU2NDkxMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuaCAqLywKIAkJCQk1MTQwNUM4NjE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcCAqLywKIAkJCQk1MTQwNUM4NzE5MEIwMTQ0MDA3NTRGOTQgLyog
U2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8sCisJCQkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FD
IC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovLAogCQkJCTkzMzA5REMwMDk5RTY0OTEw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEQzEw
OTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggKi8sCiAJCQkJQjhE
QkRCNDcxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwICovLApAQCAt
MzA3MDQsNiArMzA3MDcsNyBAQAogCQkJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxl
Y3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4
IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MzIyQUMx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxOERGMzM1MThBQUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYx
IC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDM1OTVhMDQwZjJmYmIwMzU1ZjdmMTMyMTM5MjdkNDY0MjBhYjU5OWYuLjBjNjM4MTExZjAzYThk
YzliNTdmMmMwY2I4MGU3MmUyYjk0Y2U2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTg1LDggKzg1LDEwIEBACiAjaW5jbHVkZSAiUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2ltcGxpZnlNYXJrdXBDb21tYW5kLmgi
CiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oIgpAQCAtNDAxMCw2ICs0MDEyLDEyIEBAIHZvaWQgRWRpdG9yOjpyZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
CiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVy
LCBjb250ZW50VHlwZSwgZmlsZVBhdGgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRh
Y2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7CisgICAg
aWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlZ2lz
dGVyQXR0YWNobWVudHMoV1RGTW92ZShkYXRhKSk7Cit9CisKIHZvaWQgRWRpdG9yOjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBiOTYxMWUzN2JlMDg3NGNiYWI3MzUwN2M0ZTcyMmEwZWJmMzMwOTM2Li4zYmM4YTA2MGVl
ZGU0YzMxOTU4MjllMTNmMWQ1NDIzNzUwMmNlMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTg2LDYgKzg2LDEwIEBAIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0Owogc3RydWN0IFBh
c3RlYm9hcmRVUkw7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKK3N0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisjZW5k
aWYKKwogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9Owog
ZW51bSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJ
c0RpdiwgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQIH07CiAKQEAgLTUwOSw4ICs1MTMsOSBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICov
LCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxl
UGF0aCAqLyk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvbmVB
dHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHRvSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChIVE1M
QXR0YWNobWVudEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ODJjZGEwYTA5NzEwZTBhYWM0NDc0
YWQzYTMzZmVhYTA4Y2E0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNp
bmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkQnVmZmVyOworCitzdHJ1Y3QgU2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhIHsKKyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcg
bWltZVR5cGU7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KaW5kZXggMGI3OWVhZThmMTM2NzJlNTE4MDE5ZmM2Y2YxM2ZiYWQwNDJjNDIwOC4uYWVmZWIx
YWYxZjY5M2MzOTEyYmRmOGQ2OGQzZmQ5ZDVjYzc2NWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTUxLDYg
KzUxLDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlB1YmxpY1VSTE1hbmFnZXIuaCIK
ICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbXBvcnQgIlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFBy
b3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKQEAg
LTI3NCw2ICsyNzUsMjAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFj
aG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgICAgIHVy
bFRvUmVzb3VyY2VNYXAuc2V0KHVybC5zdHJpbmcoKSwgc3VicmVzb3VyY2UuY29weVJlZigpKTsK
ICAgICB9CiAKKyAgICBWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJpYWxpemVk
QXR0YWNobWVudERhdGE7CisgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8SFRNTEF0dGFjaG1lbnRFbGVtZW50PihmcmFnbWVudCkpIHsKKyAgICAgICAgYXV0byBy
ZXNvdXJjZVVSTCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGF0
dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byByZXNvdXJjZUVudHJ5
ID0gdXJsVG9SZXNvdXJjZU1hcC5maW5kKHJlc291cmNlVVJMLnN0cmluZygpKTsKKyAgICAgICAg
aWYgKHJlc291cmNlRW50cnkgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFs
dWU7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50
LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRh
KCkgfSk7CisgICAgfQorCisgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0
eSgpKQorICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRzKFdURk1vdmUo
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhKSk7CisKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBl
bGVtZW50c1RvUmVtb3ZlOwogICAgIFZlY3RvcjxBdHRhY2htZW50SW5zZXJ0aW9uSW5mbz4gYXR0
YWNobWVudEluc2VydGlvbkluZm87CiAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRlc2NlbmRhbnRz
T2ZUeXBlPEhUTUxJbWFnZUVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzIzLDcgKzMzOCw3IEBA
IHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJh
bWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxl
bWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJ
bmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVs
ZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50
VHlwZSkpKTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxlbWVudChXVEZN
b3ZlKGF0dGFjaG1lbnQpKTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxl
bWVudChhdHRhY2htZW50LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoaW5mby5kYXRhLT5zaXplKCks
IGluZm8uY29udGVudFR5cGUsIGluZm8uZmlsZU5hbWUpOwogICAgICAgICAgICAgICAgIHBhcmVu
dC0+cmVwbGFjZUNoaWxkKGF0dGFjaG1lbnQsIFdURk1vdmUob3JpZ2luYWxFbGVtZW50KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggMGM2
ODYwOWUxNTVkNGVkZjA3ZWI5YWI0MTA5NzExYzNjY2I1ODRiMC4uZWViNjkyNzdkY2IxYzE5Yzhl
YmRmY2FiNWI4ZmI2N2IwNDJhNDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8cGFsL0ZpbGVT
aXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvVVVJRC5oPgpAQCAtODUsNiArODYsMTMgQEAgY29uc3QgU3RyaW5nJiBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQm
IGkKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAorVVJMIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6YXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIHJlc291cmNlVVJMID0gVVJMUGFyc2VyKCJhcHBsZXdlYmRhdGE6Ly9hdHRhY2htZW50LyJf
cykucmVzdWx0KCk7CisgICAgcmVzb3VyY2VVUkwuc2V0UGF0aChpZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gcmVzb3VyY2VVUkw7Cit9CisKIEZpbGUqIEhUTUxBdHRhY2htZW50RWxlbWVudDo6Zmls
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmlsZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDA0MTA0MjY2MGJhNTBlMDAxZGJhMzI4
MjhlMjA2YjlhYzhmNjQyYmMuLjAyMGRjNDAwYTc1MWQ4OGY0ODNjNDUzNTk3ZTQxZWNlZWY4MTYw
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAt
NDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0dGFjaG1lbnRFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRNTEltYWdlRWxlbWVudCYp
OworICAgIHN0YXRpYyBVUkwgYXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgVVJMIGJsb2JVUkwoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBGaWxlKiBmaWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IDBjNTg0NTIyYWI5YzY0YjdmN2Y1
NDQ2NzlkY2JlNTdmNmRmNzgyNjIuLjg2MWUzOTkyNjEwZTBlNWZjOGQ5Mzk2NzIzNWRhY2VmNDYx
NzUwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0zMiwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJIVE1MQXR0
YWNobWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQu
aCIKQEAgLTQ3LDcgKzUwLDEwIEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJtYXJr
dXAuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC00NjQsNiArNDcwLDQyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoUmFuZ2UqIHJhbmdlKQogICAgIHJldHVybiBjcmVhdGUobWFy
a3VwU3RyaW5nLCAqZnJhbWUsIG5vZGVMaXN0LCBudWxscHRyKTsKIH0KIAorI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisKK3N0YXRpYyB2b2lkIGFkZFN1YnJlc291cmNlc0ZvckF0dGFj
aG1lbnRFbGVtZW50c0lmTmVjZXNzYXJ5KEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUq
PiYgbm9kZXMsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mIHN1YnJlc291cmNlcykKK3sK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNo
bWVudEVsZW1lbnRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxTdHJp
bmc+IGlkZW50aWZpZXJzOworICAgIGZvciAoYXV0byogbm9kZSA6IG5vZGVzKSB7CisgICAgICAg
IGlmICghaXM8SFRNTEF0dGFjaG1lbnRFbGVtZW50Pihub2RlKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGF1dG8gdW5pcXVlSWRlbnRpZmllciA9IGRvd25jYXN0PEhUTUxBdHRh
Y2htZW50RWxlbWVudD4oKm5vZGUpLnVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKHVu
aXF1ZUlkZW50aWZpZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWRlbnRpZmllcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlSWRlbnRpZmllcikpOworICAgIH0K
KworICAgIGlmIChpZGVudGlmaWVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIGVkaXRvckNsaWVudCA9IGZyYW1lLmVkaXRvcigpLmNsaWVudCgpOworICAgIGlmICgh
ZWRpdG9yQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZyYW1lTmFtZSA9IGZy
YW1lLnRyZWUoKS51bmlxdWVOYW1lKCk7CisgICAgZm9yIChhdXRvJiBkYXRhIDogZWRpdG9yQ2xp
ZW50LT5zZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhXVEZNb3ZlKGlkZW50
aWZpZXJzKSkpIHsKKyAgICAgICAgYXV0byByZXNvdXJjZVVSTCA9IEhUTUxBdHRhY2htZW50RWxl
bWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGRhdGEuaWRlbnRpZmllcik7CisgICAgICAgIGlmIChh
dXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YS5kYXRhLnB0cigpLCBX
VEZNb3ZlKHJlc291cmNlVVJMKSwgZGF0YS5taW1lVHlwZSwgeyB9LCBmcmFtZU5hbWUpKQorICAg
ICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICB9Cit9CisKKyNlbmRpZgorCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBXVEY6OkZ1bmN0aW9uPGJvb2wgKEZyYW1lJik+
JiYgZnJhbWVGaWx0ZXIpCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwpAQCAtNTI4LDYgKzU3MCwxMCBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWFya3VwU3RyaW5nLCBGcgogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKKyAgICBhZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2htZW50RWxlbWVudHNJZk5l
Y2Vzc2FyeShmcmFtZSwgbm9kZXMsIHN1YnJlc291cmNlcyk7CisjZW5kaWYKKwogICAgIC8vIElm
IHdlIGFyZSBhcmNoaXZpbmcgdGhlIGVudGlyZSBwYWdlLCBhZGQgYW55IGxpbmsgaWNvbnMgdGhh
dCB3ZSBoYXZlIGRhdGEgZm9yLgogICAgIGlmICghbm9kZXMuaXNFbXB0eSgpICYmIG5vZGVzWzBd
LT5pc0RvY3VtZW50Tm9kZSgpKSB7CiAgICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CmluZGV4IGU4ZDEwYzI1NDE5ODQyYjFjMmZmOWE4NjUzZmQ0MmQyMjVhMTA1MDEuLmE2NWQ4MGNl
YTBmMjdkYWY0YmZkMjhhNWFkMDhlYTBhNjRjNDY0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFZGl0
b3JJbnNlcnRBY3Rpb24uaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCIK
ICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKICNp
bmNsdWRlICJVbmRvU3RlcC5oIgpAQCAtNzUsMTEgKzc2LDEzIEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5n
JiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAq
LywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBT
dHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgLyogZnJvbUlkZW50
aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogdG9JZGVudGlmaWVyICovKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
LyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBzb3VyY2UgKi8sIGJvb2wgLyogaGFz
RW5jbG9zaW5nSW1hZ2UgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2ht
ZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1
cm4geyB9OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCBjNGM0Nzg4ZDJlOGM4NjBiOTk4YjA5ZjI3ZTk4N2RhOTY0YmQzN2Y0Li5hYzRkOWJlZGY4
ODBhYjA3M2UwYTVhOTk5YTE0MWM0YWRhMDFkZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlBhcnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CkBAIC02OSw2ICs3MCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJEYXRhLmg+CkBAIC0zMDEyLDQgKzMwMTQsMzAgQEAgc3RkOjpvcHRpb25hbDxGb250
QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVy
JiBkZWMKICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisKK3ZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGEmIGRhdGEpCit7CisgICAgZW5jb2RlciA8PCBkYXRhLmlkZW50aWZpZXIg
PDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBkYXRh
LmRhdGEuZ2V0KCkgfTsKK30KKworc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERh
dGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWltZVR5cGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGE7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBkODc4MThlN2JhNzdjOGQzMWExZDZhOWJjNzc0
ZTRmODA5ZDZjM2MyLi5mNTA5MjE2MTZiMmJhNDU0NzYyMjEwOGE4YjU4OGYwN2YwNjg4MGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTY0
LDYgKzE2NCwxMCBAQCBjbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YTsKIHN0cnVjdCBNZWRpYUNv
bnN0cmFpbnRzOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorc3Ry
dWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxT
dHJpbmc+PjsKICNlbmRpZgpAQCAtNzIwLDYgKzcyNCwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiB7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7CiB9Owog
CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdU
RiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5k
ZXggOWNjMDQxMGY3NDc0NGJhN2M2NjFhYzlkNWY1ZWU3MjVjNjdjMjc5NS4uYTEzNGJmYWY2MzVh
YmI0NDU3OTM3OTM2NDMxNGE4MDJlMjQ3MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTYsNiArOTYsMTUgQEAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikKK3sKK30KKwogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYjhmYmJiZTli
NWMyZjVlNjUxMmUwZGFmMmNmY2VmMzliZTlhZjNiYy4uNjRkMDI0MWU3MmUwZTI5OWE0NjUzNWU2
YTM3YTRlZGI1NmJmMDNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xv
c2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9
IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAorICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAg
IHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGI4NzcxMDJlZjVm
OGRkMWU4ZGJjMjM5ZjBkN2M2NTExZGEzMjc0NTcuLmI0ZWM5YzhlYjZjY2E0ZmQ3ODZkYzg3Y2M1
YjU1ZGVkMjZhYWI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBUElBdHRhY2htZW50LmgiCiAKKyNpbXBvcnQgIlBhZ2VD
bGllbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzMs
NiArMzQsNyBAQAogI2Vsc2UKICNpbXBvcnQgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4K
ICNlbmRpZgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAog
bmFtZXNwYWNlIEFQSSB7CiAKQEAgLTEyNSw0ICsxMjcsMzMgQEAgYm9vbCBBdHRhY2htZW50Ojpp
c0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXI7CiB9CiAKK1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZpbGVXcmFwcGVyIHx8ICFtX3dlYlBhZ2Up
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNEYXRhICpzZXJpYWxpemVkRGF0YSA9
IHNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3QobV9maWxlV3JhcHBlci5nZXQoKSk7
CisgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwor
fQorCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IHNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbi0+Y3JlYXRlTlNEYXRhKCk7CisgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXIgPSB1bmFyY2hp
dmVkT2JqZWN0T2ZDbGFzc2VzRnJvbURhdGEobV93ZWJQYWdlLT5wYWdlQ2xpZW50KCkuc2VyaWFs
aXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCksIHNlcmlhbGl6ZWREYXRhLmdldCgpKTsKKyAgICBp
ZiAoIWZpbGVXcmFwcGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRGaWxlV3JhcHBlckFu
ZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7CisgICAgbV93ZWJQ
YWdlLT51cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcygqdGhpcywgW10gKGF1dG8pIHsgfSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGQ1MTU0ZWQzNTU1NDJiMTliMzE4M2Ez
MTViNzA0OGYzYzM3ZDZlMWEuLmQ3MjczNzJiNjY3MTE2NTYxMzAyOGY2Y2FjMTVhNTY4YmFiN2Nl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50
SW1wbENvY29hLmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50KEFQSTo6QXR0YWNobWVu
dCYsIGNvbnN0IFN0cmluZyYgc291cmNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUF0dGFj
aG1lbnQoQVBJOjpBdHRhY2htZW50JikgZmluYWw7Ci0gICAgTlNGaWxlV3JhcHBlciAqYWxsb2NG
aWxlV3JhcHBlckluc3RhbmNlKCkgZmluYWw7CisgICAgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxl
V3JhcHBlckluc3RhbmNlKCkgY29uc3QgZmluYWw7CisgICAgTlNTZXQgKnNlcmlhbGl6YWJsZUZp
bGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
Lm1tCmluZGV4IDFmOWQyOTIxYjM4YTEwOGQyMDc4NDRiNTZjMjU5MTNkN2NhNmMxMTYuLjc1YWNl
OWEwMjhmMzE0YmE0MzA0MWZmYTQ1MGYzNTcwOWQzZmEyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAtNjYsNyAr
NjYsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpZFJlbW92ZUF0dGFjaG1lbnQoQVBJ
OjpBdHRhY2htZW50JiBhdHRhY2htZW50KQogI2VuZGlmCiB9CiAKLU5TRmlsZVdyYXBwZXIgKlBh
Z2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpCitOU0ZpbGVXcmFw
cGVyICpQYWdlQ2xpZW50SW1wbENvY29hOjphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBjb25z
dAogewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgQ2xhc3MgY2xzID0gbV93ZWJWaWV3LmNvbmZp
Z3VyYXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzID86IFtOU0ZpbGVXcmFwcGVyIHNl
bGZdOwpAQCAtNzYsNiArNzYsMTcgQEAgTlNGaWxlV3JhcHBlciAqUGFnZUNsaWVudEltcGxDb2Nv
YTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkKICNlbmRpZgogfQogCitOU1NldCAqUGFnZUNs
aWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKK3sK
KyAgICBDbGFzcyBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcyA9IE5TRmlsZVdyYXBwZXIuc2VsZjsK
KyNpZiBXS19BUElfRU5BQkxFRAorICAgIENsYXNzIGNvbmZpZ3VyZWRGaWxlV3JhcHBlckNsYXNz
ID0gbV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzOwor
ICAgIGlmIChjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcyAmJiBjb25maWd1cmVkRmlsZVdyYXBw
ZXJDbGFzcyAhPSBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcykKKyAgICAgICAgcmV0dXJuIFtOU1Nl
dCBzZXRXaXRoT2JqZWN0czpjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcywgZGVmYXVsdEZpbGVX
cmFwcGVyQ2xhc3MsIG5pbF07CisjZW5kaWYKKyAgICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmpl
Y3RzOmRlZmF1bHRGaWxlV3JhcHBlckNsYXNzLCBuaWxdOworfQorCiAjZW5kaWYKICAgICAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBiOGEwYzE0MmVkOGE3MmQyNjI5
NWIxMmU3MTMwODUxNTgyODJhZTRiLi4xZGVlZDI5NzY4ZDg3NzVkZjEwYjk1YjA3YTY3NzA5ZTE2
MzNiMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NSw2ICs0NSw3
IEBACiAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKK09C
SkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAj
aWYgVVNFKEFQUEtJVCkKQEAgLTQ0NSw3ICs0NDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZEluc2VydEF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JiwgY29uc3QgU3RyaW5nJiBz
b3VyY2UpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KEFQSTo6QXR0
YWNobWVudCYpIHsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgTlNGaWxlV3Jh
cHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAg
IHZpcnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVX
cmFwcGVyQ2xhc3NlcygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogI2VuZGlm
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGVjNGJm
ZDVhNWY5ZDkyZDExNWQyZGE1ZGRhMTc4ZjI5YjUzZWJmOS4uZTYzZWNmNTBmMDVlY2I0MWQwNzY0
NDVlNjRhN2JiMjhlODhkODdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC03OTAwLDYgKzc5MDAsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAgICAgICBt
X2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChpZGVudGlmaWVyLCBlbnN1
cmVBdHRhY2htZW50KGlkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lz
dGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT4mJiBkYXRhKQoreworICAgIGZvciAoYXV0byYgc2VyaWFsaXplZERh
dGEgOiBkYXRhKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFdURk1vdmUoc2VyaWFsaXpl
ZERhdGEuaWRlbnRpZmllcik7CisgICAgICAgIGlmICghYXR0YWNobWVudEZvcklkZW50aWZpZXIo
aWRlbnRpZmllcikpCisgICAgICAgICAgICBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZpZXIpLT51
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFdURk1vdmUoc2VyaWFsaXplZERhdGEu
ZGF0YSksIFdURk1vdmUoc2VyaWFsaXplZERhdGEubWltZVR5cGUpKTsKKyAgICB9Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQogewogICAgIGF1dG8gbmV3QXR0
YWNobWVudCA9IGVuc3VyZUF0dGFjaG1lbnQodG9JZGVudGlmaWVyKTsKQEAgLTc5MjUsNiArNzkz
NCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCkKICAg
ICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLmNsZWFyKCk7CiB9CiAKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+JiBzZXJpYWxpemVkRGF0YSkKK3sKKyAgICBmb3IgKGF1dG8gaWRl
bnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IGF0dGFj
aG1lbnRGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWF0dGFjaG1lbnQp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGRhdGEgPSBhdHRhY2htZW50
LT5jcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgaWYgKCFkYXRhKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2VyaWFsaXplZERhdGEuYXBwZW5kKHsg
aWRlbnRpZmllciwgYXR0YWNobWVudC0+bWltZVR5cGUoKSwgZGF0YS5yZWxlYXNlTm9uTnVsbCgp
IH0pOworICAgIH0KK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBjN2FlNWQ5ZDYzZDAxZjJiYzgyNDVlMjQ1NWMzYTA3
NDM3Y2E4ZGUuLjI1OGFmOTJiNDUxZmM2YmZlM2E0YTJlODhkODZjNTU4ODVjZTM3Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMzEsNiArMjMxLDcgQEAgY2xh
c3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U7CiBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0
ZWRMaW5rU3RvcmU7CkBAIC0xMzQ0LDYgKzEzNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQ
STo6QXR0YWNobWVudD4gYXR0YWNobWVudEZvcklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNo
bWVudD4mJiwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9y
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTgyOSw2ICsxODMxLDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXpl
ZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjY2I5ODY0OWFjMWVjZjA0MTA2N2IzZDA0
MWQ4N2RlYjM0YWQzYjUxLi4xZmU4NjBlM2M2YTYyYWNhNDYwNTViNTVmNTdmOGFhZGZiNGZmNjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC01MzQsOSArNTM0LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKFN0cmluZyBpZGVudGlmaWVyLCBT
dHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
ckZyb21GaWxlUGF0aChTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJp
bmcgZmlsZVBhdGgpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihTdHJpbmcgaWRl
bnRpZmllcikKKyAgICByZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZlY3Rv
cjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IGRhdGEpCiAgICAgQ2xvbmVBdHRh
Y2htZW50RGF0YShTdHJpbmcgZnJvbUlkZW50aWZpZXIsIFN0cmluZyB0b0lkZW50aWZpZXIpCiAg
ICAgRGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKFN0cmluZyBpZGVudGlmaWVyLCBT
dHJpbmcgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKQogICAgIERpZFJlbW92ZUF0dGFj
aG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKKyAgICBTZXJpYWxpemVkQXR0
YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycykgLT4g
KFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmFsaXplZERhdGEp
IExlZ2FjeVN5bmMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJP
Q0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDdi
OTBmNTkwNGRkZDViZTZlMmZlMjU5MzRhNDA4NjU5YWFjZmVmYzEuLmFjZGUyZjAwZDdkZDMxN2E0
NzU0YTVmMWViNjAzYmE3ZGU4YTljOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00OSw2
ICs0OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TcGVsbENoZWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CkBAIC0xNjUsNiArMTY2LDExIEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVy
LCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIHsgZGF0YSB9KSk7CiB9CiAKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+JiYgZGF0YSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShX
VEZNb3ZlKGRhdGEpKSk7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21G
aWxlUGF0aChpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgZmlsZVBhdGgpKTsKQEAgLTE5MCw2ICsx
OTYsMTMgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGlkZW50
aWZpZXIpKTsKIH0KIAorVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gV2ViRWRpdG9y
Q2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZERhdGE7CisgICAgbV9wYWdlLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyhpZGVudGlmaWVycyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YUZvcklkZW50aWZpZXJzOjpSZXBseShzZXJpYWxpemVkRGF0YSkpOworICAgIHJl
dHVybiBzZXJpYWxpemVkRGF0YTsKK30KKwogI2VuZGlmCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpkaWRBcHBseVN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBkZDZmZTY5YzE1OTcwYjc0
NGU1MmVkOGRkMjU3MWMyMWFkMzI0MWViLi40YjVhNmQzYWRkYjQ0M2U5ODAwZjBhNTU0N2JiOTc5
ZmM2NGQ4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02MywxMCArNjMsMTIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFt
ZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJv
bUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lk
IGRpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVu
dERhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgVmVjdG9yPFdlYkNvcmU6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9p
ZCBkaWRCZWdpbkVkaXRpbmcoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZjEwN2Y1MTE3N2E2ZDI5MjM3MzFkYWZhZDZjYjM2MWEz
MDQzMjg0Li4xNGI1OGEwZjhmMTdlODZkZGU3Y2RmM2FjNjA3YjhjZjgyOWEzMjI5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTgtMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8g
YW5vdGhlciBpcyBtaXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDUzMAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDUyMzIxNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IGNvcHlpbmcgZGlmZmVyZW50IHR5cGVzIG9mIGF0
dGFjaG1lbnRzIGFuZCBwYXN0aW5nIGluIGEgbmV3IHdlYiB2aWV3IGluc2VydHMKKyAgICAgICAg
YXR0YWNobWVudHMgaW4gdGhlIHNlY29uZCB3ZWIgdmlldyB0aGF0IGFyZSBiYWNrZWQgYnkgX1dL
QXR0YWNobWVudCBvYmplY3RzLCB3aG9zZSBOU0ZpbGVXcmFwcGVycyBob2xkIGRhdGEgdGhhdAor
ICAgICAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBvcmlnaW5hbCBmaWxlIHdyYXBwZXJzIHVzZWQg
dG8gaW5zZXJ0IGF0dGFjaG1lbnRzIGluIHRoZSBmaXJzdCB3ZWIgdmlldy4KKworICAgICAgICBF
eGlzdGluZyBBUEkgdGVzdHMgdmVyaWZ5IHRoYXQgd2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nIHdp
dGhpbiBhIHNpbmdsZSB3ZWIgdmlldywgdGhlIHBhc3RlZCBhdHRhY2htZW50IGVsZW1lbnQKKyAg
ICAgICAgaXMgc3RpbGwgYmFja2VkIGJ5IHRoZSBzYW1lIE5TRmlsZVdyYXBwZXIgaW5zdGFuY2Uu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVu
dFRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMTAtMzAg
IEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5
OiBTdXBwb3J0IGFsdGVybmF0ZSBzaW1jdGwgbGlzdCBvdXRwdXRzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5t
bQppbmRleCA5M2ZiODdhMWQ1M2RkNzg2MDViMTBkMzBlMGIwNTJmOGIxMjc1NmMxLi43OTY0ZGYx
YTUxNTc3OTYxMzhkMTc5NGYyYjUxMjIxMjgyMzNjNTRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0K
QEAgLTE0NjIsNiArMTQ2Miw1MiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBDdXN0b21GaWxl
V3JhcHBlclN1YmNsYXNzKQogICAgIEVYUEVDVF9FUShbRmlsZVdyYXBwZXIgc2VsZl0sIFtpbnNl
cnRlZEF0dGFjaG1lbnRzLmZpcnN0T2JqZWN0LmluZm8uZmlsZVdyYXBwZXIgY2xhc3NdKTsKIH0K
IAorVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ29weUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzKQor
eworICAgIGF1dG8gZmlsZSA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6dGVzdEhUTUxEYXRhKCldKTsKKyAgICBbZmlsZSBzZXRQcmVm
ZXJyZWRGaWxlbmFtZTpAInRlc3QuZm9vYmFyIl07CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdElt
YWdlRGF0YSgpXSk7CisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdFBERkRhdGEoKV0pOworICAg
IGF1dG8gZm9sZGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXREaXJlY3Rv
cnlXaXRoRmlsZVdyYXBwZXJzOkB7IEAiaW1hZ2UucG5nIjogaW1hZ2UuZ2V0KCksIEAiZG9jdW1l
bnQucGRmIjogZG9jdW1lbnQuZ2V0KCkgfV0pOworICAgIFtmb2xkZXIgc2V0UHJlZmVycmVkRmls
ZW5hbWU6QCJmb2xkZXIiXTsKKyAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RaSVBEYXRhKCldKTsK
KyAgICBbYXJjaGl2ZSBzZXRQcmVmZXJyZWRGaWxlbmFtZTpAImFyY2hpdmUiXTsKKworICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIGZpcnN0V2ViVmlldyA9IHdlYlZpZXdGb3JU
ZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBzeW5jaHJvbm91c2x5
SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxlLmdldCgpIGNvbnRlbnRUeXBlOkAi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl07CisgICAgICAgIFtmaXJzdFdlYlZpZXcgc3luY2hy
b25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Zm9sZGVyLmdldCgpIGNvbnRl
bnRUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVGb2xkZXJdOworICAgICAgICBbZmly
c3RXZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmFy
Y2hpdmUuZ2V0KCkgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi96aXAiXTsKKyAgICAgICAgW2Zp
cnN0V2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBfZXhlY3V0
ZUVkaXRDb21tYW5kOkAiQ29weSIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246bmlsXTsKKyAgICB9
CisKKyAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRz
KCk7CisgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIoc2Vjb25k
V2ViVmlldy5nZXQoKSk7CisgICAgW3NlY29uZFdlYlZpZXcgcGFzdGU6bmlsXTsKKyAgICBbc2Vj
b25kV2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MyB0YWdOYW1lOkAiYXR0YWNobWVudCJdOwor
ICAgIEVYUEVDVF9FUSgzVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7CisK
KyAgICBOU1N0cmluZyAqcGxhaW5GaWxlSWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2ht
ZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXTsKKyAgICBOU1N0cmluZyAqZm9s
ZGVySWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50W3RpdGxlPWZvbGRlcl0nKS51
bmlxdWVJZGVudGlmaWVyIl07CisgICAgTlNTdHJpbmcgKmFyY2hpdmVJZGVudGlmaWVyID0gW3Nl
Y29uZFdlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0bGU9YXJjaGl2ZV0nKS51bmlxdWVJZGVudGlmaWVyIl07
CisKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRmlsZUluZm8gPSBbc2Vjb25kV2ViVmll
dyBfYXR0YWNobWVudEZvcklkZW50aWZpZXI6cGxhaW5GaWxlSWRlbnRpZmllcl0uaW5mbzsKKyAg
ICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRm9sZGVySW5mbyA9IFtzZWNvbmRXZWJWaWV3IF9h
dHRhY2htZW50Rm9ySWRlbnRpZmllcjpmb2xkZXJJZGVudGlmaWVyXS5pbmZvOworICAgIF9XS0F0
dGFjaG1lbnRJbmZvICpwYXN0ZWRBcmNoaXZlSW5mbyA9IFtzZWNvbmRXZWJWaWV3IF9hdHRhY2ht
ZW50Rm9ySWRlbnRpZmllcjphcmNoaXZlSWRlbnRpZmllcl0uaW5mbzsKKworICAgIE5TRGljdGlv
bmFyeTxOU1N0cmluZyAqLCBOU0ZpbGVXcmFwcGVyICo+ICpwYXN0ZWRGb2xkZXJDb250ZW50cyA9
IHBhc3RlZEZvbGRlckluZm8uZmlsZVdyYXBwZXIuZmlsZVdyYXBwZXJzOworICAgIE5TRmlsZVdy
YXBwZXIgKmRvY3VtZW50RnJvbUZvbGRlciA9IFtwYXN0ZWRGb2xkZXJDb250ZW50cyBvYmplY3RG
b3JLZXk6QCJkb2N1bWVudC5wZGYiXTsKKyAgICBOU0ZpbGVXcmFwcGVyICppbWFnZUZyb21Gb2xk
ZXIgPSBbcGFzdGVkRm9sZGVyQ29udGVudHMgb2JqZWN0Rm9yS2V5OkAiaW1hZ2UucG5nIl07Cisg
ICAgRVhQRUNUX1RSVUUoW1tkb2N1bWVudCByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9E
YXRhOmRvY3VtZW50RnJvbUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNU
X1RSVUUoW1tpbWFnZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOmltYWdlRnJv
bUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1RSVUUoW1tmaWxlIHJl
Z3VsYXJGaWxlQ29udGVudHNdIGlzRXF1YWxUb0RhdGE6cGFzdGVkRmlsZUluZm8uZmlsZVdyYXBw
ZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAgIEVYUEVDVF9UUlVFKFtbYXJjaGl2ZSByZWd1
bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOnBhc3RlZEFyY2hpdmVJbmZvLmZpbGVXcmFw
cGVyLnJlZ3VsYXJGaWxlQ29udGVudHNdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbSIsIHBhc3RlZEZpbGVJbmZvLmNvbnRlbnRUeXBlKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoInB1YmxpYy5kaXJlY3RvcnkiLCBwYXN0ZWRGb2xkZXJJbmZvLmNvbnRlbnRU
eXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3ppcCIsIHBhc3RlZEFyY2hp
dmVJbmZvLmNvbnRlbnRUeXBlKTsKK30KKwogI3ByYWdtYSBtYXJrIC0gUGxhdGZvcm0tc3BlY2lm
aWMgdGVzdHMKIAogI2lmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353459</attachid>
            <date>2018-10-30 20:11:31 -0700</date>
            <delta_ts>2018-10-30 20:22:35 -0700</delta_ts>
            <desc>Try to fix the Windows build (4)</desc>
            <filename>bug-190530-20181030201130.patch</filename>
            <type>text/plain</type>
            <size>46149</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFmNDQ3ZDE1N2JlMDJh
MzA1Y2UyMDk2MDdlNTc5ZjYxNjM3YmNhOS4uYThlZGI1ZWNkNjgyZjQ3NTQ1NDllNmYwNTAxMWZm
NzMyNjFmYjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNv
cHlpbmcgYW5kIHBhc3RpbmcgYXR0YWNobWVudCBlbGVtZW50cyBhY3Jvc3Mgd2ViIHZpZXdzIGJ5
IGVuY29kaW5nIGFuZCBhZGRpbmcgZmlsZSB3cmFwcGVyCisgICAgICAgIGRhdGEgYXMgc3VicmVz
b3VyY2VzIGluIHRoZSB3ZWIgYXJjaGl2ZSB3aGVuIHdyaXRpbmcgc2VsZWN0ZWQgd2ViIGNvbnRl
bnQgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB0aGVuIGRlY29kaW5nCisgICAgICAgIGFuZCBjcmVh
dGluZyBOU0ZpbGVXcmFwcGVycyB1cG9uIHJlYWRpbmcgd2ViIGNvbnRlbnQuCisKKyAgICAgICAg
VGVzdDogV0tBdHRhY2htZW50VGVzdHMuQ29weUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWdpc3RlckF0dGFj
aG1lbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAgIEFkZCByZWdp
c3RlckF0dGFjaG1lbnRzKCksIHdoaWNoIHJlZ2lzdGVycyBfV0tBdHRhY2htZW50cyBpbiB0aGUg
VUkgcHJvY2VzcyBnaXZlbiBhIGxpc3Qgb2YKKyAgICAgICAgU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLiBUaGlzIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJzKCksIGJ1dCBkaWZmZXJzIGluIHRoYXQgKDEpIGl0CisgICAgICAgIHNlbmRzIHNlcmlhbGl6
ZWQgZmlsZSB3cmFwcGVyIGRhdGEsIGFuZCAoMikgaXQgc2VuZHMgYSBsaXN0IG9mIHNlcmlhbGl6
ZWQgYXR0YWNobWVudHMsIHJhdGhlciB0aGFuIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGp1
c3QgYSBzaW5nbGUgYXR0YWNobWVudC4KKworICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSwgYSBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2VyaWFsaXpl
IGFuZCBkZXNlcmlhbGl6ZSBhbgorICAgICAgICBhdHRhY2htZW50LiBUaGVzZSBhcmUgdXNlZCBi
b3RoIHdoZW4gd3JpdGluZyBhdHRhY2htZW50IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB3
aGVuIGNvbnN1bWluZyBhdHRhY2htZW50CisgICAgICAgIGRhdGEgdXBvbiBwYXN0ZS4KKworICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKworICAgICAgICBB
ZGQgYSBzdGVwIHdoZW4gcGFzdGluZyByaWNoIGNvbnRlbnQgd2l0aCBhdHRhY2htZW50cywgdG8g
Y29sbGVjdCBhbmQgc2VuZCBzZXJpYWxpemVkIGF0dGFjaG1lbnRzIHRvIHRoZSBjbGllbnQuCisg
ICAgICAgIEFsc28sIGRyaXZlLWJ5IGZpeDogZG9uJ3QgV1RGTW92ZSgpIHRoZSBSZWYgaGVyZSBp
ZiBpdCdzIHN0aWxsIGdvaW5nIHRvIGJlIHVzZWQgYmVsb3cuCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKworICAgICAgICBBZGQgYSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uIHRv
IGNvbXB1dGUgYSBVUkwgdGhhdCByZXByZXNlbnRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gYXR0
YWNobWVudCBpZGVudGlmaWVyLCBmb3IKKyAgICAgICAgdXNlIGluIGEgd2ViIGFyY2hpdmUgcmVz
b3VyY2UuCisKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50
c0lmTmVjZXNzYXJ5KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRl
IGFuZCBhcHBlbmQgQXJjaGl2ZVJlc291cmNlcyByZXByZXNlbnRpbmcgYXR0YWNobWVudCBlbGVt
ZW50IGRhdGEgd2hlbiB3cml0aW5nCisgICAgICAgIGF0dGFjaG1lbnRzIHRvIHRoZSBwYXN0ZWJv
YXJkIHZpYSB3ZWIgYXJjaGl2ZSBkYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyk6CisKIDIwMTgtMTAtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBvYnNvbGV0ZSBNQVhfQUxMT1dFRCBtYWNyb3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODEyMGVkYWIyNTY2ZjBlNzhjMThmMDIxNzYwODViZDM4ZWY0NmE2YS4uZGQzOWZk
YTRjMjAxNGUwM2VmYjM1NzhkOTUyNTFmYzcyM2NkNjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
OSBAQAorMjAxOC0xMC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIEF0dGFjaG1lbnQgZHJvcHBlZCBmcm9tIG9uZSB3ZWIgdmlldyB0
byBhbm90aGVyIGlzIG1pc3NpbmcgaXRzIGZpbGUgd3JhcHBlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNTMwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTIzMjE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICBBZGQgSVBDIGVu
Y29kaW5nL2RlY29kaW5nIHN1cHBvcnQgZm9yIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorCisgICAg
ICAgIEFkZCBhIG1ldGhvZCB0byBzZXJpYWxpemUgYW5kIHJldHVybiBhdHRhY2htZW50IGluZm8g
YXMgYSBibG9iIG9mIGRhdGEuCisKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIHVw
ZGF0ZSB0aGUgYXR0YWNobWVudCwgZ2l2ZW4gYSBzZXJpYWxpemVkIGJsb2Igb2YgZGF0YS4gT24g
Q29jb2EgcGxhdGZvcm1zLCB0aGlzIGZhaWxzCisgICAgICAgIGdyYWNlZnVsbHkgaWYgdGhlIHNl
cmlhbGl6ZWQgZGF0YSBjYW5ub3QgYmUgZGVjb2RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29j
b2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJ
bnN0YW5jZSk6IERlbGV0ZWQuCisKKyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgaG9vayB0byBy
ZXR1cm4gdGhlIGxpc3Qgb2YgTlNGaWxlV3JhcHBlciBzdWJjbGFzc2VzIHN1aXRhYmxlIGZvciBk
ZXNlcmlhbGl6YXRpb24uIFRoaXMKKyAgICAgICAgYXJyYXkgY29udGFpbnMgKGF0IG1pbmltdW0p
IE5TRmlsZVdyYXBwZXIsIGJ1dCBtYXkgYWRkaXRpb25hbGx5IGluY2x1ZGUgYSBjdXN0b20gTlNG
aWxlV3JhcHBlciBzdWJjbGFzcywgaWYKKyAgICAgICAgY29uZmlndXJlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmFs
bG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnQ6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnQ6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YSk6CisKKyAgICAg
ICAgUmVnaXN0ZXJzIHRoZSBnaXZlbiBzZXJpYWxpemVkIGF0dGFjaG1lbnQgZGF0YSwgY3JlYXRp
bmcgbmV3IF9XS0F0dGFjaG1lbnQgaW5zdGFuY2VzIGlmIG5lY2Vzc2FyeS4gQ3VycmVudGx5LAor
ICAgICAgICB0aGlzIGRvZXMgbm90IHVwZGF0ZSB0aGUgZmlsZSB3cmFwcGVycyBvZiBleGlzdGlu
ZyBfV0tBdHRhY2htZW50czsgd2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlIHRv
IHNlZQorICAgICAgICBpZiB3ZSBjYW4gYWRkaXRpb25hbGx5IHVwZGF0ZSBmaWxlIHdyYXBwZXJz
IGZvciBleGlzdGluZyBhdHRhY2htZW50cywgd2l0aG91dCBicmVha2luZyB0aGUgY2FzZSB3aGVy
ZSB0aGUgdXNlcgorICAgICAgICBjb3BpZXMgYW5kIHBhc3RlcyBvciBkcmFncyBhbmQgZHJvcHMg
YXR0YWNobWVudHMgd2l0aGluIGEgc2luZ2xlIHdlYiB2aWV3IGFuZCB0aGUgY2xpZW50IGV4cGVj
dHMgX1dLQXR0YWNobWVudAorICAgICAgICBpbnN0YW5jZXMgdG8gYmUgcmV1c2VkLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyk6
CisKKyAgICAgICAgSW1wbGVtZW50IGEgbmV3IElQQyBob29rIHRvIGZldGNoIGFuIGFycmF5IG9m
IHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhIGJsb2JzLCBnaXZlbiBhIGxpc3Qgb2YgYXR0YWNo
bWVudAorICAgICAgICBpZGVudGlmaWVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMTAtMzAgIERld2VpIFpodSAgPGRl
d2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSAnUHJvY2Vzc1N3YXBPbkNyb3NzU2l0
ZU5hdmlnYXRpb25FbmFibGVkJyB0byAnZXhwZXJpbWVudGFsJyBjYXRlZ29yeS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMWQy
NWZkODUxYTZlMjFhODFjZWUzZmY3ZjZjNjMzZWFjNmQyNTE2Li5jNzg1MGUzNTUyNTI3YTY5MjIy
Yjk0NmUyMzg0MWY3YWEwODZmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODg5LDYgKzQ4ODksNyBAQAogCQlGNDk3ODY4
ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIg
LyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5n
SGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5q
cyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJ
RjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDNENjQyMTg4
MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RURDMjEzRjNGNUYwMDRF
QTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2Vy
RXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNTA2NjRG
ODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY2MTU3RjUyREMwMEFDMjI2RiAvKiBG
b3JtQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTQ3OTgsNiArMTQ3OTksNyBAQAogCQlGNDhEMkFB
MzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQyQUE0MjE1OTc0MEQwMEM2
NzUyQiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFC
IC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRlbUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENDNENjQyMTg4MDJFNjAwRUNF
Q0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdF
REEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VFMDIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5T
Rm9udE1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjIxLDYg
KzIwNjIzLDcgQEAKIAkJCQk5MzMwOURCQjA5OUU2NDkxMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuaCAqLywKIAkJCQk1MTQwNUM4NjE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcCAqLywKIAkJCQk1MTQwNUM4NzE5MEIwMTQ0MDA3NTRGOTQgLyog
U2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8sCisJCQkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FD
IC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovLAogCQkJCTkzMzA5REMwMDk5RTY0OTEw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEQzEw
OTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggKi8sCiAJCQkJQjhE
QkRCNDcxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwICovLApAQCAt
MzA3MDQsNiArMzA3MDcsNyBAQAogCQkJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxl
Y3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4
IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MzIyQUMx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxOERGMzM1MThBQUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYx
IC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDM1OTVhMDQwZjJmYmIwMzU1ZjdmMTMyMTM5MjdkNDY0MjBhYjU5OWYuLjBjNjM4MTExZjAzYThk
YzliNTdmMmMwY2I4MGU3MmUyYjk0Y2U2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTg1LDggKzg1LDEwIEBACiAjaW5jbHVkZSAiUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2ltcGxpZnlNYXJrdXBDb21tYW5kLmgi
CiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oIgpAQCAtNDAxMCw2ICs0MDEyLDEyIEBAIHZvaWQgRWRpdG9yOjpyZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
CiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVy
LCBjb250ZW50VHlwZSwgZmlsZVBhdGgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRh
Y2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7CisgICAg
aWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlZ2lz
dGVyQXR0YWNobWVudHMoV1RGTW92ZShkYXRhKSk7Cit9CisKIHZvaWQgRWRpdG9yOjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBiOTYxMWUzN2JlMDg3NGNiYWI3MzUwN2M0ZTcyMmEwZWJmMzMwOTM2Li4zYmM4YTA2MGVl
ZGU0YzMxOTU4MjllMTNmMWQ1NDIzNzUwMmNlMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTg2LDYgKzg2LDEwIEBAIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0Owogc3RydWN0IFBh
c3RlYm9hcmRVUkw7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKK3N0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisjZW5k
aWYKKwogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9Owog
ZW51bSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJ
c0RpdiwgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQIH07CiAKQEAgLTUwOSw4ICs1MTMsOSBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICov
LCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxl
UGF0aCAqLyk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvbmVB
dHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHRvSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChIVE1M
QXR0YWNobWVudEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZmQzYjllZWZiNTkxZmRiOTIwYWI4
MTVjZjk2MWVkOWExZGIzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCI4OAorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3Qg
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKKyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBT
dHJpbmcgbWltZVR5cGU7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggMGI3OWVhZThmMTM2NzJlNTE4MDE5ZmM2Y2YxM2ZiYWQwNDJjNDIwOC4u
YWVmZWIxYWYxZjY5M2MzOTEyYmRmOGQ2OGQzZmQ5ZDVjYzc2NWZlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAg
LTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlB1YmxpY1VSTE1hbmFn
ZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbXBvcnQgIlNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlNv
Y2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aCIKQEAgLTI3NCw2ICsyNzUsMjAgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
ICAgIHVybFRvUmVzb3VyY2VNYXAuc2V0KHVybC5zdHJpbmcoKSwgc3VicmVzb3VyY2UuY29weVJl
ZigpKTsKICAgICB9CiAKKyAgICBWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJp
YWxpemVkQXR0YWNobWVudERhdGE7CisgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8SFRNTEF0dGFjaG1lbnRFbGVtZW50PihmcmFnbWVudCkpIHsKKyAgICAgICAg
YXV0byByZXNvdXJjZVVSTCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNl
VVJMKGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byByZXNvdXJj
ZUVudHJ5ID0gdXJsVG9SZXNvdXJjZU1hcC5maW5kKHJlc291cmNlVVJMLnN0cmluZygpKTsKKyAg
ICAgICAgaWYgKHJlc291cmNlRW50cnkgPT0gdXJsVG9SZXNvdXJjZU1hcC5lbmQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRy
eS0+dmFsdWU7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkgfSk7CisgICAgfQorCisgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNobWVudERhdGEu
aXNFbXB0eSgpKQorICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRzKFdU
Rk1vdmUoc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhKSk7CisKICAgICBWZWN0b3I8UmVmPEVsZW1l
bnQ+PiBlbGVtZW50c1RvUmVtb3ZlOwogICAgIFZlY3RvcjxBdHRhY2htZW50SW5zZXJ0aW9uSW5m
bz4gYXR0YWNobWVudEluc2VydGlvbkluZm87CiAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRlc2Nl
bmRhbnRzT2ZUeXBlPEhUTUxJbWFnZUVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzIzLDcgKzMz
OCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFt
ZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBpZiAoaXM8SFRNTElt
YWdlRWxlbWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFi
bGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihvcmln
aW5hbEVsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9i
amVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGluZm8uZGF0YSwgaW5mby5j
b250ZW50VHlwZSkpKTsKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxlbWVu
dChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRhY2ht
ZW50RWxlbWVudChhdHRhY2htZW50LmNvcHlSZWYoKSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoaW5mby5kYXRhLT5z
aXplKCksIGluZm8uY29udGVudFR5cGUsIGluZm8uZmlsZU5hbWUpOwogICAgICAgICAgICAgICAg
IHBhcmVudC0+cmVwbGFjZUNoaWxkKGF0dGFjaG1lbnQsIFdURk1vdmUob3JpZ2luYWxFbGVtZW50
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5k
ZXggMGM2ODYwOWUxNTVkNGVkZjA3ZWI5YWI0MTA5NzExYzNjY2I1ODRiMC4uZWViNjkyNzdkY2Ix
YzE5YzhlYmRmY2FiNWI4ZmI2N2IwNDJhNDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJBdHRhY2htZW50LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8cGFs
L0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtODUsNiArODYsMTMgQEAgY29uc3QgU3RyaW5nJiBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVs
ZW1lbnQmIGkKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIAorVVJMIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIHJlc291cmNlVVJMID0gVVJMUGFyc2VyKCJhcHBsZXdlYmRhdGE6Ly9hdHRhY2ht
ZW50LyJfcykucmVzdWx0KCk7CisgICAgcmVzb3VyY2VVUkwuc2V0UGF0aChpZGVudGlmaWVyKTsK
KyAgICByZXR1cm4gcmVzb3VyY2VVUkw7Cit9CisKIEZpbGUqIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6ZmlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmlsZS5nZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDA0MTA0MjY2MGJhNTBlMDAx
ZGJhMzI4MjhlMjA2YjlhYzhmNjQyYmMuLjAyMGRjNDAwYTc1MWQ4OGY0ODNjNDUzNTk3ZTQxZWNl
ZWY4MTYwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
aApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0dGFjaG1l
bnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAg
c3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElkZW50aWZpZXIoSFRNTEltYWdlRWxl
bWVudCYpOworICAgIHN0YXRpYyBVUkwgYXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0cmluZyYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGJsb2JVUkwoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBGaWxlKiBmaWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IDBjNTg0NTIyYWI5YzY0
YjdmN2Y1NDQ2NzlkY2JlNTdmNmRmNzgyNjIuLjg2MWUzOTkyNjEwZTBlNWZjOGQ5Mzk2NzIzNWRh
Y2VmNDYxNzUwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0zMiwxMCArMzIsMTMgQEAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFZGl0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJI
VE1MQXR0YWNobWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVs
ZW1lbnQuaCIKQEAgLTQ3LDcgKzUwLDEwIEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkBAIC00NjQsNiArNDcwLDQyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmFuZ2UqIHJhbmdlKQogICAgIHJldHVybiBjcmVh
dGUobWFya3VwU3RyaW5nLCAqZnJhbWUsIG5vZGVMaXN0LCBudWxscHRyKTsKIH0KIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3N0YXRpYyB2b2lkIGFkZFN1YnJlc291cmNlc0Zv
ckF0dGFjaG1lbnRFbGVtZW50c0lmTmVjZXNzYXJ5KEZyYW1lJiBmcmFtZSwgY29uc3QgVmVjdG9y
PE5vZGUqPiYgbm9kZXMsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mIHN1YnJlc291cmNl
cykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
YXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3Rv
cjxTdHJpbmc+IGlkZW50aWZpZXJzOworICAgIGZvciAoYXV0byogbm9kZSA6IG5vZGVzKSB7Cisg
ICAgICAgIGlmICghaXM8SFRNTEF0dGFjaG1lbnRFbGVtZW50Pihub2RlKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gdW5pcXVlSWRlbnRpZmllciA9IGRvd25jYXN0PEhU
TUxBdHRhY2htZW50RWxlbWVudD4oKm5vZGUpLnVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAg
aWYgKHVuaXF1ZUlkZW50aWZpZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlSWRlbnRpZmllcikpOwor
ICAgIH0KKworICAgIGlmIChpZGVudGlmaWVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8qIGVkaXRvckNsaWVudCA9IGZyYW1lLmVkaXRvcigpLmNsaWVudCgpOworICAg
IGlmICghZWRpdG9yQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGZyYW1lTmFt
ZSA9IGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCk7CisgICAgZm9yIChhdXRvJiBkYXRhIDogZWRp
dG9yQ2xpZW50LT5zZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhXVEZNb3Zl
KGlkZW50aWZpZXJzKSkpIHsKKyAgICAgICAgYXV0byByZXNvdXJjZVVSTCA9IEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGRhdGEuaWRlbnRpZmllcik7CisgICAgICAg
IGlmIChhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YS5kYXRhLnB0
cigpLCBXVEZNb3ZlKHJlc291cmNlVVJMKSwgZGF0YS5taW1lVHlwZSwgeyB9LCBmcmFtZU5hbWUp
KQorICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICB9Cit9CisKKyNlbmRpZgorCiBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcmFtZSYg
ZnJhbWUsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBXVEY6OkZ1bmN0aW9uPGJvb2wgKEZy
YW1lJik+JiYgZnJhbWVGaWx0ZXIpCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwpAQCAtNTI4LDYgKzU3MCwxMCBAQCBS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKyAgICBhZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2htZW50RWxlbWVu
dHNJZk5lY2Vzc2FyeShmcmFtZSwgbm9kZXMsIHN1YnJlc291cmNlcyk7CisjZW5kaWYKKwogICAg
IC8vIElmIHdlIGFyZSBhcmNoaXZpbmcgdGhlIGVudGlyZSBwYWdlLCBhZGQgYW55IGxpbmsgaWNv
bnMgdGhhdCB3ZSBoYXZlIGRhdGEgZm9yLgogICAgIGlmICghbm9kZXMuaXNFbXB0eSgpICYmIG5v
ZGVzWzBdLT5pc0RvY3VtZW50Tm9kZSgpKSB7CiAgICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVy
ID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oCmluZGV4IGU4ZDEwYzI1NDE5ODQyYjFjMmZmOWE4NjUzZmQ0MmQyMjVhMTA1MDEuLmE2
NWQ4MGNlYTBmMjdkYWY0YmZkMjhhNWFkMDhlYTBhNjRjNDY0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJFZGl0b3JJbnNlcnRBY3Rpb24uaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkQXR0YWNobWVudERh
dGEuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmcu
aCIKICNpbmNsdWRlICJVbmRvU3RlcC5oIgpAQCAtNzUsMTEgKzc2LDEzIEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3Qg
U3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxl
TmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBj
b25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRo
ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgLyogZnJv
bUlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogdG9JZGVudGlmaWVyICovKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBzb3VyY2UgKi8sIGJvb2wg
LyogaGFzRW5jbG9zaW5nSW1hZ2UgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVB
dHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
eyByZXR1cm4geyB9OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRp
bmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCBjNGM0Nzg4ZDJlOGM4NjBiOTk4YjA5ZjI3ZTk4N2RhOTY0YmQzN2Y0Li5hYzRk
OWJlZGY4ODBhYjA3M2UwYTVhOTk5YTE0MWM0YWRhMDFkZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlBhcnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CkBAIC02OSw2ICs3MCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJEYXRhLmg+CkBAIC0zMDEyLDQgKzMwMTQsMzAgQEAgc3RkOjpvcHRpb25h
bDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZShE
ZWNvZGVyJiBkZWMKICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0KIAorI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTZXJp
YWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCit7CisgICAgZW5jb2RlciA8PCBkYXRhLmlkZW50
aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
eyBkYXRhLmRhdGEuZ2V0KCkgfTsKK30KKworc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
Pjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTdHJpbmcgaWRlbnRpZmll
cjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGE7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50
aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBkODc4MThlN2JhNzdjOGQzMWExZDZh
OWJjNzc0ZTRmODA5ZDZjM2MyLi5mNTA5MjE2MTZiMmJhNDU0NzYyMjEwOGE4YjU4OGYwN2YwNjg4
MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtMTY0LDYgKzE2NCwxMCBAQCBjbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YTsKIHN0cnVjdCBN
ZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YTsKKyNlbmRpZgorCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZl
Y3RvcjxTdHJpbmc+PjsKICNlbmRpZgpAQCAtNzIwLDYgKzcyNCwxNSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiB7CiAgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGRlY29kZShEZWNvZGVyJik7
CiB9OwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YT4gZGVjb2RlKERlY29kZXImKTsKK307CisKKyNlbmRpZiAvLyBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNw
YWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKaW5kZXggOWNjMDQxMGY3NDc0NGJhN2M2NjFhYzlkNWY1ZWU3MjVjNjdjMjc5NS4uYTEzNGJm
YWY2MzVhYmI0NDU3OTM3OTM2NDMxNGE4MDJlMjQ3MjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTYsNiArOTYsMTUgQEAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkg
Y29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJikKK3sKK30KKwogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYjhm
YmJiZTliNWMyZjVlNjUxMmUwZGFmMmNmY2VmMzliZTlhZjNiYy4uNjRkMDI0MWU3MmUwZTI5OWE0
NjUzNWU2YTM3YTRlZGI1NmJmMDNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhh
c0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJ
bWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAorICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGI4Nzcx
MDJlZjVmOGRkMWU4ZGJjMjM5ZjBkN2M2NTExZGEzMjc0NTcuLmI0ZWM5YzhlYjZjY2E0ZmQ3ODZk
Yzg3Y2M1YjU1ZGVkMjZhYWI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMjYsNiArMjYsNyBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBUElBdHRhY2htZW50LmgiCiAKKyNpbXBvcnQg
IlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpA
QCAtMzMsNiArMzQsNyBAQAogI2Vsc2UKICNpbXBvcnQgPENvcmVTZXJ2aWNlcy9Db3JlU2Vydmlj
ZXMuaD4KICNlbmRpZgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEku
aD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTEyNSw0ICsxMjcsMzMgQEAgYm9vbCBBdHRhY2ht
ZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXI7CiB9CiAKK1Jl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZpbGVXcmFwcGVyIHx8ICFtX3dl
YlBhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNEYXRhICpzZXJpYWxpemVk
RGF0YSA9IHNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3QobV9maWxlV3JhcHBlci5n
ZXQoKSk7CisgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERh
dGEpOworfQorCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRp
b24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIW1fd2ViUGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IHNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbi0+Y3JlYXRlTlNEYXRhKCk7CisgICAgaWYgKCFzZXJpYWxpemVkRGF0
YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXIgPSB1
bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzRnJvbURhdGEobV93ZWJQYWdlLT5wYWdlQ2xpZW50KCku
c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCksIHNlcmlhbGl6ZWREYXRhLmdldCgpKTsK
KyAgICBpZiAoIWZpbGVXcmFwcGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRGaWxlV3Jh
cHBlckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVyLCBjb250ZW50VHlwZSk7CisgICAg
bV93ZWJQYWdlLT51cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcygqdGhpcywgW10gKGF1dG8pIHsg
fSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmluZGV4IGQ1MTU0ZWQzNTU1NDJiMTli
MzE4M2EzMTViNzA0OGYzYzM3ZDZlMWEuLmQ3MjczNzJiNjY3MTE2NTYxMzAyOGY2Y2FjMTVhNTY4
YmFiN2NlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VD
bGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdl
Q2xpZW50SW1wbENvY29hLmgKQEAgLTQ1LDcgKzQ1LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50KEFQSTo6QXR0
YWNobWVudCYsIGNvbnN0IFN0cmluZyYgc291cmNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92
ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JikgZmluYWw7Ci0gICAgTlNGaWxlV3JhcHBlciAq
YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgZmluYWw7CisgICAgTlNGaWxlV3JhcHBlciAqYWxs
b2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QgZmluYWw7CisgICAgTlNTZXQgKnNlcmlhbGl6
YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJ
bXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLm1tCmluZGV4IDFmOWQyOTIxYjM4YTEwOGQyMDc4NDRiNTZjMjU5MTNkN2NhNmMxMTYu
Ljc1YWNlOWEwMjhmMzE0YmE0MzA0MWZmYTQ1MGYzNTcwOWQzZmEyN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5tbQpAQCAt
NjYsNyArNjYsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsQ29jb2E6OmRpZFJlbW92ZUF0dGFjaG1l
bnQoQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQogI2VuZGlmCiB9CiAKLU5TRmlsZVdyYXBw
ZXIgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpCitOU0Zp
bGVXcmFwcGVyICpQYWdlQ2xpZW50SW1wbENvY29hOjphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2Uo
KSBjb25zdAogewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgQ2xhc3MgY2xzID0gbV93ZWJWaWV3
LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzID86IFtOU0ZpbGVXcmFw
cGVyIHNlbGZdOwpAQCAtNzYsNiArNzYsMTcgQEAgTlNGaWxlV3JhcHBlciAqUGFnZUNsaWVudElt
cGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkKICNlbmRpZgogfQogCitOU1NldCAq
UGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCkgY29u
c3QKK3sKKyAgICBDbGFzcyBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcyA9IE5TRmlsZVdyYXBwZXIu
c2VsZjsKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIENsYXNzIGNvbmZpZ3VyZWRGaWxlV3JhcHBl
ckNsYXNzID0gbV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBlckNs
YXNzOworICAgIGlmIChjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcyAmJiBjb25maWd1cmVkRmls
ZVdyYXBwZXJDbGFzcyAhPSBkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcykKKyAgICAgICAgcmV0dXJu
IFtOU1NldCBzZXRXaXRoT2JqZWN0czpjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcywgZGVmYXVs
dEZpbGVXcmFwcGVyQ2xhc3MsIG5pbF07CisjZW5kaWYKKyAgICByZXR1cm4gW05TU2V0IHNldFdp
dGhPYmplY3RzOmRlZmF1bHRGaWxlV3JhcHBlckNsYXNzLCBuaWxdOworfQorCiAjZW5kaWYKICAg
ICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBiOGEwYzE0MmVkOGE3
MmQyNjI5NWIxMmU3MTMwODUxNTgyODJhZTRiLi4xZGVlZDI5NzY4ZDg3NzVkZjEwYjk1YjA3YTY3
NzA5ZTE2MzNiMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC00NSw2
ICs0NSw3IEBACiAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBl
cjsKK09CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTQ0NSw3ICs0NDYsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50KEFQ
STo6QXR0YWNobWVudCYpIHsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgTlNG
aWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTlNTZXQgKnNlcmlhbGl6YWJs
ZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgog
I2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
OGVjNGJmZDVhNWY5ZDkyZDExNWQyZGE1ZGRhMTc4ZjI5YjUzZWJmOS4uZTYzZWNmNTBmMDVlY2I0
MWQwNzY0NDVlNjRhN2JiMjhlODhkODdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC03OTAwLDYgKzc5MDAsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAg
ICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChpZGVudGlmaWVy
LCBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJiBkYXRhKQoreworICAgIGZvciAoYXV0byYgc2VyaWFs
aXplZERhdGEgOiBkYXRhKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFdURk1vdmUoc2Vy
aWFsaXplZERhdGEuaWRlbnRpZmllcik7CisgICAgICAgIGlmICghYXR0YWNobWVudEZvcklkZW50
aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgICAgICBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZp
ZXIpLT51cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFdURk1vdmUoc2VyaWFsaXpl
ZERhdGEuZGF0YSksIFdURk1vdmUoc2VyaWFsaXplZERhdGEubWltZVR5cGUpKTsKKyAgICB9Cit9
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYg
ZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKQogewogICAgIGF1dG8g
bmV3QXR0YWNobWVudCA9IGVuc3VyZUF0dGFjaG1lbnQodG9JZGVudGlmaWVyKTsKQEAgLTc5MjUs
NiArNzkzNCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZUFsbEF0dGFjaG1lbnRz
KCkKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLmNsZWFyKCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIFZlY3RvcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiBzZXJpYWxpemVkRGF0YSkKK3sKKyAgICBmb3IgKGF1
dG8gaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gYXR0YWNobWVudCA9
IGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWF0dGFj
aG1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGRhdGEgPSBhdHRh
Y2htZW50LT5jcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKTsKKyAgICAgICAgaWYgKCFk
YXRhKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2VyaWFsaXplZERhdGEuYXBw
ZW5kKHsgaWRlbnRpZmllciwgYXR0YWNobWVudC0+bWltZVR5cGUoKSwgZGF0YS5yZWxlYXNlTm9u
TnVsbCgpIH0pOworICAgIH0KK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1lbnQ+
JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBjN2FlNWQ5ZDYzZDAxZjJiYzgyNDVlMjQ1
NWMzYTA3NDM3Y2E4ZGUuLjI1OGFmOTJiNDUxZmM2YmZlM2E0YTJlODhkODZjNTU4ODVjZTM3Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMzEsNiArMjMxLDcg
QEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhOwogY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2U7CiBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFZpZXdTbmFwc2hvdDsKIGNsYXNz
IFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC0xMzQ0LDYgKzEzNDUsNyBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPEFQSTo6QXR0YWNobWVudD4gYXR0YWNobWVudEZvcklkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6
QXR0YWNobWVudD4mJiwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAg
ICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQm
LCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
VmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTgyOSw2ICsxODMxLDcgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZy
b21GaWxlUGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2Vy
aWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjY2I5ODY0OWFjMWVjZjA0MTA2
N2IzZDA0MWQ4N2RlYjM0YWQzYjUxLi4xZmU4NjBlM2M2YTYyYWNhNDYwNTViNTVmNTdmOGFhZGZi
NGZmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC01MzQsOSArNTM0LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKFN0cmluZyBpZGVudGlm
aWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBwcmVmZXJyZWRGaWxlTmFtZSwgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllckZyb21GaWxlUGF0aChTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIGNvbnRlbnRUeXBl
LCBTdHJpbmcgZmlsZVBhdGgpCiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihTdHJp
bmcgaWRlbnRpZmllcikKKyAgICByZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRh
KFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IGRhdGEpCiAgICAgQ2xv
bmVBdHRhY2htZW50RGF0YShTdHJpbmcgZnJvbUlkZW50aWZpZXIsIFN0cmluZyB0b0lkZW50aWZp
ZXIpCiAgICAgRGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVudGlmaWVyKFN0cmluZyBpZGVudGlm
aWVyLCBTdHJpbmcgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKQogICAgIERpZFJlbW92
ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKKyAgICBTZXJpYWxp
emVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVy
cykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmFsaXpl
ZERhdGEpIExlZ2FjeVN5bmMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDdiOTBmNTkwNGRkZDViZTZlMmZlMjU5MzRhNDA4NjU5YWFjZmVmYzEuLmFjZGUyZjAwZDdk
ZDMxN2E0NzU0YTVmMWViNjAzYmE3ZGU4YTljOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBA
IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TcGVsbENoZWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlUHJvcGVy
dGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CkBAIC0xNjUsNiArMTY2
LDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVu
dGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIHsgZGF0YSB9KSk7CiB9CiAK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3Jl
OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYgZGF0YSkKK3sKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVk
RGF0YShXVEZNb3ZlKGRhdGEpKSk7Cit9CisKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
ckZyb21GaWxlUGF0aChpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgZmlsZVBhdGgpKTsKQEAgLTE5
MCw2ICsxOTYsMTMgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZFJlbW92ZUF0dGFjaG1lbnRX
aXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVtb3ZlQXR0YWNobWVudFdpdGhJZGVudGlmaWVy
KGlkZW50aWZpZXIpKTsKIH0KIAorVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gV2Vi
RWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZERhdGE7CisgICAgbV9wYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJ
ZGVudGlmaWVycyhpZGVudGlmaWVycyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzOjpSZXBseShzZXJpYWxpemVkRGF0YSkpOwor
ICAgIHJldHVybiBzZXJpYWxpemVkRGF0YTsKK30KKwogI2VuZGlmCiAKIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpkaWRBcHBseVN0eWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBkZDZmZTY5YzE1
OTcwYjc0NGU1MmVkOGRkMjU3MWMyMWFkMzI0MWViLi40YjVhNmQzYWRkYjQ0M2U5ODAwZjBhNTU0
N2JiOTc5ZmM2NGQ4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02MywxMCArNjMsMTIgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmlu
ZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlLCBib29sIGhhc0VuY2xvc2luZ0ltYWdlKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0
YWNobWVudERhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgVmVjdG9yPFdl
YkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
Rm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBmaW5hbDsKICNlbmRpZgogCiAg
ICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZjEwN2Y1MTE3N2E2ZDI5MjM3MzFkYWZhZDZj
YjM2MWEzMDQzMjg0Li4xNGI1OGEwZjhmMTdlODZkZGU3Y2RmM2FjNjA3YjhjZjgyOWEzMjI5IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTgtMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBBdHRhY2htZW50IGRyb3BwZWQgZnJvbSBvbmUgd2ViIHZp
ZXcgdG8gYW5vdGhlciBpcyBtaXNzaW5nIGl0cyBmaWxlIHdyYXBwZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDUzMAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDUyMzIxNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKwor
ICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IGNvcHlpbmcgZGlmZmVyZW50IHR5cGVz
IG9mIGF0dGFjaG1lbnRzIGFuZCBwYXN0aW5nIGluIGEgbmV3IHdlYiB2aWV3IGluc2VydHMKKyAg
ICAgICAgYXR0YWNobWVudHMgaW4gdGhlIHNlY29uZCB3ZWIgdmlldyB0aGF0IGFyZSBiYWNrZWQg
YnkgX1dLQXR0YWNobWVudCBvYmplY3RzLCB3aG9zZSBOU0ZpbGVXcmFwcGVycyBob2xkIGRhdGEg
dGhhdAorICAgICAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBvcmlnaW5hbCBmaWxlIHdyYXBwZXJz
IHVzZWQgdG8gaW5zZXJ0IGF0dGFjaG1lbnRzIGluIHRoZSBmaXJzdCB3ZWIgdmlldy4KKworICAg
ICAgICBFeGlzdGluZyBBUEkgdGVzdHMgdmVyaWZ5IHRoYXQgd2hlbiBjb3B5aW5nIGFuZCBwYXN0
aW5nIHdpdGhpbiBhIHNpbmdsZSB3ZWIgdmlldywgdGhlIHBhc3RlZCBhdHRhY2htZW50IGVsZW1l
bnQKKyAgICAgICAgaXMgc3RpbGwgYmFja2VkIGJ5IHRoZSBzYW1lIE5TRmlsZVdyYXBwZXIgaW5z
dGFuY2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgt
MTAtMzAgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHdl
YmtpdHB5OiBTdXBwb3J0IGFsdGVybmF0ZSBzaW1jdGwgbGlzdCBvdXRwdXRzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3Rz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbQppbmRleCA5M2ZiODdhMWQ1M2RkNzg2MDViMTBkMzBlMGIwNTJmOGIxMjc1NmMxLi43
OTY0ZGYxYTUxNTc3OTYxMzhkMTc5NGYyYjUxMjIxMjgyMzNjNTRmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW0KQEAgLTE0NjIsNiArMTQ2Miw1MiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBDdXN0
b21GaWxlV3JhcHBlclN1YmNsYXNzKQogICAgIEVYUEVDVF9FUShbRmlsZVdyYXBwZXIgc2VsZl0s
IFtpbnNlcnRlZEF0dGFjaG1lbnRzLmZpcnN0T2JqZWN0LmluZm8uZmlsZVdyYXBwZXIgY2xhc3Nd
KTsKIH0KIAorVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ29weUFuZFBhc3RlQmV0d2VlbldlYlZp
ZXdzKQoreworICAgIGF1dG8gZmlsZSA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdEhUTUxEYXRhKCldKTsKKyAgICBbZmlsZSBz
ZXRQcmVmZXJyZWRGaWxlbmFtZTpAInRlc3QuZm9vYmFyIl07CisgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
dGVzdEltYWdlRGF0YSgpXSk7CisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdFBERkRhdGEoKV0p
OworICAgIGF1dG8gZm9sZGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRE
aXJlY3RvcnlXaXRoRmlsZVdyYXBwZXJzOkB7IEAiaW1hZ2UucG5nIjogaW1hZ2UuZ2V0KCksIEAi
ZG9jdW1lbnQucGRmIjogZG9jdW1lbnQuZ2V0KCkgfV0pOworICAgIFtmb2xkZXIgc2V0UHJlZmVy
cmVkRmlsZW5hbWU6QCJmb2xkZXIiXTsKKyAgICBhdXRvIGFyY2hpdmUgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RaSVBEYXRh
KCldKTsKKyAgICBbYXJjaGl2ZSBzZXRQcmVmZXJyZWRGaWxlbmFtZTpAImFyY2hpdmUiXTsKKwor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRvIGZpcnN0V2ViVmlldyA9IHdlYlZp
ZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBzeW5jaHJv
bm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjpmaWxlLmdldCgpIGNvbnRlbnRU
eXBlOkAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl07CisgICAgICAgIFtmaXJzdFdlYlZpZXcg
c3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6Zm9sZGVyLmdldCgp
IGNvbnRlbnRUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVGb2xkZXJdOworICAgICAg
ICBbZmlyc3RXZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFw
cGVyOmFyY2hpdmUuZ2V0KCkgY29udGVudFR5cGU6QCJhcHBsaWNhdGlvbi96aXAiXTsKKyAgICAg
ICAgW2ZpcnN0V2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBf
ZXhlY3V0ZUVkaXRDb21tYW5kOkAiQ29weSIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246bmlsXTsK
KyAgICB9CisKKyAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFj
aG1lbnRzKCk7CisgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIo
c2Vjb25kV2ViVmlldy5nZXQoKSk7CisgICAgW3NlY29uZFdlYlZpZXcgcGFzdGU6bmlsXTsKKyAg
ICBbc2Vjb25kV2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6MyB0YWdOYW1lOkAiYXR0YWNobWVu
dCJdOworICAgIEVYUEVDVF9FUSgzVSwgb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5jb3Vu
dCk7CisKKyAgICBOU1N0cmluZyAqcGxhaW5GaWxlSWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdh
dHRhY2htZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50aWZpZXIiXTsKKyAgICBOU1N0cmlu
ZyAqZm9sZGVySWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50W3RpdGxlPWZvbGRl
cl0nKS51bmlxdWVJZGVudGlmaWVyIl07CisgICAgTlNTdHJpbmcgKmFyY2hpdmVJZGVudGlmaWVy
ID0gW3NlY29uZFdlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0bGU9YXJjaGl2ZV0nKS51bmlxdWVJZGVudGlm
aWVyIl07CisKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRmlsZUluZm8gPSBbc2Vjb25k
V2ViVmlldyBfYXR0YWNobWVudEZvcklkZW50aWZpZXI6cGxhaW5GaWxlSWRlbnRpZmllcl0uaW5m
bzsKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRm9sZGVySW5mbyA9IFtzZWNvbmRXZWJW
aWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpmb2xkZXJJZGVudGlmaWVyXS5pbmZvOworICAg
IF9XS0F0dGFjaG1lbnRJbmZvICpwYXN0ZWRBcmNoaXZlSW5mbyA9IFtzZWNvbmRXZWJWaWV3IF9h
dHRhY2htZW50Rm9ySWRlbnRpZmllcjphcmNoaXZlSWRlbnRpZmllcl0uaW5mbzsKKworICAgIE5T
RGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU0ZpbGVXcmFwcGVyICo+ICpwYXN0ZWRGb2xkZXJDb250
ZW50cyA9IHBhc3RlZEZvbGRlckluZm8uZmlsZVdyYXBwZXIuZmlsZVdyYXBwZXJzOworICAgIE5T
RmlsZVdyYXBwZXIgKmRvY3VtZW50RnJvbUZvbGRlciA9IFtwYXN0ZWRGb2xkZXJDb250ZW50cyBv
YmplY3RGb3JLZXk6QCJkb2N1bWVudC5wZGYiXTsKKyAgICBOU0ZpbGVXcmFwcGVyICppbWFnZUZy
b21Gb2xkZXIgPSBbcGFzdGVkRm9sZGVyQ29udGVudHMgb2JqZWN0Rm9yS2V5OkAiaW1hZ2UucG5n
Il07CisgICAgRVhQRUNUX1RSVUUoW1tkb2N1bWVudCByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0Vx
dWFsVG9EYXRhOmRvY3VtZW50RnJvbUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAg
RVhQRUNUX1RSVUUoW1tpbWFnZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOmlt
YWdlRnJvbUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1RSVUUoW1tm
aWxlIHJlZ3VsYXJGaWxlQ29udGVudHNdIGlzRXF1YWxUb0RhdGE6cGFzdGVkRmlsZUluZm8uZmls
ZVdyYXBwZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAgIEVYUEVDVF9UUlVFKFtbYXJjaGl2
ZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOnBhc3RlZEFyY2hpdmVJbmZvLmZp
bGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHNdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIHBhc3RlZEZpbGVJbmZvLmNvbnRlbnRUeXBlKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoInB1YmxpYy5kaXJlY3RvcnkiLCBwYXN0ZWRGb2xkZXJJbmZvLmNv
bnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3ppcCIsIHBhc3Rl
ZEFyY2hpdmVJbmZvLmNvbnRlbnRUeXBlKTsKK30KKwogI3ByYWdtYSBtYXJrIC0gUGxhdGZvcm0t
c3BlY2lmaWMgdGVzdHMKIAogI2lmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353460</attachid>
            <date>2018-10-30 20:23:42 -0700</date>
            <delta_ts>2018-10-30 20:34:14 -0700</delta_ts>
            <desc>Try to fix the Windows build (4.1)</desc>
            <filename>bug-190530-20181030202341.patch</filename>
            <type>text/plain</type>
            <size>46198</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFmNDQ3ZDE1N2JlMDJh
MzA1Y2UyMDk2MDdlNTc5ZjYxNjM3YmNhOS4uYThlZGI1ZWNkNjgyZjQ3NTQ1NDllNmYwNTAxMWZm
NzMyNjFmYjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNv
cHlpbmcgYW5kIHBhc3RpbmcgYXR0YWNobWVudCBlbGVtZW50cyBhY3Jvc3Mgd2ViIHZpZXdzIGJ5
IGVuY29kaW5nIGFuZCBhZGRpbmcgZmlsZSB3cmFwcGVyCisgICAgICAgIGRhdGEgYXMgc3VicmVz
b3VyY2VzIGluIHRoZSB3ZWIgYXJjaGl2ZSB3aGVuIHdyaXRpbmcgc2VsZWN0ZWQgd2ViIGNvbnRl
bnQgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB0aGVuIGRlY29kaW5nCisgICAgICAgIGFuZCBjcmVh
dGluZyBOU0ZpbGVXcmFwcGVycyB1cG9uIHJlYWRpbmcgd2ViIGNvbnRlbnQuCisKKyAgICAgICAg
VGVzdDogV0tBdHRhY2htZW50VGVzdHMuQ29weUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWdpc3RlckF0dGFj
aG1lbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAgIEFkZCByZWdp
c3RlckF0dGFjaG1lbnRzKCksIHdoaWNoIHJlZ2lzdGVycyBfV0tBdHRhY2htZW50cyBpbiB0aGUg
VUkgcHJvY2VzcyBnaXZlbiBhIGxpc3Qgb2YKKyAgICAgICAgU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLiBUaGlzIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJzKCksIGJ1dCBkaWZmZXJzIGluIHRoYXQgKDEpIGl0CisgICAgICAgIHNlbmRzIHNlcmlhbGl6
ZWQgZmlsZSB3cmFwcGVyIGRhdGEsIGFuZCAoMikgaXQgc2VuZHMgYSBsaXN0IG9mIHNlcmlhbGl6
ZWQgYXR0YWNobWVudHMsIHJhdGhlciB0aGFuIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGp1
c3QgYSBzaW5nbGUgYXR0YWNobWVudC4KKworICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSwgYSBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2VyaWFsaXpl
IGFuZCBkZXNlcmlhbGl6ZSBhbgorICAgICAgICBhdHRhY2htZW50LiBUaGVzZSBhcmUgdXNlZCBi
b3RoIHdoZW4gd3JpdGluZyBhdHRhY2htZW50IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB3
aGVuIGNvbnN1bWluZyBhdHRhY2htZW50CisgICAgICAgIGRhdGEgdXBvbiBwYXN0ZS4KKworICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKworICAgICAgICBB
ZGQgYSBzdGVwIHdoZW4gcGFzdGluZyByaWNoIGNvbnRlbnQgd2l0aCBhdHRhY2htZW50cywgdG8g
Y29sbGVjdCBhbmQgc2VuZCBzZXJpYWxpemVkIGF0dGFjaG1lbnRzIHRvIHRoZSBjbGllbnQuCisg
ICAgICAgIEFsc28sIGRyaXZlLWJ5IGZpeDogZG9uJ3QgV1RGTW92ZSgpIHRoZSBSZWYgaGVyZSBp
ZiBpdCdzIHN0aWxsIGdvaW5nIHRvIGJlIHVzZWQgYmVsb3cuCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKworICAgICAgICBBZGQgYSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uIHRv
IGNvbXB1dGUgYSBVUkwgdGhhdCByZXByZXNlbnRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gYXR0
YWNobWVudCBpZGVudGlmaWVyLCBmb3IKKyAgICAgICAgdXNlIGluIGEgd2ViIGFyY2hpdmUgcmVz
b3VyY2UuCisKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50
c0lmTmVjZXNzYXJ5KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRl
IGFuZCBhcHBlbmQgQXJjaGl2ZVJlc291cmNlcyByZXByZXNlbnRpbmcgYXR0YWNobWVudCBlbGVt
ZW50IGRhdGEgd2hlbiB3cml0aW5nCisgICAgICAgIGF0dGFjaG1lbnRzIHRvIHRoZSBwYXN0ZWJv
YXJkIHZpYSB3ZWIgYXJjaGl2ZSBkYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyk6CisKIDIwMTgtMTAtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBvYnNvbGV0ZSBNQVhfQUxMT1dFRCBtYWNyb3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODEyMGVkYWIyNTY2ZjBlNzhjMThmMDIxNzYwODViZDM4ZWY0NmE2YS4uZGQzOWZk
YTRjMjAxNGUwM2VmYjM1NzhkOTUyNTFmYzcyM2NkNjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
OSBAQAorMjAxOC0xMC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIEF0dGFjaG1lbnQgZHJvcHBlZCBmcm9tIG9uZSB3ZWIgdmlldyB0
byBhbm90aGVyIGlzIG1pc3NpbmcgaXRzIGZpbGUgd3JhcHBlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNTMwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTIzMjE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICBBZGQgSVBDIGVu
Y29kaW5nL2RlY29kaW5nIHN1cHBvcnQgZm9yIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorCisgICAg
ICAgIEFkZCBhIG1ldGhvZCB0byBzZXJpYWxpemUgYW5kIHJldHVybiBhdHRhY2htZW50IGluZm8g
YXMgYSBibG9iIG9mIGRhdGEuCisKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIHVw
ZGF0ZSB0aGUgYXR0YWNobWVudCwgZ2l2ZW4gYSBzZXJpYWxpemVkIGJsb2Igb2YgZGF0YS4gT24g
Q29jb2EgcGxhdGZvcm1zLCB0aGlzIGZhaWxzCisgICAgICAgIGdyYWNlZnVsbHkgaWYgdGhlIHNl
cmlhbGl6ZWQgZGF0YSBjYW5ub3QgYmUgZGVjb2RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29j
b2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJ
bnN0YW5jZSk6IERlbGV0ZWQuCisKKyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgaG9vayB0byBy
ZXR1cm4gdGhlIGxpc3Qgb2YgTlNGaWxlV3JhcHBlciBzdWJjbGFzc2VzIHN1aXRhYmxlIGZvciBk
ZXNlcmlhbGl6YXRpb24uIFRoaXMKKyAgICAgICAgYXJyYXkgY29udGFpbnMgKGF0IG1pbmltdW0p
IE5TRmlsZVdyYXBwZXIsIGJ1dCBtYXkgYWRkaXRpb25hbGx5IGluY2x1ZGUgYSBjdXN0b20gTlNG
aWxlV3JhcHBlciBzdWJjbGFzcywgaWYKKyAgICAgICAgY29uZmlndXJlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmFs
bG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnQ6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnQ6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YSk6CisKKyAgICAg
ICAgUmVnaXN0ZXJzIHRoZSBnaXZlbiBzZXJpYWxpemVkIGF0dGFjaG1lbnQgZGF0YSwgY3JlYXRp
bmcgbmV3IF9XS0F0dGFjaG1lbnQgaW5zdGFuY2VzIGlmIG5lY2Vzc2FyeS4gQ3VycmVudGx5LAor
ICAgICAgICB0aGlzIGRvZXMgbm90IHVwZGF0ZSB0aGUgZmlsZSB3cmFwcGVycyBvZiBleGlzdGlu
ZyBfV0tBdHRhY2htZW50czsgd2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlIHRv
IHNlZQorICAgICAgICBpZiB3ZSBjYW4gYWRkaXRpb25hbGx5IHVwZGF0ZSBmaWxlIHdyYXBwZXJz
IGZvciBleGlzdGluZyBhdHRhY2htZW50cywgd2l0aG91dCBicmVha2luZyB0aGUgY2FzZSB3aGVy
ZSB0aGUgdXNlcgorICAgICAgICBjb3BpZXMgYW5kIHBhc3RlcyBvciBkcmFncyBhbmQgZHJvcHMg
YXR0YWNobWVudHMgd2l0aGluIGEgc2luZ2xlIHdlYiB2aWV3IGFuZCB0aGUgY2xpZW50IGV4cGVj
dHMgX1dLQXR0YWNobWVudAorICAgICAgICBpbnN0YW5jZXMgdG8gYmUgcmV1c2VkLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyk6
CisKKyAgICAgICAgSW1wbGVtZW50IGEgbmV3IElQQyBob29rIHRvIGZldGNoIGFuIGFycmF5IG9m
IHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhIGJsb2JzLCBnaXZlbiBhIGxpc3Qgb2YgYXR0YWNo
bWVudAorICAgICAgICBpZGVudGlmaWVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMTAtMzAgIERld2VpIFpodSAgPGRl
d2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSAnUHJvY2Vzc1N3YXBPbkNyb3NzU2l0
ZU5hdmlnYXRpb25FbmFibGVkJyB0byAnZXhwZXJpbWVudGFsJyBjYXRlZ29yeS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMWQy
NWZkODUxYTZlMjFhODFjZWUzZmY3ZjZjNjMzZWFjNmQyNTE2Li5jNzg1MGUzNTUyNTI3YTY5MjIy
Yjk0NmUyMzg0MWY3YWEwODZmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODg5LDYgKzQ4ODksNyBAQAogCQlGNDk3ODY4
ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIg
LyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5n
SGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5q
cyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJ
RjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDNENjQyMTg4
MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RURDMjEzRjNGNUYwMDRF
QTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2Vy
RXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNTA2NjRG
ODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY2MTU3RjUyREMwMEFDMjI2RiAvKiBG
b3JtQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTQ3OTgsNiArMTQ3OTksNyBAQAogCQlGNDhEMkFB
MzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQyQUE0MjE1OTc0MEQwMEM2
NzUyQiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFC
IC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRlbUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENDNENjQyMTg4MDJFNjAwRUNF
Q0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdF
REEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VFMDIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5T
Rm9udE1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjIxLDYg
KzIwNjIzLDcgQEAKIAkJCQk5MzMwOURCQjA5OUU2NDkxMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuaCAqLywKIAkJCQk1MTQwNUM4NjE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcCAqLywKIAkJCQk1MTQwNUM4NzE5MEIwMTQ0MDA3NTRGOTQgLyog
U2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8sCisJCQkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FD
IC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovLAogCQkJCTkzMzA5REMwMDk5RTY0OTEw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEQzEw
OTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggKi8sCiAJCQkJQjhE
QkRCNDcxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwICovLApAQCAt
MzA3MDQsNiArMzA3MDcsNyBAQAogCQkJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxl
Y3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4
IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MzIyQUMx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxOERGMzM1MThBQUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYx
IC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDM1OTVhMDQwZjJmYmIwMzU1ZjdmMTMyMTM5MjdkNDY0MjBhYjU5OWYuLjBjNjM4MTExZjAzYThk
YzliNTdmMmMwY2I4MGU3MmUyYjk0Y2U2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTg1LDggKzg1LDEwIEBACiAjaW5jbHVkZSAiUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2ltcGxpZnlNYXJrdXBDb21tYW5kLmgi
CiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oIgpAQCAtNDAxMCw2ICs0MDEyLDEyIEBAIHZvaWQgRWRpdG9yOjpyZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
CiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVy
LCBjb250ZW50VHlwZSwgZmlsZVBhdGgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRh
Y2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7CisgICAg
aWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlZ2lz
dGVyQXR0YWNobWVudHMoV1RGTW92ZShkYXRhKSk7Cit9CisKIHZvaWQgRWRpdG9yOjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBiOTYxMWUzN2JlMDg3NGNiYWI3MzUwN2M0ZTcyMmEwZWJmMzMwOTM2Li4zYmM4YTA2MGVl
ZGU0YzMxOTU4MjllMTNmMWQ1NDIzNzUwMmNlMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTg2LDYgKzg2LDEwIEBAIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0Owogc3RydWN0IFBh
c3RlYm9hcmRVUkw7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKK3N0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisjZW5k
aWYKKwogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9Owog
ZW51bSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJ
c0RpdiwgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQIH07CiAKQEAgLTUwOSw4ICs1MTMsOSBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICov
LCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxl
UGF0aCAqLyk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvbmVB
dHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHRvSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChIVE1M
QXR0YWNobWVudEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNDMwZGNkOTFlZDIxZjQzMGYzODlk
OGI0OGY2OTdlNmQ3OWVlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworc3RydWN0IFNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YSB7CisgICAgU3RyaW5nIGlkZW50aWZpZXI7CisgICAgU3RyaW5nIG1p
bWVUeXBlOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CmluZGV4IDBiNzllYWU4ZjEzNjcyZTUxODAxOWZjNmNmMTNmYmFkMDQyYzQyMDguLmFlZmViMWFm
MWY2OTNjMzkxMmJkZjhkNjhkM2ZkOWQ1Y2M3NjVmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC01MSw2ICs1
MSw3IEBACiAjaW1wb3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW1wb3J0ICJTZXJpYWxpemVkQXR0
YWNobWVudERhdGEuaCIKICNpbXBvcnQgIlNldHRpbmdzLmgiCiAjaW1wb3J0ICJTb2NrZXRQcm92
aWRlci5oIgogI2ltcG9ydCAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCkBAIC0y
NzQsNiArMjc1LDIwIEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICB1cmxU
b1Jlc291cmNlTWFwLnNldCh1cmwuc3RyaW5nKCksIHN1YnJlc291cmNlLmNvcHlSZWYoKSk7CiAg
ICAgfQogCisgICAgVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhOworICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6IGRlc2NlbmRhbnRzT2ZU
eXBlPEhUTUxBdHRhY2htZW50RWxlbWVudD4oZnJhZ21lbnQpKSB7CisgICAgICAgIGF1dG8gcmVz
b3VyY2VVUkwgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTChhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8gcmVzb3VyY2VFbnRyeSA9
IHVybFRvUmVzb3VyY2VNYXAuZmluZChyZXNvdXJjZVVSTC5zdHJpbmcoKSk7CisgICAgICAgIGlm
IChyZXNvdXJjZUVudHJ5ID09IHVybFRvUmVzb3VyY2VNYXAuZW5kKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVl
OworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51
bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgp
IH0pOworICAgIH0KKworICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHko
KSkKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50cyhXVEZNb3ZlKHNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YSkpOworCiAgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gZWxl
bWVudHNUb1JlbW92ZTsKICAgICBWZWN0b3I8QXR0YWNobWVudEluc2VydGlvbkluZm8+IGF0dGFj
aG1lbnRJbnNlcnRpb25JbmZvOwogICAgIGZvciAoYXV0byYgaW1hZ2UgOiBkZXNjZW5kYW50c09m
VHlwZTxIVE1MSW1hZ2VFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTMyMyw3ICszMzgsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1l
bnQ+KG9yaWdpbmFsRWxlbWVudC5nZXQoKSkgJiYgY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5s
aW5lSW1hZ2VSZXByZXNlbnRhdGlvbihpbmZvLmNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8mIGltYWdlID0gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4ob3JpZ2luYWxFbGVt
ZW50LmdldCgpKTsKICAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwo
KmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShpbmZvLmRhdGEsIGluZm8uY29udGVudFR5
cGUpKSk7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92
ZShhdHRhY2htZW50KSk7CisgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1l
bnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBp
bmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVOYW1lKTsKICAgICAgICAgICAgICAgICBwYXJlbnQt
PnJlcGxhY2VDaGlsZChhdHRhY2htZW50LCBXVEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDBjNjg2
MDllMTU1ZDRlZGYwN2ViOWFiNDEwOTcxMWMzY2NiNTg0YjAuLmVlYjY5Mjc3ZGNiMWMxOWM4ZWJk
ZmNhYjViOGZiNjdiMDQyYTQxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgPHBhbC9GaWxlU2l6
ZUZvcm1hdHRlci5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KQEAgLTg1LDYgKzg2LDEzIEBAIGNvbnN0IFN0cmluZyYgSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpnZXRBdHRhY2htZW50SWRlbnRpZmllcihIVE1MSW1hZ2VFbGVtZW50JiBp
CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKK1VSTCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OmFyY2hpdmVSZXNvdXJjZVVSTChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgYXV0
byByZXNvdXJjZVVSTCA9IFVSTFBhcnNlcigiYXBwbGV3ZWJkYXRhOi8vYXR0YWNobWVudC8iX3Mp
LnJlc3VsdCgpOworICAgIHJlc291cmNlVVJMLnNldFBhdGgoaWRlbnRpZmllcik7CisgICAgcmV0
dXJuIHJlc291cmNlVVJMOworfQorCiBGaWxlKiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmZpbGUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2ZpbGUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCAwNDEwNDI2NjBiYTUwZTAwMWRiYTMyODI4
ZTIwNmI5YWM4ZjY0MmJjLi4wMjBkYzQwMGE3NTFkODhmNDgzYzQ1MzU5N2U0MWVjZWVmODE2MGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTQx
LDYgKzQxLDcgQEAgY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcmIGdldEF0dGFjaG1lbnRJZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQmKTsK
KyAgICBzdGF0aWMgVVJMIGFyY2hpdmVSZXNvdXJjZVVSTChjb25zdCBTdHJpbmcmKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFVSTCBibG9iVVJMKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
RmlsZSogZmlsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAwYzU4NDUyMmFiOWM2NGI3ZjdmNTQ0
Njc5ZGNiZTU3ZjZkZjc4MjYyLi44NjFlMzk5MjYxMGUwZTVmYzhkOTM5NjcyMzVkYWNlZjQ2MTc1
MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcApAQCAtMzIsMTAgKzMyLDEzIEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
U2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCisjaW5jbHVkZSAiSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50Lmgi
CkBAIC00Nyw3ICs1MCwxMCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAibWFya3Vw
LmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgpAQCAtNDY0LDYgKzQ3MCw0MiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKFJhbmdlKiByYW5nZSkKICAgICByZXR1cm4gY3JlYXRlKG1hcmt1
cFN0cmluZywgKmZyYW1lLCBub2RlTGlzdCwgbnVsbHB0cik7CiB9CiAKKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorCitzdGF0aWMgdm9pZCBhZGRTdWJyZXNvdXJjZXNGb3JBdHRhY2ht
ZW50RWxlbWVudHNJZk5lY2Vzc2FyeShGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3RvcjxOb2RlKj4m
IG5vZGVzLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMpCit7Cisg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1l
bnRFbGVtZW50RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8U3RyaW5n
PiBpZGVudGlmaWVyczsKKyAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2RlcykgeworICAgICAgICBp
ZiAoIWlzPEhUTUxBdHRhY2htZW50RWxlbWVudD4obm9kZSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBhdXRvIHVuaXF1ZUlkZW50aWZpZXIgPSBkb3duY2FzdDxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+KCpub2RlKS51bmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIGlmICh1bmlx
dWVJZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGlkZW50aWZpZXJzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICB9CisK
KyAgICBpZiAoaWRlbnRpZmllcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvKiBlZGl0b3JDbGllbnQgPSBmcmFtZS5lZGl0b3IoKS5jbGllbnQoKTsKKyAgICBpZiAoIWVk
aXRvckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBmcmFtZU5hbWUgPSBmcmFt
ZS50cmVlKCkudW5pcXVlTmFtZSgpOworICAgIGZvciAoYXV0byYgZGF0YSA6IGVkaXRvckNsaWVu
dC0+c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoV1RGTW92ZShpZGVudGlm
aWVycykpKSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2VVUkwgPSBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OmFyY2hpdmVSZXNvdXJjZVVSTChkYXRhLmlkZW50aWZpZXIpOworICAgICAgICBpZiAoYXV0
byByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEuZGF0YS5wdHIoKSwgV1RG
TW92ZShyZXNvdXJjZVVSTCksIGRhdGEubWltZVR5cGUsIHsgfSwgZnJhbWVOYW1lKSkKKyAgICAg
ICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgfQorfQorCisjZW5kaWYKKwogUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnJhbWUmIGZyYW1lLCBj
b25zdCBWZWN0b3I8Tm9kZSo+JiBub2RlcywgV1RGOjpGdW5jdGlvbjxib29sIChGcmFtZSYpPiYm
IGZyYW1lRmlsdGVyKQogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKQEAgLTUyOCw2ICs1NzAsMTAgQEAgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1h
cmt1cFN0cmluZywgRnIKICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisgICAgYWRkU3VicmVzb3VyY2VzRm9yQXR0YWNobWVudEVsZW1lbnRzSWZOZWNl
c3NhcnkoZnJhbWUsIG5vZGVzLCBzdWJyZXNvdXJjZXMpOworI2VuZGlmCisKICAgICAvLyBJZiB3
ZSBhcmUgYXJjaGl2aW5nIHRoZSBlbnRpcmUgcGFnZSwgYWRkIGFueSBsaW5rIGljb25zIHRoYXQg
d2UgaGF2ZSBkYXRhIGZvci4KICAgICBpZiAoIW5vZGVzLmlzRW1wdHkoKSAmJiBub2Rlc1swXS0+
aXNEb2N1bWVudE5vZGUoKSkgewogICAgICAgICBhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCBlOGQxMGMyNTQxOTg0MmIxYzJmZjlhODY1M2ZkNDJkMjI1YTEwNTAxLi5hNjVkODBjZWEw
ZjI3ZGFmNGJmZDI4YTVhZDA4ZWEwYTY0YzQ2NDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRWRpdG9y
SW5zZXJ0QWN0aW9uLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgiCiAj
aW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCiAjaW5j
bHVkZSAiVW5kb1N0ZXAuaCIKQEAgLTc1LDExICs3NiwxMyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYg
LyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8s
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3Ry
aW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIC8qIGZyb21JZGVudGlm
aWVyICovLCBjb25zdCBTdHJpbmcmIC8qIHRvSWRlbnRpZmllciAqLykgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8q
IGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogc291cmNlICovLCBib29sIC8qIGhhc0Vu
Y2xvc2luZ0ltYWdlICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVu
dFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJpYWxpemVkQXR0
YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgcmV0dXJu
IHsgfTsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggYzRjNDc4OGQyZThjODYwYjk5OGIwOWYyN2U5ODdkYTk2NGJkMzdmNC4uYWM0ZDliZWRmODgw
YWIwNzNlMGE1YTk5OWExNDFjNGFkYTAxZGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgpAQCAtNjksNiArNzAsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlYXJjaFBvcHVwTWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyRGF0YS5oPgpAQCAtMzAxMiw0ICszMDE0LDMwIEBAIHN0ZDo6b3B0aW9uYWw8Rm9udEF0
dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorCit2b2lkIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhJiBkYXRhKQoreworICAgIGVuY29kZXIgPDwgZGF0YS5pZGVudGlmaWVyIDw8
IGRhdGEubWltZVR5cGUgPDwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0YS5k
YXRhLmdldCgpIH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgU3RyaW5nIGlkZW50aWZpZXI7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1p
bWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIElQQzo6RGF0YVJl
ZmVyZW5jZSBkYXRhOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwg
V1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSkgfX07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZDg3ODE4ZTdiYTc3YzhkMzFhMWQ2YTliYzc3NGU0
ZjgwOWQ2YzNjMi4uZjUwOTIxNjE2YjJiYTQ1NDc2MjIxMDhhOGI1ODhmMDdmMDY4ODBmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTE2NCw2
ICsxNjQsMTAgQEAgY2xhc3MgTWVkaWFTZXNzaW9uTWV0YWRhdGE7CiBzdHJ1Y3QgTWVkaWFDb25z
dHJhaW50czsKICNlbmRpZgogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3N0cnVj
dCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogdXNpbmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3Ry
aW5nPj47CiAjZW5kaWYKQEAgLTcyMCw2ICs3MjQsMTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGb250QXR0cmlidXRlcz4gewogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAor
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVu
dERhdGEmKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJpYWxpemVkQXR0
YWNobWVudERhdGE+IGRlY29kZShEZWNvZGVyJik7Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4
IDljYzA0MTBmNzQ3NDRiYTdjNjYxYWM5ZDVmNWVlNzI1YzY3YzI3OTUuLmExMzRiZmFmNjM1YWJi
NDQ1NzkzNzkzNjQzMTRhODAyZTI0NzIwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk2LDYgKzk2LDE1IEBAIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6
OlN0cmluZyYpCit7Cit9CisKICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGI4ZmJiYmU5YjVj
MmY1ZTY1MTJlMGRhZjJjZmNlZjM5YmU5YWYzYmMuLjY0ZDAyNDFlNzJlMGUyOTlhNDY1MzVlNmEz
N2E0ZWRiNTZiZjAzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaApAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFbmNsb3Np
bmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBo
YXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2
b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBiODc3MTAyZWY1Zjhk
ZDFlOGRiYzIzOWYwZDdjNjUxMWRhMzI3NDU3Li5iNGVjOWM4ZWI2Y2NhNGZkNzg2ZGM4N2NjNWI1
NWRlZDI2YWFiN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiQVBJQXR0YWNobWVudC5oIgogCisjaW1wb3J0ICJQYWdlQ2xp
ZW50LmgiCiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTMzLDYg
KzM0LDcgQEAKICNlbHNlCiAjaW1wb3J0IDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CiAj
ZW5kaWYKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAKIG5h
bWVzcGFjZSBBUEkgewogCkBAIC0xMjUsNCArMTI3LDMzIEBAIGJvb2wgQXR0YWNobWVudDo6aXNF
bXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyOwogfQogCitSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24oKSBjb25zdAoreworICAgIGlmICghbV9maWxlV3JhcHBlciB8fCAhbV93ZWJQYWdlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE5TRGF0YSAqc2VyaWFsaXplZERhdGEgPSBz
ZWN1cmVseUFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0KG1fZmlsZVdyYXBwZXIuZ2V0KCkpOwor
ICAgIGlmICghc2VyaWFsaXplZERhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKK30K
Kwordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25z
dCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAgaWYgKCFtX3dlYlBhZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gc2VyaWFsaXplZERhdGEgPSBzZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24tPmNyZWF0ZU5TRGF0YSgpOworICAgIGlmICghc2VyaWFsaXplZERhdGEpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVyID0gdW5hcmNoaXZl
ZE9iamVjdE9mQ2xhc3Nlc0Zyb21EYXRhKG1fd2ViUGFnZS0+cGFnZUNsaWVudCgpLnNlcmlhbGl6
YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpLCBzZXJpYWxpemVkRGF0YS5nZXQoKSk7CisgICAgaWYg
KCFmaWxlV3JhcHBlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0RmlsZVdyYXBwZXJBbmRV
cGRhdGVDb250ZW50VHlwZShmaWxlV3JhcHBlciwgY29udGVudFR5cGUpOworICAgIG1fd2ViUGFn
ZS0+dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoKnRoaXMsIFtdIChhdXRvKSB7IH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAppbmRleCBkNTE1NGVkMzU1NTQyYjE5YjMxODNhMzE1
YjcwNDhmM2MzN2Q2ZTFhLi5kNzI3MzcyYjY2NzExNjU2MTMwMjhmNmNhYzE1YTU2OGJhYjdjZTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1w
bENvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudElt
cGxDb2NvYS5oCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogICAgIHZvaWQgZGlkSW5zZXJ0QXR0YWNobWVudChBUEk6OkF0dGFjaG1lbnQm
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZW1vdmVBdHRhY2ht
ZW50KEFQSTo6QXR0YWNobWVudCYpIGZpbmFsOwotICAgIE5TRmlsZVdyYXBwZXIgKmFsbG9jRmls
ZVdyYXBwZXJJbnN0YW5jZSgpIGZpbmFsOworICAgIE5TRmlsZVdyYXBwZXIgKmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpIGNvbnN0IGZpbmFsOworICAgIE5TU2V0ICpzZXJpYWxpemFibGVGaWxl
V3JhcHBlckNsYXNzZXMoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5t
bQppbmRleCAxZjlkMjkyMWIzOGExMDhkMjA3ODQ0YjU2YzI1OTEzZDdjYTZjMTE2Li43NWFjZTlh
MDI4ZjMxNGJhNDMwNDFmZmE0NTBmMzU3MDlkM2ZhMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0KQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbENvY29hOjpkaWRSZW1vdmVBdHRhY2htZW50KEFQSTo6
QXR0YWNobWVudCYgYXR0YWNobWVudCkKICNlbmRpZgogfQogCi1OU0ZpbGVXcmFwcGVyICpQYWdl
Q2xpZW50SW1wbENvY29hOjphbGxvY0ZpbGVXcmFwcGVySW5zdGFuY2UoKQorTlNGaWxlV3JhcHBl
ciAqUGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QK
IHsKICNpZiBXS19BUElfRU5BQkxFRAogICAgIENsYXNzIGNscyA9IG1fd2ViVmlldy5jb25maWd1
cmF0aW9uLl9hdHRhY2htZW50RmlsZVdyYXBwZXJDbGFzcyA/OiBbTlNGaWxlV3JhcHBlciBzZWxm
XTsKQEAgLTc2LDYgKzc2LDE3IEBAIE5TRmlsZVdyYXBwZXIgKlBhZ2VDbGllbnRJbXBsQ29jb2E6
OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpCiAjZW5kaWYKIH0KIAorTlNTZXQgKlBhZ2VDbGll
bnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0Cit7Cisg
ICAgQ2xhc3MgZGVmYXVsdEZpbGVXcmFwcGVyQ2xhc3MgPSBOU0ZpbGVXcmFwcGVyLnNlbGY7Cisj
aWYgV0tfQVBJX0VOQUJMRUQKKyAgICBDbGFzcyBjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcyA9
IG1fd2ViVmlldy5jb25maWd1cmF0aW9uLl9hdHRhY2htZW50RmlsZVdyYXBwZXJDbGFzczsKKyAg
ICBpZiAoY29uZmlndXJlZEZpbGVXcmFwcGVyQ2xhc3MgJiYgY29uZmlndXJlZEZpbGVXcmFwcGVy
Q2xhc3MgIT0gZGVmYXVsdEZpbGVXcmFwcGVyQ2xhc3MpCisgICAgICAgIHJldHVybiBbTlNTZXQg
c2V0V2l0aE9iamVjdHM6Y29uZmlndXJlZEZpbGVXcmFwcGVyQ2xhc3MsIGRlZmF1bHRGaWxlV3Jh
cHBlckNsYXNzLCBuaWxdOworI2VuZGlmCisgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0
czpkZWZhdWx0RmlsZVdyYXBwZXJDbGFzcywgbmlsXTsKK30KKwogI2VuZGlmCiAgICAgCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYjhhMGMxNDJlZDhhNzJkMjYyOTVi
MTJlNzEzMDg1MTU4MjgyYWU0Yi4uMWRlZWQyOTc2OGQ4Nzc1ZGYxMGI5NWIwN2E2NzcwOWUxNjMz
YjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtNDUsNiArNDUsNyBA
QAogCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CitPQkpD
X0NMQVNTIE5TU2V0OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIAogI2lm
IFVTRShBUFBLSVQpCkBAIC00NDUsNyArNDQ2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRJbnNlcnRBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYsIGNvbnN0IFN0cmluZyYgc291
cmNlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQXR0YWNobWVudChBUEk6OkF0dGFj
aG1lbnQmKSB7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIE5TRmlsZVdyYXBw
ZXIgKmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2
aXJ0dWFsIE5TRmlsZVdyYXBwZXIgKmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5TU2V0ICpzZXJpYWxpemFibGVGaWxlV3Jh
cHBlckNsYXNzZXMoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKICNlbmRpZgog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhlYzRiZmQ1
YTVmOWQ5MmQxMTVkMmRhNWRkYTE3OGYyOWI1M2ViZjkuLmU2M2VjZjUwZjA1ZWNiNDFkMDc2NDQ1
ZTY0YTdiYjI4ZTg4ZDg3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtNzkwMCw2ICs3OTAwLDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAgICAgICAgbV9h
dHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoaWRlbnRpZmllciwgZW5zdXJl
QXR0YWNobWVudChpZGVudGlmaWVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3Rl
ckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+JiYgZGF0YSkKK3sKKyAgICBmb3IgKGF1dG8mIHNlcmlhbGl6ZWREYXRh
IDogZGF0YSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEZNb3ZlKHNlcmlhbGl6ZWRE
YXRhLmlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgZW5zdXJlQXR0YWNobWVudChpZGVudGlmaWVyKS0+dXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihXVEZNb3ZlKHNlcmlhbGl6ZWREYXRhLmRh
dGEpLCBXVEZNb3ZlKHNlcmlhbGl6ZWREYXRhLm1pbWVUeXBlKSk7CisgICAgfQorfQorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcikKIHsKICAgICBhdXRvIG5ld0F0dGFj
aG1lbnQgPSBlbnN1cmVBdHRhY2htZW50KHRvSWRlbnRpZmllcik7CkBAIC03OTI1LDYgKzc5MzQs
MjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludmFsaWRhdGVBbGxBdHRhY2htZW50cygpCiAgICAg
bV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5jbGVhcigpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYgc2VyaWFsaXplZERhdGEpCit7CisgICAgZm9yIChhdXRvIGlkZW50
aWZpZXIgOiBpZGVudGlmaWVycykgeworICAgICAgICBhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2ht
ZW50Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFhdHRhY2htZW50KQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBkYXRhID0gYXR0YWNobWVudC0+
Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCk7CisgICAgICAgIGlmICghZGF0YSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNlcmlhbGl6ZWREYXRhLmFwcGVuZCh7IGlk
ZW50aWZpZXIsIGF0dGFjaG1lbnQtPm1pbWVUeXBlKCksIGRhdGEucmVsZWFzZU5vbk51bGwoKSB9
KTsKKyAgICB9Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpwbGF0Zm9ybVJlZ2lzdGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCAwYzdhZTVkOWQ2M2QwMWYyYmM4MjQ1ZTI0NTVjM2EwNzQz
N2NhOGRlLi4yNThhZjkyYjQ1MWZjNmJmZTNhNGEyZTg4ZDg2YzU1ODg1Y2UzN2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjMxLDYgKzIzMSw3IEBAIGNsYXNz
IFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YTsKIGNsYXNzIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOwogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTsKIGNsYXNzIFNlY0tleVByb3h5U3RvcmU7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlOwogY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBWaWV3U25hcHNob3Q7CiBjbGFzcyBWaXNpdGVk
TGlua1N0b3JlOwpAQCAtMTM0NCw2ICsxMzQ1LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBUEk6
OkF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikgY29uc3Q7CiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KFJlZjxBUEk6OkF0dGFjaG1l
bnQ+JiYsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQg
dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiwgRnVuY3Rp
b248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZXJpYWxpemVkQXR0
YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Jik7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKQEAgLTE4MjksNiArMTgzMSw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRmlsZVBh
dGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzRnJvbVNlcmlhbGl6ZWRE
YXRhKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IGNsb25lQXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBmcm9tSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB0b0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggY2NiOTg2NDlhYzFlY2YwNDEwNjdiM2QwNDFk
ODdkZWIzNGFkM2I1MS4uMWZlODYwZTNjNmE2MmFjYTQ2MDU1YjU1ZjU3ZjhhYWRmYjRmZjYyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNTM0LDkgKzUzNCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShTdHJpbmcgaWRlbnRpZmllciwgU3Ry
aW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgcHJlZmVycmVkRmlsZU5hbWUsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIFJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJG
cm9tRmlsZVBhdGgoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBjb250ZW50VHlwZSwgU3RyaW5n
IGZpbGVQYXRoKQogICAgIFJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoU3RyaW5nIGlkZW50
aWZpZXIpCisgICAgcmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShWZWN0b3I8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBkYXRhKQogICAgIENsb25lQXR0YWNo
bWVudERhdGEoU3RyaW5nIGZyb21JZGVudGlmaWVyLCBTdHJpbmcgdG9JZGVudGlmaWVyKQogICAg
IERpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllciwgU3Ry
aW5nIHNvdXJjZSwgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkKICAgICBEaWRSZW1vdmVBdHRhY2ht
ZW50V2l0aElkZW50aWZpZXIoU3RyaW5nIGlkZW50aWZpZXIpCisgICAgU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhRm9ySWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnMpIC0+IChW
ZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBzZXJhbGl6ZWREYXRhKSBM
ZWdhY3lTeW5jCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NF
U1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA3Yjkw
ZjU5MDRkZGQ1YmU2ZTJmZTI1OTM0YTQwODY1OWFhY2ZlZmMxLi5hY2RlMmYwMGQ3ZGQzMTdhNDc1
NGE1ZjFlYjYwM2JhN2RlOGE5YzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNDksNiAr
NDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU3BlbGxDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgpAQCAtMTY1LDYgKzE2NiwxMSBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbgogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwg
Y29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCB7IGRhdGEgfSkpOwogfQogCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoV1RG
TW92ZShkYXRhKSkpOworfQorCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRmls
ZVBhdGgoaWRlbnRpZmllciwgY29udGVudFR5cGUsIGZpbGVQYXRoKSk7CkBAIC0xOTAsNiArMTk2
LDEzIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRSZW1vdmVBdHRhY2htZW50V2l0aElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlm
aWVyKSk7CiB9CiAKK1ZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IFdlYkVkaXRvckNs
aWVudDo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzKQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+IHNlcmlhbGl6ZWREYXRhOworICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmll
cnMoaWRlbnRpZmllcnMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXJpYWxpemVkQXR0YWNo
bWVudERhdGFGb3JJZGVudGlmaWVyczo6UmVwbHkoc2VyaWFsaXplZERhdGEpKTsKKyAgICByZXR1
cm4gc2VyaWFsaXplZERhdGE7Cit9CisKICNlbmRpZgogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6
ZGlkQXBwbHlTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGQ2ZmU2OWMxNTk3MGI3NDRl
NTJlZDhkZDI1NzFjMjFhZDMyNDFlYi4uNGI1YTZkM2FkZGI0NDNlOTgwMGYwYTU1NDdiYjk3OWZj
NjRkODBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjMsMTAgKzYzLDEyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBk
aWRJbnNlcnRBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnRE
YXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFZlY3RvcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+IHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50
aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQg
ZGlkQmVnaW5FZGl0aW5nKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggY2YxMDdmNTExNzdhNmQyOTIzNzMxZGFmYWQ2Y2IzNjFhMzA0
MzI4NC4uMTRiNThhMGY4ZjE3ZTg2ZGRlN2NkZjNhYzYwN2I4Y2Y4MjlhMzIyOSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDE4LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gQXR0YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFu
b3RoZXIgaXMgbWlzc2luZyBpdHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ1MjMyMTQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAg
QWRkIGEgdGVzdCB0byB2ZXJpZnkgdGhhdCBjb3B5aW5nIGRpZmZlcmVudCB0eXBlcyBvZiBhdHRh
Y2htZW50cyBhbmQgcGFzdGluZyBpbiBhIG5ldyB3ZWIgdmlldyBpbnNlcnRzCisgICAgICAgIGF0
dGFjaG1lbnRzIGluIHRoZSBzZWNvbmQgd2ViIHZpZXcgdGhhdCBhcmUgYmFja2VkIGJ5IF9XS0F0
dGFjaG1lbnQgb2JqZWN0cywgd2hvc2UgTlNGaWxlV3JhcHBlcnMgaG9sZCBkYXRhIHRoYXQKKyAg
ICAgICAgaXMgZXF1aXZhbGVudCB0byB0aGUgb3JpZ2luYWwgZmlsZSB3cmFwcGVycyB1c2VkIHRv
IGluc2VydCBhdHRhY2htZW50cyBpbiB0aGUgZmlyc3Qgd2ViIHZpZXcuCisKKyAgICAgICAgRXhp
c3RpbmcgQVBJIHRlc3RzIHZlcmlmeSB0aGF0IHdoZW4gY29weWluZyBhbmQgcGFzdGluZyB3aXRo
aW4gYSBzaW5nbGUgd2ViIHZpZXcsIHRoZSBwYXN0ZWQgYXR0YWNobWVudCBlbGVtZW50CisgICAg
ICAgIGlzIHN0aWxsIGJhY2tlZCBieSB0aGUgc2FtZSBOU0ZpbGVXcmFwcGVyIGluc3RhbmNlLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTEwLTMwICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTog
U3VwcG9ydCBhbHRlcm5hdGUgc2ltY3RsIGxpc3Qgb3V0cHV0cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0K
aW5kZXggOTNmYjg3YTFkNTNkZDc4NjA1YjEwZDMwZTBiMDUyZjhiMTI3NTZjMS4uNzk2NGRmMWE1
MTU3Nzk2MTM4ZDE3OTRmMmI1MTIyMTI4MjMzYzU0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBA
IC0xNDYyLDYgKzE0NjIsNTIgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ3VzdG9tRmlsZVdy
YXBwZXJTdWJjbGFzcykKICAgICBFWFBFQ1RfRVEoW0ZpbGVXcmFwcGVyIHNlbGZdLCBbaW5zZXJ0
ZWRBdHRhY2htZW50cy5maXJzdE9iamVjdC5pbmZvLmZpbGVXcmFwcGVyIGNsYXNzXSk7CiB9CiAK
K1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIENvcHlBbmRQYXN0ZUJldHdlZW5XZWJWaWV3cykKK3sK
KyAgICBhdXRvIGZpbGUgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnRlc3RIVE1MRGF0YSgpXSk7CisgICAgW2ZpbGUgc2V0UHJlZmVy
cmVkRmlsZW5hbWU6QCJ0ZXN0LmZvb2JhciJdOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RJbWFn
ZURhdGEoKV0pOworICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnRlc3RQREZEYXRhKCldKTsKKyAgICBh
dXRvIGZvbGRlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0RGlyZWN0b3J5
V2l0aEZpbGVXcmFwcGVyczpAeyBAImltYWdlLnBuZyI6IGltYWdlLmdldCgpLCBAImRvY3VtZW50
LnBkZiI6IGRvY3VtZW50LmdldCgpIH1dKTsKKyAgICBbZm9sZGVyIHNldFByZWZlcnJlZEZpbGVu
YW1lOkAiZm9sZGVyIl07CisgICAgYXV0byBhcmNoaXZlID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czp0ZXN0WklQRGF0YSgpXSk7Cisg
ICAgW2FyY2hpdmUgc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJhcmNoaXZlIl07CisKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBmaXJzdFdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVz
dGluZ0F0dGFjaG1lbnRzKCk7CisgICAgICAgIFtmaXJzdFdlYlZpZXcgc3luY2hyb25vdXNseUlu
c2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6ZmlsZS5nZXQoKSBjb250ZW50VHlwZTpAImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdOworICAgICAgICBbZmlyc3RXZWJWaWV3IHN5bmNocm9u
b3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmZvbGRlci5nZXQoKSBjb250ZW50
VHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRm9sZGVyXTsKKyAgICAgICAgW2ZpcnN0
V2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBlcjphcmNo
aXZlLmdldCgpIGNvbnRlbnRUeXBlOkAiYXBwbGljYXRpb24vemlwIl07CisgICAgICAgIFtmaXJz
dFdlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisgICAgICAgIFtmaXJzdFdlYlZpZXcgX2V4ZWN1dGVF
ZGl0Q29tbWFuZDpAIkNvcHkiIGFyZ3VtZW50Om5pbCBjb21wbGV0aW9uOm5pbF07CisgICAgfQor
CisgICAgYXV0byBzZWNvbmRXZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygp
OworICAgIE9ic2VydmVBdHRhY2htZW50VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHNlY29uZFdl
YlZpZXcuZ2V0KCkpOworICAgIFtzZWNvbmRXZWJWaWV3IHBhc3RlOm5pbF07CisgICAgW3NlY29u
ZFdlYlZpZXcgZXhwZWN0RWxlbWVudENvdW50OjMgdGFnTmFtZTpAImF0dGFjaG1lbnQiXTsKKyAg
ICBFWFBFQ1RfRVEoM1UsIG9ic2VydmVyLm9ic2VydmVyKCkuaW5zZXJ0ZWQuY291bnQpOworCisg
ICAgTlNTdHJpbmcgKnBsYWluRmlsZUlkZW50aWZpZXIgPSBbc2Vjb25kV2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVu
dFt0aXRsZV49dGVzdF0nKS51bmlxdWVJZGVudGlmaWVyIl07CisgICAgTlNTdHJpbmcgKmZvbGRl
cklkZW50aWZpZXIgPSBbc2Vjb25kV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXR0YWNobWVudFt0aXRsZT1mb2xkZXJdJykudW5p
cXVlSWRlbnRpZmllciJdOworICAgIE5TU3RyaW5nICphcmNoaXZlSWRlbnRpZmllciA9IFtzZWNv
bmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdhdHRhY2htZW50W3RpdGxlPWFyY2hpdmVdJykudW5pcXVlSWRlbnRpZmllciJdOwor
CisgICAgX1dLQXR0YWNobWVudEluZm8gKnBhc3RlZEZpbGVJbmZvID0gW3NlY29uZFdlYlZpZXcg
X2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOnBsYWluRmlsZUlkZW50aWZpZXJdLmluZm87CisgICAg
X1dLQXR0YWNobWVudEluZm8gKnBhc3RlZEZvbGRlckluZm8gPSBbc2Vjb25kV2ViVmlldyBfYXR0
YWNobWVudEZvcklkZW50aWZpZXI6Zm9sZGVySWRlbnRpZmllcl0uaW5mbzsKKyAgICBfV0tBdHRh
Y2htZW50SW5mbyAqcGFzdGVkQXJjaGl2ZUluZm8gPSBbc2Vjb25kV2ViVmlldyBfYXR0YWNobWVu
dEZvcklkZW50aWZpZXI6YXJjaGl2ZUlkZW50aWZpZXJdLmluZm87CisKKyAgICBOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgTlNGaWxlV3JhcHBlciAqPiAqcGFzdGVkRm9sZGVyQ29udGVudHMgPSBw
YXN0ZWRGb2xkZXJJbmZvLmZpbGVXcmFwcGVyLmZpbGVXcmFwcGVyczsKKyAgICBOU0ZpbGVXcmFw
cGVyICpkb2N1bWVudEZyb21Gb2xkZXIgPSBbcGFzdGVkRm9sZGVyQ29udGVudHMgb2JqZWN0Rm9y
S2V5OkAiZG9jdW1lbnQucGRmIl07CisgICAgTlNGaWxlV3JhcHBlciAqaW1hZ2VGcm9tRm9sZGVy
ID0gW3Bhc3RlZEZvbGRlckNvbnRlbnRzIG9iamVjdEZvcktleTpAImltYWdlLnBuZyJdOworICAg
IEVYUEVDVF9UUlVFKFtbZG9jdW1lbnQgcmVndWxhckZpbGVDb250ZW50c10gaXNFcXVhbFRvRGF0
YTpkb2N1bWVudEZyb21Gb2xkZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAgIEVYUEVDVF9U
UlVFKFtbaW1hZ2UgcmVndWxhckZpbGVDb250ZW50c10gaXNFcXVhbFRvRGF0YTppbWFnZUZyb21G
b2xkZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAgIEVYUEVDVF9UUlVFKFtbZmlsZSByZWd1
bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOnBhc3RlZEZpbGVJbmZvLmZpbGVXcmFwcGVy
LnJlZ3VsYXJGaWxlQ29udGVudHNdKTsKKyAgICBFWFBFQ1RfVFJVRShbW2FyY2hpdmUgcmVndWxh
ckZpbGVDb250ZW50c10gaXNFcXVhbFRvRGF0YTpwYXN0ZWRBcmNoaXZlSW5mby5maWxlV3JhcHBl
ci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0iLCBwYXN0ZWRGaWxlSW5mby5jb250ZW50VHlwZSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJwdWJsaWMuZGlyZWN0b3J5IiwgcGFzdGVkRm9sZGVySW5mby5jb250ZW50VHlw
ZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi96aXAiLCBwYXN0ZWRBcmNoaXZl
SW5mby5jb250ZW50VHlwZSk7Cit9CisKICNwcmFnbWEgbWFyayAtIFBsYXRmb3JtLXNwZWNpZmlj
IHRlc3RzCiAKICNpZiBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353461</attachid>
            <date>2018-10-30 20:34:16 -0700</date>
            <delta_ts>2018-10-30 22:29:26 -0700</delta_ts>
            <desc>Try to fix the Windows build (5)</desc>
            <filename>bug-190530-20181030203415.patch</filename>
            <type>text/plain</type>
            <size>46170</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFmNDQ3ZDE1N2JlMDJh
MzA1Y2UyMDk2MDdlNTc5ZjYxNjM3YmNhOS4uYThlZGI1ZWNkNjgyZjQ3NTQ1NDllNmYwNTAxMWZm
NzMyNjFmYjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE4LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQXR0
YWNobWVudCBkcm9wcGVkIGZyb20gb25lIHdlYiB2aWV3IHRvIGFub3RoZXIgaXMgbWlzc2luZyBp
dHMgZmlsZSB3cmFwcGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA1MzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MjMyMTQ5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNv
cHlpbmcgYW5kIHBhc3RpbmcgYXR0YWNobWVudCBlbGVtZW50cyBhY3Jvc3Mgd2ViIHZpZXdzIGJ5
IGVuY29kaW5nIGFuZCBhZGRpbmcgZmlsZSB3cmFwcGVyCisgICAgICAgIGRhdGEgYXMgc3VicmVz
b3VyY2VzIGluIHRoZSB3ZWIgYXJjaGl2ZSB3aGVuIHdyaXRpbmcgc2VsZWN0ZWQgd2ViIGNvbnRl
bnQgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB0aGVuIGRlY29kaW5nCisgICAgICAgIGFuZCBjcmVh
dGluZyBOU0ZpbGVXcmFwcGVycyB1cG9uIHJlYWRpbmcgd2ViIGNvbnRlbnQuCisKKyAgICAgICAg
VGVzdDogV0tBdHRhY2htZW50VGVzdHMuQ29weUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWdpc3RlckF0dGFj
aG1lbnRzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAgIEFkZCByZWdp
c3RlckF0dGFjaG1lbnRzKCksIHdoaWNoIHJlZ2lzdGVycyBfV0tBdHRhY2htZW50cyBpbiB0aGUg
VUkgcHJvY2VzcyBnaXZlbiBhIGxpc3Qgb2YKKyAgICAgICAgU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLiBUaGlzIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXJzKCksIGJ1dCBkaWZmZXJzIGluIHRoYXQgKDEpIGl0CisgICAgICAgIHNlbmRzIHNlcmlhbGl6
ZWQgZmlsZSB3cmFwcGVyIGRhdGEsIGFuZCAoMikgaXQgc2VuZHMgYSBsaXN0IG9mIHNlcmlhbGl6
ZWQgYXR0YWNobWVudHMsIHJhdGhlciB0aGFuIGluZm9ybWF0aW9uCisgICAgICAgIGFib3V0IGp1
c3QgYSBzaW5nbGUgYXR0YWNobWVudC4KKworICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YSwgYSBzdHJ1Y3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gc2VyaWFsaXpl
IGFuZCBkZXNlcmlhbGl6ZSBhbgorICAgICAgICBhdHRhY2htZW50LiBUaGVzZSBhcmUgdXNlZCBi
b3RoIHdoZW4gd3JpdGluZyBhdHRhY2htZW50IGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQsIGFuZCB3
aGVuIGNvbnN1bWluZyBhdHRhY2htZW50CisgICAgICAgIGRhdGEgdXBvbiBwYXN0ZS4KKworICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKworICAgICAgICBB
ZGQgYSBzdGVwIHdoZW4gcGFzdGluZyByaWNoIGNvbnRlbnQgd2l0aCBhdHRhY2htZW50cywgdG8g
Y29sbGVjdCBhbmQgc2VuZCBzZXJpYWxpemVkIGF0dGFjaG1lbnRzIHRvIHRoZSBjbGllbnQuCisg
ICAgICAgIEFsc28sIGRyaXZlLWJ5IGZpeDogZG9uJ3QgV1RGTW92ZSgpIHRoZSBSZWYgaGVyZSBp
ZiBpdCdzIHN0aWxsIGdvaW5nIHRvIGJlIHVzZWQgYmVsb3cuCisKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmFyY2hpdmVSZXNvdXJjZVVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKworICAgICAgICBBZGQgYSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uIHRv
IGNvbXB1dGUgYSBVUkwgdGhhdCByZXByZXNlbnRzIHRoZSBkYXRhIGZvciB0aGUgZ2l2ZW4gYXR0
YWNobWVudCBpZGVudGlmaWVyLCBmb3IKKyAgICAgICAgdXNlIGluIGEgd2ViIGFyY2hpdmUgcmVz
b3VyY2UuCisKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50
c0lmTmVjZXNzYXJ5KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRl
IGFuZCBhcHBlbmQgQXJjaGl2ZVJlc291cmNlcyByZXByZXNlbnRpbmcgYXR0YWNobWVudCBlbGVt
ZW50IGRhdGEgd2hlbiB3cml0aW5nCisgICAgICAgIGF0dGFjaG1lbnRzIHRvIHRoZSBwYXN0ZWJv
YXJkIHZpYSB3ZWIgYXJjaGl2ZSBkYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlm
aWVycyk6CisKIDIwMTgtMTAtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBvYnNvbGV0ZSBNQVhfQUxMT1dFRCBtYWNyb3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODEyMGVkYWIyNTY2ZjBlNzhjMThmMDIxNzYwODViZDM4ZWY0NmE2YS4uZGQzOWZk
YTRjMjAxNGUwM2VmYjM1NzhkOTUyNTFmYzcyM2NkNjE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
OSBAQAorMjAxOC0xMC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ29jb2FdIEF0dGFjaG1lbnQgZHJvcHBlZCBmcm9tIG9uZSB3ZWIgdmlldyB0
byBhbm90aGVyIGlzIG1pc3NpbmcgaXRzIGZpbGUgd3JhcHBlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNTMwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTIzMjE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICBBZGQgSVBDIGVu
Y29kaW5nL2RlY29kaW5nIHN1cHBvcnQgZm9yIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorCisgICAg
ICAgIEFkZCBhIG1ldGhvZCB0byBzZXJpYWxpemUgYW5kIHJldHVybiBhdHRhY2htZW50IGluZm8g
YXMgYSBibG9iIG9mIGRhdGEuCisKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJv
bVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIHVw
ZGF0ZSB0aGUgYXR0YWNobWVudCwgZ2l2ZW4gYSBzZXJpYWxpemVkIGJsb2Igb2YgZGF0YS4gT24g
Q29jb2EgcGxhdGZvcm1zLCB0aGlzIGZhaWxzCisgICAgICAgIGdyYWNlZnVsbHkgaWYgdGhlIHNl
cmlhbGl6ZWQgZGF0YSBjYW5ub3QgYmUgZGVjb2RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Bh
Z2VDbGllbnRJbXBsQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29j
b2E6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsQ29jb2E6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdyYXBwZXJJ
bnN0YW5jZSk6IERlbGV0ZWQuCisKKyAgICAgICAgQWRkIGFuIGFkZGl0aW9uYWwgaG9vayB0byBy
ZXR1cm4gdGhlIGxpc3Qgb2YgTlNGaWxlV3JhcHBlciBzdWJjbGFzc2VzIHN1aXRhYmxlIGZvciBk
ZXNlcmlhbGl6YXRpb24uIFRoaXMKKyAgICAgICAgYXJyYXkgY29udGFpbnMgKGF0IG1pbmltdW0p
IE5TRmlsZVdyYXBwZXIsIGJ1dCBtYXkgYWRkaXRpb25hbGx5IGluY2x1ZGUgYSBjdXN0b20gTlNG
aWxlV3JhcHBlciBzdWJjbGFzcywgaWYKKyAgICAgICAgY29uZmlndXJlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnQ6OmFs
bG9jRmlsZVdyYXBwZXJJbnN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnQ6OnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcyBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnQ6OmFsbG9jRmlsZVdyYXBwZXJJbnN0YW5jZSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJBdHRhY2htZW50c0Zyb21TZXJpYWxpemVkRGF0YSk6CisKKyAgICAg
ICAgUmVnaXN0ZXJzIHRoZSBnaXZlbiBzZXJpYWxpemVkIGF0dGFjaG1lbnQgZGF0YSwgY3JlYXRp
bmcgbmV3IF9XS0F0dGFjaG1lbnQgaW5zdGFuY2VzIGlmIG5lY2Vzc2FyeS4gQ3VycmVudGx5LAor
ICAgICAgICB0aGlzIGRvZXMgbm90IHVwZGF0ZSB0aGUgZmlsZSB3cmFwcGVycyBvZiBleGlzdGlu
ZyBfV0tBdHRhY2htZW50czsgd2Ugc2hvdWxkIHJldmlzaXQgdGhpcyBpbiB0aGUgZnV0dXJlIHRv
IHNlZQorICAgICAgICBpZiB3ZSBjYW4gYWRkaXRpb25hbGx5IHVwZGF0ZSBmaWxlIHdyYXBwZXJz
IGZvciBleGlzdGluZyBhdHRhY2htZW50cywgd2l0aG91dCBicmVha2luZyB0aGUgY2FzZSB3aGVy
ZSB0aGUgdXNlcgorICAgICAgICBjb3BpZXMgYW5kIHBhc3RlcyBvciBkcmFncyBhbmQgZHJvcHMg
YXR0YWNobWVudHMgd2l0aGluIGEgc2luZ2xlIHdlYiB2aWV3IGFuZCB0aGUgY2xpZW50IGV4cGVj
dHMgX1dLQXR0YWNobWVudAorICAgICAgICBpbnN0YW5jZXMgdG8gYmUgcmV1c2VkLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRl
bnRpZmllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyk6
CisKKyAgICAgICAgSW1wbGVtZW50IGEgbmV3IElQQyBob29rIHRvIGZldGNoIGFuIGFycmF5IG9m
IHNlcmlhbGl6ZWQgYXR0YWNobWVudCBkYXRhIGJsb2JzLCBnaXZlbiBhIGxpc3Qgb2YgYXR0YWNo
bWVudAorICAgICAgICBpZGVudGlmaWVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTgtMTAtMzAgIERld2VpIFpodSAgPGRl
d2VpX3podUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSAnUHJvY2Vzc1N3YXBPbkNyb3NzU2l0
ZU5hdmlnYXRpb25FbmFibGVkJyB0byAnZXhwZXJpbWVudGFsJyBjYXRlZ29yeS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMWQy
NWZkODUxYTZlMjFhODFjZWUzZmY3ZjZjNjMzZWFjNmQyNTE2Li5jNzg1MGUzNTUyNTI3YTY5MjIy
Yjk0NmUyMzg0MWY3YWEwODZmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODg5LDYgKzQ4ODksNyBAQAogCQlGNDk3ODY4
ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIg
LyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5n
SGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5q
cyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJ
RjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENDNENjQyMTg4
MDJFNjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0RTU3RURDMjEzRjNGNUYwMDRF
QTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRjRFNTdFRTEyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2Vy
RXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNTA2NjRG
ODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY2MTU3RjUyREMwMEFDMjI2RiAvKiBG
b3JtQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTQ3OTgsNiArMTQ3OTksNyBAQAogCQlGNDhEMkFB
MzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OEQyQUE0MjE1OTc0MEQwMEM2
NzUyQiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFC
IC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRlbUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENDNENjQyMTg4MDJFNjAwRUNF
Q0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdF
REEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0RTU3RURGMjEzRjQzNEEwMDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VFMDIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5T
Rm9udE1hbmFnZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNGb250
TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjIxLDYg
KzIwNjIzLDcgQEAKIAkJCQk5MzMwOURCQjA5OUU2NDkxMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuaCAqLywKIAkJCQk1MTQwNUM4NjE5MEIwMTQ0MDA3NTRGOTQgLyogU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcCAqLywKIAkJCQk1MTQwNUM4NzE5MEIwMTQ0MDA3NTRGOTQgLyog
U2VsZWN0aW9uUmVjdEdhdGhlcmVyLmggKi8sCisJCQkJRjRENDNENjQyMTg4MDJFNjAwRUNFQ0FD
IC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oICovLAogCQkJCTkzMzA5REMwMDk5RTY0OTEw
MDU2RTU4MSAvKiBTZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEQzEw
OTlFNjQ5MTAwNTZFNTgxIC8qIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggKi8sCiAJCQkJQjhE
QkRCNDcxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwICovLApAQCAt
MzA3MDQsNiArMzA3MDcsNyBAQAogCQkJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxl
Y3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDMxMDdCRTIxOENDMTlERTAwQ0MxOEU4
IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MzIyQUMx
NDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
RDQzRDY2MjE4ODAzOEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxOERGMzM1MThBQUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYx
IC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDM1OTVhMDQwZjJmYmIwMzU1ZjdmMTMyMTM5MjdkNDY0MjBhYjU5OWYuLjBjNjM4MTExZjAzYThk
YzliNTdmMmMwY2I4MGU3MmUyYjk0Y2U2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTg1LDggKzg1LDEwIEBACiAjaW5jbHVkZSAiUmVwbGFjZVJhbmdlV2l0aFRleHRDb21tYW5k
LmgiCiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2ltcGxpZnlNYXJrdXBDb21tYW5kLmgi
CiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oIgpAQCAtNDAxMCw2ICs0MDEyLDEyIEBAIHZvaWQgRWRpdG9yOjpyZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
CiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVy
LCBjb250ZW50VHlwZSwgZmlsZVBhdGgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRh
Y2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmIGRhdGEpCit7CisgICAg
aWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQorICAgICAgICBjbGllbnQtPnJlZ2lz
dGVyQXR0YWNobWVudHMoV1RGTW92ZShkYXRhKSk7Cit9CisKIHZvaWQgRWRpdG9yOjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIHsKICAgICBp
ZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBiOTYxMWUzN2JlMDg3NGNiYWI3MzUwN2M0ZTcyMmEwZWJmMzMwOTM2Li4zYmM4YTA2MGVl
ZGU0YzMxOTU4MjllMTNmMWQ1NDIzNzUwMmNlMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTg2LDYgKzg2LDEwIEBAIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0Owogc3RydWN0IFBh
c3RlYm9hcmRVUkw7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKK3N0cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisjZW5k
aWYKKwogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9Owog
ZW51bSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJ
c0RpdiwgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQIH07CiAKQEAgLTUwOSw4ICs1MTMsOSBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICov
LCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVy
PiYmKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxl
UGF0aCAqLyk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvbmVB
dHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHRvSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRJbnNlcnRBdHRhY2htZW50RWxlbWVudChIVE1M
QXR0YWNobWVudEVsZW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMDI4MjM1NjkwMDZmNWNmOWRiYjRl
ZmMzNzNlNjdlZjA1ZjE5YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hh
cmVkQnVmZmVyOworCitzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKKyAgICBTdHJp
bmcgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMGI3OWVhZThmMTM2NzJlNTE4MDE5
ZmM2Y2YxM2ZiYWQwNDJjNDIwOC4uYWVmZWIxYWYxZjY5M2MzOTEyYmRmOGQ2OGQzZmQ5ZDVjYzc2
NWZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgIlBhZ2UuaCIKICNp
bXBvcnQgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKKyNpbXBvcnQgIlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIgogI2ltcG9ydCAiU2V0
dGluZ3MuaCIKICNpbXBvcnQgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IuaCIKQEAgLTI3NCw2ICsyNzUsMjAgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIHVybFRvUmVzb3VyY2VNYXAuc2V0KHVybC5zdHJpbmco
KSwgc3VicmVzb3VyY2UuY29weVJlZigpKTsKICAgICB9CiAKKyAgICBWZWN0b3I8U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiBzZXJpYWxpemVkQXR0YWNobWVudERhdGE7CisgICAgZm9yIChhdXRv
JiBhdHRhY2htZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEF0dGFjaG1lbnRFbGVtZW50Pihm
cmFnbWVudCkpIHsKKyAgICAgICAgYXV0byByZXNvdXJjZVVSTCA9IEhUTUxBdHRhY2htZW50RWxl
bWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpKTsK
KyAgICAgICAgYXV0byByZXNvdXJjZUVudHJ5ID0gdXJsVG9SZXNvdXJjZU1hcC5maW5kKHJlc291
cmNlVVJMLnN0cmluZygpKTsKKyAgICAgICAgaWYgKHJlc291cmNlRW50cnkgPT0gdXJsVG9SZXNv
dXJjZU1hcC5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIHJl
c291cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgfQorCisgICAgaWYgKCFzZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQorICAgICAgICBmcmFtZS5lZGl0b3IoKS5y
ZWdpc3RlckF0dGFjaG1lbnRzKFdURk1vdmUoc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhKSk7CisK
ICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBlbGVtZW50c1RvUmVtb3ZlOwogICAgIFZlY3RvcjxB
dHRhY2htZW50SW5zZXJ0aW9uSW5mbz4gYXR0YWNobWVudEluc2VydGlvbkluZm87CiAgICAgZm9y
IChhdXRvJiBpbWFnZSA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxJbWFnZUVsZW1lbnQ+KGZyYWdt
ZW50KSkgewpAQCAtMzIzLDcgKzMzOCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVu
dFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAg
ICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKSAm
JiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGluZm8u
Y29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxI
VE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgICAg
IGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNB
dHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3Jl
YXRlKGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKLSAgICAgICAgICAgICAgICBpbWFn
ZS5zZXRBdHRhY2htZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKKyAgICAgICAgICAg
ICAgICBpbWFnZS5zZXRBdHRhY2htZW50RWxlbWVudChhdHRhY2htZW50LmNvcHlSZWYoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0
dHJpYnV0ZXMoaW5mby5kYXRhLT5zaXplKCksIGluZm8uY29udGVudFR5cGUsIGluZm8uZmlsZU5h
bWUpOwogICAgICAgICAgICAgICAgIHBhcmVudC0+cmVwbGFjZUNoaWxkKGF0dGFjaG1lbnQsIFdU
Rk1vdmUob3JpZ2luYWxFbGVtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAKaW5kZXggMGM2ODYwOWUxNTVkNGVkZjA3ZWI5YWI0MTA5NzExYzNj
Y2I1ODRiMC4uZWViNjkyNzdkY2IxYzE5YzhlYmRmY2FiNWI4ZmI2N2IwNDJhNDE0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJB
dHRhY2htZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVVJMUGFy
c2VyLmgiCiAjaW5jbHVkZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtODUsNiArODYs
MTMgQEAgY29uc3QgU3RyaW5nJiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmdldEF0dGFjaG1lbnRJ
ZGVudGlmaWVyKEhUTUxJbWFnZUVsZW1lbnQmIGkKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0K
IAorVVJMIEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHJlc291cmNlVVJMID0gVVJMUGFyc2VyKCJh
cHBsZXdlYmRhdGE6Ly9hdHRhY2htZW50LyJfcykucmVzdWx0KCk7CisgICAgcmVzb3VyY2VVUkwu
c2V0UGF0aChpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVzb3VyY2VVUkw7Cit9CisKIEZpbGUq
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6ZmlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmls
ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmlu
ZGV4IDA0MTA0MjY2MGJhNTBlMDAxZGJhMzI4MjhlMjA2YjlhYzhmNjQyYmMuLjAyMGRjNDAwYTc1
MWQ4OGY0ODNjNDUzNTk3ZTQxZWNlZWY4MTYwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MQXR0YWNo
bWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0QXR0YWNobWVudElk
ZW50aWZpZXIoSFRNTEltYWdlRWxlbWVudCYpOworICAgIHN0YXRpYyBVUkwgYXJjaGl2ZVJlc291
cmNlVVJMKGNvbnN0IFN0cmluZyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGJsb2JVUkwo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBGaWxlKiBmaWxlKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CmluZGV4IDBjNTg0NTIyYWI5YzY0YjdmN2Y1NDQ2NzlkY2JlNTdmNmRmNzgyNjIuLjg2MWUzOTky
NjEwZTBlNWZjOGQ5Mzk2NzIzNWRhY2VmNDYxNzUwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0zMiwxMCAr
MzIsMTMgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNp
bmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFt
ZVRyZWUuaCIKKyNpbmNsdWRlICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKQEAgLTQ3LDcgKzUwLDEwIEBACiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIK
KyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00NjQsNiArNDcwLDQyIEBAIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmFuZ2UqIHJh
bmdlKQogICAgIHJldHVybiBjcmVhdGUobWFya3VwU3RyaW5nLCAqZnJhbWUsIG5vZGVMaXN0LCBu
dWxscHRyKTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3N0YXRpYyB2
b2lkIGFkZFN1YnJlc291cmNlc0ZvckF0dGFjaG1lbnRFbGVtZW50c0lmTmVjZXNzYXJ5KEZyYW1l
JiBmcmFtZSwgY29uc3QgVmVjdG9yPE5vZGUqPiYgbm9kZXMsIFZlY3RvcjxSZWY8QXJjaGl2ZVJl
c291cmNlPj4mIHN1YnJlc291cmNlcykKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzOworICAgIGZvciAoYXV0
byogbm9kZSA6IG5vZGVzKSB7CisgICAgICAgIGlmICghaXM8SFRNTEF0dGFjaG1lbnRFbGVtZW50
Pihub2RlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gdW5pcXVlSWRl
bnRpZmllciA9IGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oKm5vZGUpLnVuaXF1ZUlk
ZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKHVuaXF1ZUlkZW50aWZpZXIuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWRlbnRpZmllcnMuYXBwZW5kKFdURk1vdmUo
dW5pcXVlSWRlbnRpZmllcikpOworICAgIH0KKworICAgIGlmIChpZGVudGlmaWVycy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGVkaXRvckNsaWVudCA9IGZyYW1lLmVk
aXRvcigpLmNsaWVudCgpOworICAgIGlmICghZWRpdG9yQ2xpZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGZyYW1lTmFtZSA9IGZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCk7CisgICAg
Zm9yIChhdXRvJiBkYXRhIDogZWRpdG9yQ2xpZW50LT5zZXJpYWxpemVkQXR0YWNobWVudERhdGFG
b3JJZGVudGlmaWVycyhXVEZNb3ZlKGlkZW50aWZpZXJzKSkpIHsKKyAgICAgICAgYXV0byByZXNv
dXJjZVVSTCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6YXJjaGl2ZVJlc291cmNlVVJMKGRhdGEu
aWRlbnRpZmllcik7CisgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoZGF0YS5kYXRhLnB0cigpLCBXVEZNb3ZlKHJlc291cmNlVVJMKSwgZGF0YS5taW1l
VHlwZSwgeyB9LCBmcmFtZU5hbWUpKQorICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChy
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9Cit9CisKKyNlbmRpZgorCiBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYg
bWFya3VwU3RyaW5nLCBGcmFtZSYgZnJhbWUsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzLCBX
VEY6OkZ1bmN0aW9uPGJvb2wgKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIpCiB7CiAgICAgYXV0byYg
cmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwpA
QCAtNTI4LDYgKzU3MCwxMCBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogICAgICAgICB9CiAg
ICAgfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBhZGRTdWJyZXNvdXJj
ZXNGb3JBdHRhY2htZW50RWxlbWVudHNJZk5lY2Vzc2FyeShmcmFtZSwgbm9kZXMsIHN1YnJlc291
cmNlcyk7CisjZW5kaWYKKwogICAgIC8vIElmIHdlIGFyZSBhcmNoaXZpbmcgdGhlIGVudGlyZSBw
YWdlLCBhZGQgYW55IGxpbmsgaWNvbnMgdGhhdCB3ZSBoYXZlIGRhdGEgZm9yLgogICAgIGlmICgh
bm9kZXMuaXNFbXB0eSgpICYmIG5vZGVzWzBdLT5pc0RvY3VtZW50Tm9kZSgpKSB7CiAgICAgICAg
IGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IGU4ZDEwYzI1NDE5ODQyYjFjMmZmOWE4
NjUzZmQ0MmQyMjVhMTA1MDEuLmE2NWQ4MGNlYTBmMjdkYWY0YmZkMjhhNWFkMDhlYTBhNjRjNDY0
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rpb24uaCIKKyNpbmNsdWRlICJT
ZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNp
bmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKICNpbmNsdWRlICJVbmRvU3RlcC5oIgpAQCAtNzUsMTEg
Kzc2LDEzIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3Ry
aW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25z
dCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8q
IGlkZW50aWZpZXIgKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbG9uZUF0dGFjaG1lbnREYXRh
KGNvbnN0IFN0cmluZyYgLyogZnJvbUlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogdG9J
ZGVudGlmaWVyICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkSW5zZXJ0QXR0YWNobWVudFdp
dGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5n
JiAvKiBzb3VyY2UgKi8sIGJvb2wgLyogaGFzRW5jbG9zaW5nSW1hZ2UgKi8pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZW1vdmVBdHRhY2htZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JikgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRh
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+IHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1cm4geyB9OyB9CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjNGM0Nzg4ZDJlOGM4NjBiOTk4YjA5ZjI3
ZTk4N2RhOTY0YmQzN2Y0Li5hYzRkOWJlZGY4ODBhYjA3M2UwYTVhOTk5YTE0MWM0YWRhMDFkZmY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQmxvYlBhcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRp
b25zLmg+CkBAIC02OSw2ICs3MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29y
ZGluYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJEYXRhLmg+CkBAIC0zMDEyLDQgKzMw
MTQsMzAgQEAgc3RkOjpvcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250
QXR0cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICByZXR1cm4gYXR0cmlidXRlczsK
IH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGEmIGRhdGEpCit7CisgICAg
ZW5jb2RlciA8PCBkYXRhLmlkZW50aWZpZXIgPDwgZGF0YS5taW1lVHlwZSA8PCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEuZ2V0KCkgfTsKK30KKworc3RkOjpvcHRp
b25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU3RyaW5nIG1pbWVUeXBl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIH0gLy8gbmFtZXNwYWNlIElQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBk
ODc4MThlN2JhNzdjOGQzMWExZDZhOWJjNzc0ZTRmODA5ZDZjM2MyLi5mNTA5MjE2MTZiMmJhNDU0
NzYyMjEwOGE4YjU4OGYwN2YwNjg4MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTY0LDYgKzE2NCwxMCBAQCBjbGFzcyBNZWRpYVNlc3Np
b25NZXRhZGF0YTsKIHN0cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YTsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiB1c2luZyBJREJLZXlQYXRo
ID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PjsKICNlbmRpZgpAQCAtNzIwLDYgKzcy
NCwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRBdHRy
aWJ1dGVzPiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0
ZXM+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5h
bWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggOWNjMDQxMGY3NDc0NGJhN2M2NjFhYzlkNWY1
ZWU3MjVjNjdjMjc5NS4uYTEzNGJmYWY2MzVhYmI0NDU3OTM3OTM2NDMxNGE4MDJlMjQ3MjBlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAt
OTYsNiArOTYsMTUgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3sKK30KKwogI2VuZGlmIC8v
ICFQTEFURk9STShDT0NPQSkKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKaW5kZXggYjhmYmJiZTliNWMyZjVlNjUxMmUwZGFmMmNmY2VmMzliZTlhZjNi
Yy4uNjRkMDI0MWU3MmUwZTI5OWE0NjUzNWU2YTM3YTRlZGI1NmJmMDNjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC04NSw2ICs4NSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1h
Z2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9v
bCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7
IH0KIAorICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29udGVudFR5cGUpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29u
c3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCmluZGV4IGI4NzcxMDJlZjVmOGRkMWU4ZGJjMjM5ZjBkN2M2NTExZGEzMjc0NTcu
LmI0ZWM5YzhlYjZjY2E0ZmQ3ODZkYzg3Y2M1YjU1ZGVkMjZhYWI3YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJBUElBdHRh
Y2htZW50LmgiCiAKKyNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvTUlN
RVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpAQCAtMzMsNiArMzQsNyBAQAogI2Vsc2UKICNpbXBvcnQgPENv
cmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KICNlbmRpZgorI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTEyNSw0ICsx
MjcsMzMgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1f
ZmlsZVdyYXBwZXI7CiB9CiAKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2ZpbGVXcmFwcGVyIHx8ICFtX3dlYlBhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgTlNEYXRhICpzZXJpYWxpemVkRGF0YSA9IHNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RP
YmplY3QobV9maWxlV3JhcHBlci5nZXQoKSk7CisgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworfQorCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBz
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkK
K3sKKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZXJp
YWxpemVkRGF0YSA9IHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbi0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNGaWxlV3Jh
cHBlciAqZmlsZVdyYXBwZXIgPSB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzRnJvbURhdGEobV93
ZWJQYWdlLT5wYWdlQ2xpZW50KCkuc2VyaWFsaXphYmxlRmlsZVdyYXBwZXJDbGFzc2VzKCksIHNl
cmlhbGl6ZWREYXRhLmdldCgpKTsKKyAgICBpZiAoIWZpbGVXcmFwcGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBzZXRGaWxlV3JhcHBlckFuZFVwZGF0ZUNvbnRlbnRUeXBlKGZpbGVXcmFwcGVy
LCBjb250ZW50VHlwZSk7CisgICAgbV93ZWJQYWdlLT51cGRhdGVBdHRhY2htZW50QXR0cmlidXRl
cygqdGhpcywgW10gKGF1dG8pIHsgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2NvYS5oCmlu
ZGV4IGQ1MTU0ZWQzNTU1NDJiMTliMzE4M2EzMTViNzA0OGYzYzM3ZDZlMWEuLmQ3MjczNzJiNjY3
MTE2NTYxMzAyOGY2Y2FjMTVhNTY4YmFiN2NlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLmgKQEAgLTQ1LDcgKzQ1LDggQEAg
cHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBkaWRJbnNl
cnRBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYsIGNvbnN0IFN0cmluZyYgc291cmNlKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JikgZmluYWw7
Ci0gICAgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgZmluYWw7Cisg
ICAgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QgZmluYWw7
CisgICAgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IGZpbmFs
OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BhZ2VDbGllbnRJbXBsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCmluZGV4IDFmOWQyOTIxYjM4YTEwOGQyMDc4
NDRiNTZjMjU5MTNkN2NhNmMxMTYuLjc1YWNlOWEwMjhmMzE0YmE0MzA0MWZmYTQ1MGYzNTcwOWQz
ZmEyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BhZ2VDbGll
bnRJbXBsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGFnZUNs
aWVudEltcGxDb2NvYS5tbQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsQ29j
b2E6OmRpZFJlbW92ZUF0dGFjaG1lbnQoQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQogI2Vu
ZGlmCiB9CiAKLU5TRmlsZVdyYXBwZXIgKlBhZ2VDbGllbnRJbXBsQ29jb2E6OmFsbG9jRmlsZVdy
YXBwZXJJbnN0YW5jZSgpCitOU0ZpbGVXcmFwcGVyICpQYWdlQ2xpZW50SW1wbENvY29hOjphbGxv
Y0ZpbGVXcmFwcGVySW5zdGFuY2UoKSBjb25zdAogewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAg
Q2xhc3MgY2xzID0gbV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0dGFjaG1lbnRGaWxlV3JhcHBl
ckNsYXNzID86IFtOU0ZpbGVXcmFwcGVyIHNlbGZdOwpAQCAtNzYsNiArNzYsMTcgQEAgTlNGaWxl
V3JhcHBlciAqUGFnZUNsaWVudEltcGxDb2NvYTo6YWxsb2NGaWxlV3JhcHBlckluc3RhbmNlKCkK
ICNlbmRpZgogfQogCitOU1NldCAqUGFnZUNsaWVudEltcGxDb2NvYTo6c2VyaWFsaXphYmxlRmls
ZVdyYXBwZXJDbGFzc2VzKCkgY29uc3QKK3sKKyAgICBDbGFzcyBkZWZhdWx0RmlsZVdyYXBwZXJD
bGFzcyA9IE5TRmlsZVdyYXBwZXIuc2VsZjsKKyNpZiBXS19BUElfRU5BQkxFRAorICAgIENsYXNz
IGNvbmZpZ3VyZWRGaWxlV3JhcHBlckNsYXNzID0gbV93ZWJWaWV3LmNvbmZpZ3VyYXRpb24uX2F0
dGFjaG1lbnRGaWxlV3JhcHBlckNsYXNzOworICAgIGlmIChjb25maWd1cmVkRmlsZVdyYXBwZXJD
bGFzcyAmJiBjb25maWd1cmVkRmlsZVdyYXBwZXJDbGFzcyAhPSBkZWZhdWx0RmlsZVdyYXBwZXJD
bGFzcykKKyAgICAgICAgcmV0dXJuIFtOU1NldCBzZXRXaXRoT2JqZWN0czpjb25maWd1cmVkRmls
ZVdyYXBwZXJDbGFzcywgZGVmYXVsdEZpbGVXcmFwcGVyQ2xhc3MsIG5pbF07CisjZW5kaWYKKyAg
ICByZXR1cm4gW05TU2V0IHNldFdpdGhPYmplY3RzOmRlZmF1bHRGaWxlV3JhcHBlckNsYXNzLCBu
aWxdOworfQorCiAjZW5kaWYKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCBiOGEwYzE0MmVkOGE3MmQyNjI5NWIxMmU3MTMwODUxNTgyODJhZTRiLi4xZGVlZDI5
NzY4ZDg3NzVkZjEwYjk1YjA3YTY3NzA5ZTE2MzNiMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC00NSw2ICs0NSw3IEBACiAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9C
SkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKK09CSkNfQ0xBU1MgTlNTZXQ7CiBPQkpDX0NMQVNTIF9X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTQ0NSw3ICs0NDYs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnQoQVBJOjpB
dHRhY2htZW50JiwgY29uc3QgU3RyaW5nJiBzb3VyY2UpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVBdHRhY2htZW50KEFQSTo6QXR0YWNobWVudCYpIHsgfQogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHZpcnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NGaWxlV3JhcHBlckluc3RhbmNl
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTlNGaWxlV3JhcHBlciAqYWxsb2NG
aWxlV3JhcHBlckluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1
YWwgTlNTZXQgKnNlcmlhbGl6YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KICNlbmRpZgogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggOGVjNGJmZDVhNWY5ZDkyZDExNWQyZGE1ZGRhMTc4ZjI5YjUz
ZWJmOS4uZTYzZWNmNTBmMDVlY2I0MWQwNzY0NDVlNjRhN2JiMjhlODhkODdiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03OTAwLDYgKzc5MDAsMTUgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKQogICAgICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2ht
ZW50TWFwLnNldChpZGVudGlmaWVyLCBlbnN1cmVBdHRhY2htZW50KGlkZW50aWZpZXIpKTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERh
dGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJiBkYXRhKQorewor
ICAgIGZvciAoYXV0byYgc2VyaWFsaXplZERhdGEgOiBkYXRhKSB7CisgICAgICAgIGF1dG8gaWRl
bnRpZmllciA9IFdURk1vdmUoc2VyaWFsaXplZERhdGEuaWRlbnRpZmllcik7CisgICAgICAgIGlm
ICghYXR0YWNobWVudEZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgICAgICBlbnN1
cmVBdHRhY2htZW50KGlkZW50aWZpZXIpLT51cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFdURk1vdmUoc2VyaWFsaXplZERhdGEuZGF0YSksIFdURk1vdmUoc2VyaWFsaXplZERhdGEu
bWltZVR5cGUpKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9uZUF0dGFjaG1l
bnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9JZGVu
dGlmaWVyKQogewogICAgIGF1dG8gbmV3QXR0YWNobWVudCA9IGVuc3VyZUF0dGFjaG1lbnQodG9J
ZGVudGlmaWVyKTsKQEAgLTc5MjUsNiArNzkzNCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52
YWxpZGF0ZUFsbEF0dGFjaG1lbnRzKCkKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRh
Y2htZW50TWFwLmNsZWFyKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0
YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmll
cnMsIFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiBzZXJpYWxpemVk
RGF0YSkKK3sKKyAgICBmb3IgKGF1dG8gaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAg
ICAgIGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIp
OworICAgICAgICBpZiAoIWF0dGFjaG1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBhdXRvIGRhdGEgPSBhdHRhY2htZW50LT5jcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKTsKKyAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgc2VyaWFsaXplZERhdGEuYXBwZW5kKHsgaWRlbnRpZmllciwgYXR0YWNobWVudC0+bWltZVR5
cGUoKSwgZGF0YS5yZWxlYXNlTm9uTnVsbCgpIH0pOworICAgIH0KK30KKwogI2lmICFQTEFURk9S
TShDT0NPQSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBsYXRmb3JtUmVnaXN0ZXJBdHRhY2htZW50
KFJlZjxBUEk6OkF0dGFjaG1lbnQ+JiYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBjN2Fl
NWQ5ZDYzZDAxZjJiYzgyNDVlMjQ1NWMzYTA3NDM3Y2E4ZGUuLjI1OGFmOTJiNDUxZmM2YmZlM2E0
YTJlODhkODZjNTU4ODVjZTM3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0yMzEsNiArMjMxLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhOwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiBjbGFzcyBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OwogY2xhc3MgU2VjS2V5UHJveHlTdG9yZTsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U7CiBjbGFzcyBVc2VyRGF0YTsKIGNsYXNz
IFZpZXdTbmFwc2hvdDsKIGNsYXNzIFZpc2l0ZWRMaW5rU3RvcmU7CkBAIC0xMzQ0LDYgKzEzNDUs
NyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6QXR0YWNobWVudD4gYXR0YWNobWVudEZvcklk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKICAgICB2b2lkIGluc2Vy
dEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgRnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBBUEk6OkF0dGFjaG1lbnQmLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4mKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAt
MTgyOSw2ICsxODMxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKKyAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudHNGcm9tU2VyaWFsaXplZERhdGEoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvbmVBdHRhY2htZW50RGF0YShjb25zdCBT
dHJpbmcmIGZyb21JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRvSWRlbnRpZmllcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBjY2I5ODY0OWFjMWVjZjA0MTA2N2IzZDA0MWQ4N2RlYjM0YWQzYjUxLi4xZmU4NjBlM2M2YTYy
YWNhNDYwNTViNTVmNTdmOGFhZGZiNGZmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MzQsOSArNTM0LDExIEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgUmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZy
b21EYXRhKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgY29udGVudFR5cGUsIFN0cmluZyBwcmVm
ZXJyZWRGaWxlTmFtZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAg
UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChTdHJpbmcgaWRlbnRpZmll
ciwgU3RyaW5nIGNvbnRlbnRUeXBlLCBTdHJpbmcgZmlsZVBhdGgpCiAgICAgUmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihTdHJpbmcgaWRlbnRpZmllcikKKyAgICByZWdpc3RlckF0dGFjaG1l
bnRzRnJvbVNlcmlhbGl6ZWREYXRhKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+IGRhdGEpCiAgICAgQ2xvbmVBdHRhY2htZW50RGF0YShTdHJpbmcgZnJvbUlkZW50aWZp
ZXIsIFN0cmluZyB0b0lkZW50aWZpZXIpCiAgICAgRGlkSW5zZXJ0QXR0YWNobWVudFdpdGhJZGVu
dGlmaWVyKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgc291cmNlLCBib29sIGhhc0VuY2xvc2lu
Z0ltYWdlKQogICAgIERpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihTdHJpbmcgaWRl
bnRpZmllcikKKyAgICBTZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhWZWN0
b3I8U3RyaW5nPiBpZGVudGlmaWVycykgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0
YWNobWVudERhdGE+IHNlcmFsaXplZERhdGEpIExlZ2FjeVN5bmMKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDdiOTBmNTkwNGRkZDViZTZlMmZlMjU5MzRhNDA4NjU5
YWFjZmVmYzEuLmFjZGUyZjAwZDdkZDMxN2E0NzU0YTVmMWViNjAzYmE3ZGU4YTljOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9L
ZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVsbENoZWNrZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJh
dG9yLmg+CkBAIC0xNjUsNiArMTY2LDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5h
bWUsIHsgZGF0YSB9KSk7CiB9CiAKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYgZGF0YSkK
K3sKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJBdHRh
Y2htZW50c0Zyb21TZXJpYWxpemVkRGF0YShXVEZNb3ZlKGRhdGEpKSk7Cit9CisKIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21GaWxlUGF0aChpZGVudGlmaWVyLCBjb250ZW50VHlw
ZSwgZmlsZVBhdGgpKTsKQEAgLTE5MCw2ICsxOTYsMTMgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmRpZFJlbW92ZUF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVtb3ZlQXR0
YWNobWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpKTsKIH0KIAorVmVjdG9yPFNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YT4gV2ViRWRpdG9yQ2xpZW50OjpzZXJpYWxpemVkQXR0YWNobWVudERh
dGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMpCit7Cisg
ICAgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2VyaWFsaXplZERh
dGE7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXJpYWxp
emVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhpZGVudGlmaWVycyksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YUZvcklkZW50aWZpZXJzOjpSZXBs
eShzZXJpYWxpemVkRGF0YSkpOworICAgIHJldHVybiBzZXJpYWxpemVkRGF0YTsKK30KKwogI2Vu
ZGlmCiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpkaWRBcHBseVN0eWxlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAppbmRleCBkZDZmZTY5YzE1OTcwYjc0NGU1MmVkOGRkMjU3MWMyMWFkMzI0MWViLi40YjVh
NmQzYWRkYjQ0M2U5ODAwZjBhNTU0N2JiOTc5ZmM2NGQ4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC02MywxMCArNjMsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
IGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6
OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBjbG9uZUF0dGFj
aG1lbnREYXRhKGNvbnN0IFN0cmluZyYgZnJvbUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdG9J
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEluc2VydEF0dGFjaG1lbnRXaXRoSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlLCBib29s
IGhhc0VuY2xvc2luZ0ltYWdlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlbW92ZUF0dGFjaG1lbnRX
aXRoSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGZpbmFsOwogICAgIGJvb2wg
c3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gc2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KSBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZjEwN2Y1
MTE3N2E2ZDI5MjM3MzFkYWZhZDZjYjM2MWEzMDQzMjg0Li4xNGI1OGEwZjhmMTdlODZkZGU3Y2Rm
M2FjNjA3YjhjZjgyOWEzMjI5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTAtMzAgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBBdHRhY2htZW50IGRy
b3BwZWQgZnJvbSBvbmUgd2ViIHZpZXcgdG8gYW5vdGhlciBpcyBtaXNzaW5nIGl0cyBmaWxlIHdy
YXBwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDUzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUyMzIxNDk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IGNv
cHlpbmcgZGlmZmVyZW50IHR5cGVzIG9mIGF0dGFjaG1lbnRzIGFuZCBwYXN0aW5nIGluIGEgbmV3
IHdlYiB2aWV3IGluc2VydHMKKyAgICAgICAgYXR0YWNobWVudHMgaW4gdGhlIHNlY29uZCB3ZWIg
dmlldyB0aGF0IGFyZSBiYWNrZWQgYnkgX1dLQXR0YWNobWVudCBvYmplY3RzLCB3aG9zZSBOU0Zp
bGVXcmFwcGVycyBob2xkIGRhdGEgdGhhdAorICAgICAgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBv
cmlnaW5hbCBmaWxlIHdyYXBwZXJzIHVzZWQgdG8gaW5zZXJ0IGF0dGFjaG1lbnRzIGluIHRoZSBm
aXJzdCB3ZWIgdmlldy4KKworICAgICAgICBFeGlzdGluZyBBUEkgdGVzdHMgdmVyaWZ5IHRoYXQg
d2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nIHdpdGhpbiBhIHNpbmdsZSB3ZWIgdmlldywgdGhlIHBh
c3RlZCBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgaXMgc3RpbGwgYmFja2VkIGJ5IHRoZSBz
YW1lIE5TRmlsZVdyYXBwZXIgaW5zdGFuY2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTgtMTAtMzAgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBTdXBwb3J0IGFsdGVybmF0ZSBzaW1jdGwgbGlz
dCBvdXRwdXRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCA5M2ZiODdhMWQ1M2RkNzg2MDViMTBk
MzBlMGIwNTJmOGIxMjc1NmMxLi43OTY0ZGYxYTUxNTc3OTYxMzhkMTc5NGYyYjUxMjIxMjgyMzNj
NTRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTE0NjIsNiArMTQ2Miw1MiBAQCBURVNUKFdL
QXR0YWNobWVudFRlc3RzLCBDdXN0b21GaWxlV3JhcHBlclN1YmNsYXNzKQogICAgIEVYUEVDVF9F
UShbRmlsZVdyYXBwZXIgc2VsZl0sIFtpbnNlcnRlZEF0dGFjaG1lbnRzLmZpcnN0T2JqZWN0Lmlu
Zm8uZmlsZVdyYXBwZXIgY2xhc3NdKTsKIH0KIAorVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQ29w
eUFuZFBhc3RlQmV0d2VlbldlYlZpZXdzKQoreworICAgIGF1dG8gZmlsZSA9IGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6dGVzdEhUTUxE
YXRhKCldKTsKKyAgICBbZmlsZSBzZXRQcmVmZXJyZWRGaWxlbmFtZTpAInRlc3QuZm9vYmFyIl07
CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6dGVzdEltYWdlRGF0YSgpXSk7CisgICAgYXV0byBkb2N1bWVu
dCA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6dGVzdFBERkRhdGEoKV0pOworICAgIGF1dG8gZm9sZGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXREaXJlY3RvcnlXaXRoRmlsZVdyYXBwZXJzOkB7IEAiaW1hZ2Uu
cG5nIjogaW1hZ2UuZ2V0KCksIEAiZG9jdW1lbnQucGRmIjogZG9jdW1lbnQuZ2V0KCkgfV0pOwor
ICAgIFtmb2xkZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJmb2xkZXIiXTsKKyAgICBhdXRvIGFy
Y2hpdmUgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnRlc3RaSVBEYXRhKCldKTsKKyAgICBbYXJjaGl2ZSBzZXRQcmVmZXJyZWRGaWxl
bmFtZTpAImFyY2hpdmUiXTsKKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBhdXRv
IGZpcnN0V2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICAgICAg
W2ZpcnN0V2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlV3JhcHBl
cjpmaWxlLmdldCgpIGNvbnRlbnRUeXBlOkAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl07Cisg
ICAgICAgIFtmaXJzdFdlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmls
ZVdyYXBwZXI6Zm9sZGVyLmdldCgpIGNvbnRlbnRUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVGb2xkZXJdOworICAgICAgICBbZmlyc3RXZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRB
dHRhY2htZW50V2l0aEZpbGVXcmFwcGVyOmFyY2hpdmUuZ2V0KCkgY29udGVudFR5cGU6QCJhcHBs
aWNhdGlvbi96aXAiXTsKKyAgICAgICAgW2ZpcnN0V2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAg
ICAgICAgW2ZpcnN0V2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiQ29weSIgYXJndW1lbnQ6
bmlsIGNvbXBsZXRpb246bmlsXTsKKyAgICB9CisKKyAgICBhdXRvIHNlY29uZFdlYlZpZXcgPSB3
ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRh
dGVzRm9yU2NvcGUgb2JzZXJ2ZXIoc2Vjb25kV2ViVmlldy5nZXQoKSk7CisgICAgW3NlY29uZFdl
YlZpZXcgcGFzdGU6bmlsXTsKKyAgICBbc2Vjb25kV2ViVmlldyBleHBlY3RFbGVtZW50Q291bnQ6
MyB0YWdOYW1lOkAiYXR0YWNobWVudCJdOworICAgIEVYUEVDVF9FUSgzVSwgb2JzZXJ2ZXIub2Jz
ZXJ2ZXIoKS5pbnNlcnRlZC5jb3VudCk7CisKKyAgICBOU1N0cmluZyAqcGxhaW5GaWxlSWRlbnRp
ZmllciA9IFtzZWNvbmRXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdhdHRhY2htZW50W3RpdGxlXj10ZXN0XScpLnVuaXF1ZUlkZW50
aWZpZXIiXTsKKyAgICBOU1N0cmluZyAqZm9sZGVySWRlbnRpZmllciA9IFtzZWNvbmRXZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdh
dHRhY2htZW50W3RpdGxlPWZvbGRlcl0nKS51bmlxdWVJZGVudGlmaWVyIl07CisgICAgTlNTdHJp
bmcgKmFyY2hpdmVJZGVudGlmaWVyID0gW3NlY29uZFdlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2F0dGFjaG1lbnRbdGl0bGU9YXJj
aGl2ZV0nKS51bmlxdWVJZGVudGlmaWVyIl07CisKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqcGFz
dGVkRmlsZUluZm8gPSBbc2Vjb25kV2ViVmlldyBfYXR0YWNobWVudEZvcklkZW50aWZpZXI6cGxh
aW5GaWxlSWRlbnRpZmllcl0uaW5mbzsKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqcGFzdGVkRm9s
ZGVySW5mbyA9IFtzZWNvbmRXZWJWaWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjpmb2xkZXJJ
ZGVudGlmaWVyXS5pbmZvOworICAgIF9XS0F0dGFjaG1lbnRJbmZvICpwYXN0ZWRBcmNoaXZlSW5m
byA9IFtzZWNvbmRXZWJWaWV3IF9hdHRhY2htZW50Rm9ySWRlbnRpZmllcjphcmNoaXZlSWRlbnRp
Zmllcl0uaW5mbzsKKworICAgIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU0ZpbGVXcmFwcGVy
ICo+ICpwYXN0ZWRGb2xkZXJDb250ZW50cyA9IHBhc3RlZEZvbGRlckluZm8uZmlsZVdyYXBwZXIu
ZmlsZVdyYXBwZXJzOworICAgIE5TRmlsZVdyYXBwZXIgKmRvY3VtZW50RnJvbUZvbGRlciA9IFtw
YXN0ZWRGb2xkZXJDb250ZW50cyBvYmplY3RGb3JLZXk6QCJkb2N1bWVudC5wZGYiXTsKKyAgICBO
U0ZpbGVXcmFwcGVyICppbWFnZUZyb21Gb2xkZXIgPSBbcGFzdGVkRm9sZGVyQ29udGVudHMgb2Jq
ZWN0Rm9yS2V5OkAiaW1hZ2UucG5nIl07CisgICAgRVhQRUNUX1RSVUUoW1tkb2N1bWVudCByZWd1
bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRhOmRvY3VtZW50RnJvbUZvbGRlci5yZWd1bGFy
RmlsZUNvbnRlbnRzXSk7CisgICAgRVhQRUNUX1RSVUUoW1tpbWFnZSByZWd1bGFyRmlsZUNvbnRl
bnRzXSBpc0VxdWFsVG9EYXRhOmltYWdlRnJvbUZvbGRlci5yZWd1bGFyRmlsZUNvbnRlbnRzXSk7
CisgICAgRVhQRUNUX1RSVUUoW1tmaWxlIHJlZ3VsYXJGaWxlQ29udGVudHNdIGlzRXF1YWxUb0Rh
dGE6cGFzdGVkRmlsZUluZm8uZmlsZVdyYXBwZXIucmVndWxhckZpbGVDb250ZW50c10pOworICAg
IEVYUEVDVF9UUlVFKFtbYXJjaGl2ZSByZWd1bGFyRmlsZUNvbnRlbnRzXSBpc0VxdWFsVG9EYXRh
OnBhc3RlZEFyY2hpdmVJbmZvLmZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHNdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIHBhc3RlZEZpbGVJ
bmZvLmNvbnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInB1YmxpYy5kaXJlY3Rvcnki
LCBwYXN0ZWRGb2xkZXJJbmZvLmNvbnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFw
cGxpY2F0aW9uL3ppcCIsIHBhc3RlZEFyY2hpdmVJbmZvLmNvbnRlbnRUeXBlKTsKK30KKwogI3By
YWdtYSBtYXJrIC0gUGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMKIAogI2lmIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
      

    </bug>

</bugzilla>