<?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>181192</bug_id>
          
          <creation_ts>2017-12-29 18:58:30 -0800</creation_ts>
          <short_desc>[Attachment Support] Create attachment elements when dropping files on iOS</short_desc>
          <delta_ts>2018-01-03 23:45:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <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>1384974</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-29 18:58:30 -0800</bug_when>
    <thetext>This logic currently resides in WebContentReaderMac, so we currently only represent dropped file paths as attachments on Mac.

We should refactor this logic so that it resides in WebContentReaderCocoa, and teach iOS to insert attachment elements for content that either (1) explicitly prefers an attachment presentation style, as specified on the UIItemProvider, or (2) would otherwise not have a relevant DOM representation in editable areas. Of course, we should only do this if the runtime switch for attachment elements is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385007</commentid>
    <comment_count>1</comment_count>
      <attachid>330268</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-12-31 15:58:01 -0800</bug_when>
    <thetext>Created attachment 330268
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385097</commentid>
    <comment_count>2</comment_count>
      <attachid>330307</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-01 20:42:23 -0800</bug_when>
    <thetext>Created attachment 330307
v2 with slight tweaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385548</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-03 12:43:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/36280945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385576</commentid>
    <comment_count>4</comment_count>
      <attachid>330307</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-01-03 14:47:15 -0800</bug_when>
    <thetext>Comment on attachment 330307
v2 with slight tweaks

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

&gt; Source/WebCore/editing/WebContentReader.cpp:34
&gt; +void WebContentReader::ensureFragment()

I feel like ensure functions usually return the thing they’re ensuring.

&gt; Source/WebCore/platform/PasteboardItemInfo.h:37
&gt; +    bool prefersAttachmentPresentation;
&gt; +    bool prefersInlinePresentation;

Both as separate bits? Seems a bit weird, what if you set both? Should be an enum, no?

&gt; Source/WebKit/Scripts/webkit/messages.py:379
&gt; +        &apos;WebCore::PasteboardItemInfo&apos;: [&apos;&lt;WebCore/PasteboardItemInfo.h&gt;&apos;],

You shouldn’t have to add this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385674</commentid>
    <comment_count>5</comment_count>
      <attachid>330307</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-03 20:30:21 -0800</bug_when>
    <thetext>Comment on attachment 330307
v2 with slight tweaks

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

&gt;&gt; Source/WebCore/editing/WebContentReader.cpp:34
&gt;&gt; +void WebContentReader::ensureFragment()
&gt; 
&gt; I feel like ensure functions usually return the thing they’re ensuring.

Seems reasonable — made this return the DocumentFragment&amp;.

&gt;&gt; Source/WebCore/platform/PasteboardItemInfo.h:37
&gt;&gt; +    bool prefersInlinePresentation;
&gt; 
&gt; Both as separate bits? Seems a bit weird, what if you set both? Should be an enum, no?

Yeah, good point. An enum is a better fit for this.

Added a new enum class, PasteboardItemPresentationStyle, to represent these styles, with three values: Unspecified, Inline, and Attachment

&gt;&gt; Source/WebKit/Scripts/webkit/messages.py:379
&gt;&gt; +        &apos;WebCore::PasteboardItemInfo&apos;: [&apos;&lt;WebCore/PasteboardItemInfo.h&gt;&apos;],
&gt; 
&gt; You shouldn’t have to add this.

Removed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385711</commentid>
    <comment_count>6</comment_count>
      <attachid>330307</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-03 22:06:14 -0800</bug_when>
    <thetext>Comment on attachment 330307
v2 with slight tweaks

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

&gt; Source/WebCore/platform/ios/PlatformPasteboardIOS.mm:117
&gt; +    NSItemProvider *itemProvider = [[m_pasteboard itemProviders] objectAtIndex:index];

(Also, I just realized that I need to guard this with PASTEBOARD_SUPPORTS_ITEM_PROVIDERS, since UIPasteboard&apos;s -itemProviders do not exist on tvOS and watchOS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385712</commentid>
    <comment_count>7</comment_count>
      <attachid>330446</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-03 22:09:03 -0800</bug_when>
    <thetext>Created attachment 330446
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385722</commentid>
    <comment_count>8</comment_count>
      <attachid>330449</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-03 23:11:59 -0800</bug_when>
    <thetext>Created attachment 330449
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385728</commentid>
    <comment_count>9</comment_count>
      <attachid>330449</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-03 23:44:59 -0800</bug_when>
    <thetext>Comment on attachment 330449
Patch for landing

Clearing flags on attachment: 330449

Committed r226396: &lt;https://trac.webkit.org/changeset/226396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385729</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-03 23:45:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330268</attachid>
            <date>2017-12-31 15:58:01 -0800</date>
            <delta_ts>2018-01-01 20:42:21 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-181192-20171231155800.patch</filename>
            <type>text/plain</type>
            <size>70129</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNjNjNkMDEzMDA3OTRm
NWVjZWVjNTY4NzVmY2M0MGFlMzI2ODlhNy4uZTAyOGU5NWRlZGY2MmYyOWM1NDRhMTE3ZTljOTE2
ODgwZDhmYjU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAxNy0xMi0zMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVu
dCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVz
IG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgxMTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50cyBzdXBwb3J0IGZvciBkcm9wcGluZyBkYXRhIGFzIGF0dGFjaG1lbnQgZWxlbWVu
dHMgb24gaU9TLiBTZWUgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAg
IFRlc3RzOiAgV0tBdHRhY2htZW50VGVzdHMuSW5zZXJ0RHJvcHBlZFJpY2hBbmRQbGFpblRleHRG
aWxlc0FzQXR0YWNobWVudHMKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5JbnNl
cnREcm9wcGVkWmlwQXJjaGl2ZUFzQXR0YWNobWVudAorICAgICAgICAgICAgICAgIFdLQXR0YWNo
bWVudFRlc3RzLkluc2VydERyb3BwZWRJdGVtUHJvdmlkZXJzSW5PcmRlcgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpl
bnN1cmVGcmFnbWVudCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciB0byBjcmVhdGUgdGhl
IFdlYkNvbnRlbnRSZWFkZXIncyBmcmFnbWVudCwgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBj
cmVhdGVkLgorCisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKToKKyAgICAgICAgKiBlZGl0aW5n
L2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZEZpbGVuYW1lcyk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9tYWMv
V2ViQ29udGVudFJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRGaWxlbmFtZXMpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSByZWFkRmlsZW5h
bWVzIHRvIHJlYWRGaWxlUGF0aHMgKHdoaWNoIGJldHRlciByZWZsZWN0cyBpdHMgcGFyYW1ldGVy
cywgd2hpY2ggYXJlIGZpbGUgcGF0aHMpLiBBbHNvLCBtb3ZlCisgICAgICAgIHRoZSBpbXBsZW1l
bnRhdGlvbiBvZiByZWFkRmlsZVBhdGhzIHRvIHNoYXJlZCBpT1MvbWFjT1MgY29kZSBpbiBXZWJD
b250ZW50UmVhZGVyQ29jb2EsIGFuZCByZW1vdmUgdGhlIHN0dWIKKyAgICAgICAgaW1wbGVtZW50
YXRpb24gb24gaU9TLgorCisgICAgICAgIFRoZXJlJ3MgYSBiaXQgb2YgY29kZSBoZXJlIHRoYXQg
SSBrZXB0IG1hY09TLW9ubHkgd2hpY2ggZGVhbHMgd2l0aCBpbnNlcnRpbmcgZmlsZSBwYXRocyBh
cyBwbGFpbiB0ZXh0IGluCisgICAgICAgIGVkaXRhYmxlIGFyZWFzLCBidXQgaXQncyB1bmNsZWFy
IHRvIG1lIHdoeSBhbmQgaWYgV2ViS2l0IGNsaWVudHMgY3VycmVudGx5IGZpbmQgdGhpcyB1c2Vm
dWwsIHNvIEkgbGVmdCBhIEZJWE1FCisgICAgICAgIHRvIGludmVzdGlnYXRlIHJlbW92aW5nIHRo
aXMgYWx0b2dldGhlci4gQ29kZSBmb3IgaGFuZGxpbmcgdGhpcyBwbGFpbiB0ZXh0IGluc2VydGlv
biBvZiBmaWxlIHBhdGhzIG9uIE1hYyB3YXMKKyAgICAgICAgaW50cm9kdWNlZCBpbiByNjc0MDMu
CisKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JE
cmFnSGFuZGxpbmdNZXRob2QgY29uc3QpOgorCisgICAgICAgIFRlYWNoIERyYWdDb250cm9sbGVy
IHRvIGFjY2VwdCBhbGwgdHlwZXMgY29uZm9ybWluZyB0byAicHVibGljLml0ZW0iIGFuZCAicHVi
bGljLmNvbnRlbnQiIG9uIGlPUywgb25seSB3aGVuCisgICAgICAgIGF0dGFjaG1lbnQgZWxlbWVu
dHMgYXJlIGVuYWJsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGxvYWQgY29udGVudCBmcm9tIGl0ZW0g
cHJvdmlkZXJzIHRoYXQgd2Ugb3RoZXJ3aXNlIHdvdWxkIG5vdAorICAgICAgICBoYXZlIGxvYWRl
ZCwgc2luY2Ugd2Ugbm93IGhhdmUgdGhlIGFiaWxpdHkgdG8gZmFsbCBiYWNrIHRvIGF0dGFjaG1l
bnQgZWxlbWVudCBpbnNlcnRpb24gaWYgdGhlIHR5cGUgaXMgbm90IGhhdmUKKyAgICAgICAgYSBk
ZWZhdWx0IHJlcHJlc2VudGF0aW9uIHVzaW5nIHN0YW5kYXJkIHdlYiBjb250ZW50LgorCisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRJdGVtSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUp
OgorCisgICAgICAgIEFkZCBQYXN0ZWJvYXJkSXRlbUluZm8sIGEgc3RydWN0IHRoYXQgZGVzY3Jp
YmVzIGFuIGl0ZW0gb24gdGhlIHBhc3RlYm9hcmQuIEFsc28sIGltcGxlbWVudCBlbmNvZGluZyBh
bmQgZGVjb2RpbmcKKyAgICAgICAgc3VwcG9ydCBmb3IgUGFzdGVib2FyZEl0ZW1JbmZvLiBTbyBm
YXIsIHRoZSBpdGVtIGluZm8gb25seSBkZXNjcmliZXMgZmlsZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgcGFzdGVib2FyZCBpdGVtLAorICAgICAgICBhbmQgZmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVy
IHRoZSBpdGVtIHByZWZlcnMgYXR0YWNobWVudCBvciBpbmxpbmUgcHJlc2VudGF0aW9uLgorCisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisKKyAgICAgICAgUmVwbGFj
ZSBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24gd2l0aCBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4LiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbGwgb2YgdGhlIGZpbGUKKyAgICAgICAgcGF0
aHMgYXNzb2NpYXRlZCB3aXRoIGFueSBpdGVtIG9uIHRoZSBwYXN0ZWJvYXJkLCBmZXRjaCBhIFBh
c3RlYm9hcmRJdGVtSW5mbyBhdCBhIGdpdmVuIGl0ZW0gaW5kZXgsIHdoaWNoCisgICAgICAgIGlu
Y2x1ZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlIHBhdGggYXMgd2VsbCBhcyBzb21lIG90
aGVyIG1ldGFkYXRhIHdlJ2xsIG5lZWQgd2hlbiBkZWNpZGluZyBob3cgdG8gcmVhZAorICAgICAg
ICBwYXN0ZWJvYXJkIGNvbnRlbnRzIGFzIGEgZG9jdW1lbnQgZnJhZ21lbnQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0
aW5nVVRJRmlkZWxpdGllcyk6CisKKyAgICAgICAgVGVhY2ggdGhlIGlPUyBQYXN0ZWJvYXJkIHRv
IHJlYWQgd2ViIGNvbnRlbnQgdXNpbmcgYXR0YWNobWVudCBlbGVtZW50cywgaWYgZW5hYmxlZC4g
VGhlcmUgYXJlIHR3byBzY2VuYXJpb3MgaW4KKyAgICAgICAgd2hpY2ggd2Ugd291bGQgd2FudCB0
byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50OgorICAgICAgICAoMSkgVGhlIGl0ZW0gcHJv
dmlkZXIgdXNlcyBhIHByZWZlcnJlZCBwcmVzZW50YXRpb24gc3R5bGUgb2YgYXR0YWNobWVudCwg
aW4gd2hpY2ggY2FzZSB3ZSBiYWlsIG91dCBvZiB0cnlpbmcgdG8KKyAgICAgICAgICAgIGhhbmRs
ZSB0aGUgZHJvcCB1c2luZyB0aGUgZGVmYXVsdCBtZWNoYW5pc21zLCBhbmQgc2ltcGx5IGluc2Vy
dCBpdCBhcyBhbiBhdHRhY2htZW50LiBXZSBuZWVkIHRoaXMgdG8gZGVhbAorICAgICAgICAgICAg
d2l0aCB0aGUgY2FzZSB3aGVyZSB3ZSBkcm9wIHRleHQgb3IgSFRNTCBmaWxlcyBmcm9tIHRoZSBG
aWxlcyBhcHAsIHNvIHRoYXQgd2UgZG9uJ3QgdHJ5IGFuZCBpbnNlcnQgdGhlCisgICAgICAgICAg
ICBjb250ZW50cyBvZiB0aGUgdGV4dCBvciBIVE1MIGFzIGlubGluZSB3ZWIgY29udGVudC4KKyAg
ICAgICAgKDIpIFRoZSBpdGVtIHByb3ZpZGVyIGRvZXNuJ3QgaGF2ZSBhIHByZWZlcnJlZCBhdHRh
Y2htZW50IHByZXNlbnRhdGlvbiBzdHlsZSwgYnV0IHRoZXJlJ3Mgbm90aGluZyBXZWJLaXQgd291
bGQKKyAgICAgICAgICAgIG90aGVyd2lzZSBkbyB3aXRoIHRoZSBkcm9wcGVkIGNvbnRlbnQsIHNv
IGluc2VydCBhbiBhdHRhY2htZW50IGVsZW1lbnQgYXMgYSBmYWxsYmFjay4gRXhhbXBsZXMgd2hl
cmUgdGhpcyBpcworICAgICAgICAgICAgcmVsZXZhbnQgYXJlIGRyb3BwaW5nIGEgUERGIG9yIFpJ
UCBhcmNoaXZlIHdpdGhvdXQgYXR0YWNobWVudCBwcmVzZW50YXRpb24gc3R5bGUgZXhwbGljaXRs
eSBzZXQuCisgICAgICAgIFdlIGZpcnN0IGNoZWNrIGlmIHdlIGZhbGwgaW50byBjYXNlICgxKS4g
SWYgc28sIHdlIGNhbiBiYWlsIGVhcmx5IGJ5IGluc2VydGluZyBhbiBhdHRhY2htZW50OyBvdGhl
cndpc2UsIHdlCisgICAgICAgIHByb2NlZWQgbm9ybWFsbHkgYW5kIHNlZSBpZiB3ZSBjYW4gcmVh
ZCB0aGUgY29udGVudHMgb2YgdGhlIGRyb3AgYXMgd2ViIGNvbnRlbnQuIElmLCBhdCB0aGUgZW5k
IG9mIGRlZmF1bHQgZHJvcAorICAgICAgICBoYW5kbGluZywgd2UgZG9uJ3Qgc3RpbGwgaGF2ZSBh
IHdheSB0byByZXByZXNlbnQgdGhlIGRyb3BwZWQgY29udGVudCwgZW50ZXIgY2FzZSAoMikuCisK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcyk6IERlbGV0ZWQuCisKKyAgICAgICAg
UmVuYW1lIHJlYWRGaWxlbmFtZXMgdG8gcmVhZEZpbGVQYXRocywgYW5kIHJlaW1wbGVtZW50IGl0
IHVzaW5nIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6ZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKTogRGVsZXRl
ZC4KKworICAgICAgICBJbXBsZW1lbnQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCBhbmQgcmVt
b3ZlIGZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbi4gQXMgYmVmb3JlLCB3ZSBhc2sgdGhlIHBh
c3RlYm9hcmQKKyAgICAgICAgKGkuZS4gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCkgZm9yIGlu
Zm9ybWF0aW9uIGFib3V0IGRyb3BwZWQgZmlsZSBVUkxzLiBUaGlzIHRpbWUsIHdlIGxpbWl0IHRo
aXMgdG8gYSBzaW5nbGUKKyAgICAgICAgZmlsZSwgc28gd2UgZG9uJ3QgZW5kIHVwIGNyZWF0aW5n
IG11bHRpcGxlIGF0dGFjaG1lbnQgZWxlbWVudHMgZm9yIGVhY2ggcmVwcmVzZW50YXRpb24gb2Yg
YSBzaW5nbGUgaXRlbQorICAgICAgICBwcm92aWRlci4gU2VlIGJlbG93IGZvciAtZHJvcHBlZEZp
bGVVUkxBdEluZGV4OmZpbGVUeXBlOiBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJMb2FkUmVzdWx0IGluaXRXaXRoSXRlbVByb3ZpZGVyOnR5cGVzVG9Mb2FkOl0pOgorICAg
ICAgICAoLVtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGNhbkJlUmVwcmVzZW50ZWRBc0ZpbGVV
cGxvYWRdKToKKworICAgICAgICBSZW1vdmUgdGhpcyBzeW50aGVzaXplZCBpbnN0YW5jZSB2YXJp
YWJsZSBhbmQgaW5zdGVhZCBqdXN0IGNoZWNrIHRoZSBpdGVtIHByb3ZpZGVyJ3MgcHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGUuCisKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3Vs
dCBkZXNjcmlwdGlvbl0pOgorCisgICAgICAgIEFkZCBhIHZlcmJvc2UgLWRlc2NyaXB0aW9uIHRv
IHRoZSBsb2FkIHJlc3VsdCBvYmplY3QuIFVzZWZ1bCBmb3IgZGVidWdnaW5nIHdoYXQgd2FzIGNv
bnRlbnQgd2FzIGxvYWRlZCBmcm9tIGFuCisgICAgICAgIGl0ZW0gcHJvdmlkZXIgb24gZHJvcC4K
KworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRyb3BwZWRGaWxlVVJMQXRJ
bmRleDpmaWxlVHlwZTpdKToKKworICAgICAgICBSZXR1cm4gdGhlIGhpZ2hlc3QgZmlkZWxpdHkg
bG9hZGVkIHR5cGUgaWRlbnRpZmllciBmb3IgYSBnaXZlbiBpdGVtLgorCisgICAgICAgICgtW1dl
Ykl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgdHlwZUlkZW50aWZpZXJzVG9Mb2FkRm9yUmVnaXN0ZXJl
ZFR5cGVJZGVudGZpZXJzOl0pOgorCisgICAgICAgIFByZWZlciBmbGF0IFJURkQgdG8gUlRGRC4g
SW4gdGhlIGNhc2Ugd2hlcmUgYXR0YWNobWVudHMgYXJlIGVuYWJsZWQgYW5kIHdlJ3JlIGFjY2Vw
dGluZyBhbGwgdHlwZXMgb2YgY29udGVudAorICAgICAgICB1c2luZyBhdHRhY2htZW50IGVsZW1l
bnRzIGFzIGEgZmFsbGJhY2sgcmVwcmVzZW50YXRpb24sIGlmIHRoZSBzb3VyY2Ugd3JpdGVzIGF0
dHJpYnV0ZWQgc3RyaW5ncyB0byB0aGUKKyAgICAgICAgcGFzdGVib2FyZCB3aXRoIGNvbS5hcHBs
ZS5ydGZkIGF0IGEgaGlnaGVyIGZpZGVsaXR5IHRoYW4gY29tLmFwcGxlLmZsYXQtcnRmZCwgd2Un
bGwgZW5kIHVwIGxvYWRpbmcgb25seQorICAgICAgICBjb20uYXBwbGUucnRmZCBhbmQgZHJvcHBp
bmcgdGhlIHRleHQgYXMgYW4gYXR0YWNobWVudCBlbGVtZW50IGJlY2F1c2Ugd2UgY2Fubm90IGNv
bnZlcnQgdGhlIGRyb3BwZWQgY29udGVudCB0bworICAgICAgICBtYXJrdXAuIEluc3RlYWQsIGlm
IGZsYXQgUlRGRCBpcyBwcmVzZW50IGluIHRoZSBpdGVtIHByb3ZpZGVyLCBhbHdheXMgcHJlZmVy
IHRoYXQgb3ZlciBSVEZEIHNvIHRoYXQgZHJvcHBpbmcgYXMKKyAgICAgICAgcmVndWxhciB3ZWIg
Y29udGVudCBpc24ndCBvdmVycmlkZGVuIHdoZW4gYXR0YWNobWVudCBlbGVtZW50cyBhcmUgZW5h
YmxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50IGNvbnN0KToKKwor
ICAgICAgICBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCBzaG91bGQgYmUgdHJ1
ZSB3aGVuIGF0dGFjaG1lbnQgZWxlbWVudHMgYXJlIGVuYWJsZWQsIGFuZCB0aGVyZSBhcmUgZmls
ZXMgd2UKKyAgICAgICAgY2FuIGRyb3AgYXMgYXR0YWNobWVudCBlbGVtZW50cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkRmlsZVBh
dGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMpOiBEZWxl
dGVkLgorCiAyMDE3LTEyLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEludHJvZHVjZSBkYXRhIHN0cnVjdHVy
ZXMgYW5kIElQQyBzdXBwb3J0IGZvciB3cml0aW5nIHByb21pc2VkIGJsb2JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGVhNTJmNjNiMGIyOTk5YjViMmJkNjU3ZjNlMWY3OWY2ZGQ5MmRmZTcuLjdhNzBmMmQ2NzI2ZTA3
YmE2NDIzZjEyOGYzYWM2NDNmN2Y4ODY2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIw
MTctMTItMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gQ3JlYXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgd2hlbiBk
cm9wcGluZyBmaWxlcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2Ugc29tZSBtaW5vciBhZGp1c3RtZW50cyBmb3IgY2hhbmdlcyB0byB0
aGUgcGFzdGVib2FyZCBpbiBXZWJDb3JlLiBTZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUg
ZGV0YWlsLgorICAgICAgICBUZWFjaGVzIFdlYlBhc3RlYm9hcmRQcm94eSBldC4gYWwuIHRvIHBs
dW1iIFBhc3RlYm9hcmRJdGVtSW5mbyBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJv
Y2VzcyB2aWEgdGhlCisgICAgICAgIG5ldyBgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleGAgY29k
ZXBhdGguCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJv
YXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRGaWxlbmFtZXNGb3JEYXRhSW50
ZXJhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTctMTItMzAgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW50
cm9kdWNlIGEgY2xpZW50IG9iamVjdCBmb3IgcmVjZWl2aW5nIHByb21pc2VkIGJsb2IgaW5mb3Jt
YXRpb24gaW4gdGhlIFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAw
NDRjNzRmY2VjNDFlYjczOWY2NzkwZDkyYWNhYWY5ZjJlNTE2N2FjLi4zYWY0YjYzNWEwM2VmYjc0
MDcyYzhmNTkwNzQ3YjIxMzYxMzVmODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTctMTItMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gQ3JlYXRlIGF0dGFjaG1l
bnQgZWxlbWVudHMgd2hlbiBkcm9wcGluZyBmaWxlcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE5MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc29tZSBtaW5vciBhZGp1c3RtZW50
cyBmb3IgY2hhbmdlcyB0byB0aGUgcGFzdGVib2FyZCBpbiBXZWJDb3JlLiBTZWUgV2ViQ29yZS9D
aGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKTogRGVsZXRlZC4KKwogMjAxNy0xMi0zMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVu
dCBTdXBwb3J0XSBSZW1vdmUgY3VycmVudCBtYWNPUyBzdXBwb3J0IGZvciBkcmFnZ2luZyBmaWxl
LWJhY2tlZCBhdHRhY2htZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlZGM2YmRhMTdiZDY0Yzg3MGM2MzA5NjFlN2RjOTQ2
MjA4ZmJhMjkuLjMxY2RlYTkxOWMzYzhlYzY3MmFkODQwM2Y0ZTNiODY1MDdmODQ1ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQ2NTAsNiArNDY1MCw3IEBACiAJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ4MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0gKi87IH07CiAJCUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDgyMjMwRjFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZF
MjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyog
UGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRC
RkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyBpbiBDb3B5IFNj
cmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODMxRTFEREYy
QjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLzsgfTsKIAkJRjRCRkI5ODYxRTFE
REY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyBpbiBDb3B5IFNjcmlwdHMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODQxRTFEREYyQjAwNzZCN0VB
IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKIAkJRjUwNjY0RjgxNTdGNTJEQzAwQUMy
MjZGIC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIu
aCAqLzsgfTsKQEAgLTE0MDc3LDYgKzE0MDc4LDcgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZG
Qzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsg
cGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGls
LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3Rv
cnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9FZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJv
YXJkSXRlbUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3Jt
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3Jt
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY2MTU3
RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb3JtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNjYxLDYgKzIzNjYzLDcgQEAKIAkJ
CQk0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICovLAog
CQkJCTJFRTAyQTFFMUY3MzI0MjgwMDA2QUY3MiAvKiBQYXN0ZWJvYXJkLmNwcCAqLywKIAkJCQk0
QjI3MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovLAorCQkJCUY0OTc4Njg3
MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLywKIAkJCQlDNUY3NjVC
NDE0RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggKi8sCiAJCQkJMUFGNUU0
RDIxRTU2NzM1QTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcCAqLywKIAkJCQkx
QUY1RTREMzFFNTY3MzVBMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCAqLywKQEAg
LTI5ODg4LDYgKzI5ODkxLDcgQEAKIAkJCQkyMjVBMTZCNTBENUMxMUU5MDAwOTAyOTUgLyogV2Vi
RXZlbnRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUQzRjNEMzZFMUE2OUI3RTAwMDU5RkMy
QiAvKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0QyMEY2
RDEwN0Y0MzhCMDBBODAzOTIgLyogV2ViR0xBY3RpdmVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRkZDNDU4MUQ1RTg2NTUwMDI2N0E2NiAvKiBXZWJHTEJsYWNrbGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5QzkxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdM
QnVmZmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29udGVudFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuY3BwCmluZGV4IGNmNDE5MzY3ZDE4NGQxOGQzODJjYWQyZWM5MzZhMzM4MjdiNTRh
NGYuLjE4YjExODFlNTMxZjU0NzU0NmU1YTg2MmRiZjc4NDQ1MmRjNjNjMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIFdlYkNvbnRlbnRSZWFkZXI6OmVuc3VyZUZy
YWdtZW50KCkKK3sKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgaWYgKCFmcmFn
bWVudCkKKyAgICAgICAgZnJhZ21lbnQgPSBmcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7Cit9CisKIHZvaWQgV2ViQ29udGVudFJlYWRlcjo6YWRkRnJhZ21lbnQoUmVm
PERvY3VtZW50RnJhZ21lbnQ+JiYgbmV3RnJhZ21lbnQpCiB7CiAgICAgaWYgKCFmcmFnbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggY2MxNzAzNWE5
MTAwYTk2NTZjMjYxOTFhMDg0ZDc2ZDhjZjQ2NGVmMi4uMzAzYjk3ZWI1NjQ5YmZmMjU1YTIyZDU0
NGI3ZTliOGE0YzJjZWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJD
b250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVh
ZGVyLmgKQEAgLTYzLDEyICs2MywxMyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIHZv
aWQgZW5zdXJlRnJhZ21lbnQoKTsKICAgICB2b2lkIGFkZEZyYWdtZW50KFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmKTsKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHJl
YWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEZpbGVu
YW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEZpbGVQ
YXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBA
IC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29s
IHJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXgg
MWUzYmJmZDE5ZDM0NWM1MDk0YjEwMzNhZmVjNzE2ZDE5OWY5MzYyMC4uYjU0YjM3ZmQwZmEzNzRj
OWJiZWUyODhkMmU1YTBhYWU1YmU1NWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTU5Niw0ICs1OTYsMzYg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKK2Jv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aHMpCit7CisgICAgaWYgKHBhdGhzLmlzRW1wdHkoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9j
dW1lbnQoKTsKKyAgICBib29sIHJlYWRBbnlGaWxlUGF0aCA9IGZhbHNlOworICAgIGZvciAoYXV0
byYgcGF0aCA6IHBhdGhzKSB7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVu
dEVsZW1lbnRFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGVuc3VyZUZyYWdtZW50KCk7CisgICAg
ICAgICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShI
VE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGF0dGFjaG1l
bnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAg
ICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQpOworICAgICAgICAgICAgcmVhZEFu
eUZpbGVQYXRoID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5k
aWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIC8vIEZJWE1FOiBEb2VzIChhbmQgc2hvdWxk
KSBhbnkgbWFjT1MgY2xpZW50IGRlcGVuZCBvbiBpbnNlcnRpbmcgZmlsZSBwYXRocyBhcyBwbGFp
biB0ZXh0IGluIHdlYiBjb250ZW50PworICAgICAgICAvLyBJZiBub3QsIHdlIHNob3VsZCBqdXN0
IHJlbW92ZSB0aGlzLgorICAgICAgICBlbnN1cmVGcmFnbWVudCgpOworICAgICAgICBhdXRvIHBh
cmFncmFwaCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKKyAgICAg
ICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh1c2VyVmlz
aWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdKSkpOworICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKKyAgICAgICAgcmVhZEFueUZpbGVQYXRoID0g
dHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4gcmVhZEFueUZpbGVQYXRoOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5t
bQppbmRleCAwMzRiYTlhOTRjM2Q4ZGJiZWNhNDUzZGNkZmMwMTFhZTczODE4MDg2Li4yMDNjODQ3
NTkzYTg5OWE3ODBiOWNmMDQ0NGZjYmJkNjIxMmZhMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW0KQEAgLTQ3LDExICs0Nyw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmls
ZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9XZWJDb250ZW50UmVhZGVyTWFjLm1tCmluZGV4IDljNWQyNTQwYjYw
NWVlYWQyMzI4ODVhNzZkNTliMzJjNDZhZjc4ZjMuLjQyODNhNGYxMzdmNmVhZjVmYjQ3NDI1YWEz
ZjE1ZWE2MmEwN2ZjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dl
YkNvbnRlbnRSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvV2Vi
Q29udGVudFJlYWRlck1hYy5tbQpAQCAtMzgsNDkgKzM4LDE1IEBACiAjaW1wb3J0ICJGcmFtZUxv
YWRlci5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbXBvcnQgIkhUTUxBbmNo
b3JFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKICNpbXBvcnQg
IkhUTUxOYW1lcy5oIgogI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5oIgotI2ltcG9ydCAiTUlN
RVR5cGVSZWdpc3RyeS5oIgotI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2lt
cG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VS
TEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCi0jaW1wb3J0IDx3dGYvVVVJRC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVuYW1l
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCi17Ci0gICAgaWYgKHBhdGhzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKmZyYW1lLmRv
Y3VtZW50KCk7Ci0KLSAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKLQotICAgIGZvciAoYXV0byYgdGV4dCA6IHBhdGhzKSB7Ci0jaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGF1
dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6
YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0VW5p
cXVlSWRlbnRpZmllcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwotICAgICAgICAgICAg
YXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDp0
ZXh0XS5wYXRoKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRl
czo6WWVzKTsKLSAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50KTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBhdXRvIHBh
cmFncmFwaCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKLSAgICAg
ICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh1c2VyVmlz
aWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnRleHRdKSkpOwotICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHJldHVy
biB0cnVlOwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKHVybC5zdHJpbmcoKS5pc0VtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4
IDVlODcyYzQ5NDFhY2E0MGM2Y2Q5NDFiYWUwMjcwOTRmMThhM2NmZWEuLmY3NWQxZTRkZGEwOGM5
MzI1MDkzMDNmYjUwODNmYTNmZGVjNGQ2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC00NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJQYXN0ZWJv
YXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAi
UmFuZ2UuaCIKKyNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKIAogI2lmIEVOQUJM
RShEQVRBX0lOVEVSQUNUSU9OKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNv
cmVTZXJ2aWNlcy5oPgpAQCAtMTI1LDggKzEyNiwxNCBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hh
bgogICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoa1VUVHlwZVBsYWluVGV4dCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRHJhZ0hhbmRsaW5nTWV0aG9kOjpFZGl0UmljaFRleHQ6Ci0g
ICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gUGFzdGVib2FyZDo6c3VwcG9ydGVkV2ViQ29u
dGVudFBhc3RlYm9hcmRUeXBlcygpKQotICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5k
KHR5cGUpOworICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkgeworICAgICAgICAgICAgc3VwcG9ydGVk
VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKKyAgICAgICAgICAgIHN1cHBvcnRl
ZFR5cGVzLmFwcGVuZChrVVRUeXBlQ29udGVudCk7CisgICAgICAgICAgICBzdXBwb3J0ZWRUeXBl
cy5hcHBlbmQoa1VUVHlwZUl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9y
IChOU1N0cmluZyAqdHlwZSBpbiBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRXZWJDb250ZW50UGFzdGVi
b2FyZFR5cGVzKCkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKHR5cGUp
OworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZvciAo
TlNTdHJpbmcgKnR5cGUgaW4gUGFzdGVib2FyZDo6c3VwcG9ydGVkRmlsZVVwbG9hZFBhc3RlYm9h
cmRUeXBlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDIxYmY5MDNk
MDhkYWFjNTNhYzU4ODBjNDY3ZGNlNWJmM2E5NmRmOTIuLmE1NDZmNTkxYzkyODI1MjRkYzIzNzUx
ZmM3ZjY4YTU4ZTNjNWNjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisj
aW5jbHVkZSAiUGFzdGVib2FyZEl0ZW1JbmZvLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTEzNCw3
ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIGJv
b2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBy
ZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRC
dWZmZXImKSA9IDA7CkBAIC0yOTAsNyArMjkxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVuYW1lcygpOworICAg
IFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHMoKTsKICAgICBTdHJpbmcgcmVhZFBsYXRmb3Jt
VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGxvbmcgY2hhbmdlQ291bnQsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlw
Ym9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywg
Y29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZv
cm1UeXBlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEl0ZW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkSXRlbUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDA5MTJkNzVmOGZjMDYwZmM3OTE1N2M4OTNmMzkw
M2QxZWM2YzY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEl0ZW1JbmZvLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbyB7CisgICAgU3RyaW5nIGZpbGVQYXRoOworICAgIFN0cmluZyBmaWxlQ29udGVudFR5cGU7
CisgICAgYm9vbCBwcmVmZXJzQXR0YWNobWVudFByZXNlbnRhdGlvbjsKKyAgICBib29sIHByZWZl
cnNJbmxpbmVQcmVzZW50YXRpb247CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUGFzdGVib2FyZEl0ZW1JbmZvOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGZpbGVQYXRo
IDw8IGZpbGVDb250ZW50VHlwZSA8PCBwcmVmZXJzQXR0YWNobWVudFByZXNlbnRhdGlvbiA8PCBw
cmVmZXJzSW5saW5lUHJlc2VudGF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIHJlc3VsdDsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5maWxlUGF0aCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5maWxlQ29u
dGVudFR5cGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucHJlZmVyc0F0dGFjaG1lbnRQcmVzZW50YXRpb24pKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
cHJlZmVyc0lubGluZVByZXNlbnRhdGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGMwNjRhZDBmYzlmYzg2YjVmMjJi
NDg5MTYwNTM1Y2U3MjM3ZTExMmQuLjU4MzdkOTFjOTY4OWJhN2VhN2ZiMWNkOGY2NmM2NzUxY2Nh
NzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOworc3RydWN0IFBhc3RlYm9h
cmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJD
b250ZW50Owogc3RydWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwpAQCAtNTAsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRV
UkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50
aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNl
bmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oCmluZGV4IGQ4ZDdjOTQ5Mjc2ZjFlOGU2YTA3ZTljNDMwMTdiN2EwZGRkNTBj
NDUuLjI0ODgwNTM2ZjlhMmRkNGVlMDE1MTZjYWMyYmQ1NTIyOWNlZDg1YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC01MSw2ICs1MSw3IEBA
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CitzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZv
Owogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiAK
QEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFBs
YXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNpZiBQTEFU
Rk9STShJT1MpIHx8IFBMQVRGT1JNKFdQRSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBh
c3RlYm9hcmQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXNG
b3JEYXRhSW50ZXJhY3Rpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBpbnQgaW5kZXgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpp
bmRleCA1MDg1ZTIwNDg3YjEzNjg4MmE1M2E0OTZkMWRhMThjM2Y3MzhkZDYxLi5hNjJlNzQ0ZjNk
Yjc5NmRjM2U3NDc5NzE2MGI5MGIzZDJjMDFjNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xOTEsNyArMTkxLDcgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZm
QnVmZmVyKQogCiB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJl
YWRlcikKIHsKLSAgICBhdXRvIGZpbGVuYW1lcyA9IHJlYWRGaWxlbmFtZXMoKTsKKyAgICBhdXRv
IGZpbGVuYW1lcyA9IHJlYWRGaWxlUGF0aHMoKTsKICAgICBpZiAoIWZpbGVuYW1lcy5pc0VtcHR5
KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAg
ICAgIHJlYWRlci5yZWFkRmlsZW5hbWUoZmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oCmluZGV4IGU4ZTViZjM2YmNiMjY3Mzkx
ZWRkM2M2MTcyOTUyM2UwNDMwY2ZiY2EuLjdkNTJkNmFkOTY5YjBlOTJlMzIwZGMxNjI4OWFhYTA0
NDA4NmVjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFj
dFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQ
YXN0ZWJvYXJkLmgKQEAgLTU3LDYgKzU3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIC0g
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0
SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMp
IE5TSW50ZWdlciBudW1iZXJPZkZpbGVzOwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWlj
KSBOU0FycmF5PE5TVVJMICo+ICpkcm9wcGVkRmlsZVVSTHM7CistIChudWxsYWJsZSBOU1VSTCAq
KWRyb3BwZWRGaWxlVVJMQXRJbmRleDooTlNVSW50ZWdlcilpbmRleCBmaWxlVHlwZTooTlNTdHJp
bmcgKl9OdWxsYWJsZSAqX051bGxhYmxlKW91dEZpbGVUeXBlOwogLSAodm9pZCl1cGRhdGVTdXBw
b3J0ZWRUeXBlSWRlbnRpZmllcnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlczsKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBj
ZDFiNzQ2ZTI1MmM1NzA5YzI2ZDNkZmFkZDA2ZGFkYzdjOWZlODFlLi5lYWUxZmEzNzA1YmY1ZTYz
MWYzN2VkM2RhOTEyZDBkZTRlMjAxYWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVBhc3RlYm9hcmQuaCIKICNpbXBvcnQgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgorI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVUSVV0
aWxpdGllcy5oIgpAQCAtMjQ0LDEwICsyNDUsMTAgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBh
c3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bWJlck9mSXRlbXM7IGkrKykgewogICAgICAgICBmb3IgKGludCB0eXBlSW5kZXggPSAw
OyB0eXBlSW5kZXggPCBudW1iZXJPZlR5cGVzOyB0eXBlSW5kZXgrKykgewotICAgICAgICAgICAg
YXV0byByZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIs
IHN0cmF0ZWd5LCBbdHlwZXMgb2JqZWN0QXRJbmRleDp0eXBlSW5kZXhdLCBpKTsKLSAgICAgICAg
ICAgIGlmIChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVy
bmFsbHkpCisgICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNv
bnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCBbdHlwZXMgb2JqZWN0QXRJbmRleDp0
eXBlSW5kZXhdLCBpKTsKKyAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0ID09IFJlYWRlclJlc3Vs
dDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSkKKyAg
ICAgICAgICAgIGlmIChpdGVtUmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTcgKzI2NywzMCBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgIEFTU0VSVChyZXNwZWN0c1VUSUZpZGVsaXRp
ZXMoKSk7CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpOwogICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9m
SXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1l
KTsgaW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7CisjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKKyAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIGJvb2wgY2FuUmVh
ZEF0dGFjaG1lbnQgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmICFpbmZvLmZpbGVQYXRoLmlzRW1wdHkoKTsKKyAg
ICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIGluZm8ucHJlZmVyc0F0dGFjaG1lbnRQcmVz
ZW50YXRpb24pIHsKKyAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGhzKHsgaW5mby5maWxl
UGF0aCB9KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgLy8gVHJ5IHRvIHJlYWQgZGF0YSBmcm9tIGVhY2ggdHlwZSBpZGVudGlmaWVyIHRoYXQgdGhp
cyBwYXN0ZWJvYXJkIGl0ZW0gc3VwcG9ydHMsIGFuZCBXZWJLaXQgYWxzbyByZWNvZ25pemVzLiBU
eXBlIGlkZW50aWZpZXJzIGFyZQogICAgICAgICAvLyByZWFkIGluIG9yZGVyIG9mIGZpZGVsaXR5
LCBhcyBzcGVjaWZpZWQgYnkgZWFjaCBwYXN0ZWJvYXJkIGl0ZW0uCiAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5OwogICAgICAgICBzdHJhdGVneS5n
ZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh0eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZGaWRl
bGl0eSwgaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBSZWFkZXJSZXN1bHQgcmVz
dWx0ID0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICAgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHkpIHsKLSAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJh
dGVneSwgdHlwZSwgaW5kZXgpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRX
ZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaW5kZXgpOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2Vk
RXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAocmVz
dWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICBpZiAoY2Fu
UmVhZEF0dGFjaG1lbnQgJiYgcmVzdWx0ID09IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGUp
CisgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVQYXRocyh7IGluZm8uZmlsZVBhdGggfSk7Cisj
ZW5kaWYKICAgICB9CiB9CiAKQEAgLTQwNSwxMiArNDE5LDE3IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVi
b2FyZChjb2NvYVR5cGUuZ2V0KCksIGRhdGEsIG1fcGFzdGVib2FyZE5hbWUpOwogfQogCi1WZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5hbWVzKCkKK1ZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1l
czsKLSAgICAvLyBDdXJyZW50bHksIGRhdGEgaW50ZXJhY3Rpb24gaXMgdGhlIG9ubHkgY2FzZSBv
biBpT1Mgd2hlcmUgdGhlIHBhc3RlYm9hcmQgbWF5IGNvbnRhaW4gcmVsZXZhbnQgZmlsZW5hbWVz
LgotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0Rmls
ZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKGZpbGVuYW1lcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0g
ICAgcmV0dXJuIGZpbGVuYW1lczsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0aHM7CisgICAg
YXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpOworICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJh
dGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsgaW5kZXggPCBu
dW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7CisgICAgICAgIC8vIEN1cnJlbnRseSwgZHJhZyBhbmQg
ZHJvcCBpcyB0aGUgb25seSBjYXNlIG9uIGlPUyB3aGVyZSB0aGUgInBhc3RlYm9hcmQiIG1heSBj
b250YWluIGZpbGUgcGF0aHMuCisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBzdHJhdGVneS5pbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lKS5maWxlUGF0aDsK
KyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICBmaWxlUGF0aHMu
YXBwZW5kKFdURk1vdmUoZmlsZVBhdGgpKTsKKyAgICB9CisgICAgcmV0dXJuIGZpbGVQYXRoczsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0KaW5kZXggMTZiNzFmODViMjJjMmRjMDdhMmQzMDhiZDA2MDMxNjY5ODg4
MTZhZi4uNjU2NzMxMTUxZTI2YmViMmNlNDA5NDQ5OTA1OTFkNGJmNmQ2OWNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CkBAIC0xMDIsMTYgKzEwMiwyMiBAQCBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZp
bGVzKCkgY29uc3QKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG51bWJlck9mRmlsZXMpXSA/IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZGaWxlc10g
OiAwOwogfQogCi1WZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmZpbGVuYW1lc0Zv
ckRhdGFJbnRlcmFjdGlvbigpCitQYXN0ZWJvYXJkSXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJk
OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKLSAgICBpZiAoIVttX3Bh
c3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkcm9wcGVkRmlsZVVSTHMpXSkK
KyAgICBpZiAoaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lczsKLSAgICBmb3IgKE5T
VVJMICpmaWxlVVJMIGluIFttX3Bhc3RlYm9hcmQgZHJvcHBlZEZpbGVVUkxzXSkKLSAgICAgICAg
ZmlsZW5hbWVzLmFwcGVuZChmaWxlVVJMLnBhdGgpOworICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBp
bmZvOworICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
ZHJvcHBlZEZpbGVVUkxBdEluZGV4OmZpbGVUeXBlOildKSB7CisgICAgICAgIE5TU3RyaW5nICpm
aWxlVHlwZSA9IG5pbDsKKyAgICAgICAgaW5mby5maWxlUGF0aCA9IFttX3Bhc3RlYm9hcmQgZHJv
cHBlZEZpbGVVUkxBdEluZGV4OmluZGV4IGZpbGVUeXBlOiZmaWxlVHlwZV0ucGF0aDsKKyAgICAg
ICAgaW5mby5maWxlQ29udGVudFR5cGUgPSBmaWxlVHlwZTsKKyAgICB9CiAKLSAgICByZXR1cm4g
ZmlsZW5hbWVzOworICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21fcGFzdGVi
b2FyZCBpdGVtUHJvdmlkZXJzXSBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICBpbmZvLnByZWZl
cnNBdHRhY2htZW50UHJlc2VudGF0aW9uID0gaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlID09IFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50OworICAg
IGluZm8ucHJlZmVyc0lubGluZVByZXNlbnRhdGlvbiA9IGl0ZW1Qcm92aWRlci5wcmVmZXJyZWRQ
cmVzZW50YXRpb25TdHlsZSA9PSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lOwor
ICAgIHJldHVybiBpbmZvOwogfQogCiBzdGF0aWMgYm9vbCBwYXN0ZWJvYXJkTWF5Q29udGFpbkZp
bGVQYXRocyhpZDxBYnN0cmFjdFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaApp
bmRleCBhYmZmMjY4YzhhMjA4MWNhNDA5MGQ1ZGVmNzQ5Nzg4MTdhNGFkYjUyLi42M2FhMTkyOTRm
NzMzNThhY2M5MTU4MjJjMGY0ZTdkYjFiMGQ5ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKQEAgLTkxLDYg
KzkxLDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkIDogTlNPYmplY3Q8QWJzdHJhY3RQYXN0ZWJvYXIKIAogLy8gVGhpcyB3aWxsIG9ubHkgYmUg
bm9uLWVtcHR5IHdoZW4gYW4gb3BlcmF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZC4KIEBwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAqZHJvcHBlZEZpbGVVUkxz
OworLSAobnVsbGFibGUgTlNVUkwgKilkcm9wcGVkRmlsZVVSTEF0SW5kZXg6KE5TVUludGVnZXIp
aW5kZXggZmlsZVR5cGU6KE5TU3RyaW5nICpfTnVsbGFibGUgKl9OdWxsYWJsZSlvdXRGaWxlVHlw
ZTsKIAogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBCT09MIGhhc1BlbmRpbmdPcGVy
YXRpb247CiAtICh2b2lkKWluY3JlbWVudFBlbmRpbmdPcGVyYXRpb25Db3VudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0KaW5kZXggYjM0MzE2OGVmMjQ0MmU1ZTdkM2Y3YjVkNTNkMDkyOWFmZTg2ZTdkOS4uN2Jl
ZGQzZWIxZDhjNDFlMTA3OTYxODI5YTRiZjYzMDMxY2RiZDRlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0K
QEAgLTI0MywxMSArMjQzLDE1IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1Qcm92aWRl
cjooTlNJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXIgdHlwZXNUb0xvYWQ6CiAgICAgX2ZpbGVV
UkxzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBf
aXRlbVByb3ZpZGVyID0gaXRlbVByb3ZpZGVyOwogICAgIF90eXBlc1RvTG9hZCA9IHR5cGVzVG9M
b2FkOwotICAgIF9jYW5CZVJlcHJlc2VudGVkQXNGaWxlVXBsb2FkID0gaXRlbVByb3ZpZGVyLnBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlICE9IFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJ
bmxpbmU7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoQk9PTCljYW5CZVJlcHJlc2VudGVk
QXNGaWxlVXBsb2FkCit7CisgICAgcmV0dXJuIFtfaXRlbVByb3ZpZGVyIHByZWZlcnJlZFByZXNl
bnRhdGlvblN0eWxlXSAhPSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lOworfQor
CiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopdHlwZXNUb0xvYWQKIHsKICAgICByZXR1cm4gX3R5
cGVzVG9Mb2FkLmdldCgpOwpAQCAtMjc4LDYgKzI4MiwyNiBAQCAtIChOU0l0ZW1Qcm92aWRlciAq
KWl0ZW1Qcm92aWRlcgogICAgIHJldHVybiBfaXRlbVByb3ZpZGVyLmdldCgpOwogfQogCistIChO
U1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgX19ibG9jayBOU011dGFibGVTdHJpbmcgKmRl
c2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIFtkZXNjcmlwdGlvbiBh
cHBlbmRGb3JtYXQ6QCI8JUA6ICVwIHR5cGVzVG9Mb2FkOiBbICIsIFtzZWxmIGNsYXNzXSwgc2Vs
Zl07CisgICAgW190eXBlc1RvTG9hZCBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKE5TU3Ry
aW5nICp0eXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICopIHsKKyAgICAgICAgW2Rlc2NyaXB0
aW9uIGFwcGVuZFN0cmluZzp0eXBlXTsKKyAgICAgICAgaWYgKGluZGV4ICsgMSA8IFtfdHlwZXNU
b0xvYWQgY291bnRdKQorICAgICAgICAgICAgW2Rlc2NyaXB0aW9uIGFwcGVuZFN0cmluZzpAIiwg
Il07CisgICAgfV07CisgICAgW2Rlc2NyaXB0aW9uIGFwcGVuZEZvcm1hdDpAIiBdIGZpbGVVUkxz
OiB7ICJdOworICAgIF9fYmxvY2sgTlNVSW50ZWdlciBpbmRleCA9IDA7CisgICAgW19maWxlVVJM
cyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqdHlwZSwgTlNV
UkwgKnVybCwgQk9PTCAqKSB7CisgICAgICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRGb3JtYXQ6QCIl
QCA9PiBcIiVAXCIiLCB0eXBlLCB1cmwucGF0aF07CisgICAgICAgIGlmICgrK2luZGV4IDwgW19m
aWxlVVJMcyBjb3VudF0pCisgICAgICAgICAgICBbZGVzY3JpcHRpb24gYXBwZW5kU3RyaW5nOkAi
LCAiXTsKKyAgICB9XTsKKyAgICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiIH0+Il07Cisg
ICAgcmV0dXJuIGRlc2NyaXB0aW9uOworfQorCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZCAoKQpAQCAtNDcwLDYgKzQ5NCwzMyBAQCAtIChOU0ludGVnZXIpY2hh
bmdlQ291bnQKICAgICByZXR1cm4gX2NoYW5nZUNvdW50OwogfQogCistIChOU1VSTCAqKWRyb3Bw
ZWRGaWxlVVJMQXRJbmRleDooTlNVSW50ZWdlcilpbmRleCBmaWxlVHlwZTooTlNTdHJpbmcgKl9O
dWxsYWJsZSAqX051bGxhYmxlKW91dEZpbGVUeXBlCit7CisgICAgaWYgKG91dEZpbGVUeXBlKQor
ICAgICAgICAqb3V0RmlsZVR5cGUgPSBuaWw7CisKKyAgICBpZiAoaW5kZXggPj0gX2xvYWRSZXN1
bHRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gcmVzdWx0ID0gX2xv
YWRSZXN1bHRzW2luZGV4XTsKKyAgICBpZiAoIVtyZXN1bHQgY2FuQmVSZXByZXNlbnRlZEFzRmls
ZVVwbG9hZF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU0l0ZW1Qcm92aWRlciAqaXRl
bVByb3ZpZGVyID0gW3Jlc3VsdCBpdGVtUHJvdmlkZXJdOworICAgIGZvciAoTlNTdHJpbmcgKnJl
Z2lzdGVyZWRUeXBlSWRlbnRpZmllciBpbiBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVycykgeworICAgICAgICBmb3IgKE5TU3RyaW5nICpsb2FkZWRUeXBlSWRlbnRpZmllciBp
biBbcmVzdWx0IGxvYWRlZFR5cGVJZGVudGlmaWVyc10pIHsKKyAgICAgICAgICAgIGlmICghVVRU
eXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyLCAoQ0ZT
dHJpbmdSZWYpbG9hZGVkVHlwZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBpZiAob3V0RmlsZVR5cGUpCisgICAgICAgICAgICAgICAgKm91dEZp
bGVUeXBlID0gbG9hZGVkVHlwZUlkZW50aWZpZXI7CisgICAgICAgICAgICByZXR1cm4gW3Jlc3Vs
dCBmaWxlVVJMRm9yVHlwZTpsb2FkZWRUeXBlSWRlbnRpZmllcl07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gbmlsOworfQorCiAtIChOU0FycmF5PE5TVVJMICo+ICopZHJvcHBlZEZp
bGVVUkxzCiB7CiAgICAgTlNNdXRhYmxlQXJyYXk8TlNVUkwgKj4gKmZpbGVVUkxzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5XTsKQEAgLTUzOSw4ICs1OTAsMTkgQEAgLSAoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKXR5cGVJZGVudGlmaWVyc1RvTG9hZEZvclJlZ2lzdGVyZWRUeXBlSWRlbnRmaWVyczoo
TlNBcnIKICAgICBOU011dGFibGVTZXQgKnR5cGVzVG9Mb2FkID0gW05TTXV0YWJsZVNldCBzZXRd
OwogICAgIE5TU3RyaW5nICpoaWdoZXN0RmlkZWxpdHlDb250ZW50VHlwZSA9IG5pbDsKIAorICAg
IEJPT0wgY29udGFpbnNGbGF0UlRGRCA9IFtyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzIGNvbnRh
aW5zT2JqZWN0OihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07CiAgICAgLy8gRmlyc3QsIHdl
IHdhbnQgdG8gZWl0aGVyIGxvYWQgdGhlIGhpZ2hlc3QgZmlkZWxpdHkgc3VwcG9ydGVkIHR5cGUg
b3IgdGhlIGhpZ2hlc3QgZmlkZWxpdHkgZ2VuZXJpYyBjb250ZW50IHR5cGUuCiAgICAgZm9yIChO
U1N0cmluZyAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyIGluIHJlZ2lzdGVyZWRUeXBlSWRlbnRp
ZmllcnMpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5zRmxhdFJURkQgJiYgW3JlZ2lzdGVyZWRUeXBl
SWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVJURkRdKSB7Cisg
ICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSBhdHRhY2htZW50cyBhcmUgZW5hYmxlZCBh
bmQgd2UncmUgYWNjZXB0aW5nIGFsbCB0eXBlcyBvZiBjb250ZW50IHVzaW5nIGF0dGFjaG1lbnQK
KyAgICAgICAgICAgIC8vIGVsZW1lbnRzIGFzIGEgZmFsbGJhY2sgcmVwcmVzZW50YXRpb24sIGlm
IHRoZSBzb3VyY2Ugd3JpdGVzIGF0dHJpYnV0ZWQgc3RyaW5ncyB0byB0aGUgcGFzdGVib2FyZCB3
aXRoCisgICAgICAgICAgICAvLyBjb20uYXBwbGUucnRmZCBhdCBhIGhpZ2hlciBmaWRlbGl0eSB0
aGFuIGNvbS5hcHBsZS5mbGF0LXJ0ZmQsIHdlJ2xsIGVuZCB1cCBsb2FkaW5nIG9ubHkgY29tLmFw
cGxlLnJ0ZmQKKyAgICAgICAgICAgIC8vIGFuZCBkcm9wcGluZyB0aGUgdGV4dCBhcyBhbiBhdHRh
Y2htZW50IGVsZW1lbnQgYmVjYXVzZSB3ZSBjYW5ub3QgY29udmVydCB0aGUgZHJvcHBlZCBjb250
ZW50IHRvIG1hcmt1cC4KKyAgICAgICAgICAgIC8vIEluc3RlYWQsIGlmIGZsYXQgUlRGRCBpcyBw
cmVzZW50IGluIHRoZSBpdGVtIHByb3ZpZGVyLCBhbHdheXMgcHJlZmVyIHRoYXQgb3ZlciBSVEZE
IHNvIHRoYXQgZHJvcHBpbmcgYXMKKyAgICAgICAgICAgIC8vIHJlZ3VsYXIgd2ViIGNvbnRlbnQg
aXNuJ3Qgb3ZlcnJpZGRlbiBieSBlbmFibGluZyBhdHRhY2htZW50IGVsZW1lbnRzLgorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBpZiAodHlwZUNvbmZvcm1zVG9U
eXBlcyhyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIsIF9zdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMu
Z2V0KCkpKSB7CiAgICAgICAgICAgICBbdHlwZXNUb0xvYWQgYWRkT2JqZWN0OnJlZ2lzdGVyZWRU
eXBlSWRlbnRpZmllcl07CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCA0MDZkNDVhOWRiODljNTRjYzI0NGQ4N2NiNWEy
NWUxNGM2NDc1NzBiLi42MGI3YzNhODk2MDg1ZGQyNGUyMTczNDVkYTE3YmYzNWZiM2Q5OWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
UGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW1wb3J0ICJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIK
IAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIyMCw2ICsyMjEsOSBAQCBib29sIERyYWdEYXRhOjpj
b250YWluc0NvbXBhdGlibGVDb250ZW50KERyYWdnaW5nUHVycG9zZSBwdXJwb3NlKSBjb25zdAog
ICAgIGlmIChwdXJwb3NlID09IERyYWdnaW5nUHVycG9zZTo6Rm9yRmlsZVVwbG9hZCkKICAgICAg
ICAgcmV0dXJuIGNvbnRhaW5zRmlsZXMoKTsKIAorICAgIGlmIChwdXJwb3NlID09IERyYWdnaW5n
UHVycG9zZTo6Rm9yRWRpdGluZyAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmIGNvbnRhaW5zRmlsZXMoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBt
X3Bhc3RlYm9hcmROYW1lKTsKICAgICByZXR1cm4gdHlwZXMuY29udGFpbnMoU3RyaW5nKFdlYkFy
Y2hpdmVQYm9hcmRUeXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KaW5kZXggYjY3NGM3OWYyMjM3YjBiNzMxODBiMjg4NDg5ZTEyMmE3MDkyZWQ0Yi4u
MmI2M2IyZjQ1YTIyMDhiYjA0NzBiYjA3MDA5MWE4MmE5OTUxYzQxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM1MCw3ICszNTAsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRU
eXBlKCkpKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICAgICAgc3RyYXRl
Z3kuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5
cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRGaWxlbmFtZXMocGF0aHMpKQorICAgICAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkRmlsZVBhdGhzKHBh
dGhzKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1NCw3ICs1NTQsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBkYXRhKQogICAgIH0KIH0KIAotVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZp
bGVuYW1lcygpCitWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZVBhdGhzKCkKIHsK
ICAgICAvLyBGSVhNRTogU2VlbXMgc2lsbHkgdG8gY29udmVydCBwYXRocyB0byBVUkxzIGFuZCB0
aGVuIGJhY2sgdG8gcGF0aHMuIERvZXMgdGhhdCBkbyBhbnl0aGluZyBoZWxwZnVsPwogICAgIFZl
Y3RvcjxTdHJpbmc+IGFic29sdXRlVVJMcyA9IGFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJkRmls
ZW5hbWVzKG1fcGFzdGVib2FyZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggZDFkZDY1NDE0MmRmNzY5MGJlOGFkYzJlNDIxYmRmNWE1YmVjODQ2NC4u
M2U4MTdjYjc2OWMwZDE5OWE5ZDk4M2U4NDA5OWNlYTIyZjFlYzMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNzYsNiArMzc2LDcgQEAgZGVmIGhlYWRl
cnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzJzog
Wyc8V2ViQ29yZS9NZWRpYUNvbnN0cmFpbnRzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSc6IFsnPFdlYkNvcmUvUGFzdGVib2FyZC5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJzogWyc8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+J10sCisg
ICAgICAgICdXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8nOiBbJzxXZWJDb3JlL1Bhc3RlYm9h
cmRJdGVtSW5mby5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVib2FyZFVSTCc6IFsnPFdl
YkNvcmUvUGFzdGVib2FyZC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNv
bnRlbnQnOiBbJzxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uUmVzdWx0JzogWyc8V2ViQ29yZS9BcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA2MzI1NGQ5N2RmYzhhZWIxNTk4
NzM3OTYzNWJhN2NmNWM1ZThkMzQxLi5iMjAxMjJiNmE4ZGQ0YmMxZTQ1NzVkMTM2YjYxNzBhMDBl
YTMzOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRJdGVtSW5mby5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgpAQCAtMjI1LDkgKzIyNiw5
IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1CiAgICAgaXRlbXNDb3VudCA9IFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCiB7Ci0gICAgZmlsZW5h
bWVzID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5maWxlbmFtZXNGb3JEYXRh
SW50ZXJhY3Rpb24oKTsKKyAgICBpbmZvID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KTsKIH0KIAogdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IDZjZWRlMDVl
MmEzMzI4N2ViMmJkNmI0YTI0ZTVlYmQ1MjMwNjRiYjQuLmFmMjcwNWQ2NzE1ZTA3MDlkNjQ3Zjhi
MDA1ZGZmMmQxMjcwZGJhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3Rl
Ym9hcmRQcm94eS5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENvbG9yOwogc3RydWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogc3RydWN0IFBhc3RlYm9hcmRJ
bWFnZTsKK3N0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsK
IHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIH0KQEAgLTc3LDcgKzc4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB1cmwsIFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBz
aXplKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KTsKLSAgICB2b2lkIGdldEZpbGVuYW1l
c0ZvckRhdGFJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzKTsKKyAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpQYXN0ZWJv
YXJkSXRlbUluZm8mIGZpbGVuYW1lKTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggYmUxNjE4NDI0YzczNmNmMmMxODFjMzdhNGNkODQ0Nzc1N2RjYWZiYy4uYzdiM2IyNjgw
NzE4ODBhYWY2NTRhZGJkOGRlYTk2MGM5YTk4ZTZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsNyAr
MzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXN0ZWJvYXJkUHJveHkgewogICAgIFJlYWRVUkxGcm9t
UGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpCiAgICAgUmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUg
aGFuZGxlLCB1aW50NjRfdCBzaXplKQogICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpCi0gICAgR2V0RmlsZW5h
bWVzRm9yRGF0YUludGVyYWN0aW9uKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxT
dHJpbmc+IGZpbGVuYW1lcykKKyAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90
IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvIGluZm8pCiAgICAgVXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKFZl
Y3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAgICAgR2V0
UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBkYjMxNzg4YzA1YjlmOTA5NGU3
ZDU3MmUxODMzNjlhY2RhNmYyY2Y0Li44NTQ0ODdjZjAzYzIzNzQ2Zjg2NjcyM2MzZDViZmZhYTRh
NmM0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNTUsNiArNTUs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KQEAgLTMyMiw5ICszMjMsMTEgQEAg
aW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICByZXR1cm4gaXRlbXNDb3VudDsKIH0KIAotdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQor
UGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0RmlsZW5hbWVzRm9yRGF0YUlu
dGVyYWN0aW9uKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
R2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uOjpSZXBseShmaWxlbmFtZXMpLCAwKTsKKyAg
ICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0ZWJvYXJkTmFtZSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXg6
OlJlcGx5KGluZm8pLCAwKTsKKyAgICByZXR1cm4gaW5mbzsKIH0KIAogdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggYWQyZThmMTVlOTU0YTg2ZGUwNjM4MWViOTI0
M2E5OTQ2NzM5NDQwZC4uY2QzMGZjMTVkYTM3ZjM1ZDc2NmM1MzYxYTkzZmUyZGYzNzAzNTgzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpVUkwgcmVhZFVS
TEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgV2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVw
ZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRp
ZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTc1OTI1NmI4ZmVkNzU5NDlj
MTU3NjhmMDJmNjY2YmVmYzU2NDMwZC4uODQyY2NkYzBhOGY4M2U4MTI3YzY2ZmZmMmJiYWRkODc5
ZjIyMWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6VVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpIG92ZXJy
aWRlOwotICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJp
bmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggMjM0MDk2NzQ0
YzRmNWNmNzE5MzJjOWNjNTlmNGUyZjBjMDQxOTVmOS4uZWQ3ZjdmNWZmMjZiYWQ2YTYzYjY0Mzhj
NzI0N2NlYmZjNTFkNDFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMzIs
NiArMzIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9N
YWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRJdGVtSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
bGF0Zm9ybUNvb2tpZUphci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CkBAIC0yMzksOCArMjQwLDggQEAg
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnJlYWRTdHJpbmcoaW5kZXgsIHR5cGUpOwogfQogCi12b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJp
bmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAg
ICBmaWxlbmFtZXMgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmZpbGVuYW1l
c0ZvckRhdGFJbnRlcmFjdGlvbigpOworICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpOwogfQogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAzNWJmYzMzZDZkNDI0ZDg1MTZkOTI4NzBhMTdhZTg3MDg1NjQ5MmFkLi40
OWU3Yjc0YmQ0M2YwZWUxMjg4Yzc0MTZlMDllMGVmZjMwN2ZiOWM2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTct
MTItMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0F0dGFjaG1lbnQgU3VwcG9ydF0gQ3JlYXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgd2hlbiBkcm9w
cGluZyBmaWxlcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MTE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZHMgMyBuZXcgQVBJIHRlc3RzIHRvIGV4ZXJjaXNlIGRpZmZlcmVudCB1c2Ug
Y2FzZXMgb2YgZHJvcHBpbmcgY29udGVudCBhcyBhdHRhY2htZW50IGVsZW1lbnRzIHdoZW4gdGhl
IHJ1bnRpbWUKKyAgICAgICAgc3dpdGNoIGlzIGVuYWJsZWQuIFNlZSBiZWxvdyBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKC1bTlNJdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRh
OnR5cGU6XSk6CisgICAgICAgIChwbGF0Zm9ybUNvcHlQTkcpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVy
YWN0aW9uVGVzdHMubW06CisKKyAgICAgICAgRml4IHNvbWUgY3VycmVudGx5IGZhaWxpbmcgaU9T
IGRyYWcgYW5kIGRyb3AgdGVzdHMuIEluIHRoaXMgY2FzZSwgdGhlcmUncyBubyByZWFzb24gUlRG
RCBzaG91bGQgYXBwZWFyIGluIHRoZQorICAgICAgICBzb3VyY2UgaXRlbSBwcm92aWRlciB3aGVu
IGRyYWdnaW5nIHJpY2ggdGV4dCAqd2l0aG91dCogYXR0YWNobWVudHMsIHNvIHRoaXMgc2hvdWxk
IGhhdmUgYmVlbiBhIGNoZWNrIGZvciBqdXN0CisgICAgICAgIGtVVFR5cGVSVEYgaW5zdGVhZC4K
KworICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgVGVzdHMgYSBmZXcg
Y2FzZXMgb2YgaW5zZXJ0aW5nIGF0dGFjaG1lbnQgZWxlbWVudHMgdmlhIGRyb3A6CisgICAgICAg
IDEuICBXZSBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBkcm9wcyBjb250YWluaW5nIHJpY2gv
cGxhaW4gdGV4dCBmaWxlcyBmcm9tIGp1c3QgZHJvcHBpbmcgcmljaC9wbGFpbiB0ZXh0LgorICAg
ICAgICAgICAgSW5zdGVhZCBvZiBpbnNlcnRpbmcgdGhlIGNvbnRlbnRzIGFzIGlubGluZSB3ZWIg
Y29udGVudCwgdGhpcyBzaG91bGQgZ2VuZXJhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKyAgICAg
ICAgMi4gIFRlc3QgdGhlIGZhbGxiYWNrIG1lY2hhbmlzbSBmb3IgaW5zZXJ0aW5nIGF0dGFjaG1l
bnQgZWxlbWVudHMuIElmIHRoZSBwcmVmZXJyZWQgcHJlc2VudGF0aW9uIHN0eWxlIGlzIG5vdAor
ICAgICAgICAgICAgZXhwbGljaXRseSBzZXQsIGJ1dCB0aGVyZSdzIG5vdGhpbmcgV2ViS2l0IHdv
dWxkIG90aGVyd2lzZSBkbyB3aXRoIHRoZSBkcm9wcGVkIGNvbnRlbnQsIHRoZW4gd2Ugc2hvdWxk
IGZhbGwKKyAgICAgICAgICAgIGJhY2sgdG8gaW5zZXJ0aW5nIHRoZSBjb250ZW50IGFzIGFuIGF0
dGFjaG1lbnQuCisgICAgICAgIDMuICBUZXN0IHRoYXQgaWYgbXVsdGlwbGUgYXR0YWNobWVudHMg
YW5kIGlubGluZSBpdGVtIHByb3ZpZGVycyBhcmUgcHJlc2VudCwgV2ViS2l0IHdpbGwgcmVzcGVj
dCB0aGUgb3JkZXIgaW4KKyAgICAgICAgICAgIHdoaWNoIHRoZXkgd2VyZSBpbnNlcnRlZCBieSB0
aGUgc291cmNlIChhcyBvcHBvc2VkIHRvLCBmb3IgaW5zdGFuY2UsIHB1dHRpbmcgYWxsIG9mIHRo
ZSBhdHRhY2htZW50cyBpbiBmcm9udAorICAgICAgICAgICAgb3IgYXQgdGhlIGVuZCkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpdKToKKworICAgICAgICBBZGQgYSBo
ZWxwZXIgbWV0aG9kIHRvIHJldHVybiBhbiBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSByZXN1
bHQgb2YgZXZhbHVhdGluZyBzb21lIGdpdmVuIHNjcmlwdCwgYW5kIHJld3JpdGUKKyAgICAgICAg
LXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQgdG8ganVzdCB0dXJuIGFyb3VuZCBhbmQgY2Fs
bCB0aGlzLgorCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpdKToKKwogMjAxNy0xMi0yOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWpp
aUBzb255LmNvbT4KIAogICAgICAgICBbV2luXVtDTWFrZV0gVXNlIGFkZF9jdXN0b21fY29tbWFu
ZCB0byBjb3B5IGVhY2ggZm9yd2FyZGluZyBoZWFkZXIgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
CmluZGV4IGY5M2ZhNmI1M2ZiNjcwMTQ2N2FiYjUxYjU0MTg0OTRkY2E4NTUzNWUuLmNmYmY0MTk0
MmU2NjI2ZmJiNjFkYTRlYjU5YzA3YTg4YTY3MTVlNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpA
QCAtMzIxLDYgKzMyMSwyNCBAQCBAZW5kCiAKICNwcmFnbWEgbWFyayAtIFBsYXRmb3JtIHRlc3Rp
bmcgaGVscGVyIGZ1bmN0aW9ucwogCisjaWYgUExBVEZPUk0oSU9TKQorCit0eXBlZGVmIHZvaWQo
Xkl0ZW1Qcm92aWRlckRhdGFMb2FkSGFuZGxlcikoTlNEYXRhICosIE5TRXJyb3IgKik7CisKK0Bp
bXBsZW1lbnRhdGlvbiBOU0l0ZW1Qcm92aWRlciAoQXR0YWNobWVudFRlc3RpbmcpCisKKy0gKHZv
aWQpcmVnaXN0ZXJEYXRhOihOU0RhdGEgKilkYXRhIHR5cGU6KE5TU3RyaW5nICopdHlwZQorewor
ICAgIFtzZWxmIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlw
ZSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxv
YWRIYW5kbGVyOltwcm90ZWN0ZWREYXRhID0gcmV0YWluUHRyKGRhdGEpXSAoSXRlbVByb3ZpZGVy
RGF0YUxvYWRIYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNzICogeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihwcm90ZWN0ZWREYXRhLmdldCgpLCBuaWwpOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH1dOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCisKIHZvaWQgcGxhdGZvcm1Db3B5UmljaFRleHRXaXRoTXVsdGlwbGVBdHRhY2htZW50cygp
CiB7CiAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBp
bml0V2l0aERhdGE6dGVzdEltYWdlRGF0YSgpIG9mVHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUE5H
XSk7CkBAIC0zNjMsOCArMzgxLDYgQEAgdm9pZCBwbGF0Zm9ybUNvcHlSaWNoVGV4dFdpdGhJbWFn
ZSgpCiAjZW5kaWYKIH0KIAotdHlwZWRlZiB2b2lkKF5JdGVtUHJvdmlkZXJEYXRhTG9hZEhhbmRs
ZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopOwotCiB2b2lkIHBsYXRmb3JtQ29weVBORygpCiB7CiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtMzc1LDEwICszOTEsNyBAQCB2b2lkIHBsYXRmb3JtQ29weVBO
RygpCiAgICAgVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW1VJUGFzdGVib2FyZCBnZW5lcmFs
UGFzdGVib2FyZF07CiAgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgW2l0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOwotICAgIFtpdGVtIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZVBO
RyB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxv
YWRIYW5kbGVyOltdIChJdGVtUHJvdmlkZXJEYXRhTG9hZEhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRlc3RJbWFn
ZURhdGEoKSwgbmlsKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9XTsKKyAgICBbaXRlbSBy
ZWdpc3RlckRhdGE6dGVzdEltYWdlRGF0YSgpIHR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVBOR107
CiAgICAgcGFzdGVib2FyZC5pdGVtUHJvdmlkZXJzID0gQFsgaXRlbS5nZXQoKSBdOwogI2VuZGlm
CiB9CkBAIC05NjAsMTEgKzk3Myw3IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2Vy
dERyb3BwZWRJbWFnZUFzQXR0YWNobWVudCkKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9y
VGVzdGluZ0F0dGFjaG1lbnRzKCk7CiAgICAgYXV0byBkcmFnZ2luZ1NpbXVsYXRvciA9IGFkb3B0
TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJW
aWV3LmdldCgpXSk7CiAgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFs
bG9jXSBpbml0XSk7Ci0gICAgW2l0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOwotICAgIFtpdGVtIHJlZ2lzdGVy
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZVBO
RyB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxv
YWRIYW5kbGVyOltdIChJdGVtUHJvdmlkZXJEYXRhTG9hZEhhbmRsZXIgY29tcGxldGlvbkhhbmRs
ZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRlc3RJbWFn
ZURhdGEoKSwgbmlsKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9XTsKKyAgICBbaXRlbSBy
ZWdpc3RlckRhdGE6dGVzdEltYWdlRGF0YSgpIHR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVBOR107
CiAgICAgW2RyYWdnaW5nU2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVt
LmdldCgpIF1dOwogICAgIFtkcmFnZ2luZ1NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRaZXJvIHRv
OkNHUG9pbnRNYWtlKDUwLCA1MCldOwogCkBAIC0xMDEwLDYgKzEwMTksMTE1IEBAIFRFU1QoV0tB
dHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRBdHRyaWJ1dGVkU3RyaW5nQ29udGFpbmlu
Z0F0dGFjaG1lbnQpCiAgICAgfQogfQogCitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNl
cnREcm9wcGVkUmljaEFuZFBsYWluVGV4dEZpbGVzQXNBdHRhY2htZW50cykKK3sKKyAgICAvLyBI
ZXJlLCBib3RoIHJpY2ggdGV4dCBhbmQgcGxhaW4gdGV4dCBhcmUgY29udGVudCB0eXBlcyB0aGF0
IFdlYktpdCBhbHJlYWR5IHVuZGVyc3RhbmRzIGhvdyB0byBpbnNlcnQgaW4gZWRpdGFibGUKKyAg
ICAvLyBhcmVhcyBpbiB0aGUgYWJzZW5jZSBvZiBhdHRhY2htZW50IGVsZW1lbnRzLiBIb3dldmVy
LCBkdWUgdG8gdGhlIGV4cGxpY2l0bHkgc2V0IGF0dGFjaG1lbnQgcHJlc2VudGF0aW9uIHN0eWxl
CisgICAgLy8gb24gdGhlIGl0ZW0gcHJvdmlkZXJzLCB3ZSBzaG91bGQgaW5zdGVhZCB0cmVhdCB0
aGVtIGFzIGRyb3BwZWQgZmlsZXMgYW5kIGluc2VydCBhdHRhY2htZW50IGVsZW1lbnRzLgorICAg
IC8vIFRoaXMgZXhlcmNpc2VzIHRoZSBzY2VuYXJpbyBvZiBkcmFnZ2luZyByaWNoIGFuZCBwbGFp
biB0ZXh0IGZpbGVzIGZyb20gRmlsZXMgdG8gTWFpbC4KKyAgICBhdXRvIHJpY2hUZXh0SXRlbSA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcmljaFRl
eHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpA
IkhlbGxvIHdvcmxkIiBhdHRyaWJ1dGVzOkB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IFtVSUZvbnQg
Ym9sZFN5c3RlbUZvbnRPZlNpemU6MTJdIH1dKTsKKyAgICBbcmljaFRleHRJdGVtIHNldFByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2ht
ZW50XTsKKyAgICBbcmljaFRleHRJdGVtIHJlZ2lzdGVyT2JqZWN0OnJpY2hUZXh0LmdldCgpIHZp
c2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAg
IFtyaWNoVGV4dEl0ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAImhlbGxvLnJ0ZiJdOworCisgICAgYXV0
byBwbGFpblRleHRJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CisgICAgW3BsYWluVGV4dEl0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOworICAgIFtwbGFpblRleHRJdGVtIHJl
Z2lzdGVyT2JqZWN0OkAiSGVsbG8gd29ybGQiIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXBy
ZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtwbGFpblRleHRJdGVtIHNldFN1Z2dlc3Rl
ZE5hbWU6QCJ3b3JsZC50eHQiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0
aW5nQXR0YWNobWVudHMoKTsKKyAgICBhdXRvIGRyYWdnaW5nU2ltdWxhdG9yID0gYWRvcHROUyhb
W0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcu
Z2V0KCldKTsKKyAgICBbZHJhZ2dpbmdTaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJz
OkBbIHJpY2hUZXh0SXRlbS5nZXQoKSwgcGxhaW5UZXh0SXRlbS5nZXQoKSBdXTsKKyAgICBbZHJh
Z2dpbmdTaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50WmVybyB0bzpDR1BvaW50TWFrZSg1MCwgNTAp
XTsKKworICAgIEVYUEVDVF9FUSgyVSwgW2RyYWdnaW5nU2ltdWxhdG9yIGluc2VydGVkQXR0YWNo
bWVudHNdLmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoMFUsIFtkcmFnZ2luZ1NpbXVsYXRvciByZW1v
dmVkQXR0YWNobWVudHNdLmNvdW50KTsKKworICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNo
bWVudCBpbiBbZHJhZ2dpbmdTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10pIHsKKyAgICAg
ICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBz
eW5jaHJvbm91c2x5UmVxdWVzdERhdGE6JmVycm9yXS5sZW5ndGgsIDBVKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTlNMb2co
QCJFcnJvcjogJUAiLCBlcnJvcik7CisgICAgfQorCisgICAgRVhQRUNUX0VRKDIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCdhdHRhY2htZW50JykubGVuZ3RoIl0uaW50VmFsdWUpOworICAgIEVYUEVDVF9XS19TVFJFUSgi
aGVsbG8ucnRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3RpdGxl
JykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3J0ZiIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2ht
ZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0eXBlJykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ3
b3JsZC50eHQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUn
KSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvcGxhaW4iLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNo
bWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndHlwZScpIl0pOworfQorCitURVNUKFdLQXR0YWNobWVu
dFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkWmlwQXJjaGl2ZUFzQXR0YWNobWVudCkKK3sKKyAgICAv
LyBTaW5jZSBXZWJLaXQgZG9lc24ndCBoYXZlIGFueSBkZWZhdWx0IERPTSByZXByZXNlbnRhdGlv
biBmb3IgWklQIGFyY2hpdmVzLCB3ZSBzaG91bGQgZmFsbCBiYWNrIHRvIGluc2VydGluZworICAg
IC8vIGF0dGFjaG1lbnQgZWxlbWVudHMuIFRoaXMgZXhlcmNpc2VzIHRoZSBmbG93IG9mIGRyYWdn
aW5nIGEgWklQIGZpbGUgZnJvbSBhbiBhcHAgdGhhdCBkb2Vzbid0IHNwZWNpZnkgYSBwcmVmZXJy
ZWQKKyAgICAvLyBwcmVzZW50YXRpb24gc3R5bGUgKGUuZy4gTm90ZXMpIGludG8gTWFpbC4KKyAg
ICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBOU0RhdGEgKmRhdGEgPSB0ZXN0WklQRGF0YSgpOworICAgIFtpdGVtIHJlZ2lzdGVyRGF0YTpk
YXRhIHR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVppcEFyY2hpdmVdOworICAgIFtpdGVtIHNldFN1
Z2dlc3RlZE5hbWU6QCJhcmNoaXZlLnppcCJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmll
d0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgIGF1dG8gZHJhZ2dpbmdTaW11bGF0b3IgPSBh
ZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOworICAgIFtkcmFnZ2luZ1NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Q
cm92aWRlcnM6QFsgaXRlbS5nZXQoKSBdXTsKKyAgICBbZHJhZ2dpbmdTaW11bGF0b3IgcnVuRnJv
bTpDR1BvaW50WmVybyB0bzpDR1BvaW50TWFrZSg1MCwgNTApXTsKKworICAgIEVYUEVDVF9FUSgx
VSwgW2RyYWdnaW5nU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50KTsKKyAgICBF
WFBFQ1RfRVEoMFUsIFtkcmFnZ2luZ1NpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50
KTsKKyAgICBbW2RyYWdnaW5nU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmZpcnN0T2Jq
ZWN0IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOmRhdGFdOworICAgIEVYUEVDVF9FUSgxLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnYXR0YWNobWVudCcpLmxlbmd0aCJdLmludFZhbHVlKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoImFyY2hpdmUuemlwIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JR
dWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxp
Y2F0aW9uL3ppcCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNl
bGVjdG9yOkAiYXR0YWNobWVudCJdKTsKK30KKworVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywg
SW5zZXJ0RHJvcHBlZEl0ZW1Qcm92aWRlcnNJbk9yZGVyKQoreworICAgIC8vIFRlc3RzIHRoYXQg
aXRlbSBwcm92aWRlcnMgYXJlIGluc2VydGVkIGluIHRoZSBvcmRlciB0aGV5IGFyZSBzcGVjaWZp
ZWQuIEluIHRoaXMgY2FzZSwgdGhlIHR3byBpbnNlcnRlZCBhdHRhY2htZW50cworICAgIC8vIHNo
b3VsZCBiZSBzZXBhcmF0ZWQgYnkgYSBsaW5rLgorICAgIGF1dG8gZmlyc3RBdHRhY2htZW50SXRl
bSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtmaXJzdEF0
dGFjaG1lbnRJdGVtIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGVBdHRhY2htZW50XTsKKyAgICBbZmlyc3RBdHRhY2htZW50SXRlbSByZWdp
c3Rlck9iamVjdDpAIkZJUlNUIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRp
b25WaXNpYmlsaXR5QWxsXTsKKyAgICBbZmlyc3RBdHRhY2htZW50SXRlbSBzZXRTdWdnZXN0ZWRO
YW1lOkAiZmlyc3QudHh0Il07CisKKyAgICBhdXRvIGlubGluZVRleHRJdGVtID0gYWRvcHROUyhb
W05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBhcHBsZVVSTCA9IHJldGFp
blB0cihbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iXSk7Cisg
ICAgW2lubGluZVRleHRJdGVtIHJlZ2lzdGVyT2JqZWN0OmFwcGxlVVJMLmdldCgpIHZpc2liaWxp
dHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworCisgICAgYXV0
byBzZWNvbmRBdHRhY2htZW50SXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10g
aW5pdF0pOworICAgIFtzZWNvbmRBdHRhY2htZW50SXRlbSByZWdpc3RlckRhdGE6dGVzdFBERkRh
dGEoKSB0eXBlOihOU1N0cmluZyAqKWtVVFR5cGVQREZdOworICAgIFtzZWNvbmRBdHRhY2htZW50
SXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAic2Vjb25kLnBkZiJdOworCisgICAgYXV0byB3ZWJWaWV3
ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAgIGF1dG8gZHJhZ2dpbmdTaW11
bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0
aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkcmFnZ2luZ1NpbXVsYXRvciBzZXRFeHRl
cm5hbEl0ZW1Qcm92aWRlcnM6QFsgZmlyc3RBdHRhY2htZW50SXRlbS5nZXQoKSwgaW5saW5lVGV4
dEl0ZW0uZ2V0KCksIHNlY29uZEF0dGFjaG1lbnRJdGVtLmdldCgpIF1dOworICAgIFtkcmFnZ2lu
Z1NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRaZXJvIHRvOkNHUG9pbnRNYWtlKDUwLCA1MCldOwor
CisgICAgRVhQRUNUX0VRKDJVLCBbZHJhZ2dpbmdTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50
c10uY291bnQpOworICAgIEVYUEVDVF9FUSgwVSwgW2RyYWdnaW5nU2ltdWxhdG9yIHJlbW92ZWRB
dHRhY2htZW50c10uY291bnQpOworCisgICAgZm9yIChfV0tBdHRhY2htZW50ICphdHRhY2htZW50
IGluIFtkcmFnZ2luZ1NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXSkgeworICAgICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgRVhQRUNUX0dUKFthdHRhY2htZW50IHN5bmNo
cm9ub3VzbHlSZXF1ZXN0RGF0YTomZXJyb3JdLmxlbmd0aCwgMFUpOworICAgICAgICBFWFBFQ1Rf
VFJVRSghZXJyb3IpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBOU0xvZyhAIkVy
cm9yOiAlQCIsIGVycm9yKTsKKyAgICB9CisKKyAgICBOU0FycmF5ICpvYnNlcnZlZEVsZW1lbnRU
YWdzID0gKE5TQXJyYXkgKilbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
QXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKS5tYXAoZSA9PiBlLnRhZ05hbWUpIl07
CisgICAgTlNBcnJheSAqZXhwZWN0ZWRFbGVtZW50VGFncyA9IEBbIEAiQVRUQUNITUVOVCIsIEAi
QSIsIEAiQVRUQUNITUVOVCIgXTsKKyAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFbGVtZW50VGFn
cyBpc0VxdWFsVG9BcnJheTpleHBlY3RlZEVsZW1lbnRUYWdzXSk7CisgICAgaWYgKCFbb2JzZXJ2
ZWRFbGVtZW50VGFncyBpc0VxdWFsVG9BcnJheTpleHBlY3RlZEVsZW1lbnRUYWdzXSkKKyAgICAg
ICAgTlNMb2coQCJPYnNlcnZlZCBlbGVtZW50czogJUAgZGlkIG5vdCBtYXRjaCBleHBlY3RhdGlv
bnM6ICVAIiwgb2JzZXJ2ZWRFbGVtZW50VGFncywgZXhwZWN0ZWRFbGVtZW50VGFncyk7CisKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoImZpcnN0LnR4dCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0u
Z2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC9wbGFp
biIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0eXBlJykiXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKFthcHBsZVVSTCBhYnNvbHV0ZVN0cmluZ10sIFt3ZWJWaWV3IHZh
bHVlT2ZBdHRyaWJ1dGU6QCJocmVmIiBmb3JRdWVyeVNlbGVjdG9yOkAiYSJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoInNlY29uZC5wZGYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0
dHJpYnV0ZSgndGl0bGUnKSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3Bk
ZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMV0uZ2V0QXR0cmlidXRlKCd0eXBlJykiXSk7Cit9
CisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFj
dGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0
aW9uVGVzdHMubW0KaW5kZXggODVhMTFhNDNhNWQwM2Q4N2M1ZDEyOWI2YmZhZjhhN2ZjOGVjZjhl
Ny4uYTU5MDhkNmY1NDA0ODc3MzdhZjljNWRhMjYwOGZjZjNjZTYwY2Q2NCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0K
QEAgLTM0NCw3ICszNDQsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRp
dGFibGVUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5h
bWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBF
WFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFj
dGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3Rz
V2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEsIDIwMSwgOTYxLCAyMjcpIF0sIFtkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOwotICAgIGNoZWNrVHlw
ZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUlRGRCwgKE5TU3RyaW5nICopa1VUVHlw
ZVVURjhQbGFpblRleHQpOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlw
ZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilr
VVRUeXBlUlRGLCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7CiB9CiAKIFRFU1Qo
RGF0YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvVGV4dGFyZWEpCkBAIC0zNjQs
NyArMzY0LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9U
ZXh0YXJlYSkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2Jq
ZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2Jz
ZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVy
YXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsg
bWFrZUNHUmVjdFZhbHVlKDYsIDIwMywgOTkwLCAyMzIpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOwotICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVj
ZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAo
TlNTdHJpbmcgKilrVVRUeXBlUlRGRCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQp
OworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUlRGLCAoTlNT
dHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9u
VGVzdHMsIENvbnRlbnRFZGl0YWJsZU1vdmVQYXJhZ3JhcGhzKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBlNTUyZDk2YWJmYTdhMmE0MmNhYmRmMzgyNTVj
M2NhMDUxNTg3N2U5Li5kYWEzYjI2ZDY2YjhlODkwMTcwNGNiNTlmNWYxNzQxMDE3ZDAxY2RlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNDUsNiArNDUs
NyBAQAogLSAodm9pZClsb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKIC0g
KHZvaWQpc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKWh0bWw7CiAtICh2
b2lkKXN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsK
Ky0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Owog
LSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNj
cmlwdDsKIC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZv
aWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb25zOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGVmNDE3ZmI5N2FkNGFj
OThjZTQwNzk0NDgxOTMxNTU5OTBkMDc5NjEuLjI1ODk3ZDY3MjI0NGYyZWVkMzI5NWM1NDFlMTA3
MGM0YjMyNGZlMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KQEAgLTIzOCwyMSArMjM4LDI0IEBAIC0gKHZvaWQpc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lCiAgICAgW3NlbGYgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOwogfQogCi0tIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0CistIChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAogewotICAgIF9fYmxvY2sgYm9vbCBpc1dhaXRpbmdG
b3JKYXZhU2NyaXB0ID0gZmFsc2U7Ci0gICAgX19ibG9jayBOU1N0cmluZyAqZXZhbFJlc3VsdCA9
IG5pbDsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOnNj
cmlwdCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpCi0gICAg
ewotICAgICAgICBldmFsUmVzdWx0ID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6
QCIlQCIsIHJlc3VsdF07CisgICAgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7
CisgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFT
Y3JpcHRXaXRob3V0VXNlckdlc3R1cmU6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBldmFsUmVzdWx0ID0gcmVzdWx0Owog
ICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gdHJ1ZTsKICAgICAgICAgRVhQRUNUX1RS
VUUoIWVycm9yKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgTlNMb2coQCJFbmNv
dW50ZXJlZCBlcnJvcjogJUAgd2hpbGUgZXZhbHVhdGluZyBzY3JpcHQ6ICVAIiwgZXJyb3IsIHNj
cmlwdCk7CiAgICAgfV07Ci0KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGlu
Z0ZvckphdmFTY3JpcHQpOwotICAgIHJldHVybiBbZXZhbFJlc3VsdCBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoTlNTdHJpbmcgKilz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAoreworICAgIHJl
dHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdXTsKIH0KIAogLSAodm9pZCl3YWl0Rm9yTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330307</attachid>
            <date>2018-01-01 20:42:23 -0800</date>
            <delta_ts>2018-01-03 22:09:01 -0800</delta_ts>
            <desc>v2 with slight tweaks</desc>
            <filename>bug-181192-20180101204222.patch</filename>
            <type>text/plain</type>
            <size>71478</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNjNjNkMDEzMDA3OTRm
NWVjZWVjNTY4NzVmY2M0MGFlMzI2ODlhNy4uZTg4MWZmNmFhYzg2NjYwNGQ2MGE1NWY0ZDYwYzIz
NmFjYmVhMDEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxOC0wMS0wMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVu
dCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVz
IG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgxMTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50cyBzdXBwb3J0IGZvciBkcm9wcGluZyBkYXRhIGFzIGF0dGFjaG1lbnQgZWxlbWVu
dHMgb24gaU9TLiBTZWUgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAg
IFRlc3RzOiAgV0tBdHRhY2htZW50VGVzdHMuSW5zZXJ0RHJvcHBlZFJpY2hBbmRQbGFpblRleHRG
aWxlc0FzQXR0YWNobWVudHMKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5JbnNl
cnREcm9wcGVkWmlwQXJjaGl2ZUFzQXR0YWNobWVudAorICAgICAgICAgICAgICAgIFdLQXR0YWNo
bWVudFRlc3RzLkluc2VydERyb3BwZWRJdGVtUHJvdmlkZXJzSW5PcmRlcgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpl
bnN1cmVGcmFnbWVudCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGhlbHBlciB0byBjcmVhdGUgdGhl
IFdlYkNvbnRlbnRSZWFkZXIncyBmcmFnbWVudCwgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBj
cmVhdGVkLgorCisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKToKKworICAgICAgICBSZW5hbWUg
cmVhZEZpbGVuYW1lcyB0byByZWFkRmlsZVBhdGhzICh3aGljaCBiZXR0ZXIgcmVmbGVjdHMgaXRz
IHBhcmFtZXRlcnMsIHdoaWNoIGFyZSBmaWxlIHBhdGhzKS4gQWxzbywgbW92ZQorICAgICAgICB0
aGUgaW1wbGVtZW50YXRpb24gb2YgcmVhZEZpbGVQYXRocyB0byBzaGFyZWQgaU9TL21hY09TIGNv
ZGUgaW4gV2ViQ29udGVudFJlYWRlckNvY29hLCBhbmQgcmVtb3ZlIHRoZSBzdHViCisgICAgICAg
IGltcGxlbWVudGF0aW9uIG9uIGlPUy4KKworICAgICAgICBUaGVyZSdzIGEgYml0IG9mIGNvZGUg
aGVyZSB0aGF0IEkga2VwdCBtYWNPUy1vbmx5IHdoaWNoIGRlYWxzIHdpdGggaW5zZXJ0aW5nIGZp
bGUgcGF0aHMgYXMgcGxhaW4gdGV4dCBpbgorICAgICAgICBlZGl0YWJsZSBhcmVhcywgYnV0IGl0
J3MgdW5jbGVhciB0byBtZSB3aHkgYW5kIGlmIFdlYktpdCBjbGllbnRzIGN1cnJlbnRseSBmaW5k
IHRoaXMgdXNlZnVsLCBzbyBJIGxlZnQgYSBGSVhNRQorICAgICAgICB0byBpbnZlc3RpZ2F0ZSBy
ZW1vdmluZyB0aGlzIGFsdG9nZXRoZXIuIENvZGUgZm9yIGhhbmRsaW5nIHRoaXMgcGxhaW4gdGV4
dCBpbnNlcnRpb24gb2YgZmlsZSBwYXRocyBvbiBNYWMgd2FzCisgICAgICAgIGludHJvZHVjZWQg
aW4gcjY3NDAzLgorCisgICAgICAgICogZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlbmFtZXMpOiBE
ZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JE
cmFnSGFuZGxpbmdNZXRob2QgY29uc3QpOgorCisgICAgICAgIFRlYWNoIERyYWdDb250cm9sbGVy
IHRvIGFjY2VwdCBhbGwgdHlwZXMgY29uZm9ybWluZyB0byAicHVibGljLml0ZW0iIGFuZCAicHVi
bGljLmNvbnRlbnQiIG9uIGlPUywgb25seSB3aGVuCisgICAgICAgIGF0dGFjaG1lbnQgZWxlbWVu
dHMgYXJlIGVuYWJsZWQuIFRoaXMgYWxsb3dzIHVzIHRvIGxvYWQgY29udGVudCBmcm9tIGl0ZW0g
cHJvdmlkZXJzIHRoYXQgd2Ugb3RoZXJ3aXNlIHdvdWxkIG5vdAorICAgICAgICBoYXZlIGxvYWRl
ZCwgc2luY2Ugd2Ugbm93IGhhdmUgdGhlIGFiaWxpdHkgdG8gZmFsbCBiYWNrIHRvIGF0dGFjaG1l
bnQgZWxlbWVudCBpbnNlcnRpb24gaWYgdGhlIHR5cGUgaXMgbm90IGhhdmUKKyAgICAgICAgYSBk
ZWZhdWx0IHJlcHJlc2VudGF0aW9uIHVzaW5nIHN0YW5kYXJkIHdlYiBjb250ZW50LgorCisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRJdGVtSW5mby5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUp
OgorCisgICAgICAgIEFkZCBQYXN0ZWJvYXJkSXRlbUluZm8sIGEgc3RydWN0IHRoYXQgZGVzY3Jp
YmVzIGFuIGl0ZW0gb24gdGhlIHBhc3RlYm9hcmQuIEFsc28sIGltcGxlbWVudCBlbmNvZGluZyBh
bmQgZGVjb2RpbmcKKyAgICAgICAgc3VwcG9ydCBmb3IgUGFzdGVib2FyZEl0ZW1JbmZvLiBTbyBm
YXIsIHRoZSBpdGVtIGluZm8gb25seSBkZXNjcmliZXMgZmlsZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgcGFzdGVib2FyZCBpdGVtLAorICAgICAgICBhbmQgZmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVy
IHRoZSBpdGVtIHByZWZlcnMgYXR0YWNobWVudCBvciBpbmxpbmUgcHJlc2VudGF0aW9uLgorCisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisKKyAgICAgICAgUmVwbGFj
ZSBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24gd2l0aCBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4LiBJbnN0ZWFkIG9mIHJldHVybmluZyBhbGwgb2YgdGhlIGZpbGUKKyAgICAgICAgcGF0
aHMgYXNzb2NpYXRlZCB3aXRoIGFueSBpdGVtIG9uIHRoZSBwYXN0ZWJvYXJkLCBmZXRjaCBhIFBh
c3RlYm9hcmRJdGVtSW5mbyBhdCBhIGdpdmVuIGl0ZW0gaW5kZXgsIHdoaWNoCisgICAgICAgIGlu
Y2x1ZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlIHBhdGggYXMgd2VsbCBhcyBzb21lIG90
aGVyIG1ldGFkYXRhIHdlJ2xsIG5lZWQgd2hlbiBkZWNpZGluZyBob3cgdG8gcmVhZAorICAgICAg
ICBwYXN0ZWJvYXJkIGNvbnRlbnRzIGFzIGEgZG9jdW1lbnQgZnJhZ21lbnQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0
aW5nVVRJRmlkZWxpdGllcyk6CisKKyAgICAgICAgVGVhY2ggdGhlIGlPUyBQYXN0ZWJvYXJkIHRv
IHJlYWQgd2ViIGNvbnRlbnQgdXNpbmcgYXR0YWNobWVudCBlbGVtZW50cywgaWYgZW5hYmxlZC4g
VGhlcmUgYXJlIHR3byBzY2VuYXJpb3MgaW4KKyAgICAgICAgd2hpY2ggd2Ugd291bGQgd2FudCB0
byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50OgorICAgICAgICAoMSkgVGhlIGl0ZW0gcHJv
dmlkZXIgdXNlcyBhIHByZWZlcnJlZCBwcmVzZW50YXRpb24gc3R5bGUgb2YgYXR0YWNobWVudCwg
aW4gd2hpY2ggY2FzZSB3ZSBiYWlsIG91dCBvZiB0cnlpbmcgdG8KKyAgICAgICAgICAgIGhhbmRs
ZSB0aGUgZHJvcCB1c2luZyB0aGUgZGVmYXVsdCBtZWNoYW5pc21zLCBhbmQgc2ltcGx5IGluc2Vy
dCBpdCBhcyBhbiBhdHRhY2htZW50LiBXZSBuZWVkIHRoaXMgdG8gZGVhbAorICAgICAgICAgICAg
d2l0aCB0aGUgY2FzZSB3aGVyZSB3ZSBkcm9wIHRleHQgb3IgSFRNTCBmaWxlcyBmcm9tIHRoZSBG
aWxlcyBhcHAsIHNvIHRoYXQgd2UgZG9uJ3QgdHJ5IGFuZCBpbnNlcnQgdGhlCisgICAgICAgICAg
ICBjb250ZW50cyBvZiB0aGUgdGV4dCBvciBIVE1MIGFzIGlubGluZSB3ZWIgY29udGVudC4KKyAg
ICAgICAgKDIpIFRoZSBpdGVtIHByb3ZpZGVyIGRvZXNuJ3QgaGF2ZSBhIHByZWZlcnJlZCBhdHRh
Y2htZW50IHByZXNlbnRhdGlvbiBzdHlsZSwgYnV0IHRoZXJlJ3Mgbm90aGluZyBXZWJLaXQgd291
bGQKKyAgICAgICAgICAgIG90aGVyd2lzZSBkbyB3aXRoIHRoZSBkcm9wcGVkIGNvbnRlbnQsIHNv
IGluc2VydCBhbiBhdHRhY2htZW50IGVsZW1lbnQgYXMgYSBmYWxsYmFjay4gRXhhbXBsZXMgd2hl
cmUgdGhpcyBpcworICAgICAgICAgICAgcmVsZXZhbnQgYXJlIGRyb3BwaW5nIGEgUERGIG9yIFpJ
UCBhcmNoaXZlIHdpdGhvdXQgYXR0YWNobWVudCBwcmVzZW50YXRpb24gc3R5bGUgZXhwbGljaXRs
eSBzZXQuCisgICAgICAgIFdlIGZpcnN0IGNoZWNrIGlmIHdlIGZhbGwgaW50byBjYXNlICgxKS4g
SWYgc28sIHdlIGNhbiBiYWlsIGVhcmx5IGJ5IGluc2VydGluZyBhbiBhdHRhY2htZW50OyBvdGhl
cndpc2UsIHdlCisgICAgICAgIHByb2NlZWQgbm9ybWFsbHkgYW5kIHNlZSBpZiB3ZSBjYW4gcmVh
ZCB0aGUgY29udGVudHMgb2YgdGhlIGRyb3AgYXMgd2ViIGNvbnRlbnQuIElmLCBhdCB0aGUgZW5k
IG9mIGRlZmF1bHQgZHJvcAorICAgICAgICBoYW5kbGluZywgd2UgZG9uJ3Qgc3RpbGwgaGF2ZSBh
IHdheSB0byByZXByZXNlbnQgdGhlIGRyb3BwZWQgY29udGVudCwgZW50ZXIgY2FzZSAoMikuCisK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcyk6IERlbGV0ZWQuCisKKyAgICAgICAg
UmVuYW1lIHJlYWRGaWxlbmFtZXMgdG8gcmVhZEZpbGVQYXRocywgYW5kIHJlaW1wbGVtZW50IGl0
IHVzaW5nIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6ZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKTogRGVsZXRl
ZC4KKworICAgICAgICBJbXBsZW1lbnQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCBhbmQgcmVt
b3ZlIGZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbi4gQXMgYmVmb3JlLCB3ZSBhc2sgdGhlIHBh
c3RlYm9hcmQKKyAgICAgICAgKGkuZS4gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCkgZm9yIGlu
Zm9ybWF0aW9uIGFib3V0IGRyb3BwZWQgZmlsZSBVUkxzLiBUaGlzIHRpbWUsIHdlIGxpbWl0IHRo
aXMgdG8gYSBzaW5nbGUKKyAgICAgICAgZmlsZSwgc28gd2UgZG9uJ3QgZW5kIHVwIGNyZWF0aW5n
IG11bHRpcGxlIGF0dGFjaG1lbnQgZWxlbWVudHMgZm9yIGVhY2ggcmVwcmVzZW50YXRpb24gb2Yg
YSBzaW5nbGUgaXRlbQorICAgICAgICBwcm92aWRlci4gU2VlIGJlbG93IGZvciAtcHJlZmVycmVk
RmlsZVVwbG9hZFVSTEF0SW5kZXg6ZmlsZVR5cGU6IGZvciBtb3JlIGRldGFpbC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dl
Ykl0ZW1Qcm92aWRlckxvYWRSZXN1bHQgaW5pdFdpdGhJdGVtUHJvdmlkZXI6dHlwZXNUb0xvYWQ6
XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQgY2FuQmVSZXByZXNlbnRl
ZEFzRmlsZVVwbG9hZF0pOgorCisgICAgICAgIFJlbW92ZSB0aGlzIHN5bnRoZXNpemVkIGluc3Rh
bmNlIHZhcmlhYmxlIGFuZCBpbnN0ZWFkIGp1c3QgY2hlY2sgdGhlIGl0ZW0gcHJvdmlkZXIncyBw
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZS4KKworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJM
b2FkUmVzdWx0IGRlc2NyaXB0aW9uXSk6CisKKyAgICAgICAgQWRkIGEgdmVyYm9zZSAtZGVzY3Jp
cHRpb24gdG8gdGhlIGxvYWQgcmVzdWx0IG9iamVjdC4gVXNlZnVsIGZvciBkZWJ1Z2dpbmcgd2hh
dCB3YXMgY29udGVudCB3YXMgbG9hZGVkIGZyb20gYW4KKyAgICAgICAgaXRlbSBwcm92aWRlciBv
biBkcm9wLgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgcHJlZmVycmVk
RmlsZVVwbG9hZFVSTEF0SW5kZXg6ZmlsZVR5cGU6XSk6CisKKyAgICAgICAgUmV0dXJuIHRoZSBo
aWdoZXN0IGZpZGVsaXR5IGxvYWRlZCB0eXBlIGlkZW50aWZpZXIgZm9yIGEgZ2l2ZW4gaXRlbS4K
KworICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGFsbERyb3BwZWRGaWxlVVJM
c10pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHR5cGVJZGVudGlmaWVy
c1RvTG9hZEZvclJlZ2lzdGVyZWRUeXBlSWRlbnRmaWVyczpdKToKKworICAgICAgICBQcmVmZXIg
ZmxhdCBSVEZEIHRvIFJURkQuIEluIHRoZSBjYXNlIHdoZXJlIGF0dGFjaG1lbnRzIGFyZSBlbmFi
bGVkIGFuZCB3ZSdyZSBhY2NlcHRpbmcgYWxsIHR5cGVzIG9mIGNvbnRlbnQKKyAgICAgICAgdXNp
bmcgYXR0YWNobWVudCBlbGVtZW50cyBhcyBhIGZhbGxiYWNrIHJlcHJlc2VudGF0aW9uLCBpZiB0
aGUgc291cmNlIHdyaXRlcyBhdHRyaWJ1dGVkIHN0cmluZ3MgdG8gdGhlCisgICAgICAgIHBhc3Rl
Ym9hcmQgd2l0aCBjb20uYXBwbGUucnRmZCBhdCBhIGhpZ2hlciBmaWRlbGl0eSB0aGFuIGNvbS5h
cHBsZS5mbGF0LXJ0ZmQsIHdlJ2xsIGVuZCB1cCBsb2FkaW5nIG9ubHkKKyAgICAgICAgY29tLmFw
cGxlLnJ0ZmQgYW5kIGRyb3BwaW5nIHRoZSB0ZXh0IGFzIGFuIGF0dGFjaG1lbnQgZWxlbWVudCBi
ZWNhdXNlIHdlIGNhbm5vdCBjb252ZXJ0IHRoZSBkcm9wcGVkIGNvbnRlbnQgdG8KKyAgICAgICAg
bWFya3VwLiBJbnN0ZWFkLCBpZiBmbGF0IFJURkQgaXMgcHJlc2VudCBpbiB0aGUgaXRlbSBwcm92
aWRlciwgYWx3YXlzIHByZWZlciB0aGF0IG92ZXIgUlRGRCBzbyB0aGF0IGRyb3BwaW5nIGFzCisg
ICAgICAgIHJlZ3VsYXIgd2ViIGNvbnRlbnQgaXNuJ3Qgb3ZlcnJpZGRlbiB3aGVuIGF0dGFjaG1l
bnQgZWxlbWVudHMgYXJlIGVuYWJsZWQuCisKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZCBkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczpzeW5jaHJv
bm91c1RpbWVvdXQ6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgZHJv
cHBlZEZpbGVVUkxzXSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRh
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNv
bnRlbnQgY29uc3QpOgorCisgICAgICAgIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250
ZW50IHNob3VsZCBiZSB0cnVlIHdoZW4gYXR0YWNobWVudCBlbGVtZW50cyBhcmUgZW5hYmxlZCwg
YW5kIHRoZXJlIGFyZSBmaWxlcyB3ZQorICAgICAgICBjYW4gZHJvcCBhcyBhdHRhY2htZW50IGVs
ZW1lbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWRGaWxlUGF0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVh
ZEZpbGVuYW1lcyk6IERlbGV0ZWQuCisKIDIwMTctMTItMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW50cm9k
dWNlIGRhdGEgc3RydWN0dXJlcyBhbmQgSVBDIHN1cHBvcnQgZm9yIHdyaXRpbmcgcHJvbWlzZWQg
YmxvYnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggZWE1MmY2M2IwYjI5OTliNWIyYmQ2NTdmM2UxZjc5ZjZkZDkyZGZl
Ny4uYmQ0YjJhYTVjOTRhMjk0NjczNTdhZjkzZWJjNmQzOTE1YzJhZDFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxOC0wMS0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVu
dCBlbGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVzIG9uIGlPUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzb21lIG1pbm9yIGFkanVzdG1lbnRz
IGZvciBjaGFuZ2VzIHRvIHRoZSBwYXN0ZWJvYXJkIGluIFdlYkNvcmUuIFNlZSBXZWJDb3JlL0No
YW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisgICAgICAgIFRlYWNoZXMgV2ViUGFzdGVib2FyZFBy
b3h5IGV0LiBhbC4gdG8gcGx1bWIgUGFzdGVib2FyZEl0ZW1JbmZvIGZyb20gdGhlIFVJIHByb2Nl
c3MgdG8gdGhlIHdlYiBwcm9jZXNzIHZpYSB0aGUKKyAgICAgICAgbmV3IGBJbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4YCBjb2RlcGF0aC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldEZp
bGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxNy0xMi0zMCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNo
bWVudCBTdXBwb3J0XSBJbnRyb2R1Y2UgYSBjbGllbnQgb2JqZWN0IGZvciByZWNlaXZpbmcgcHJv
bWlzZWQgYmxvYiBpbmZvcm1hdGlvbiBpbiB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDA0NGM3NGZjZWM0MWViNzM5ZjY3OTBkOTJhY2FhZjlmMmU1MTY3YWMu
LmNkY2Q2Y2EwMWFiMTNiYzYxZjg3NjhmNmQ1ODM3YTRkODdlMjZmZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wMS0wMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0
XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVzIG9uIGlPUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzb21l
IG1pbm9yIGFkanVzdG1lbnRzIGZvciBjaGFuZ2VzIHRvIHRoZSBwYXN0ZWJvYXJkIGluIFdlYkNv
cmUuIFNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24pOiBEZWxldGVkLgor
CiAyMDE3LTEyLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIFJlbW92ZSBjdXJyZW50IG1hY09TIHN1cHBvcnQg
Zm9yIGRyYWdnaW5nIGZpbGUtYmFja2VkIGF0dGFjaG1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGVkYzZiZGExN2JkNjRj
ODcwYzYzMDk2MWU3ZGM5NDYyMDhmYmEyOS4uZTI1YmU4MmIyN2NmNDZkY2VlZDRkODI2ZjZkN2Rl
NzRmODQ5MWUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDY1MCw2ICs0NjUwLDcgQEAKIAkJRjQ4MjIzMTAxRTM4NjlCODAw
NjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMwRTFFMzg2OUI4MDA2NkZDNzkgLyog
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjQ4MjIzMTExRTM4NjlCODAw
NjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBGMUUzODY5QjgwMDY2RkM3OSAvKiBX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0OTc4Njg4MUZG
NDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQ
YXN0ZWJvYXJkSXRlbUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJDMjQgLyogRHVtcEVkaXRpbmdIaXN0
b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovOyB9
OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzIGlu
IENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgzODk4
NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovOyB9OwogCQlGNTA2
NjRGODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY2MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5oICovOyB9OwpAQCAtMTQwNzcsNiArMTQwNzgsNyBAQAogCQlGNDgy
MjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdI
aXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRHVtcEVk
aXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1wRWRpdGluZ0hpc3RvcnkuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBF
ZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBTY3JpcHRzL0VkaXRpbmdIaXN0b3J5
VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ5Nzg2ODcxRkY0NUZBNTAw
RTA2MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJk
SXRlbUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUwNjY0RjUxNTdGNTJE
QzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9u
TWVzc2FnZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM2NjEs
NiArMjM2NjMsNyBAQAogCQkJCTQxODRGNTE1MUVBRjA1OTgwMEYxOEJGMCAvKiBPcmllbnRhdGlv
bk5vdGlmaWVyLmggKi8sCiAJCQkJMkVFMDJBMUUxRjczMjQyODAwMDZBRjcyIC8qIFBhc3RlYm9h
cmQuY3BwICovLAogCQkJCTRCMjcwOEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmgg
Ki8sCisJCQkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5o
ICovLAogCQkJCUM1Rjc2NUI0MTRFMUQ0MTQwMDZDODk5QiAvKiBQYXN0ZWJvYXJkU3RyYXRlZ3ku
aCAqLywKIAkJCQkxQUY1RTREMjFFNTY3MzVBMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlckRh
dGEuY3BwICovLAogCQkJCTFBRjVFNEQzMUU1NjczNUEwMDRBMUYwMSAvKiBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oICovLApAQCAtMjg2NTYsNiArMjg2NTksNyBAQAogCQkJCTUzNkQ1QTIzMTkzRThF
MEMwMENFNENBQiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVC
M0RDQTEyNTFGMTJEMDAzRUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRCMjcwOEM3MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1NzE0RTlDMjgwMDBFOEQxOEIgLyogUGFzdGVi
b2FyZFN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY1RTRFMzFFNTc3OUIxMDA0QTFG
MDEgLyogUGFzdGVib2FyZFdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNUU0RDUxRTU2
NzM1QjAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCmluZGV4IGNmNDE5MzY3
ZDE4NGQxOGQzODJjYWQyZWM5MzZhMzM4MjdiNTRhNGYuLjE4YjExODFlNTMxZjU0NzU0NmU1YTg2
MmRiZjc4NDQ1MmRjNjNjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50
UmVhZGVyLmNwcApAQCAtMzEsNiArMzEsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2
b2lkIFdlYkNvbnRlbnRSZWFkZXI6OmVuc3VyZUZyYWdtZW50KCkKK3sKKyAgICBBU1NFUlQoZnJh
bWUuZG9jdW1lbnQoKSk7CisgICAgaWYgKCFmcmFnbWVudCkKKyAgICAgICAgZnJhZ21lbnQgPSBm
cmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Cit9CisKIHZvaWQgV2Vi
Q29udGVudFJlYWRlcjo6YWRkRnJhZ21lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgbmV3RnJh
Z21lbnQpCiB7CiAgICAgaWYgKCFmcmFnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJD
b250ZW50UmVhZGVyLmgKaW5kZXggY2MxNzAzNWE5MTAwYTk2NTZjMjYxOTFhMDg0ZDc2ZDhjZjQ2
NGVmMi4uMzAzYjk3ZWI1NjQ5YmZmMjU1YTIyZDU0NGI3ZTliOGE0YzJjZWU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTYzLDEyICs2MywxMyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIHZvaWQgZW5zdXJlRnJhZ21lbnQoKTsKICAgICB2
b2lkIGFkZEZyYWdtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmKTsKIAogcHJpdmF0ZToKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRS
VEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBAIC05MCw3ICs5MSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEZpbGVQ
YXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggMWUzYmJmZDE5ZDM0NWM1MDk0YjEwMzNhZmVj
NzE2ZDE5OWY5MzYyMC4uYjU0YjM3ZmQwZmEzNzRjOWJiZWUyODhkMmU1YTBhYWU1YmU1NWFkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KQEAgLTU5Niw0ICs1OTYsMzYgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkK
ICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCit7CisgICAgaWYgKHBhdGhzLmlz
RW1wdHkoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBib29sIHJlYWRBbnlG
aWxlUGF0aCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgcGF0aCA6IHBhdGhzKSB7CisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpIHsKKyAgICAg
ICAgICAgIGVuc3VyZUZyYWdtZW50KCk7CisgICAgICAgICAgICBhdXRvIGF0dGFjaG1lbnQgPSBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRv
Y3VtZW50KTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZp
bGUoRmlsZTo6Y3JlYXRlKHBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3Bs
YXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0
dGFjaG1lbnQpOworICAgICAgICAgICAgcmVhZEFueUZpbGVQYXRoID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAg
ICAgIC8vIEZJWE1FOiBEb2VzIChhbmQgc2hvdWxkKSBhbnkgbWFjT1MgY2xpZW50IGRlcGVuZCBv
biBpbnNlcnRpbmcgZmlsZSBwYXRocyBhcyBwbGFpbiB0ZXh0IGluIHdlYiBjb250ZW50PworICAg
ICAgICAvLyBJZiBub3QsIHdlIHNob3VsZCBqdXN0IHJlbW92ZSB0aGlzLgorICAgICAgICBlbnN1
cmVGcmFnbWVudCgpOworICAgICAgICBhdXRvIHBhcmFncmFwaCA9IGNyZWF0ZURlZmF1bHRQYXJh
Z3JhcGhFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOnBhdGhdKSkpOworICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBo
KTsKKyAgICAgICAgcmVhZEFueUZpbGVQYXRoID0gdHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICBy
ZXR1cm4gcmVhZEFueUZpbGVQYXRoOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5tbQppbmRleCAwMzRiYTlhOTRjM2Q4ZGJiZWNh
NDUzZGNkZmMwMTFhZTczODE4MDg2Li4yMDNjODQ3NTkzYTg5OWE3ODBiOWNmMDQ0NGZjYmJkNjIx
MmZhMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50
UmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRS
ZWFkZXJJT1MubW0KQEAgLTQ3LDExICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJs
LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNv
bnRlbnRSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9XZWJDb250ZW50
UmVhZGVyTWFjLm1tCmluZGV4IDljNWQyNTQwYjYwNWVlYWQyMzI4ODVhNzZkNTliMzJjNDZhZjc4
ZjMuLjQyODNhNGYxMzdmNmVhZjVmYjQ3NDI1YWEzZjE1ZWE2MmEwN2ZjZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvV2ViQ29udGVudFJlYWRlck1hYy5tbQpAQCAtMzgs
NDkgKzM4LDE1IEBACiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKICNpbXBvcnQgIkhUTUxBbmNob3JFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1M
QXR0YWNobWVudEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAiTGVn
YWN5V2ViQXJjaGl2ZS5oIgotI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2ltcG9ydCAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQg
IlRleHQuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3Vw
LmgiCi0jaW1wb3J0IDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0
aHMpCi17Ci0gICAgaWYgKHBhdGhzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7Ci0KLSAgICBmcmFnbWVudCA9
IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLQotICAgIGZvciAoYXV0byYgdGV4
dCA6IHBhdGhzKSB7Ci0jaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1l
bnRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwot
ICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpOwotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpj
cmVhdGUoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDp0ZXh0XS5wYXRoKSwgSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLSAgICAgICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChhdHRhY2htZW50KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0jZWxzZQotICAgICAgICBhdXRvIHBhcmFncmFwaCA9IGNyZWF0ZURlZmF1bHRQYXJh
Z3JhcGhFbGVtZW50KGRvY3VtZW50KTsKLSAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOnRleHRdKSkpOwotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBo
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7
CiAgICAgaWYgKHVybC5zdHJpbmcoKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDVlODcyYzQ5NDFhY2E0MGM2Y2Q5NDFiYWUw
MjcwOTRmMThhM2NmZWEuLmY3NWQxZTRkZGEwOGM5MzI1MDkzMDNmYjUwODNmYTNmZGVjNGQ2MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC00
NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBs
YXRmb3JtU3RyYXRlZ2llcy5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKKyNpbXBvcnQgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogI2ltcG9y
dCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTI1LDggKzEy
NiwxNCBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogICAgICAgICBzdXBwb3J0ZWRUeXBlcy5h
cHBlbmQoa1VUVHlwZVBsYWluVGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRHJhZ0hh
bmRsaW5nTWV0aG9kOjpFZGl0UmljaFRleHQ6Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUg
aW4gUGFzdGVib2FyZDo6c3VwcG9ydGVkV2ViQ29udGVudFBhc3RlYm9hcmRUeXBlcygpKQotICAg
ICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKHR5cGUpOworICAgICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9h
cmRUeXBlKTsKKyAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChrVVRUeXBlQ29udGVu
dCk7CisgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoa1VUVHlwZUl0ZW0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBQYXN0ZWJv
YXJkOjpzdXBwb3J0ZWRXZWJDb250ZW50UGFzdGVib2FyZFR5cGVzKCkpCisgICAgICAgICAgICAg
ICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKHR5cGUpOworICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gUGFzdGVib2Fy
ZDo6c3VwcG9ydGVkRmlsZVVwbG9hZFBhc3RlYm9hcmRUeXBlcygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCmluZGV4IDIxYmY5MDNkMDhkYWFjNTNhYzU4ODBjNDY3ZGNlNWJmM2E5
NmRmOTIuLmE1NDZmNTkxYzkyODI1MjRkYzIzNzUxZmM3ZjY4YTU4ZTNjNWNjNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEl0ZW1JbmZv
LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTEzNCw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVm
ZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7CkBAIC0yOTAsNyArMjkx
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVmVjdG9y
PFN0cmluZz4gcmVhZEZpbGVuYW1lcygpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0
aHMoKTsKICAgICBTdHJpbmcgcmVhZFBsYXRmb3JtVmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcm
IGRvbVR5cGUsIGxvbmcgY2hhbmdlQ291bnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
OwogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0
SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwog
ICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YzU0YjM0NDI4ZTI0MGU1MTYwNmUwMThjNGQ3Y2IxMmU0MWQ3OWM3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbyB7CisgICAgU3RyaW5nIHBhdGhGb3JG
aWxlVXBsb2FkOworICAgIFN0cmluZyBjb250ZW50VHlwZUZvckZpbGVVcGxvYWQ7CisgICAgYm9v
bCBwcmVmZXJzQXR0YWNobWVudFByZXNlbnRhdGlvbjsKKyAgICBib29sIHByZWZlcnNJbmxpbmVQ
cmVzZW50YXRpb247CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUGFzdGVib2FyZEl0ZW1JbmZvOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBhdGhGb3JGaWxlVXBsb2Fk
IDw8IGNvbnRlbnRUeXBlRm9yRmlsZVVwbG9hZCA8PCBwcmVmZXJzQXR0YWNobWVudFByZXNlbnRh
dGlvbiA8PCBwcmVmZXJzSW5saW5lUHJlc2VudGF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVt
SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGFzdGVib2FyZEl0ZW1JbmZv
IHJlc3VsdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoRm9yRmlsZVVwbG9h
ZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5jb250ZW50VHlwZUZvckZpbGVVcGxvYWQpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmVyc0F0dGFj
aG1lbnRQcmVzZW50YXRpb24pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmVyc0lubGluZVByZXNlbnRhdGlvbikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CmluZGV4IGMwNjRhZDBmYzlmYzg2YjVmMjJiNDg5MTYwNTM1Y2U3MjM3ZTExMmQuLjU4MzdkOTFj
OTY4OWJhN2VhN2ZiMWNkOGY2NmM2NzUxY2NhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFNlbGVj
dGlvbkRhdGE7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVi
b2FyZEltYWdlOworc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJk
VVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFBhc3RlYm9hcmRDdXN0
b21EYXRhOwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFN0cmluZyYgdGl0bGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0
YUludGVyYWN0aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1B
dEluZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGQ4ZDdjOTQ5Mjc2
ZjFlOGU2YTA3ZTljNDMwMTdiN2EwZGRkNTBjNDUuLjI0ODgwNTM2ZjlhMmRkNGVlMDE1MTZjYWMy
YmQ1NTIyOWNlZDg1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFVS
TDsKIHN0cnVjdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7
CitzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1
Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKTsKICNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdQRSkKICAg
ICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bnQgaW5kZXgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9y
SXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBpbnQgaW5kZXgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA1MDg1ZTIwNDg3YjEzNjg4MmE1M2E0OTZk
MWRhMThjM2Y3MzhkZDYxLi5hNjJlNzQ0ZjNkYjc5NmRjM2U3NDc5NzE2MGI5MGIzZDJjMDFjNTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRU
SUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogCiB2b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZEZpbGVSZWFkZXImIHJlYWRlcikKIHsKLSAgICBhdXRvIGZpbGVuYW1lcyA9
IHJlYWRGaWxlbmFtZXMoKTsKKyAgICBhdXRvIGZpbGVuYW1lcyA9IHJlYWRGaWxlUGF0aHMoKTsK
ICAgICBpZiAoIWZpbGVuYW1lcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBmaWxl
bmFtZSA6IGZpbGVuYW1lcykKICAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZW5hbWUoZmlsZW5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oCmluZGV4IGU4ZTViZjM2YmNiMjY3MzkxZWRkM2M2MTcyOTUyM2UwNDMwY2ZiY2EuLjQyMTAx
ODY5OGUxMjU1ODYyNDc4ODhmYmFmN2E0YmQ2OWM2YjJmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTU2LDcgKzU2LDggQEAg
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIC0gKHZvaWQpc2V0SXRlbXM6KE5TQXJyYXk8TlNEaWN0
aW9uYXJ5ICo+ICopaXRlbXM7CiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5
cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwogQHByb3BlcnR5
IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVnZXIgbnVtYmVyT2ZGaWxlczsKLUBwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAqZHJvcHBlZEZpbGVVUkxz
OworQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICphbGxE
cm9wcGVkRmlsZVVSTHM7CistIChudWxsYWJsZSBOU1VSTCAqKXByZWZlcnJlZEZpbGVVcGxvYWRV
UkxBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4IGZpbGVUeXBlOihOU1N0cmluZyAqX051bGxhYmxl
ICpfTnVsbGFibGUpb3V0RmlsZVR5cGU7CiAtICh2b2lkKXVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVu
dGlmaWVyczooTlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVzOwogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGNkMWI3NDZlMjUyYzU3
MDljMjZkM2RmYWRkMDZkYWRjN2M5ZmU4MWUuLmQ0ZDEyNjgxY2QzYmNkNzM2NzU2N2E5NGIwYjVj
Y2EyMDIwMjVlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCisjaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTaGFy
ZWRCdWZmZXIuaCIKICNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCkBA
IC0yNDQsMTAgKzI0NSwxMCBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNv
bnRlbnRSZWFkZXImIHJlYWRlcikKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
dGVtczsgaSsrKSB7CiAgICAgICAgIGZvciAoaW50IHR5cGVJbmRleCA9IDA7IHR5cGVJbmRleCA8
IG51bWJlck9mVHlwZXM7IHR5cGVJbmRleCsrKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIFt0
eXBlcyBvYmplY3RBdEluZGV4OnR5cGVJbmRleF0sIGkpOwotICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKKyAgICAg
ICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JU
eXBlKHJlYWRlciwgc3RyYXRlZ3ksIFt0eXBlcyBvYmplY3RBdEluZGV4OnR5cGVJbmRleF0sIGkp
OworICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJk
V2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlKQorICAgICAgICAgICAgaWYg
KGl0ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTI2NiwxNyArMjY3LDMwIEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJiByZWFkZXIpCiAgICAgQVNTRVJUKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKTsKICAgICBh
dXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMCwgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0
ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOyBpbmRleCA8IG51
bWJlck9mSXRlbXM7ICsraW5kZXgpIHsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
ICAgICAgICBhdXRvIGluZm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
ZGV4LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1l
bnRFbmFibGVkKCkgJiYgIWluZm8ucGF0aEZvckZpbGVVcGxvYWQuaXNFbXB0eSgpOworICAgICAg
ICBpZiAoY2FuUmVhZEF0dGFjaG1lbnQgJiYgaW5mby5wcmVmZXJzQXR0YWNobWVudFByZXNlbnRh
dGlvbikgeworICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlUGF0aHMoeyBpbmZvLnBhdGhGb3JG
aWxlVXBsb2FkIH0pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgog
ICAgICAgICAvLyBUcnkgdG8gcmVhZCBkYXRhIGZyb20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhh
dCB0aGlzIHBhc3RlYm9hcmQgaXRlbSBzdXBwb3J0cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6
ZXMuIFR5cGUgaWRlbnRpZmllcnMgYXJlCiAgICAgICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlk
ZWxpdHksIGFzIHNwZWNpZmllZCBieSBlYWNoIHBhc3RlYm9hcmQgaXRlbS4KICAgICAgICAgVmVj
dG9yPFN0cmluZz4gdHlwZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHk7CiAgICAgICAgIHN0cmF0
ZWd5LmdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHR5cGVzRm9ySXRlbUluT3JkZXJP
ZkZpZGVsaXR5LCBpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFJlYWRlclJlc3Vs
dCByZXN1bHQgPSBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgICAgICBmb3IgKGF1
dG8mIHR5cGUgOiB0eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZGaWRlbGl0eSkgewotICAgICAgICAgICAg
YXV0byByZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIs
IHN0cmF0ZWd5LCB0eXBlLCBpbmRleCk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFkUGFzdGVi
b2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRleCk7
CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0No
YW5nZWRFeHRlcm5hbGx5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlm
IChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgIGlm
IChjYW5SZWFkQXR0YWNobWVudCAmJiByZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFk
VHlwZSkKKyAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGhzKHsgaW5mby5wYXRoRm9yRmls
ZVVwbG9hZCB9KTsKKyNlbmRpZgogICAgIH0KIH0KIApAQCAtNDA1LDEyICs0MTksMTcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PndyaXRlVG9QYXN0ZWJvYXJkKGNvY29hVHlwZS5nZXQoKSwgZGF0YSwgbV9wYXN0ZWJvYXJkTmFt
ZSk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMoKQorVmVj
dG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocygpCiB7Ci0gICAgVmVjdG9yPFN0
cmluZz4gZmlsZW5hbWVzOwotICAgIC8vIEN1cnJlbnRseSwgZGF0YSBpbnRlcmFjdGlvbiBpcyB0
aGUgb25seSBjYXNlIG9uIGlPUyB3aGVyZSB0aGUgcGFzdGVib2FyZCBtYXkgY29udGFpbiByZWxl
dmFudCBmaWxlbmFtZXMuCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5nZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oZmlsZW5hbWVzLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKLSAgICByZXR1cm4gZmlsZW5hbWVzOworICAgIFZlY3RvcjxTdHJpbmc+IGZp
bGVQYXRoczsKKyAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCk7CisgICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMCwgbnVtYmVy
T2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5h
bWUpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsraW5kZXgpIHsKKyAgICAgICAgLy8gQ3VycmVu
dGx5LCBkcmFnIGFuZCBkcm9wIGlzIHRoZSBvbmx5IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSAicGFz
dGVib2FyZCIgbWF5IGNvbnRhaW4gZmlsZSBwYXRocy4KKyAgICAgICAgYXV0byBmaWxlUGF0aCA9
IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5h
bWUpLnBhdGhGb3JGaWxlVXBsb2FkOworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGZpbGVQYXRocy5hcHBlbmQoV1RGTW92ZShmaWxlUGF0aCkpOworICAgIH0K
KyAgICByZXR1cm4gZmlsZVBhdGhzOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNmI3MWY4NWIyMmMy
ZGMwN2EyZDMwOGJkMDYwMzE2Njk4ODgxNmFmLi44ZmQ2ZmMyMzRmMzk3YWQwYTRlYWRhNmFjYjIw
YzAyZWQ3NTlhZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTEwMiwxNiArMTAyLDIyIEBAIGludCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdAogICAgIHJldHVybiBbbV9wYXN0ZWJv
YXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobnVtYmVyT2ZGaWxlcyldID8gW21fcGFz
dGVib2FyZCBudW1iZXJPZkZpbGVzXSA6IDA7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6ZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCkKK1Bhc3RlYm9hcmRJdGVt
SW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGlu
ZGV4KQogewotICAgIGlmICghW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGRyb3BwZWRGaWxlVVJMcyldKQorICAgIGlmIChpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51
bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFN0cmluZz4g
ZmlsZW5hbWVzOwotICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gW21fcGFzdGVib2FyZCBkcm9w
cGVkRmlsZVVSTHNdKQotICAgICAgICBmaWxlbmFtZXMuYXBwZW5kKGZpbGVVUkwucGF0aCk7Cisg
ICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVmZXJyZWRGaWxlVXBsb2FkVVJMQXRJbmRleDpmaWxl
VHlwZTopXSkgeworICAgICAgICBOU1N0cmluZyAqZmlsZVR5cGUgPSBuaWw7CisgICAgICAgIGlu
Zm8ucGF0aEZvckZpbGVVcGxvYWQgPSBbbV9wYXN0ZWJvYXJkIHByZWZlcnJlZEZpbGVVcGxvYWRV
UkxBdEluZGV4OmluZGV4IGZpbGVUeXBlOiZmaWxlVHlwZV0ucGF0aDsKKyAgICAgICAgaW5mby5j
b250ZW50VHlwZUZvckZpbGVVcGxvYWQgPSBmaWxlVHlwZTsKKyAgICB9CiAKLSAgICByZXR1cm4g
ZmlsZW5hbWVzOworICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21fcGFzdGVi
b2FyZCBpdGVtUHJvdmlkZXJzXSBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICBpbmZvLnByZWZl
cnNBdHRhY2htZW50UHJlc2VudGF0aW9uID0gaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlID09IFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50OworICAg
IGluZm8ucHJlZmVyc0lubGluZVByZXNlbnRhdGlvbiA9IGl0ZW1Qcm92aWRlci5wcmVmZXJyZWRQ
cmVzZW50YXRpb25TdHlsZSA9PSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lOwor
ICAgIHJldHVybiBpbmZvOwogfQogCiBzdGF0aWMgYm9vbCBwYXN0ZWJvYXJkTWF5Q29udGFpbkZp
bGVQYXRocyhpZDxBYnN0cmFjdFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaApp
bmRleCBhYmZmMjY4YzhhMjA4MWNhNDA5MGQ1ZGVmNzQ5Nzg4MTdhNGFkYjUyLi5jYzg4ZmY2Y2Vh
YWFiMjc4NDU0MjFmMTQ2OGVkYjEwMDE1YWNiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKQEAgLTkwLDcg
KzkwLDEwIEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZCA6IE5TT2JqZWN0PEFic3RyYWN0UGFzdGVib2FyCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBu
b25hdG9taWMpIE5TSW50ZWdlciBjaGFuZ2VDb3VudDsKIAogLy8gVGhpcyB3aWxsIG9ubHkgYmUg
bm9uLWVtcHR5IHdoZW4gYW4gb3BlcmF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZC4KLUBwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAqZHJvcHBlZEZpbGVVUkxz
OworQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICphbGxE
cm9wcGVkRmlsZVVSTHM7CisKKy8vIFRoZSBwcmVmZXJyZWQgZmlsZSBVUkwgY29ycmVzcG9uZHMg
dG8gdGhlIGhpZ2hlc3QgZmlkZWxpdHkgbm9uLXByaXZhdGUgVVRJIHRoYXQgd2FzIGxvYWRlZC4K
Ky0gKG51bGxhYmxlIE5TVVJMICopcHJlZmVycmVkRmlsZVVwbG9hZFVSTEF0SW5kZXg6KE5TVUlu
dGVnZXIpaW5kZXggZmlsZVR5cGU6KE5TU3RyaW5nICpfTnVsbGFibGUgKl9OdWxsYWJsZSlvdXRG
aWxlVHlwZTsKIAogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBCT09MIGhhc1BlbmRp
bmdPcGVyYXRpb247CiAtICh2b2lkKWluY3JlbWVudFBlbmRpbmdPcGVyYXRpb25Db3VudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0KaW5kZXggYjM0MzE2OGVmMjQ0MmU1ZTdkM2Y3YjVkNTNkMDkyOWFmZTg2ZTdk
OS4uZGMwNmE5ZTQ5MmYyMDg2YzQ1MjIwMTdkZTU4YWVlMTYyY2Q2YTc2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0KQEAgLTI0MywxMSArMjQzLDE1IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1Q
cm92aWRlcjooTlNJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXIgdHlwZXNUb0xvYWQ6CiAgICAg
X2ZpbGVVUkxzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
ICAgICBfaXRlbVByb3ZpZGVyID0gaXRlbVByb3ZpZGVyOwogICAgIF90eXBlc1RvTG9hZCA9IHR5
cGVzVG9Mb2FkOwotICAgIF9jYW5CZVJlcHJlc2VudGVkQXNGaWxlVXBsb2FkID0gaXRlbVByb3Zp
ZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlICE9IFVJUHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGVJbmxpbmU7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoQk9PTCljYW5CZVJlcHJl
c2VudGVkQXNGaWxlVXBsb2FkCit7CisgICAgcmV0dXJuIFtfaXRlbVByb3ZpZGVyIHByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlXSAhPSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5l
OworfQorCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopdHlwZXNUb0xvYWQKIHsKICAgICByZXR1
cm4gX3R5cGVzVG9Mb2FkLmdldCgpOwpAQCAtMjc4LDYgKzI4MiwyNiBAQCAtIChOU0l0ZW1Qcm92
aWRlciAqKWl0ZW1Qcm92aWRlcgogICAgIHJldHVybiBfaXRlbVByb3ZpZGVyLmdldCgpOwogfQog
CistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgX19ibG9jayBOU011dGFibGVTdHJp
bmcgKmRlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIFtkZXNjcmlw
dGlvbiBhcHBlbmRGb3JtYXQ6QCI8JUA6ICVwIHR5cGVzVG9Mb2FkOiBbICIsIFtzZWxmIGNsYXNz
XSwgc2VsZl07CisgICAgW190eXBlc1RvTG9hZCBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpe
KE5TU3RyaW5nICp0eXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICopIHsKKyAgICAgICAgW2Rl
c2NyaXB0aW9uIGFwcGVuZFN0cmluZzp0eXBlXTsKKyAgICAgICAgaWYgKGluZGV4ICsgMSA8IFtf
dHlwZXNUb0xvYWQgY291bnRdKQorICAgICAgICAgICAgW2Rlc2NyaXB0aW9uIGFwcGVuZFN0cmlu
ZzpAIiwgIl07CisgICAgfV07CisgICAgW2Rlc2NyaXB0aW9uIGFwcGVuZEZvcm1hdDpAIiBdIGZp
bGVVUkxzOiB7ICJdOworICAgIF9fYmxvY2sgTlNVSW50ZWdlciBpbmRleCA9IDA7CisgICAgW19m
aWxlVVJMcyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAqdHlw
ZSwgTlNVUkwgKnVybCwgQk9PTCAqKSB7CisgICAgICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRGb3Jt
YXQ6QCIlQCA9PiBcIiVAXCIiLCB0eXBlLCB1cmwucGF0aF07CisgICAgICAgIGlmICgrK2luZGV4
IDwgW19maWxlVVJMcyBjb3VudF0pCisgICAgICAgICAgICBbZGVzY3JpcHRpb24gYXBwZW5kU3Ry
aW5nOkAiLCAiXTsKKyAgICB9XTsKKyAgICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiIH0+
Il07CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworfQorCiBAZW5kCiAKIEBpbnRlcmZhY2UgV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZCAoKQpAQCAtNDcwLDcgKzQ5NCwzNCBAQCAtIChOU0ludGVn
ZXIpY2hhbmdlQ291bnQKICAgICByZXR1cm4gX2NoYW5nZUNvdW50OwogfQogCi0tIChOU0FycmF5
PE5TVVJMICo+ICopZHJvcHBlZEZpbGVVUkxzCistIChOU1VSTCAqKXByZWZlcnJlZEZpbGVVcGxv
YWRVUkxBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4IGZpbGVUeXBlOihOU1N0cmluZyAqKilvdXRG
aWxlVHlwZQoreworICAgIGlmIChvdXRGaWxlVHlwZSkKKyAgICAgICAgKm91dEZpbGVUeXBlID0g
bmlsOworCisgICAgaWYgKGluZGV4ID49IF9sb2FkUmVzdWx0cy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBhdXRvIHJlc3VsdCA9IF9sb2FkUmVzdWx0c1tpbmRleF07CisgICAg
aWYgKCFbcmVzdWx0IGNhbkJlUmVwcmVzZW50ZWRBc0ZpbGVVcGxvYWRdKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciA9IFtyZXN1bHQgaXRl
bVByb3ZpZGVyXTsKKyAgICBmb3IgKE5TU3RyaW5nICpyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIg
aW4gaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgZm9y
IChOU1N0cmluZyAqbG9hZGVkVHlwZUlkZW50aWZpZXIgaW4gW3Jlc3VsdCBsb2FkZWRUeXBlSWRl
bnRpZmllcnNdKSB7CisgICAgICAgICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8oKENGU3RyaW5n
UmVmKXJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllciwgKENGU3RyaW5nUmVmKWxvYWRlZFR5cGVJZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKG91
dEZpbGVUeXBlKQorICAgICAgICAgICAgICAgICpvdXRGaWxlVHlwZSA9IGxvYWRlZFR5cGVJZGVu
dGlmaWVyOworICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHQgZmlsZVVSTEZvclR5cGU6bG9hZGVk
VHlwZUlkZW50aWZpZXJdOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG5pbDsKK30K
KworLSAoTlNBcnJheTxOU1VSTCAqPiAqKWFsbERyb3BwZWRGaWxlVVJMcwogewogICAgIE5TTXV0
YWJsZUFycmF5PE5TVVJMICo+ICpmaWxlVVJMcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAg
ICAgZm9yIChhdXRvIGxvYWRSZXN1bHQgOiBfbG9hZFJlc3VsdHMpIHsKQEAgLTUzOSw4ICs1OTAs
MTkgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVJZGVudGlmaWVyc1RvTG9hZEZvclJl
Z2lzdGVyZWRUeXBlSWRlbnRmaWVyczooTlNBcnIKICAgICBOU011dGFibGVTZXQgKnR5cGVzVG9M
b2FkID0gW05TTXV0YWJsZVNldCBzZXRdOwogICAgIE5TU3RyaW5nICpoaWdoZXN0RmlkZWxpdHlD
b250ZW50VHlwZSA9IG5pbDsKIAorICAgIEJPT0wgY29udGFpbnNGbGF0UlRGRCA9IFtyZWdpc3Rl
cmVkVHlwZUlkZW50aWZpZXJzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWtVVFR5cGVGbGF0
UlRGRF07CiAgICAgLy8gRmlyc3QsIHdlIHdhbnQgdG8gZWl0aGVyIGxvYWQgdGhlIGhpZ2hlc3Qg
ZmlkZWxpdHkgc3VwcG9ydGVkIHR5cGUgb3IgdGhlIGhpZ2hlc3QgZmlkZWxpdHkgZ2VuZXJpYyBj
b250ZW50IHR5cGUuCiAgICAgZm9yIChOU1N0cmluZyAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVy
IGluIHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5zRmxh
dFJURkQgJiYgW3JlZ2lzdGVyZWRUeXBlSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6KE5TU3Ry
aW5nICopa1VUVHlwZVJURkRdKSB7CisgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSBh
dHRhY2htZW50cyBhcmUgZW5hYmxlZCBhbmQgd2UncmUgYWNjZXB0aW5nIGFsbCB0eXBlcyBvZiBj
b250ZW50IHVzaW5nIGF0dGFjaG1lbnQKKyAgICAgICAgICAgIC8vIGVsZW1lbnRzIGFzIGEgZmFs
bGJhY2sgcmVwcmVzZW50YXRpb24sIGlmIHRoZSBzb3VyY2Ugd3JpdGVzIGF0dHJpYnV0ZWQgc3Ry
aW5ncyB0byB0aGUgcGFzdGVib2FyZCB3aXRoCisgICAgICAgICAgICAvLyBjb20uYXBwbGUucnRm
ZCBhdCBhIGhpZ2hlciBmaWRlbGl0eSB0aGFuIGNvbS5hcHBsZS5mbGF0LXJ0ZmQsIHdlJ2xsIGVu
ZCB1cCBsb2FkaW5nIG9ubHkgY29tLmFwcGxlLnJ0ZmQKKyAgICAgICAgICAgIC8vIGFuZCBkcm9w
cGluZyB0aGUgdGV4dCBhcyBhbiBhdHRhY2htZW50IGVsZW1lbnQgYmVjYXVzZSB3ZSBjYW5ub3Qg
Y29udmVydCB0aGUgZHJvcHBlZCBjb250ZW50IHRvIG1hcmt1cC4KKyAgICAgICAgICAgIC8vIElu
c3RlYWQsIGlmIGZsYXQgUlRGRCBpcyBwcmVzZW50IGluIHRoZSBpdGVtIHByb3ZpZGVyLCBhbHdh
eXMgcHJlZmVyIHRoYXQgb3ZlciBSVEZEIHNvIHRoYXQgZHJvcHBpbmcgYXMKKyAgICAgICAgICAg
IC8vIHJlZ3VsYXIgd2ViIGNvbnRlbnQgaXNuJ3Qgb3ZlcnJpZGRlbiBieSBlbmFibGluZyBhdHRh
Y2htZW50IGVsZW1lbnRzLgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAg
ICAgICBpZiAodHlwZUNvbmZvcm1zVG9UeXBlcyhyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIsIF9z
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMuZ2V0KCkpKSB7CiAgICAgICAgICAgICBbdHlwZXNUb0xv
YWQgYWRkT2JqZWN0OnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcl07CiAgICAgICAgICAgICBicmVh
azsKQEAgLTYyNiw3ICs2ODgsNyBAQCAtICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250
ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKQogICAgICAgICAg
ICAgICAgIHJldGFpbmVkU2VsZi0+X2xvYWRSZXN1bHRzLmFwcGVuZChsb2FkUmVzdWx0KTsKICAg
ICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25CbG9jayhbcmV0YWluZWRTZWxmIGRyb3BwZWRG
aWxlVVJMc10pOworICAgICAgICBjb21wbGV0aW9uQmxvY2soW3JldGFpbmVkU2VsZiBhbGxEcm9w
cGVkRmlsZVVSTHNdKTsKICAgICB9OwogCiAgICAgaWYgKHN5bmNocm9ub3VzVGltZW91dCA+IDAg
JiYgIWRpc3BhdGNoX2dyb3VwX3dhaXQoc3luY2hyb25vdXNGaWxlTG9hZGluZ0dyb3VwLmdldCgp
LCBkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBzeW5jaHJvbm91c1RpbWVvdXQgKiBO
U0VDX1BFUl9TRUMpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdEYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFj
Lm1tCmluZGV4IDQwNmQ0NWE5ZGI4OWM1NGNjMjQ0ZDg3Y2I1YTI1ZTE0YzY0NzU3MGIuLjYwYjdj
M2E4OTYwODVkZDI0ZTIxNzM0NWRhMTdiZjM1ZmIzZDk5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgIlBh
c3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCiAjaWYgUExBVEZPUk0oSU9T
KQpAQCAtMjIwLDYgKzIyMSw5IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNv
bnRlbnQoRHJhZ2dpbmdQdXJwb3NlIHB1cnBvc2UpIGNvbnN0CiAgICAgaWYgKHB1cnBvc2UgPT0g
RHJhZ2dpbmdQdXJwb3NlOjpGb3JGaWxlVXBsb2FkKQogICAgICAgICByZXR1cm4gY29udGFpbnNG
aWxlcygpOwogCisgICAgaWYgKHB1cnBvc2UgPT0gRHJhZ2dpbmdQdXJwb3NlOjpGb3JFZGl0aW5n
ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVs
ZW1lbnRFbmFibGVkKCkgJiYgY29udGFpbnNGaWxlcygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KwogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFzdGVib2FyZE5hbWUpOwog
ICAgIHJldHVybiB0eXBlcy5jb250YWlucyhTdHJpbmcoV2ViQXJjaGl2ZVBib2FyZFR5cGUpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBiNjc0
Yzc5ZjIyMzdiMGI3MzE4MGIyODg0ODllMTIyYTcwOTJlZDRiLi4yYjYzYjJmNDVhMjIwOGJiMDQ3
MGJiMDcwMDkxYTgyYTk5NTFjNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHBhdGhzOwogICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JU
eXBlKHBhdGhzLCBsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKLSAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFk
ZXIucmVhZEZpbGVuYW1lcyhwYXRocykpCisgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRGaWxlUGF0aHMocGF0aHMpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgfQog
fQogCi1WZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5hbWVzKCkKK1ZlY3RvcjxT
dHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlUGF0aHMoKQogewogICAgIC8vIEZJWE1FOiBTZWVt
cyBzaWxseSB0byBjb252ZXJ0IHBhdGhzIHRvIFVSTHMgYW5kIHRoZW4gYmFjayB0byBwYXRocy4g
RG9lcyB0aGF0IGRvIGFueXRoaW5nIGhlbHBmdWw/CiAgICAgVmVjdG9yPFN0cmluZz4gYWJzb2x1
dGVVUkxzID0gYWJzb2x1dGVVUkxzRnJvbVBhc3RlYm9hcmRGaWxlbmFtZXMobV9wYXN0ZWJvYXJk
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkMWRk
NjU0MTQyZGY3NjkwYmU4YWRjMmU0MjFiZGY1YTViZWM4NDY0Li4zZTgxN2NiNzY5YzBkMTk5YTlk
OTgzZTg0MDk5Y2VhMjJmMWVjMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTM3Niw2ICszNzYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToK
ICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHMnOiBbJzxXZWJDb3JlL01lZGlhQ29u
c3RyYWludHMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhJzog
Wyc8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpQYXN0ZWJvYXJk
SW1hZ2UnOiBbJzxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlBh
c3RlYm9hcmRJdGVtSW5mbyc6IFsnPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJzogWyc8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCc6IFsnPFdlYkNvcmUv
UGFzdGVib2FyZC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQnOiBbJzxXZWJDb3JlL0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg+J10sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJv
eHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQ
cm94eUNvY29hLm1tCmluZGV4IDYzMjU0ZDk3ZGZjOGFlYjE1OTg3Mzc5NjM1YmE3Y2Y1YzVlOGQz
NDEuLmIyMDEyMmI2YThkZDRiYzFlNDU3NWQxMzZiNjE3MGEwMGVhMzM5M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNv
Y29hLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAj
aW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3IuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvVVJMLmg+CkBAIC0yMjUsOSArMjI2LDkgQEAgdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHUKICAgICBpdGVtc0NvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0RmlsZW5hbWVz
Rm9yRGF0YUludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFBh
c3RlYm9hcmRJdGVtSW5mbyYgaW5mbykKIHsKLSAgICBmaWxlbmFtZXMgPSBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbigpOworICAg
IGluZm8gPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaW5kZXgpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVy
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFzdGVib2FyZFByb3h5LmgKaW5kZXggNmNlZGUwNWUyYTMzMjg3ZWIyYmQ2YjRhMjRl
NWViZDUyMzA2NGJiNC4uYWYyNzA1ZDY3MTVlMDcwOWQ2NDdmOGIwMDVkZmYyZDEyNzBkYmEzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBzdHJ1Y3QgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOworc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50OwogfQpAQCAtNzcsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZFVS
TEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHVybCwgU3RyaW5nJiB0
aXRsZSk7CiAgICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwogICAgIHZvaWQgZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0
X3QmIGl0ZW1zQ291bnQpOwotICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9u
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMp
OworICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyYgZmlsZW5h
bWUpOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiZTE2MTg0MjRjNzM2
Y2YyYzE4MWMzN2E0Y2Q4NDQ3NzU3ZGNhZmJjLi5jN2IzYjI2ODA3MTg4MGFhZjY1NGFkYmQ4ZGVh
OTYwYzlhOThlNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMCw3ICszMCw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90
IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KFN0cmluZyB1cmwsIFN0cmluZyB0aXRsZSkKICAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
dWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNp
emUpCiAgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAodWludDY0X3QgaXRlbXNDb3VudCkKLSAgICBHZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rp
b24oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzKQor
ICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykK
ICAgICBVcGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4gaWRlbnRp
ZmllcnMsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBHZXRQYXN0ZWJvYXJkVHlwZXNCeUZp
ZGVsaXR5Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IGRiMzE3ODhjMDViOWY5MDk0ZTdkNTcyZTE4MzM2OWFjZGE2ZjJj
ZjQuLjg1NDQ4N2NmMDNjMjM3NDZmODY2NzIzYzNkNWJmZmFhNGE2YzRlMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJk
SXRlbUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1By
b2dyZXNzVHJhY2tlci5oPgpAQCAtMzIyLDkgKzMyMywxMSBAQCBpbnQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogICAgIHJldHVybiBpdGVtc0NvdW50OwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitQYXN0ZWJvYXJkSXRlbUluZm8g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFzdGVib2FyZFByb3h5OjpHZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24ocGFzdGVib2Fy
ZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRGaWxlbmFtZXNGb3JEYXRh
SW50ZXJhY3Rpb246OlJlcGx5KGZpbGVuYW1lcyksIDApOworICAgIFBhc3RlYm9hcmRJdGVtSW5m
byBpbmZvOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleDo6UmVwbHkoaW5mbyksIDApOwor
ICAgIHJldHVybiBpbmZvOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVy
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAppbmRleCBhZDJlOGYxNWU5NTRhODZkZTA2MzgxZWI5MjQzYTk5NDY3Mzk0NDBkLi5jZDMw
ZmMxNWRhMzdmMzVkNzY2YzUzNjFhOTNmZTJkZjM3MDM1ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZpbGVuYW1l
c0ZvckRhdGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlG
b3JJdGVtQXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCBlNzU5MjU2YjhmZWQ3NTk0OWMxNTc2OGYwMmY2NjZiZWZjNTY0
MzBkLi44NDJjY2RjMGE4ZjgzZTgxMjdjNjZmZmYyYmJhZGQ4NzlmMjIxZTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJv
YXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRG
aWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRl
ZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXNCeUZp
ZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCB1aW50NjRfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCAyMzQwOTY3NDRjNGY1Y2Y3MTkzMmM5Y2M1OWY0
ZTJmMGMwNDE5NWY5Li5lZDdmN2Y1ZmYyNmJhZDZhNjNiNjQzOGM3MjQ3Y2ViZmM1MWQ0MWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGFz
dGVib2FyZEl0ZW1JbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KQEAgLTIzOSw4ICsyNDAsOCBAQCBTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFN0
cmluZyhpbmRleCwgdHlwZSk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRG
aWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1dlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIGZpbGVuYW1lcyA9IFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9u
KCk7CisgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM1YmZj
MzNkNmQ0MjRkODUxNmQ5Mjg3MGExN2FlODcwODU2NDkyYWQuLmRiYzc0OTljNTNjZGI4MDU3ZWZh
MjY5ZGJiOWE2MzRjZTk1NzNmZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOC0wMS0wMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0
XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVzIG9uIGlPUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyAzIG5l
dyBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgZGlmZmVyZW50IHVzZSBjYXNlcyBvZiBkcm9wcGluZyBj
b250ZW50IGFzIGF0dGFjaG1lbnQgZWxlbWVudHMgd2hlbiB0aGUgcnVudGltZQorICAgICAgICBz
d2l0Y2ggaXMgZW5hYmxlZC4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOgor
ICAgICAgICAoLVtOU0l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGE6dHlwZTpdKToKKyAgICAgICAg
KHBsYXRmb3JtQ29weVBORyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKwor
ICAgICAgICBGaXggc29tZSBjdXJyZW50bHkgZmFpbGluZyBpT1MgZHJhZyBhbmQgZHJvcCB0ZXN0
cy4gSW4gdGhpcyBjYXNlLCB0aGVyZSdzIG5vIHJlYXNvbiBSVEZEIHNob3VsZCBhcHBlYXIgaW4g
dGhlCisgICAgICAgIHNvdXJjZSBpdGVtIHByb3ZpZGVyIHdoZW4gZHJhZ2dpbmcgcmljaCB0ZXh0
ICp3aXRob3V0KiBhdHRhY2htZW50cywgc28gdGhpcyBzaG91bGQgaGF2ZSBiZWVuIGEgY2hlY2sg
Zm9yIGp1c3QKKyAgICAgICAga1VUVHlwZVJURiBpbnN0ZWFkLgorCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKworICAgICAgICBUZXN0cyBhIGZldyBjYXNlcyBvZiBpbnNlcnRpbmcg
YXR0YWNobWVudCBlbGVtZW50cyB2aWEgZHJvcDoKKyAgICAgICAgMS4gIFdlIHNob3VsZCBkaXN0
aW5ndWlzaCBiZXR3ZWVuIGRyb3BzIGNvbnRhaW5pbmcgcmljaC9wbGFpbiB0ZXh0IGZpbGVzIGZy
b20ganVzdCBkcm9wcGluZyByaWNoL3BsYWluIHRleHQuCisgICAgICAgICAgICBJbnN0ZWFkIG9m
IGluc2VydGluZyB0aGUgY29udGVudHMgYXMgaW5saW5lIHdlYiBjb250ZW50LCB0aGlzIHNob3Vs
ZCBnZW5lcmF0ZSBhdHRhY2htZW50IGVsZW1lbnRzLgorICAgICAgICAyLiAgVGVzdCB0aGUgZmFs
bGJhY2sgbWVjaGFuaXNtIGZvciBpbnNlcnRpbmcgYXR0YWNobWVudCBlbGVtZW50cy4gSWYgdGhl
IHByZWZlcnJlZCBwcmVzZW50YXRpb24gc3R5bGUgaXMgbm90CisgICAgICAgICAgICBleHBsaWNp
dGx5IHNldCwgYnV0IHRoZXJlJ3Mgbm90aGluZyBXZWJLaXQgd291bGQgb3RoZXJ3aXNlIGRvIHdp
dGggdGhlIGRyb3BwZWQgY29udGVudCwgdGhlbiB3ZSBzaG91bGQgZmFsbAorICAgICAgICAgICAg
YmFjayB0byBpbnNlcnRpbmcgdGhlIGNvbnRlbnQgYXMgYW4gYXR0YWNobWVudC4KKyAgICAgICAg
My4gIFRlc3QgdGhhdCBpZiBtdWx0aXBsZSBhdHRhY2htZW50cyBhbmQgaW5saW5lIGl0ZW0gcHJv
dmlkZXJzIGFyZSBwcmVzZW50LCBXZWJLaXQgd2lsbCByZXNwZWN0IHRoZSBvcmRlciBpbgorICAg
ICAgICAgICAgd2hpY2ggdGhleSB3ZXJlIGluc2VydGVkIGJ5IHRoZSBzb3VyY2UgKGFzIG9wcG9z
ZWQgdG8sIGZvciBpbnN0YW5jZSwgcHV0dGluZyBhbGwgb2YgdGhlIGF0dGFjaG1lbnRzIGluIGZy
b250CisgICAgICAgICAgICBvciBhdCB0aGUgZW5kKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0Ol0pOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8gcmV0
dXJuIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHNv
bWUgZ2l2ZW4gc2NyaXB0LCBhbmQgcmV3cml0ZQorICAgICAgICAtc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdCB0byBqdXN0IHR1cm4gYXJvdW5kIGFuZCBjYWxsIHRoaXMuCisKKyAgICAgICAg
KC1bVGVzdFdLV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0Ol0pOgorCiAyMDE3
LTEyLTI4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtXaW5dW0NNYWtlXSBVc2UgYWRkX2N1c3RvbV9jb21tYW5kIHRvIGNvcHkgZWFjaCBmb3J3
YXJkaW5nIGhlYWRlciBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggZjkzZmE2YjUzZmI2
NzAxNDY3YWJiNTFiNTQxODQ5NGRjYTg1NTM1ZS4uY2ZiZjQxOTQyZTY2MjZmYmI2MWRhNGViNTlj
MDdhODhhNjcxNWU1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0zMjEsNiArMzIxLDI0IEBA
IEBlbmQKIAogI3ByYWdtYSBtYXJrIC0gUGxhdGZvcm0gdGVzdGluZyBoZWxwZXIgZnVuY3Rpb25z
CiAKKyNpZiBQTEFURk9STShJT1MpCisKK3R5cGVkZWYgdm9pZCheSXRlbVByb3ZpZGVyRGF0YUxv
YWRIYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKKworQGltcGxlbWVudGF0aW9uIE5TSXRl
bVByb3ZpZGVyIChBdHRhY2htZW50VGVzdGluZykKKworLSAodm9pZClyZWdpc3RlckRhdGE6KE5T
RGF0YSAqKWRhdGEgdHlwZTooTlNTdHJpbmcgKil0eXBlCit7CisgICAgW3NlbGYgcmVnaXN0ZXJE
YXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjp0eXBlIHZpc2liaWxpdHk6TlNJdGVt
UHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W3Byb3RlY3Rl
ZERhdGEgPSByZXRhaW5QdHIoZGF0YSldIChJdGVtUHJvdmlkZXJEYXRhTG9hZEhhbmRsZXIgY29t
cGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHByb3RlY3RlZERhdGEuZ2V0KCksIG5pbCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAg
fV07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogdm9pZCBwbGF0Zm9y
bUNvcHlSaWNoVGV4dFdpdGhNdWx0aXBsZUF0dGFjaG1lbnRzKCkKIHsKICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRGF0YTp0ZXN0SW1h
Z2VEYXRhKCkgb2ZUeXBlOihOU1N0cmluZyAqKWtVVFR5cGVQTkddKTsKQEAgLTM2Myw4ICszODEs
NiBAQCB2b2lkIHBsYXRmb3JtQ29weVJpY2hUZXh0V2l0aEltYWdlKCkKICNlbmRpZgogfQogCi10
eXBlZGVmIHZvaWQoXkl0ZW1Qcm92aWRlckRhdGFMb2FkSGFuZGxlcikoTlNEYXRhICosIE5TRXJy
b3IgKik7Ci0KIHZvaWQgcGxhdGZvcm1Db3B5UE5HKCkKIHsKICNpZiBQTEFURk9STShNQUMpCkBA
IC0zNzUsMTAgKzM5MSw3IEBAIHZvaWQgcGxhdGZvcm1Db3B5UE5HKCkKICAgICBVSVBhc3RlYm9h
cmQgKnBhc3RlYm9hcmQgPSBbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsKICAgICBh
dXRvIGl0ZW0gPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKICAgICBb
aXRlbSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlv
blN0eWxlQXR0YWNobWVudF07Ci0gICAgW2l0ZW0gcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlUE5HIHZpc2liaWxpdHk6TlNJdGVt
UHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W10gKEl0ZW1Q
cm92aWRlckRhdGFMb2FkSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAq
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodGVzdEltYWdlRGF0YSgpLCBuaWwpOwotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIH1dOworICAgIFtpdGVtIHJlZ2lzdGVyRGF0YTp0ZXN0SW1h
Z2VEYXRhKCkgdHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUE5HXTsKICAgICBwYXN0ZWJvYXJkLml0
ZW1Qcm92aWRlcnMgPSBAWyBpdGVtLmdldCgpIF07CiAjZW5kaWYKIH0KQEAgLTk2MCwxMSArOTcz
LDcgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZEltYWdlQXNBdHRh
Y2htZW50KQogICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMo
KTsKICAgICBhdXRvIGRyYWdnaW5nU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBh
dXRvIGl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKLSAgICBb
aXRlbSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlv
blN0eWxlQXR0YWNobWVudF07Ci0gICAgW2l0ZW0gcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25G
b3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlUE5HIHZpc2liaWxpdHk6TlNJdGVt
UHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGwgbG9hZEhhbmRsZXI6W10gKEl0ZW1Q
cm92aWRlckRhdGFMb2FkSGFuZGxlciBjb21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAq
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodGVzdEltYWdlRGF0YSgpLCBuaWwpOwotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIH1dOworICAgIFtpdGVtIHJlZ2lzdGVyRGF0YTp0ZXN0SW1h
Z2VEYXRhKCkgdHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUE5HXTsKICAgICBbZHJhZ2dpbmdTaW11
bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW0uZ2V0KCkgXV07CiAgICAgW2Ry
YWdnaW5nU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludFplcm8gdG86Q0dQb2ludE1ha2UoNTAsIDUw
KV07CiAKQEAgLTEwMTAsNiArMTAxOSwxMTUgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywg
SW5zZXJ0RHJvcHBlZEF0dHJpYnV0ZWRTdHJpbmdDb250YWluaW5nQXR0YWNobWVudCkKICAgICB9
CiB9CiAKK1RFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRSaWNoQW5kUGxh
aW5UZXh0RmlsZXNBc0F0dGFjaG1lbnRzKQoreworICAgIC8vIEhlcmUsIGJvdGggcmljaCB0ZXh0
IGFuZCBwbGFpbiB0ZXh0IGFyZSBjb250ZW50IHR5cGVzIHRoYXQgV2ViS2l0IGFscmVhZHkgdW5k
ZXJzdGFuZHMgaG93IHRvIGluc2VydCBpbiBlZGl0YWJsZQorICAgIC8vIGFyZWFzIGluIHRoZSBh
YnNlbmNlIG9mIGF0dGFjaG1lbnQgZWxlbWVudHMuIEhvd2V2ZXIsIGR1ZSB0byB0aGUgZXhwbGlj
aXRseSBzZXQgYXR0YWNobWVudCBwcmVzZW50YXRpb24gc3R5bGUKKyAgICAvLyBvbiB0aGUgaXRl
bSBwcm92aWRlcnMsIHdlIHNob3VsZCBpbnN0ZWFkIHRyZWF0IHRoZW0gYXMgZHJvcHBlZCBmaWxl
cyBhbmQgaW5zZXJ0IGF0dGFjaG1lbnQgZWxlbWVudHMuCisgICAgLy8gVGhpcyBleGVyY2lzZXMg
dGhlIHNjZW5hcmlvIG9mIGRyYWdnaW5nIHJpY2ggYW5kIHBsYWluIHRleHQgZmlsZXMgZnJvbSBG
aWxlcyB0byBNYWlsLgorICAgIGF1dG8gcmljaFRleHRJdGVtID0gYWRvcHROUyhbW05TSXRlbVBy
b3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiSGVsbG8gd29ybGQiIGF0dHJp
YnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTogW1VJRm9udCBib2xkU3lzdGVtRm9udE9mU2l6
ZToxMl0gfV0pOworICAgIFtyaWNoVGV4dEl0ZW0gc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5
bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnRdOworICAgIFtyaWNoVGV4
dEl0ZW0gcmVnaXN0ZXJPYmplY3Q6cmljaFRleHQuZ2V0KCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92
aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CisgICAgW3JpY2hUZXh0SXRlbSBzZXRT
dWdnZXN0ZWROYW1lOkAiaGVsbG8ucnRmIl07CisKKyAgICBhdXRvIHBsYWluVGV4dEl0ZW0gPSBh
ZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbcGxhaW5UZXh0SXRl
bSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlQXR0YWNobWVudF07CisgICAgW3BsYWluVGV4dEl0ZW0gcmVnaXN0ZXJPYmplY3Q6QCJIZWxs
byB3b3JsZCIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0
eUFsbF07CisgICAgW3BsYWluVGV4dEl0ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAIndvcmxkLnR4dCJd
OworCisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwor
ICAgIGF1dG8gZHJhZ2dpbmdTaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkcmFn
Z2luZ1NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgcmljaFRleHRJdGVtLmdl
dCgpLCBwbGFpblRleHRJdGVtLmdldCgpIF1dOworICAgIFtkcmFnZ2luZ1NpbXVsYXRvciBydW5G
cm9tOkNHUG9pbnRaZXJvIHRvOkNHUG9pbnRNYWtlKDUwLCA1MCldOworCisgICAgRVhQRUNUX0VR
KDJVLCBbZHJhZ2dpbmdTaW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291bnQpOworICAg
IEVYUEVDVF9FUSgwVSwgW2RyYWdnaW5nU2ltdWxhdG9yIHJlbW92ZWRBdHRhY2htZW50c10uY291
bnQpOworCisgICAgZm9yIChfV0tBdHRhY2htZW50ICphdHRhY2htZW50IGluIFtkcmFnZ2luZ1Np
bXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXSkgeworICAgICAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKKyAgICAgICAgRVhQRUNUX0dUKFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0
RGF0YTomZXJyb3JdLmxlbmd0aCwgMFUpOworICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwor
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBOU0xvZyhAIkVycm9yOiAlQCIsIGVycm9y
KTsKKyAgICB9CisKKyAgICBFWFBFQ1RfRVEoMiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKS5sZW5n
dGgiXS5pbnRWYWx1ZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsby5ydGYiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgnYXR0YWNobWVudCcpWzBdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoInRleHQvcnRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1
dGUoJ3R5cGUnKSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIndvcmxkLnR4dCIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCdhdHRhY2htZW50JylbMV0uZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgidGV4dC9wbGFpbiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMV0uZ2V0QXR0cmli
dXRlKCd0eXBlJykiXSk7Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERy
b3BwZWRaaXBBcmNoaXZlQXNBdHRhY2htZW50KQoreworICAgIC8vIFNpbmNlIFdlYktpdCBkb2Vz
bid0IGhhdmUgYW55IGRlZmF1bHQgRE9NIHJlcHJlc2VudGF0aW9uIGZvciBaSVAgYXJjaGl2ZXMs
IHdlIHNob3VsZCBmYWxsIGJhY2sgdG8gaW5zZXJ0aW5nCisgICAgLy8gYXR0YWNobWVudCBlbGVt
ZW50cy4gVGhpcyBleGVyY2lzZXMgdGhlIGZsb3cgb2YgZHJhZ2dpbmcgYSBaSVAgZmlsZSBmcm9t
IGFuIGFwcCB0aGF0IGRvZXNuJ3Qgc3BlY2lmeSBhIHByZWZlcnJlZAorICAgIC8vIHByZXNlbnRh
dGlvbiBzdHlsZSAoZS5nLiBOb3RlcykgaW50byBNYWlsLgorICAgIGF1dG8gaXRlbSA9IGFkb3B0
TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIE5TRGF0YSAqZGF0YSA9IHRl
c3RaSVBEYXRhKCk7CisgICAgW2l0ZW0gcmVnaXN0ZXJEYXRhOmRhdGEgdHlwZTooTlNTdHJpbmcg
KilrVVRUeXBlWmlwQXJjaGl2ZV07CisgICAgW2l0ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAImFyY2hp
dmUuemlwIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1l
bnRzKCk7CisgICAgYXV0byBkcmFnZ2luZ1NpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Cisg
ICAgW2RyYWdnaW5nU2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtLmdl
dCgpIF1dOworICAgIFtkcmFnZ2luZ1NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRaZXJvIHRvOkNH
UG9pbnRNYWtlKDUwLCA1MCldOworCisgICAgRVhQRUNUX0VRKDFVLCBbZHJhZ2dpbmdTaW11bGF0
b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291bnQpOworICAgIEVYUEVDVF9FUSgwVSwgW2RyYWdn
aW5nU2ltdWxhdG9yIHJlbW92ZWRBdHRhY2htZW50c10uY291bnQpOworICAgIFtbZHJhZ2dpbmdT
aW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uZmlyc3RPYmplY3QgZXhwZWN0UmVxdWVzdGVk
RGF0YVRvQmU6ZGF0YV07CisgICAgRVhQRUNUX0VRKDEsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50Jyku
bGVuZ3RoIl0uaW50VmFsdWUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiYXJjaGl2ZS56aXAiLCBb
d2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRh
Y2htZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vemlwIiwgW3dlYlZp
ZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50
Il0pOworfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkSXRlbVBy
b3ZpZGVyc0luT3JkZXIpCit7CisgICAgLy8gVGVzdHMgdGhhdCBpdGVtIHByb3ZpZGVycyBhcmUg
aW5zZXJ0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIHNwZWNpZmllZC4gSW4gdGhpcyBjYXNlLCB0
aGUgdHdvIGluc2VydGVkIGF0dGFjaG1lbnRzCisgICAgLy8gc2hvdWxkIGJlIHNlcGFyYXRlZCBi
eSBhIGxpbmsuCisgICAgYXV0byBmaXJzdEF0dGFjaG1lbnRJdGVtID0gYWRvcHROUyhbW05TSXRl
bVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2ZpcnN0QXR0YWNobWVudEl0ZW0gc2V0UHJl
ZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFj
aG1lbnRdOworICAgIFtmaXJzdEF0dGFjaG1lbnRJdGVtIHJlZ2lzdGVyT2JqZWN0OkAiRklSU1Qi
IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwor
ICAgIFtmaXJzdEF0dGFjaG1lbnRJdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJmaXJzdC50eHQiXTsK
KworICAgIGF1dG8gaW5saW5lVGV4dEl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIGFwcGxlVVJMID0gcmV0YWluUHRyKFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyJdKTsKKyAgICBbaW5saW5lVGV4dEl0ZW0g
cmVnaXN0ZXJPYmplY3Q6YXBwbGVVUkwuZ2V0KCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CisKKyAgICBhdXRvIHNlY29uZEF0dGFjaG1lbnRJ
dGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NlY29u
ZEF0dGFjaG1lbnRJdGVtIHJlZ2lzdGVyRGF0YTp0ZXN0UERGRGF0YSgpIHR5cGU6KE5TU3RyaW5n
ICopa1VUVHlwZVBERl07CisgICAgW3NlY29uZEF0dGFjaG1lbnRJdGVtIHNldFN1Z2dlc3RlZE5h
bWU6QCJzZWNvbmQucGRmIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGlu
Z0F0dGFjaG1lbnRzKCk7CisgICAgYXV0byBkcmFnZ2luZ1NpbXVsYXRvciA9IGFkb3B0TlMoW1tE
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpXSk7CisgICAgW2RyYWdnaW5nU2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpA
WyBmaXJzdEF0dGFjaG1lbnRJdGVtLmdldCgpLCBpbmxpbmVUZXh0SXRlbS5nZXQoKSwgc2Vjb25k
QXR0YWNobWVudEl0ZW0uZ2V0KCkgXV07CisgICAgW2RyYWdnaW5nU2ltdWxhdG9yIHJ1bkZyb206
Q0dQb2ludFplcm8gdG86Q0dQb2ludE1ha2UoNTAsIDUwKV07CisKKyAgICBFWFBFQ1RfRVEoMlUs
IFtkcmFnZ2luZ1NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5jb3VudCk7CisgICAgRVhQ
RUNUX0VRKDBVLCBbZHJhZ2dpbmdTaW11bGF0b3IgcmVtb3ZlZEF0dGFjaG1lbnRzXS5jb3VudCk7
CisKKyAgICBmb3IgKF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gW2RyYWdnaW5nU2ltdWxh
dG9yIGluc2VydGVkQXR0YWNobWVudHNdKSB7CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OworICAgICAgICBFWFBFQ1RfR1QoW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3REYXRh
OiZlcnJvcl0ubGVuZ3RoLCAwVSk7CisgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CisgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIE5TTG9nKEAiRXJyb3I6ICVAIiwgZXJyb3IpOwor
ICAgIH0KKworICAgIE5TQXJyYXkgKm9ic2VydmVkRWxlbWVudFRhZ3MgPSAoTlNBcnJheSAqKVt3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJBcnJheS5mcm9tKGRvY3VtZW50
LmJvZHkuY2hpbGRyZW4pLm1hcChlID0+IGUudGFnTmFtZSkiXTsKKyAgICBOU0FycmF5ICpleHBl
Y3RlZEVsZW1lbnRUYWdzID0gQFsgQCJBVFRBQ0hNRU5UIiwgQCJBIiwgQCJBVFRBQ0hNRU5UIiBd
OworICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEVsZW1lbnRUYWdzIGlzRXF1YWxUb0FycmF5OmV4
cGVjdGVkRWxlbWVudFRhZ3NdKTsKKyAgICBpZiAoIVtvYnNlcnZlZEVsZW1lbnRUYWdzIGlzRXF1
YWxUb0FycmF5OmV4cGVjdGVkRWxlbWVudFRhZ3NdKQorICAgICAgICBOU0xvZyhAIk9ic2VydmVk
IGVsZW1lbnRzOiAlQCBkaWQgbm90IG1hdGNoIGV4cGVjdGF0aW9uczogJUAiLCBvYnNlcnZlZEVs
ZW1lbnRUYWdzLCBleHBlY3RlZEVsZW1lbnRUYWdzKTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgi
Zmlyc3QudHh0IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3RpdGxl
JykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3BsYWluIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFj
aG1lbnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W2FwcGxlVVJMIGFic29sdXRlU3RyaW5nXSwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAImhy
ZWYiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgic2Vjb25k
LnBkZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMV0uZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgiYXBwbGljYXRpb24vcGRmIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFj
aG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKK30KKwogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCA4
NWExMWE0M2E1ZDAzZDg3YzVkMTI5YjZiZmFmOGE3ZmM4ZWNmOGU3Li5hNTkwOGQ2ZjU0MDQ4Nzcz
N2FmOWM1ZGEyNjA4ZmNmM2NlNjBjZDY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtMzQ0LDcgKzM0NCw3IEBA
IFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvQ29udGVudEVkaXRh
YmxlKQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6
RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZl
ZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlv
bkV2ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtl
Q0dSZWN0VmFsdWUoMSwgMjAxLCA5NjEsIDIyNykgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7Ci0gICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVz
T3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0
cmluZyAqKWtVVFR5cGVSVEZELCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7Cisg
ICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVSVEYsIChOU1N0cmlu
ZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0KTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0
cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUKERh
dGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb1RleHRhcmVhKQogICAgIEVYUEVD
VF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9u
T3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29u
dGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZV0pOwog
ICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoNiwg
MjAzLCA5OTAsIDIzMikgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlv
blJlY3RzXSk7Ci0gICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRp
ZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVS
VEZELCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7CisgICAgY2hlY2tUeXBlSWRl
bnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVSVEYsIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4
UGxhaW5UZXh0KTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRh
YmxlTW92ZVBhcmFncmFwaHMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5oCmluZGV4IGU1NTJkOTZhYmZhN2EyYTQyY2FiZGYzODI1NWMzY2EwNTE1ODc3ZTkuLmRhYTNi
MjZkNjZiOGU4OTAxNzA0Y2I1OWY1ZjE3NDEwMTdkMDFjZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCkBAIC00NSw2ICs0NSw3IEBACiAtICh2b2lkKWxvYWRU
ZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lOwogLSAodm9pZClzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopaHRtbDsKIC0gKHZvaWQpc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lOworLSAoaWQpb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CiAtIChOU1N0cmluZyAqKXN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAodm9pZCl3YWl0
Rm9yTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlOwogLSAodm9pZClwZXJmb3JtQWZ0ZXJMb2Fk
aW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbnM7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggZWY0MTdmYjk3YWQ0YWM5OGNlNDA3OTQ0ODE5MzE1NTk5
MGQwNzk2MS4uMjU4OTdkNjcyMjQ0ZjJlZWQzMjk1YzU0MWUxMDcwYzRiMzI0ZmUxYyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMjM4LDIxICsyMzgs
MjQgQEAgLSAodm9pZClzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICop
cGFnZU5hbWUKICAgICBbc2VsZiBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiB9
CiAKLS0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHQKKy0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICop
c2NyaXB0CiB7Ci0gICAgX19ibG9jayBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxz
ZTsKLSAgICBfX2Jsb2NrIE5TU3RyaW5nICpldmFsUmVzdWx0ID0gbmlsOwotICAgIFtzZWxmIF9l
dmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6c2NyaXB0IGNvbXBsZXRpb25IYW5k
bGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikKLSAgICB7Ci0gICAgICAgIGV2YWxSZXN1
bHQgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aEZvcm1hdDpAIiVAIiwgcmVzdWx0XTsKKyAg
ICBib29sIGlzV2FpdGluZ0ZvckphdmFTY3JpcHQgPSBmYWxzZTsKKyAgICBSZXRhaW5QdHI8aWQ+
IGV2YWxSZXN1bHQ7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2Vz
dHVyZTpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIGlzV2FpdGluZ0Zv
ckphdmFTY3JpcHQgPSB0cnVlOwogICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwogICAgICAg
ICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBOU0xvZyhAIkVuY291bnRlcmVkIGVycm9yOiAlQCB3
aGlsZSBldmFsdWF0aW5nIHNjcmlwdDogJUAiLCBlcnJvciwgc2NyaXB0KTsKICAgICB9XTsKLQog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCk7Ci0g
ICAgcmV0dXJuIFtldmFsUmVzdWx0IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gZXZhbFJlc3Vs
dC5hdXRvcmVsZWFzZSgpOworfQorCistIChOU1N0cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Cit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUAiLCBbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNj
cmlwdF1dOwogfQogCiAtICh2b2lkKXdhaXRGb3JNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330446</attachid>
            <date>2018-01-03 22:09:03 -0800</date>
            <delta_ts>2018-01-03 22:09:03 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-181192-20180103220902.patch</filename>
            <type>text/plain</type>
            <size>72151</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFkNTFkOTIzMzBhZTBi
Y2JlYTY4NWZlY2M5MmE4YjZmNGU3ZGZjYy4uOTI1N2Y5OGE5YWY1MzdlODRkMWNhOWUwNWZhOGQx
ZjAwNzI0OTYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAxOC0wMS0wMyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVu
dCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVz
IG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgxMTkyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjI4MDk0NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEltcGxlbWVudHMgc3VwcG9ydCBmb3IgZHJv
cHBpbmcgZGF0YSBhcyBhdHRhY2htZW50IGVsZW1lbnRzIG9uIGlPUy4gU2VlIGNvbW1lbnRzIGJl
bG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0czogIFdLQXR0YWNobWVudFRlc3Rz
Lkluc2VydERyb3BwZWRSaWNoQW5kUGxhaW5UZXh0RmlsZXNBc0F0dGFjaG1lbnRzCisgICAgICAg
ICAgICAgICAgV0tBdHRhY2htZW50VGVzdHMuSW5zZXJ0RHJvcHBlZFppcEFyY2hpdmVBc0F0dGFj
aG1lbnQKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5JbnNlcnREcm9wcGVkSXRl
bVByb3ZpZGVyc0luT3JkZXIKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6ZW5zdXJlRnJhZ21lbnQpOgorCisgICAgICAg
IEFkZCBhIG5ldyBoZWxwZXIgdG8gY3JlYXRlIHRoZSBXZWJDb250ZW50UmVhZGVyJ3MgZnJhZ21l
bnQsIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gY3JlYXRlZC4KKworICAgICAgICAqIGVkaXRp
bmcvV2ViQ29udGVudFJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZEZpbGVQYXRocyk6CisKKyAgICAgICAgUmVuYW1lIHJlYWRGaWxlbmFtZXMgdG8gcmVhZEZpbGVQ
YXRocyAod2hpY2ggYmV0dGVyIHJlZmxlY3RzIGl0cyBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgZmls
ZSBwYXRocykuIEFsc28sIG1vdmUKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHJlYWRG
aWxlUGF0aHMgdG8gc2hhcmVkIGlPUy9tYWNPUyBjb2RlIGluIFdlYkNvbnRlbnRSZWFkZXJDb2Nv
YSwgYW5kIHJlbW92ZSB0aGUgc3R1YgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvbiBpT1MuCisK
KyAgICAgICAgVGhlcmUncyBhIGJpdCBvZiBjb2RlIGhlcmUgdGhhdCBJIGtlcHQgbWFjT1Mtb25s
eSB3aGljaCBkZWFscyB3aXRoIGluc2VydGluZyBmaWxlIHBhdGhzIGFzIHBsYWluIHRleHQgaW4K
KyAgICAgICAgZWRpdGFibGUgYXJlYXMsIGJ1dCBpdCdzIHVuY2xlYXIgdG8gbWUgd2h5IGFuZCBp
ZiBXZWJLaXQgY2xpZW50cyBjdXJyZW50bHkgZmluZCB0aGlzIHVzZWZ1bCwgc28gSSBsZWZ0IGEg
RklYTUUKKyAgICAgICAgdG8gaW52ZXN0aWdhdGUgcmVtb3ZpbmcgdGhpcyBhbHRvZ2V0aGVyLiBD
b2RlIGZvciBoYW5kbGluZyB0aGlzIHBsYWluIHRleHQgaW5zZXJ0aW9uIG9mIGZpbGUgcGF0aHMg
b24gTWFjIHdhcworICAgICAgICBpbnRyb2R1Y2VkIGluIHI2NzQwMy4KKworICAgICAgICAqIGVk
aXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L21hYy9XZWJDb250ZW50UmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZEZpbGVuYW1lcyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9tYWMvRHJh
Z0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kIGNvbnN0KToK
KworICAgICAgICBUZWFjaCBEcmFnQ29udHJvbGxlciB0byBhY2NlcHQgYWxsIHR5cGVzIGNvbmZv
cm1pbmcgdG8gInB1YmxpYy5pdGVtIiBhbmQgInB1YmxpYy5jb250ZW50IiBvbiBpT1MsIG9ubHkg
d2hlbgorICAgICAgICBhdHRhY2htZW50IGVsZW1lbnRzIGFyZSBlbmFibGVkLiBUaGlzIGFsbG93
cyB1cyB0byBsb2FkIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycyB0aGF0IHdlIG90aGVyd2lz
ZSB3b3VsZCBub3QKKyAgICAgICAgaGF2ZSBsb2FkZWQsIHNpbmNlIHdlIG5vdyBoYXZlIHRoZSBh
YmlsaXR5IHRvIGZhbGwgYmFjayB0byBhdHRhY2htZW50IGVsZW1lbnQgaW5zZXJ0aW9uIGlmIHRo
ZSB0eXBlIGlzIG5vdCBoYXZlCisgICAgICAgIGEgZGVmYXVsdCByZXByZXNlbnRhdGlvbiB1c2lu
ZyBzdGFuZGFyZCB3ZWIgY29udGVudC4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmRlY29kZSk6CisKKyAgICAgICAgQWRkIFBh
c3RlYm9hcmRJdGVtSW5mbywgYSBzdHJ1Y3QgdGhhdCBkZXNjcmliZXMgYW4gaXRlbSBvbiB0aGUg
cGFzdGVib2FyZC4gQWxzbywgaW1wbGVtZW50IGVuY29kaW5nIGFuZCBkZWNvZGluZworICAgICAg
ICBzdXBwb3J0IGZvciBQYXN0ZWJvYXJkSXRlbUluZm8uIFNvIGZhciwgdGhlIGl0ZW0gaW5mbyBv
bmx5IGRlc2NyaWJlcyBmaWxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0ZWJvYXJkIGl0ZW0s
CisgICAgICAgIGFuZCBmbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGl0ZW0gcHJlZmVycyBh
dHRhY2htZW50IG9yIGlubGluZSBwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKworICAgICAgICBSZXBsYWNlIGdldEZpbGVuYW1lc0ZvckRh
dGFJbnRlcmFjdGlvbiB3aXRoIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXguIEluc3RlYWQgb2Yg
cmV0dXJuaW5nIGFsbCBvZiB0aGUgZmlsZQorICAgICAgICBwYXRocyBhc3NvY2lhdGVkIHdpdGgg
YW55IGl0ZW0gb24gdGhlIHBhc3RlYm9hcmQsIGZldGNoIGEgUGFzdGVib2FyZEl0ZW1JbmZvIGF0
IGEgZ2l2ZW4gaXRlbSBpbmRleCwgd2hpY2gKKyAgICAgICAgaW5jbHVkZXMgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIGZpbGUgcGF0aCBhcyB3ZWxsIGFzIHNvbWUgb3RoZXIgbWV0YWRhdGEgd2UnbGwg
bmVlZCB3aGVuIGRlY2lkaW5nIGhvdyB0byByZWFkCisgICAgICAgIHBhc3RlYm9hcmQgY29udGVu
dHMgYXMgYSBkb2N1bWVudCBmcmFnbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToK
KworICAgICAgICBUZWFjaCB0aGUgaU9TIFBhc3RlYm9hcmQgdG8gcmVhZCB3ZWIgY29udGVudCB1
c2luZyBhdHRhY2htZW50IGVsZW1lbnRzLCBpZiBlbmFibGVkLiBUaGVyZSBhcmUgdHdvIHNjZW5h
cmlvcyBpbgorICAgICAgICB3aGljaCB3ZSB3b3VsZCB3YW50IHRvIGluc2VydCBhbiBhdHRhY2ht
ZW50IGVsZW1lbnQ6CisgICAgICAgICgxKSBUaGUgaXRlbSBwcm92aWRlciB1c2VzIGEgcHJlZmVy
cmVkIHByZXNlbnRhdGlvbiBzdHlsZSBvZiBhdHRhY2htZW50LCBpbiB3aGljaCBjYXNlIHdlIGJh
aWwgb3V0IG9mIHRyeWluZyB0bworICAgICAgICAgICAgaGFuZGxlIHRoZSBkcm9wIHVzaW5nIHRo
ZSBkZWZhdWx0IG1lY2hhbmlzbXMsIGFuZCBzaW1wbHkgaW5zZXJ0IGl0IGFzIGFuIGF0dGFjaG1l
bnQuIFdlIG5lZWQgdGhpcyB0byBkZWFsCisgICAgICAgICAgICB3aXRoIHRoZSBjYXNlIHdoZXJl
IHdlIGRyb3AgdGV4dCBvciBIVE1MIGZpbGVzIGZyb20gdGhlIEZpbGVzIGFwcCwgc28gdGhhdCB3
ZSBkb24ndCB0cnkgYW5kIGluc2VydCB0aGUKKyAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSB0
ZXh0IG9yIEhUTUwgYXMgaW5saW5lIHdlYiBjb250ZW50LgorICAgICAgICAoMikgVGhlIGl0ZW0g
cHJvdmlkZXIgZG9lc24ndCBoYXZlIGEgcHJlZmVycmVkIGF0dGFjaG1lbnQgcHJlc2VudGF0aW9u
IHN0eWxlLCBidXQgdGhlcmUncyBub3RoaW5nIFdlYktpdCB3b3VsZAorICAgICAgICAgICAgb3Ro
ZXJ3aXNlIGRvIHdpdGggdGhlIGRyb3BwZWQgY29udGVudCwgc28gaW5zZXJ0IGFuIGF0dGFjaG1l
bnQgZWxlbWVudCBhcyBhIGZhbGxiYWNrLiBFeGFtcGxlcyB3aGVyZSB0aGlzIGlzCisgICAgICAg
ICAgICByZWxldmFudCBhcmUgZHJvcHBpbmcgYSBQREYgb3IgWklQIGFyY2hpdmUgd2l0aG91dCBh
dHRhY2htZW50IHByZXNlbnRhdGlvbiBzdHlsZSBleHBsaWNpdGx5IHNldC4KKyAgICAgICAgV2Ug
Zmlyc3QgY2hlY2sgaWYgd2UgZmFsbCBpbnRvIGNhc2UgKDEpLiBJZiBzbywgd2UgY2FuIGJhaWwg
ZWFybHkgYnkgaW5zZXJ0aW5nIGFuIGF0dGFjaG1lbnQ7IG90aGVyd2lzZSwgd2UKKyAgICAgICAg
cHJvY2VlZCBub3JtYWxseSBhbmQgc2VlIGlmIHdlIGNhbiByZWFkIHRoZSBjb250ZW50cyBvZiB0
aGUgZHJvcCBhcyB3ZWIgY29udGVudC4gSWYsIGF0IHRoZSBlbmQgb2YgZGVmYXVsdCBkcm9wCisg
ICAgICAgIGhhbmRsaW5nLCB3ZSBkb24ndCBzdGlsbCBoYXZlIGEgd2F5IHRvIHJlcHJlc2VudCB0
aGUgZHJvcHBlZCBjb250ZW50LCBlbnRlciBjYXNlICgyKS4KKworICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkRmlsZW5hbWVzKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgcmVhZEZpbGVuYW1l
cyB0byByZWFkRmlsZVBhdGhzLCBhbmQgcmVpbXBsZW1lbnQgaXQgdXNpbmcgaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmZp
bGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisKKyAgICAgICAgSW1wbGVtZW50
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXggYW5kIHJlbW92ZSBmaWxlbmFtZXNGb3JEYXRhSW50
ZXJhY3Rpb24uIEFzIGJlZm9yZSwgd2UgYXNrIHRoZSBwYXN0ZWJvYXJkCisgICAgICAgIChpLmUu
IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQpIGZvciBpbmZvcm1hdGlvbiBhYm91dCBkcm9wcGVk
IGZpbGUgVVJMcy4gVGhpcyB0aW1lLCB3ZSBsaW1pdCB0aGlzIHRvIGEgc2luZ2xlCisgICAgICAg
IGZpbGUsIHNvIHdlIGRvbid0IGVuZCB1cCBjcmVhdGluZyBtdWx0aXBsZSBhdHRhY2htZW50IGVs
ZW1lbnRzIGZvciBlYWNoIHJlcHJlc2VudGF0aW9uIG9mIGEgc2luZ2xlIGl0ZW0KKyAgICAgICAg
cHJvdmlkZXIuIFNlZSBiZWxvdyBmb3IgLXByZWZlcnJlZEZpbGVVcGxvYWRVUkxBdEluZGV4OmZp
bGVUeXBlOiBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0
IGluaXRXaXRoSXRlbVByb3ZpZGVyOnR5cGVzVG9Mb2FkOl0pOgorICAgICAgICAoLVtXZWJJdGVt
UHJvdmlkZXJMb2FkUmVzdWx0IGNhbkJlUmVwcmVzZW50ZWRBc0ZpbGVVcGxvYWRdKToKKworICAg
ICAgICBSZW1vdmUgdGhpcyBzeW50aGVzaXplZCBpbnN0YW5jZSB2YXJpYWJsZSBhbmQgaW5zdGVh
ZCBqdXN0IGNoZWNrIHRoZSBpdGVtIHByb3ZpZGVyJ3MgcHJlZmVycmVkUHJlc2VudGF0aW9uU3R5
bGUuCisKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCBkZXNjcmlwdGlvbl0p
OgorCisgICAgICAgIEFkZCBhIHZlcmJvc2UgLWRlc2NyaXB0aW9uIHRvIHRoZSBsb2FkIHJlc3Vs
dCBvYmplY3QuIFVzZWZ1bCBmb3IgZGVidWdnaW5nIHdoYXQgd2FzIGNvbnRlbnQgd2FzIGxvYWRl
ZCBmcm9tIGFuCisgICAgICAgIGl0ZW0gcHJvdmlkZXIgb24gZHJvcC4KKworICAgICAgICAoLVtX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHByZWZlcnJlZEZpbGVVcGxvYWRVUkxBdEluZGV4OmZp
bGVUeXBlOl0pOgorCisgICAgICAgIFJldHVybiB0aGUgaGlnaGVzdCBmaWRlbGl0eSBsb2FkZWQg
dHlwZSBpZGVudGlmaWVyIGZvciBhIGdpdmVuIGl0ZW0uCisKKyAgICAgICAgKC1bV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZCBhbGxEcm9wcGVkRmlsZVVSTHNdKToKKyAgICAgICAgKC1bV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZCB0eXBlSWRlbnRpZmllcnNUb0xvYWRGb3JSZWdpc3RlcmVkVHlw
ZUlkZW50ZmllcnM6XSk6CisKKyAgICAgICAgUHJlZmVyIGZsYXQgUlRGRCB0byBSVEZELiBJbiB0
aGUgY2FzZSB3aGVyZSBhdHRhY2htZW50cyBhcmUgZW5hYmxlZCBhbmQgd2UncmUgYWNjZXB0aW5n
IGFsbCB0eXBlcyBvZiBjb250ZW50CisgICAgICAgIHVzaW5nIGF0dGFjaG1lbnQgZWxlbWVudHMg
YXMgYSBmYWxsYmFjayByZXByZXNlbnRhdGlvbiwgaWYgdGhlIHNvdXJjZSB3cml0ZXMgYXR0cmli
dXRlZCBzdHJpbmdzIHRvIHRoZQorICAgICAgICBwYXN0ZWJvYXJkIHdpdGggY29tLmFwcGxlLnJ0
ZmQgYXQgYSBoaWdoZXIgZmlkZWxpdHkgdGhhbiBjb20uYXBwbGUuZmxhdC1ydGZkLCB3ZSdsbCBl
bmQgdXAgbG9hZGluZyBvbmx5CisgICAgICAgIGNvbS5hcHBsZS5ydGZkIGFuZCBkcm9wcGluZyB0
aGUgdGV4dCBhcyBhbiBhdHRhY2htZW50IGVsZW1lbnQgYmVjYXVzZSB3ZSBjYW5ub3QgY29udmVy
dCB0aGUgZHJvcHBlZCBjb250ZW50IHRvCisgICAgICAgIG1hcmt1cC4gSW5zdGVhZCwgaWYgZmxh
dCBSVEZEIGlzIHByZXNlbnQgaW4gdGhlIGl0ZW0gcHJvdmlkZXIsIGFsd2F5cyBwcmVmZXIgdGhh
dCBvdmVyIFJURkQgc28gdGhhdCBkcm9wcGluZyBhcworICAgICAgICByZWd1bGFyIHdlYiBjb250
ZW50IGlzbid0IG92ZXJyaWRkZW4gd2hlbiBhdHRhY2htZW50IGVsZW1lbnRzIGFyZSBlbmFibGVk
LgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgZG9BZnRlckxvYWRpbmdQ
cm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6c3luY2hyb25vdXNUaW1lb3V0Ol0pOgorICAgICAg
ICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRyb3BwZWRGaWxlVVJMc10pOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50IGNvbnN0KToKKworICAgICAg
ICBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCBzaG91bGQgYmUgdHJ1ZSB3aGVu
IGF0dGFjaG1lbnQgZWxlbWVudHMgYXJlIGVuYWJsZWQsIGFuZCB0aGVyZSBhcmUgZmlsZXMgd2UK
KyAgICAgICAgY2FuIGRyb3AgYXMgYXR0YWNobWVudCBlbGVtZW50cy4KKworICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkRmlsZVBhdGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMpOiBEZWxldGVkLgor
CiAyMDE4LTAxLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEFkZCBwbHVtYmluZyBmb3Igc3RhcnRpbmcgYSBk
cmFnIHdpdGggcHJvbWlzZWQgYmxvYiBkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA1ODIyNTRkMTA0NmM3YzA2
ZTJjNTNlNjkxZWE2MmE3ODM3NWE3MzIuLjljZTM1YWIwOTVlYmRmMTliOWMxNjc3MzVhOTExZGE4
NmFlOTYwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMDEtMDQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3Vw
cG9ydF0gQ3JlYXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgd2hlbiBkcm9wcGluZyBmaWxlcyBvbiBp
T1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE5
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYyODA5NDU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBNYWtlIHNvbWUgbWlub3IgYWRqdXN0bWVudHMgZm9y
IGNoYW5nZXMgdG8gdGhlIHBhc3RlYm9hcmQgaW4gV2ViQ29yZS4gU2VlIFdlYkNvcmUvQ2hhbmdl
TG9nIGZvciBtb3JlIGRldGFpbC4KKyAgICAgICAgVGVhY2hlcyBXZWJQYXN0ZWJvYXJkUHJveHkg
ZXQuIGFsLiB0byBwbHVtYiBQYXN0ZWJvYXJkSXRlbUluZm8gZnJvbSB0aGUgVUkgcHJvY2VzcyB0
byB0aGUgd2ViIHByb2Nlc3MgdmlhIHRoZQorICAgICAgICBuZXcgYEluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXhgIGNvZGVwYXRoLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldEZpbGVuYW1lc0ZvckRhdGFJ
bnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxOC0wMS0wMyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBB
ZGQgcGx1bWJpbmcgZm9yIHN0YXJ0aW5nIGEgZHJhZyB3aXRoIHByb21pc2VkIGJsb2IgZGF0YQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDMzMzQxYjhjOWI5ZmRlN2MzNDVjOWUxYzdl
NDA0N2Q5OWRlYmRlZDEuLjAyMDE2OWEyYjYyZmZjZTU2MzMyNWU1M2Q4MDM4OGIyZGU0NzBkMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wMS0w
NCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0
YWNobWVudCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5n
IGZpbGVzIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgxMTkyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjI4MDk0NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIE1ha2Ugc29tZSBtaW5vciBhZGp1
c3RtZW50cyBmb3IgY2hhbmdlcyB0byB0aGUgcGFzdGVib2FyZCBpbiBXZWJDb3JlLiBTZWUgV2Vi
Q29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKTogRGVsZXRlZC4KKwogMjAxOC0wMS0w
MyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0
YWNobWVudCBTdXBwb3J0XSBBZGQgcGx1bWJpbmcgZm9yIHN0YXJ0aW5nIGEgZHJhZyB3aXRoIHBy
b21pc2VkIGJsb2IgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ1YmJiMGNhYjMzMDcxZjk2MDc2NDU5MmVmZDE1ZTEzZTJm
ODE0YWYuLjQwOTg0YWY3MjQ2YTFjYzUzOWFiMmZhMDdjZDI3NjI5MDcyZTQ0MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2
NTMsNiArNDY1Myw3IEBACiAJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ4MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0gKi87IH07CiAJCUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDgyMjMwRjFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFz
dGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5
ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlw
dHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAw
NzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5
QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8q
IEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKIAkJRjUwNjY0RjgxNTdGNTJEQzAwQUMyMjZG
IC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCAq
LzsgfTsKQEAgLTE0MDg2LDYgKzE0MDg3LDcgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5
IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4
Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsgcGF0
aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3RvcnlV
dGlsLmpzOyBwYXRoID0gU2NyaXB0cy9FZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJk
SXRlbUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY2MTU3RjUy
REMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb3JtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNjkxLDYgKzIzNjkzLDcgQEAKIAkJCQk0
MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICovLAogCQkJ
CTJFRTAyQTFFMUY3MzI0MjgwMDA2QUY3MiAvKiBQYXN0ZWJvYXJkLmNwcCAqLywKIAkJCQk0QjI3
MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovLAorCQkJCUY0OTc4Njg3MUZG
NDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLywKIAkJCQlDNUY3NjVCNDE0
RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggKi8sCiAJCQkJMUFGNUU0RDIx
RTU2NzM1QTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcCAqLywKIAkJCQkxQUY1
RTREMzFFNTY3MzVBMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCAqLywKQEAgLTI4
NjkwLDYgKzI4NjkzLDcgQEAKIAkJCQk1MzZENUEyMzE5M0U4RTBDMDBDRTRDQUIgLyogUGFyc2lu
Z1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQ0ExMjUxRjEyRDAwM0VGMjY5
IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjI3MDhDNzBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ5Nzg2ODgx
RkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzU5ODkwNTcxNEU5QzI4MDAwRThEMThCIC8qIFBhc3RlYm9hcmRTdHJhdGVneS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFGNUU0RTMxRTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjVFNEQ1MUU1NjczNUIwMDRBMUYwMSAvKiBQYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb250ZW50UmVhZGVyLmNwcAppbmRleCBjZjQxOTM2N2QxODRkMThkMzgyY2FkMmVjOTM2
YTMzODI3YjU0YTRmLi41NDQ5MTJhNzQ5M2M3MTY4MDc3NzdlMzVlZWUwMjNlNGUyM2VhNzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAKQEAgLTMxLDYg
KzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRG9jdW1lbnRGcmFnbWVudCYgV2Vi
Q29udGVudFJlYWRlcjo6ZW5zdXJlRnJhZ21lbnQoKQoreworICAgIEFTU0VSVChmcmFtZS5kb2N1
bWVudCgpKTsKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICBmcmFnbWVudCA9IGZyYW1lLmRv
Y3VtZW50KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICByZXR1cm4gKmZyYWdtZW50
OworfQorCiB2b2lkIFdlYkNvbnRlbnRSZWFkZXI6OmFkZEZyYWdtZW50KFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmIG5ld0ZyYWdtZW50KQogewogICAgIGlmICghZnJhZ21lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IGNjMTcwMzVhOTEwMGE5NjU2YzI2
MTkxYTA4NGQ3NmQ4Y2Y0NjRlZjIuLmRmOTg0YmFmYmQzOWU1MjYxNGVhOTM5MjQ2ZTJmOGJiZmM0
OGQxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC02
MywxMiArNjMsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBEb2N1bWVudEZyYWdt
ZW50JiBlbnN1cmVGcmFnbWVudCgpOwogICAgIHZvaWQgYWRkRnJhZ21lbnQoUmVmPERvY3VtZW50
RnJhZ21lbnQ+JiYpOwogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wg
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRmls
ZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRmls
ZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkSFRN
TChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
QEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJv
b2wgcmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRl
eCAxZTNiYmZkMTlkMzQ1YzUwOTRiMTAzM2FmZWM3MTZkMTk5ZjkzNjIwLi5iNTRiMzdmZDBmYTM3
NGM5YmJlZTI4OGQyZTVhMGFhZTViZTU1YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNTk2LDQgKzU5Niwz
NiBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXRocykKK3sKKyAgICBpZiAocGF0aHMuaXNFbXB0eSgpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOworICAgIGJvb2wgcmVhZEFueUZpbGVQYXRoID0gZmFsc2U7CisgICAgZm9yIChh
dXRvJiBwYXRoIDogcGF0aHMpIHsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWQoKSkgeworICAgICAgICAgICAgZW5zdXJlRnJhZ21lbnQoKTsKKyAg
ICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRl
KEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOworICAgICAgICAgICAgYXR0YWNo
bWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwor
ICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUocGF0aCksIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoYXR0YWNobWVudCk7CisgICAgICAgICAgICByZWFk
QW55RmlsZVBhdGggPSB0cnVlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNl
bmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgLy8gRklYTUU6IERvZXMgKGFuZCBzaG91
bGQpIGFueSBtYWNPUyBjbGllbnQgZGVwZW5kIG9uIGluc2VydGluZyBmaWxlIHBhdGhzIGFzIHBs
YWluIHRleHQgaW4gd2ViIGNvbnRlbnQ/CisgICAgICAgIC8vIElmIG5vdCwgd2Ugc2hvdWxkIGp1
c3QgcmVtb3ZlIHRoaXMuCisgICAgICAgIGVuc3VyZUZyYWdtZW50KCk7CisgICAgICAgIGF1dG8g
cGFyYWdyYXBoID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOworICAg
ICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHVzZXJW
aXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0pKSk7CisgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOworICAgICAgICByZWFkQW55RmlsZVBhdGgg
PSB0cnVlOworI2VuZGlmCisgICAgfQorICAgIHJldHVybiByZWFkQW55RmlsZVBhdGg7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFk
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9T
Lm1tCmluZGV4IDAzNGJhOWE5NGMzZDhkYmJlY2E0NTNkY2RmYzAxMWFlNzM4MTgwODYuLjIwM2M4
NDc1OTNhODk5YTc4MGI5Y2YwNDQ0ZmNiYmQ2MjEyZmEyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvV2ViQ29udGVudFJlYWRlcklPUy5tbQpAQCAtNDcsMTEgKzQ3LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRG
aWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQotewotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvV2ViQ29udGVudFJlYWRlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0KaW5kZXggOWM1ZDI1NDBi
NjA1ZWVhZDIzMjg4NWE3NmQ1OWIzMmM0NmFmNzhmMy4uNDI4M2E0ZjEzN2Y2ZWFmNWZiNDc0MjVh
YTNmMTVlYTYyYTA3ZmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
V2ViQ29udGVudFJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9X
ZWJDb250ZW50UmVhZGVyTWFjLm1tCkBAIC0zOCw0OSArMzgsMTUgQEAKICNpbXBvcnQgIkZyYW1l
TG9hZGVyLmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2ltcG9ydCAiSFRNTEFu
Y2hvckVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2ltcG9y
dCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCi0jaW1wb3J0ICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW1wb3J0ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW1wb3J0ICJTZXR0aW5ncy5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiV2ViQ29yZU5T
VVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJtYXJrdXAuaCIKLSNpbXBvcnQgPHd0Zi9VVUlELmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW5h
bWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKLXsKLSAgICBpZiAocGF0aHMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqZnJhbWUu
ZG9jdW1lbnQoKTsKLQotICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpOwotCi0gICAgZm9yIChhdXRvJiB0ZXh0IDogcGF0aHMpIHsKLSNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkgewotICAgICAgICAgICAg
YXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVz
OjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRV
bmlxdWVJZGVudGlmaWVyKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Ci0gICAgICAgICAg
ICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnRleHRdLnBhdGgpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1
dGVzOjpZZXMpOwotICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQp
OwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGF1dG8g
cGFyYWdyYXBoID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOwotICAg
ICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHVzZXJW
aXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6dGV4dF0pKSk7Ci0gICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJsLnN0cmluZygpLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KaW5k
ZXggNWU4NzJjNDk0MWFjYTQwYzZjZDk0MWJhZTAyNzA5NGYxOGEzY2ZlYS4uZjc1ZDFlNGRkYTA4
YzkzMjUwOTMwM2ZiNTA4M2ZhM2ZkZWM0ZDYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbXBvcnQgIlBhc3Rl
Ym9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW1wb3J0
ICJSYW5nZS5oIgorI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogCiAjaWYgRU5B
QkxFKERBVEFfSU5URVJBQ1RJT04pCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxl
Q29yZVNlcnZpY2VzLmg+CkBAIC0xMjUsOCArMTI2LDE0IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6
OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdIYW5kbGluZ01ldGhvZChEcmFn
SGFuCiAgICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChrVVRUeXBlUGxhaW5UZXh0KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEcmFnSGFuZGxpbmdNZXRob2Q6OkVkaXRSaWNoVGV4dDoK
LSAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRXZWJD
b250ZW50UGFzdGVib2FyZFR5cGVzKCkpCi0gICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBl
bmQodHlwZSk7CisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpKSB7CisgICAgICAgICAgICBzdXBwb3J0
ZWRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBib2FyZFR5cGUpOworICAgICAgICAgICAgc3VwcG9y
dGVkVHlwZXMuYXBwZW5kKGtVVFR5cGVDb250ZW50KTsKKyAgICAgICAgICAgIHN1cHBvcnRlZFR5
cGVzLmFwcGVuZChrVVRUeXBlSXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBm
b3IgKE5TU3RyaW5nICp0eXBlIGluIFBhc3RlYm9hcmQ6OnN1cHBvcnRlZFdlYkNvbnRlbnRQYXN0
ZWJvYXJkVHlwZXMoKSkKKyAgICAgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQodHlw
ZSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZm9y
IChOU1N0cmluZyAqdHlwZSBpbiBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVi
b2FyZFR5cGVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggMjFiZjkw
M2QwOGRhYWM1M2FjNTg4MGM0NjdkY2U1YmYzYTk2ZGY5Mi4uYTU0NmY1OTFjOTI4MjUyNGRjMjM3
NTFmYzdmNjhhNThlM2M1Y2M0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEcmFnSW1hZ2UuaCIK
KyNpbmNsdWRlICJQYXN0ZWJvYXJkSXRlbUluZm8uaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTM0
LDcgKzEzNSw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
Ym9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJl
ZEJ1ZmZlciYpID0gMDsKQEAgLTI5MCw3ICsyOTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZW5hbWVzKCk7Cisg
ICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRocygpOwogICAgIFN0cmluZyByZWFkUGxhdGZv
cm1WYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgbG9uZyBjaGFuZ2VDb3VudCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENs
aXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVz
LCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0
Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRJdGVtSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3YzM1ZDIzN2I2MjVlZGExNTZjODNlZTZiNjkx
ZDk3ZDIyNWYxMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkSXRlbUluZm8uaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFBhc3RlYm9h
cmRJdGVtUHJlc2VudGF0aW9uU3R5bGUgeworICAgIFVuc3BlY2lmaWVkLAorICAgIElubGluZSwK
KyAgICBBdHRhY2htZW50Cit9OworCitzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvIHsKKyAgICBT
dHJpbmcgcGF0aEZvckZpbGVVcGxvYWQ7CisgICAgU3RyaW5nIGNvbnRlbnRUeXBlRm9yRmlsZVVw
bG9hZDsKKyAgICBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHByZWZlcnJlZFByZXNl
bnRhdGlvblN0eWxlIHsgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6VW5zcGVjaWZp
ZWQgfTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBQYXN0ZWJvYXJkSXRlbUluZm86OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcGF0aEZvckZpbGVVcGxvYWQgPDwgY29u
dGVudFR5cGVGb3JGaWxlVXBsb2FkOworICAgIGVuY29kZXIuZW5jb2RlRW51bShwcmVmZXJyZWRQ
cmVzZW50YXRpb25TdHlsZSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9w
dGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gcmVzdWx0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhdGhGb3JGaWxlVXBsb2FkKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRl
bnRUeXBlRm9yRmlsZVVwbG9hZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5
bGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdURk1vdmUo
cmVzdWx0KTsKK30KKworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBFbnVtVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWUgRSwgRS4uLj4gc3RydWN0IEVu
dW1WYWx1ZXM7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUsCisg
ICAgICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OlVuc3BlY2lm
aWVkLAorICAgICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlOjpJ
bmxpbmUsCisgICAgICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6
OkF0dGFjaG1lbnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGMwNjRhZDBmYzlmYzg2
YjVmMjJiNDg5MTYwNTM1Y2U3MjM3ZTExMmQuLjU4MzdkOTFjOTY4OWJhN2VhN2ZiMWNkOGY2NmM2
NzUxY2NhNzEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOworc3RydWN0IFBh
c3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9h
cmRXZWJDb250ZW50Owogc3RydWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwpAQCAtNTAsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAg
ICB2aXJ0dWFsIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGQ4ZDdjOTQ5Mjc2ZjFlOGU2YTA3ZTljNDMwMTdiN2Ew
ZGRkNTBjNDUuLjI0ODgwNTM2ZjlhMmRkNGVlMDE1MTZjYWMyYmQ1NTIyOWNlZDg1YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC01MSw2ICs1
MSw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CitzdHJ1Y3QgUGFzdGVib2FyZEl0
ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQ7CiAKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNp
ZiBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFdQRSkKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0
Zm9ybVBhc3RlYm9hcmQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBmaWxl
bmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJk
SXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBpbnQgaW5kZXgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
U3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCA1MDg1ZTIwNDg3YjEzNjg4MmE1M2E0OTZkMWRhMThjM2Y3MzhkZDYxLi5hNjJl
NzQ0ZjNkYjc5NmRjM2U3NDc5NzE2MGI5MGIzZDJjMDFjNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC0xOTEsNyArMTkxLDcg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVy
JiB0aWZmQnVmZmVyKQogCiB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFk
ZXImIHJlYWRlcikKIHsKLSAgICBhdXRvIGZpbGVuYW1lcyA9IHJlYWRGaWxlbmFtZXMoKTsKKyAg
ICBhdXRvIGZpbGVuYW1lcyA9IHJlYWRGaWxlUGF0aHMoKTsKICAgICBpZiAoIWZpbGVuYW1lcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IGZpbGVuYW1lcykKICAg
ICAgICAgICAgIHJlYWRlci5yZWFkRmlsZW5hbWUoZmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oCmluZGV4IGU4ZTViZjM2YmNi
MjY3MzkxZWRkM2M2MTcyOTUyM2UwNDMwY2ZiY2EuLjQyMTAxODY5OGUxMjU1ODYyNDc4ODhmYmFm
N2E0YmQ2OWM2YjJmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9B
YnN0cmFjdFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJz
dHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTU2LDcgKzU2LDggQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIC0gKHZvaWQpc2V0SXRlbXM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopaXRlbXM7CiAt
IChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1B
dEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWlj
KSBOU0ludGVnZXIgbnVtYmVyT2ZGaWxlczsKLUBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21p
YykgTlNBcnJheTxOU1VSTCAqPiAqZHJvcHBlZEZpbGVVUkxzOworQHByb3BlcnR5IChyZWFkb25s
eSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICphbGxEcm9wcGVkRmlsZVVSTHM7CistIChu
dWxsYWJsZSBOU1VSTCAqKXByZWZlcnJlZEZpbGVVcGxvYWRVUkxBdEluZGV4OihOU1VJbnRlZ2Vy
KWluZGV4IGZpbGVUeXBlOihOU1N0cmluZyAqX051bGxhYmxlICpfTnVsbGFibGUpb3V0RmlsZVR5
cGU7CiAtICh2b2lkKXVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyczooTlNBcnJheTxOU1N0
cmluZyAqPiAqKXR5cGVzOwogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IGNkMWI3NDZlMjUyYzU3MDljMjZkM2RmYWRkMDZkYWRjN2M5
ZmU4MWUuLmI4ODc5ODQ3NmZjY2U1MDMyZWQ4YzVlZDg2OGRlYTBkOWZjNjFmNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMSw2ICszMSw3
IEBACiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtUGFz
dGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW1wb3J0ICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQg
IlVSTC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCkBAIC0yNDQsMTAgKzI0NSwxMCBAQCB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtczsgaSsrKSB7CiAgICAgICAg
IGZvciAoaW50IHR5cGVJbmRleCA9IDA7IHR5cGVJbmRleCA8IG51bWJlck9mVHlwZXM7IHR5cGVJ
bmRleCsrKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29u
dGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIFt0eXBlcyBvYmplY3RBdEluZGV4OnR5
cGVJbmRleF0sIGkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBh
c3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKKyAgICAgICAgICAgIGF1dG8gaXRlbVJlc3Vs
dCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ks
IFt0eXBlcyBvYmplY3RBdEluZGV4OnR5cGVJbmRleF0sIGkpOworICAgICAgICAgICAgaWYgKGl0
ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFk
ZXJSZXN1bHQ6OlJlYWRUeXBlKQorICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQgPT0gUmVhZGVy
UmVzdWx0OjpSZWFkVHlwZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KQEAgLTI2NiwxNyArMjY3LDMwIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdV
VElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCiAgICAgQVNT
RVJUKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKTsKICAgICBhdXRvJiBzdHJhdGVneSA9ICpwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgZm9yIChOU1VJbnRl
Z2VyIGluZGV4ID0gMCwgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsraW5kZXgp
IHsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICBhdXRvIGluZm8gPSBz
dHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkgJiYgIWluZm8u
cGF0aEZvckZpbGVVcGxvYWQuaXNFbXB0eSgpOworICAgICAgICBpZiAoY2FuUmVhZEF0dGFjaG1l
bnQgJiYgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9PSBQYXN0ZWJvYXJkSXRlbVBy
ZXNlbnRhdGlvblN0eWxlOjpBdHRhY2htZW50KSB7CisgICAgICAgICAgICByZWFkZXIucmVhZEZp
bGVQYXRocyh7IGluZm8ucGF0aEZvckZpbGVVcGxvYWQgfSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIC8vIFRyeSB0byByZWFkIGRhdGEgZnJvbSBl
YWNoIHR5cGUgaWRlbnRpZmllciB0aGF0IHRoaXMgcGFzdGVib2FyZCBpdGVtIHN1cHBvcnRzLCBh
bmQgV2ViS2l0IGFsc28gcmVjb2duaXplcy4gVHlwZSBpZGVudGlmaWVycyBhcmUKICAgICAgICAg
Ly8gcmVhZCBpbiBvcmRlciBvZiBmaWRlbGl0eSwgYXMgc3BlY2lmaWVkIGJ5IGVhY2ggcGFzdGVi
b2FyZCBpdGVtLgogICAgICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlc0Zvckl0ZW1Jbk9yZGVyT2ZG
aWRlbGl0eTsKICAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5k
ZXgodHlwZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHksIGluZGV4LCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICAgICAgUmVhZGVyUmVzdWx0IHJlc3VsdCA9IFJlYWRlclJlc3VsdDo6RGlkTm90UmVh
ZFR5cGU7CiAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzRm9ySXRlbUluT3JkZXJPZkZp
ZGVsaXR5KSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29u
dGVudERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGluZGV4KTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRlciwg
c3RyYXRlZ3ksIHR5cGUsIGluZGV4KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVhZGVy
UmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBl
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKKyAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIHJlc3VsdCA9PSBS
ZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlKQorICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxl
UGF0aHMoeyBpbmZvLnBhdGhGb3JGaWxlVXBsb2FkIH0pOworI2VuZGlmCiAgICAgfQogfQogCkBA
IC00MDUsMTIgKzQxOSwxNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBlLmdldCgp
LCBkYXRhLCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6cmVhZEZpbGVuYW1lcygpCitWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZVBh
dGhzKCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXM7Ci0gICAgLy8gQ3VycmVudGx5
LCBkYXRhIGludGVyYWN0aW9uIGlzIHRoZSBvbmx5IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSBwYXN0
ZWJvYXJkIG1heSBjb250YWluIHJlbGV2YW50IGZpbGVuYW1lcy4KLSAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFj
dGlvbihmaWxlbmFtZXMsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgIHJldHVybiBmaWxlbmFtZXM7
CisgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzOworICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKKyAgICBmb3IgKE5TVUlu
dGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRl
eCkgeworICAgICAgICAvLyBDdXJyZW50bHksIGRyYWcgYW5kIGRyb3AgaXMgdGhlIG9ubHkgY2Fz
ZSBvbiBpT1Mgd2hlcmUgdGhlICJwYXN0ZWJvYXJkIiBtYXkgY29udGFpbiBmaWxlIHBhdGhzLgor
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSkucGF0aEZvckZpbGVVcGxvYWQ7CisgICAgICAgIGlm
ICghZmlsZVBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAgZmlsZVBhdGhzLmFwcGVuZChXVEZN
b3ZlKGZpbGVQYXRoKSk7CisgICAgfQorICAgIHJldHVybiBmaWxlUGF0aHM7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IDE2YjcxZjg1YjIyYzJkYzA3YTJkMzA4YmQwNjAzMTY2OTg4ODE2YWYuLjkxYzkw
MTE2M2ViYmY0YjBiMGE2NGE0YThmYTFjNGJiM2UxZWU1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMTAyLDE4
ICsxMDIsNDkgQEAgaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0
CiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihu
dW1iZXJPZkZpbGVzKV0gPyBbbV9wYXN0ZWJvYXJkIG51bWJlck9mRmlsZXNdIDogMDsKIH0KIAot
VmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpmaWxlbmFtZXNGb3JEYXRhSW50ZXJh
Y3Rpb24oKQorI2lmIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMKKworc3RhdGlj
IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUgcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRp
b25TdHlsZShVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlIHN0eWxlKQoreworICAgIHN3aXRj
aCAoc3R5bGUpIHsKKyAgICBjYXNlIFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVVbnNwZWNp
ZmllZDoKKyAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OlVu
c3BlY2lmaWVkOworICAgIGNhc2UgVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZToK
KyAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OklubGluZTsK
KyAgICBjYXNlIFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50OgorICAgICAg
ICByZXR1cm4gUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6QXR0YWNobWVudDsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OlVuc3BlY2lmaWVkOworICAgIH0KK30K
KworUGFzdGVib2FyZEl0ZW1JbmZvIFBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbnQgaW5kZXgpCiB7Ci0gICAgaWYgKCFbbV9wYXN0ZWJvYXJkIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoZHJvcHBlZEZpbGVVUkxzKV0pCisgICAgaWYgKGluZGV4ID49
IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXM7Ci0gICAgZm9yIChOU1VSTCAqZmlsZVVSTCBpbiBb
bV9wYXN0ZWJvYXJkIGRyb3BwZWRGaWxlVVJMc10pCi0gICAgICAgIGZpbGVuYW1lcy5hcHBlbmQo
ZmlsZVVSTC5wYXRoKTsKKyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAgICBpZiAoW21f
cGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHByZWZlcnJlZEZpbGVVcGxv
YWRVUkxBdEluZGV4OmZpbGVUeXBlOildKSB7CisgICAgICAgIE5TU3RyaW5nICpmaWxlVHlwZSA9
IG5pbDsKKyAgICAgICAgaW5mby5wYXRoRm9yRmlsZVVwbG9hZCA9IFttX3Bhc3RlYm9hcmQgcHJl
ZmVycmVkRmlsZVVwbG9hZFVSTEF0SW5kZXg6aW5kZXggZmlsZVR5cGU6JmZpbGVUeXBlXS5wYXRo
OworICAgICAgICBpbmZvLmNvbnRlbnRUeXBlRm9yRmlsZVVwbG9hZCA9IGZpbGVUeXBlOworICAg
IH0KKworICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21fcGFzdGVib2FyZCBp
dGVtUHJvdmlkZXJzXSBvYmplY3RBdEluZGV4OmluZGV4XTsKKyAgICBpbmZvLnByZWZlcnJlZFBy
ZXNlbnRhdGlvblN0eWxlID0gcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShpdGVtUHJv
dmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOworICAgIHJldHVybiBpbmZvOworfQor
CisjZWxzZQogCi0gICAgcmV0dXJuIGZpbGVuYW1lczsKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50KQoreworICAgIHJl
dHVybiB7IH07CiB9CiAKKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBwYXN0ZWJvYXJkTWF5Q29udGFp
bkZpbGVQYXRocyhpZDxBYnN0cmFjdFBhc3RlYm9hcmQ+IHBhc3RlYm9hcmQpCiB7CiAjaWYgUEFT
VEVCT0FSRF9TVVBQT1JUU19JVEVNX1BST1ZJREVSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKaW5kZXggYWJmZjI2
OGM4YTIwODFjYTQwOTBkNWRlZjc0OTc4ODE3YTRhZGI1Mi4uY2M4OGZmNmNlYWFhYjI3ODQ1NDIx
ZjE0NjhlZGIxMDAxNWFjYjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCkBAIC05MCw3ICs5MCwxMCBAQCBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgOiBOU09i
amVjdDxBYnN0cmFjdFBhc3RlYm9hcgogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBO
U0ludGVnZXIgY2hhbmdlQ291bnQ7CiAKIC8vIFRoaXMgd2lsbCBvbmx5IGJlIG5vbi1lbXB0eSB3
aGVuIGFuIG9wZXJhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQuCi1AcHJvcGVydHkgKHJlYWRvbmx5
LCBub25hdG9taWMpIE5TQXJyYXk8TlNVUkwgKj4gKmRyb3BwZWRGaWxlVVJMczsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAqYWxsRHJvcHBlZEZpbGVV
UkxzOworCisvLyBUaGUgcHJlZmVycmVkIGZpbGUgVVJMIGNvcnJlc3BvbmRzIHRvIHRoZSBoaWdo
ZXN0IGZpZGVsaXR5IG5vbi1wcml2YXRlIFVUSSB0aGF0IHdhcyBsb2FkZWQuCistIChudWxsYWJs
ZSBOU1VSTCAqKXByZWZlcnJlZEZpbGVVcGxvYWRVUkxBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4
IGZpbGVUeXBlOihOU1N0cmluZyAqX051bGxhYmxlICpfTnVsbGFibGUpb3V0RmlsZVR5cGU7CiAK
IEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgQk9PTCBoYXNQZW5kaW5nT3BlcmF0aW9u
OwogLSAodm9pZClpbmNyZW1lbnRQZW5kaW5nT3BlcmF0aW9uQ291bnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CmluZGV4IGIzNDMxNjhlZjI0NDJlNWU3ZDNmN2I1ZDUzZDA5MjlhZmU4NmU3ZDkuLmY4ZWRlMTUz
MzZiZjU1Y2EyNzExZTIyZWYyMWJkZTQxNzBkODZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0y
NDMsMTEgKzI0MywxNSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJdGVtUHJvdmlkZXI6KE5T
SXRlbVByb3ZpZGVyICopaXRlbVByb3ZpZGVyIHR5cGVzVG9Mb2FkOgogICAgIF9maWxlVVJMcyA9
IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgX2l0ZW1Q
cm92aWRlciA9IGl0ZW1Qcm92aWRlcjsKICAgICBfdHlwZXNUb0xvYWQgPSB0eXBlc1RvTG9hZDsK
LSAgICBfY2FuQmVSZXByZXNlbnRlZEFzRmlsZVVwbG9hZCA9IGl0ZW1Qcm92aWRlci5wcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZSAhPSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5l
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKEJPT0wpY2FuQmVSZXByZXNlbnRlZEFzRmls
ZVVwbG9hZAoreworICAgIHJldHVybiBbX2l0ZW1Qcm92aWRlciBwcmVmZXJyZWRQcmVzZW50YXRp
b25TdHlsZV0gIT0gVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZTsKK30KKwogLSAo
TlNBcnJheTxOU1N0cmluZyAqPiAqKXR5cGVzVG9Mb2FkCiB7CiAgICAgcmV0dXJuIF90eXBlc1Rv
TG9hZC5nZXQoKTsKQEAgLTI3OCw2ICsyODIsMjYgQEAgLSAoTlNJdGVtUHJvdmlkZXIgKilpdGVt
UHJvdmlkZXIKICAgICByZXR1cm4gX2l0ZW1Qcm92aWRlci5nZXQoKTsKIH0KIAorLSAoTlNTdHJp
bmcgKilkZXNjcmlwdGlvbgoreworICAgIF9fYmxvY2sgTlNNdXRhYmxlU3RyaW5nICpkZXNjcmlw
dGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKyAgICBbZGVzY3JpcHRpb24gYXBwZW5k
Rm9ybWF0OkAiPCVAOiAlcCB0eXBlc1RvTG9hZDogWyAiLCBbc2VsZiBjbGFzc10sIHNlbGZdOwor
ICAgIFtfdHlwZXNUb0xvYWQgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAq
dHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqKSB7CisgICAgICAgIFtkZXNjcmlwdGlvbiBh
cHBlbmRTdHJpbmc6dHlwZV07CisgICAgICAgIGlmIChpbmRleCArIDEgPCBbX3R5cGVzVG9Mb2Fk
IGNvdW50XSkKKyAgICAgICAgICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRTdHJpbmc6QCIsICJdOwor
ICAgIH1dOworICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRGb3JtYXQ6QCIgXSBmaWxlVVJMczogeyAi
XTsKKyAgICBfX2Jsb2NrIE5TVUludGVnZXIgaW5kZXggPSAwOworICAgIFtfZmlsZVVSTHMgZW51
bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKnR5cGUsIE5TVVJMICp1
cmwsIEJPT0wgKikgeworICAgICAgICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiJUAgPT4g
XCIlQFwiIiwgdHlwZSwgdXJsLnBhdGhdOworICAgICAgICBpZiAoKytpbmRleCA8IFtfZmlsZVVS
THMgY291bnRdKQorICAgICAgICAgICAgW2Rlc2NyaXB0aW9uIGFwcGVuZFN0cmluZzpAIiwgIl07
CisgICAgfV07CisgICAgW2Rlc2NyaXB0aW9uIGFwcGVuZEZvcm1hdDpAIiB9PiJdOworICAgIHJl
dHVybiBkZXNjcmlwdGlvbjsKK30KKwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQgKCkKQEAgLTQ3MCw3ICs0OTQsMzggQEAgLSAoTlNJbnRlZ2VyKWNoYW5nZUNv
dW50CiAgICAgcmV0dXJuIF9jaGFuZ2VDb3VudDsKIH0KIAotLSAoTlNBcnJheTxOU1VSTCAqPiAq
KWRyb3BwZWRGaWxlVVJMcworLSAoTlNVUkwgKilwcmVmZXJyZWRGaWxlVXBsb2FkVVJMQXRJbmRl
eDooTlNVSW50ZWdlcilpbmRleCBmaWxlVHlwZTooTlNTdHJpbmcgKiopb3V0RmlsZVR5cGUKK3sK
KyAgICBpZiAob3V0RmlsZVR5cGUpCisgICAgICAgICpvdXRGaWxlVHlwZSA9IG5pbDsKKworICAg
IGlmIChpbmRleCA+PSBfbG9hZFJlc3VsdHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgYXV0byByZXN1bHQgPSBfbG9hZFJlc3VsdHNbaW5kZXhdOworICAgIGlmICghW3Jlc3Vs
dCBjYW5CZVJlcHJlc2VudGVkQXNGaWxlVXBsb2FkXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbcmVzdWx0IGl0ZW1Qcm92aWRlcl07
CisgICAgZm9yIChOU1N0cmluZyAqcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyIGluIGl0ZW1Qcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7CisgICAgICAgIC8vIFNlYXJjaCBmb3Ig
dGhlIGhpZ2hlc3QgZmlkZWxpdHkgbm9uLXByaXZhdGUgdHlwZSBpZGVudGlmaWVyIHdlIGxvYWRl
ZCBmcm9tIHRoZSBpdGVtIHByb3ZpZGVyLgorICAgICAgICBpZiAoIVVUVHlwZUlzRGVjbGFyZWQo
KENGU3RyaW5nUmVmKXJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcikgJiYgIVVUVHlwZUlzRHluYW1p
YygoQ0ZTdHJpbmdSZWYpcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGZvciAoTlNTdHJpbmcgKmxvYWRlZFR5cGVJZGVudGlmaWVyIGlu
IFtyZXN1bHQgbG9hZGVkVHlwZUlkZW50aWZpZXJzXSkgeworICAgICAgICAgICAgaWYgKCFVVFR5
cGVDb25mb3Jtc1RvKChDRlN0cmluZ1JlZilyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIsIChDRlN0
cmluZ1JlZilsb2FkZWRUeXBlSWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGlmIChvdXRGaWxlVHlwZSkKKyAgICAgICAgICAgICAgICAqb3V0Rmls
ZVR5cGUgPSBsb2FkZWRUeXBlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIHJldHVybiBbcmVzdWx0
IGZpbGVVUkxGb3JUeXBlOmxvYWRlZFR5cGVJZGVudGlmaWVyXTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TQXJyYXk8TlNVUkwgKj4gKilhbGxEcm9wcGVk
RmlsZVVSTHMKIHsKICAgICBOU011dGFibGVBcnJheTxOU1VSTCAqPiAqZmlsZVVSTHMgPSBbTlNN
dXRhYmxlQXJyYXkgYXJyYXldOwogICAgIGZvciAoYXV0byBsb2FkUmVzdWx0IDogX2xvYWRSZXN1
bHRzKSB7CkBAIC01MzksOCArNTk0LDE5IEBAIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBl
SWRlbnRpZmllcnNUb0xvYWRGb3JSZWdpc3RlcmVkVHlwZUlkZW50ZmllcnM6KE5TQXJyCiAgICAg
TlNNdXRhYmxlU2V0ICp0eXBlc1RvTG9hZCA9IFtOU011dGFibGVTZXQgc2V0XTsKICAgICBOU1N0
cmluZyAqaGlnaGVzdEZpZGVsaXR5Q29udGVudFR5cGUgPSBuaWw7CiAKKyAgICBCT09MIGNvbnRh
aW5zRmxhdFJURkQgPSBbcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycyBjb250YWluc09iamVjdDoo
TlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOwogICAgIC8vIEZpcnN0LCB3ZSB3YW50IHRvIGVp
dGhlciBsb2FkIHRoZSBoaWdoZXN0IGZpZGVsaXR5IHN1cHBvcnRlZCB0eXBlIG9yIHRoZSBoaWdo
ZXN0IGZpZGVsaXR5IGdlbmVyaWMgY29udGVudCB0eXBlLgogICAgIGZvciAoTlNTdHJpbmcgKnJl
Z2lzdGVyZWRUeXBlSWRlbnRpZmllciBpbiByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Cisg
ICAgICAgIGlmIChjb250YWluc0ZsYXRSVEZEICYmIFtyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIg
aXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVSVEZEXSkgeworICAgICAgICAgICAg
Ly8gSW4gdGhlIGNhc2Ugd2hlcmUgYXR0YWNobWVudHMgYXJlIGVuYWJsZWQgYW5kIHdlJ3JlIGFj
Y2VwdGluZyBhbGwgdHlwZXMgb2YgY29udGVudCB1c2luZyBhdHRhY2htZW50CisgICAgICAgICAg
ICAvLyBlbGVtZW50cyBhcyBhIGZhbGxiYWNrIHJlcHJlc2VudGF0aW9uLCBpZiB0aGUgc291cmNl
IHdyaXRlcyBhdHRyaWJ1dGVkIHN0cmluZ3MgdG8gdGhlIHBhc3RlYm9hcmQgd2l0aAorICAgICAg
ICAgICAgLy8gY29tLmFwcGxlLnJ0ZmQgYXQgYSBoaWdoZXIgZmlkZWxpdHkgdGhhbiBjb20uYXBw
bGUuZmxhdC1ydGZkLCB3ZSdsbCBlbmQgdXAgbG9hZGluZyBvbmx5IGNvbS5hcHBsZS5ydGZkCisg
ICAgICAgICAgICAvLyBhbmQgZHJvcHBpbmcgdGhlIHRleHQgYXMgYW4gYXR0YWNobWVudCBlbGVt
ZW50IGJlY2F1c2Ugd2UgY2Fubm90IGNvbnZlcnQgdGhlIGRyb3BwZWQgY29udGVudCB0byBtYXJr
dXAuCisgICAgICAgICAgICAvLyBJbnN0ZWFkLCBpZiBmbGF0IFJURkQgaXMgcHJlc2VudCBpbiB0
aGUgaXRlbSBwcm92aWRlciwgYWx3YXlzIHByZWZlciB0aGF0IG92ZXIgUlRGRCBzbyB0aGF0IGRy
b3BwaW5nIGFzCisgICAgICAgICAgICAvLyByZWd1bGFyIHdlYiBjb250ZW50IGlzbid0IG92ZXJy
aWRkZW4gYnkgZW5hYmxpbmcgYXR0YWNobWVudCBlbGVtZW50cy4KKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKICAgICAgICAgaWYgKHR5cGVDb25mb3Jtc1RvVHlwZXMocmVnaXN0
ZXJlZFR5cGVJZGVudGlmaWVyLCBfc3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzLmdldCgpKSkgewog
ICAgICAgICAgICAgW3R5cGVzVG9Mb2FkIGFkZE9iamVjdDpyZWdpc3RlcmVkVHlwZUlkZW50aWZp
ZXJdOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MjYsNyArNjkyLDcgQEAgLSAodm9pZClkb0Fm
dGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmls
ZUxvYWRCbG9jaykKICAgICAgICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9sb2FkUmVzdWx0cy5h
cHBlbmQobG9hZFJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0aW9uQmxvY2so
W3JldGFpbmVkU2VsZiBkcm9wcGVkRmlsZVVSTHNdKTsKKyAgICAgICAgY29tcGxldGlvbkJsb2Nr
KFtyZXRhaW5lZFNlbGYgYWxsRHJvcHBlZEZpbGVVUkxzXSk7CiAgICAgfTsKIAogICAgIGlmIChz
eW5jaHJvbm91c1RpbWVvdXQgPiAwICYmICFkaXNwYXRjaF9ncm91cF93YWl0KHN5bmNocm9ub3Vz
RmlsZUxvYWRpbmdHcm91cC5nZXQoKSwgZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywg
c3luY2hyb25vdXNUaW1lb3V0ICogTlNFQ19QRVJfU0VDKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCA0MDZkNDVhOWRiODljNTRjYzI0NGQ4N2Ni
NWEyNWUxNGM2NDc1NzBiLi42MGI3YzNhODk2MDg1ZGQyNGUyMTczNDVkYTE3YmYzNWZiM2Q5OWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0zNCw2
ICszNCw3IEBACiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRm
b3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW1wb3J0
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMu
aCIKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTIyMCw2ICsyMjEsOSBAQCBib29sIERyYWdEYXRh
Ojpjb250YWluc0NvbXBhdGlibGVDb250ZW50KERyYWdnaW5nUHVycG9zZSBwdXJwb3NlKSBjb25z
dAogICAgIGlmIChwdXJwb3NlID09IERyYWdnaW5nUHVycG9zZTo6Rm9yRmlsZVVwbG9hZCkKICAg
ICAgICAgcmV0dXJuIGNvbnRhaW5zRmlsZXMoKTsKIAorICAgIGlmIChwdXJwb3NlID09IERyYWdn
aW5nUHVycG9zZTo6Rm9yRWRpdGluZyAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmIGNvbnRhaW5zRmlsZXMoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVz
LCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICByZXR1cm4gdHlwZXMuY29udGFpbnMoU3RyaW5nKFdl
YkFyY2hpdmVQYm9hcmRUeXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggYjY3NGM3OWYyMjM3YjBiNzMxODBiMjg4NDg5ZTEyMmE3MDkyZWQ0
Yi4uMmI2M2IyZjQ1YTIyMDhiYjA0NzBiYjA3MDA5MWE4MmE5OTUxYzQxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTM1MCw3ICszNTAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
cikKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9h
cmRUeXBlKCkpKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICAgICAgc3Ry
YXRlZ3kuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2Fy
ZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9
IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRGaWxlbmFtZXMocGF0aHMpKQorICAgICAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkRmlsZVBhdGhz
KHBhdGhzKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1NCw3ICs1NTQsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBkYXRhKQogICAgIH0KIH0KIAotVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVh
ZEZpbGVuYW1lcygpCitWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZVBhdGhzKCkK
IHsKICAgICAvLyBGSVhNRTogU2VlbXMgc2lsbHkgdG8gY29udmVydCBwYXRocyB0byBVUkxzIGFu
ZCB0aGVuIGJhY2sgdG8gcGF0aHMuIERvZXMgdGhhdCBkbyBhbnl0aGluZyBoZWxwZnVsPwogICAg
IFZlY3RvcjxTdHJpbmc+IGFic29sdXRlVVJMcyA9IGFic29sdXRlVVJMc0Zyb21QYXN0ZWJvYXJk
RmlsZW5hbWVzKG1fcGFzdGVib2FyZE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCA2MzI1NGQ5
N2RmYzhhZWIxNTk4NzM3OTYzNWJhN2NmNWM1ZThkMzQxLi5iMjAxMjJiNmE4ZGQ0YmMxZTQ1NzVk
MTM2YjYxNzBhMDBlYTMzOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMjksNiArMjksNyBAQAog
I2ltcG9ydCAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRJ
dGVtSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgpAQCAt
MjI1LDkgKzIyNiw5IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1CiAgICAgaXRlbXNDb3VudCA9
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY291bnQoKTsKIH0KIAotdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCiB7
Ci0gICAgZmlsZW5hbWVzID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5maWxl
bmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKKyAgICBpbmZvID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4KTsKIH0KIAog
dm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmlu
ZGV4IDZjZWRlMDVlMmEzMzI4N2ViMmJkNmI0YTI0ZTVlYmQ1MjMwNjRiYjQuLmFmMjcwNWQ2NzE1
ZTA3MDlkNjQ3ZjhiMDA1ZGZmMmQxMjcwZGJhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIENvbG9yOwogc3RydWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogc3RydWN0
IFBhc3RlYm9hcmRJbWFnZTsKK3N0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFz
dGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIH0KQEAgLTc3LDcgKzc4
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB1cmwsIFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYs
IHVpbnQ2NF90JiBzaXplKTsKICAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KTsKLSAgICB2b2lk
IGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKKyAgICB2b2lkIGluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJD
b3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8mIGZpbGVuYW1lKTsKICAgICB2b2lkIHVwZGF0ZVN1cHBv
cnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYmUxNjE4NDI0YzczNmNmMmMxODFjMzdhNGNkODQ0Nzc1N2RjYWZi
Yy4uYzdiM2IyNjgwNzE4ODBhYWY2NTRhZGJkOGRlYTk2MGM5YTk4ZTZiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMzAsNyArMzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXN0ZWJvYXJkUHJveHkgewogICAg
IFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRU
eXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUp
CiAgICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFz
dGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKQogICAgIEdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpCi0g
ICAgR2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkg
LT4gKFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lcykKKyAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2Vi
Q29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm8pCiAgICAgVXBkYXRlU3VwcG9ydGVkVHlwZUlk
ZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVib2FyZE5h
bWUpCiAgICAgR2V0UGFzdGVib2FyZFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KHVpbnQ2
NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBl
cykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBkYjMxNzg4
YzA1YjlmOTA5NGU3ZDU3MmUxODMzNjlhY2RhNmYyY2Y0Li44NTQ0ODdjZjAzYzIzNzQ2Zjg2Njcy
M2MzZDViZmZhYTRhNmM0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZvLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1QYXN0
ZWJvYXJkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KQEAgLTMyMiw5
ICszMjMsMTEgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICByZXR1cm4gaXRlbXNDb3Vu
dDsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldEZpbGVuYW1lc0ZvckRhdGFJ
bnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQorUGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0RmlsZW5h
bWVzRm9yRGF0YUludGVyYWN0aW9uKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6R2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uOjpSZXBseShmaWxlbmFt
ZXMpLCAwKTsKKyAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBwYXN0
ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kZXg6OlJlcGx5KGluZm8pLCAwKTsKKyAgICByZXR1cm4gaW5mbzsKIH0KIAogdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggYWQyZThmMTVlOTU0YTg2
ZGUwNjM4MWViOTI0M2E5OTQ2NzM5NDQwZC4uY2QzMGZjMTVkYTM3ZjM1ZDc2NmM1MzYxYTkzZmUy
ZGYzNzAzNTgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjUsNyArNjUs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CisgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCB1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTc1OTI1
NmI4ZmVkNzU5NDljMTU3NjhmMDJmNjY2YmVmYzU2NDMwZC4uODQyY2NkYzBhOGY4M2U4MTI3YzY2
ZmZmMmJiYWRkODc5ZjIyMWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJk
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYg
dGl0bGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9u
KFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4KFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5k
ZXggMjM0MDk2NzQ0YzRmNWNmNzE5MzJjOWNjNTlmNGUyZjBjMDQxOTVmOS4uZWQ3ZjdmNWZmMjZi
YWQ2YTYzYjY0MzhjNzI0N2NlYmZjNTFkNDFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmRJdGVtSW5mby5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CkBAIC0yMzks
OCArMjQwLDggQEAgU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRTdHJpbmcoaW5kZXgsIHR5cGUpOwogfQogCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9u
KFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CitXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKIHsKLSAgICBmaWxlbmFtZXMgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLmZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbigpOworICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgp
OwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1M2Y5YmFiOWVhNjEzZjkwZjdkODRhNzFjMjQ1ZDI5
NzM2MWNmZjVhLi4xMjAwY2I5ZGMzNjkxNGZjM2RjYzQ2YjIwM2JjZTUyNzNjN2EzZTljIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDUgQEAKKzIwMTgtMDEtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gQ3JlYXRlIGF0dGFjaG1lbnQgZWxlbWVu
dHMgd2hlbiBkcm9wcGluZyBmaWxlcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYy
ODA5NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGRz
IDMgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSBkaWZmZXJlbnQgdXNlIGNhc2VzIG9mIGRyb3Bw
aW5nIGNvbnRlbnQgYXMgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIHRoZSBydW50aW1lCisgICAg
ICAgIHN3aXRjaCBpcyBlbmFibGVkLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMu
bW06CisgICAgICAgICgtW05TSXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YTp0eXBlOl0pOgorICAg
ICAgICAocGxhdGZvcm1Db3B5UE5HKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1t
OgorCisgICAgICAgIEZpeCBzb21lIGN1cnJlbnRseSBmYWlsaW5nIGlPUyBkcmFnIGFuZCBkcm9w
IHRlc3RzLiBJbiB0aGlzIGNhc2UsIHRoZXJlJ3Mgbm8gcmVhc29uIFJURkQgc2hvdWxkIGFwcGVh
ciBpbiB0aGUKKyAgICAgICAgc291cmNlIGl0ZW0gcHJvdmlkZXIgd2hlbiBkcmFnZ2luZyByaWNo
IHRleHQgKndpdGhvdXQqIGF0dGFjaG1lbnRzLCBzbyB0aGlzIHNob3VsZCBoYXZlIGJlZW4gYSBj
aGVjayBmb3IganVzdAorICAgICAgICBrVVRUeXBlUlRGIGluc3RlYWQuCisKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAgIFRlc3RzIGEgZmV3IGNhc2VzIG9mIGluc2Vy
dGluZyBhdHRhY2htZW50IGVsZW1lbnRzIHZpYSBkcm9wOgorICAgICAgICAxLiAgV2Ugc2hvdWxk
IGRpc3Rpbmd1aXNoIGJldHdlZW4gZHJvcHMgY29udGFpbmluZyByaWNoL3BsYWluIHRleHQgZmls
ZXMgZnJvbSBqdXN0IGRyb3BwaW5nIHJpY2gvcGxhaW4gdGV4dC4KKyAgICAgICAgICAgIEluc3Rl
YWQgb2YgaW5zZXJ0aW5nIHRoZSBjb250ZW50cyBhcyBpbmxpbmUgd2ViIGNvbnRlbnQsIHRoaXMg
c2hvdWxkIGdlbmVyYXRlIGF0dGFjaG1lbnQgZWxlbWVudHMuCisgICAgICAgIDIuICBUZXN0IHRo
ZSBmYWxsYmFjayBtZWNoYW5pc20gZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzLiBJ
ZiB0aGUgcHJlZmVycmVkIHByZXNlbnRhdGlvbiBzdHlsZSBpcyBub3QKKyAgICAgICAgICAgIGV4
cGxpY2l0bHkgc2V0LCBidXQgdGhlcmUncyBub3RoaW5nIFdlYktpdCB3b3VsZCBvdGhlcndpc2Ug
ZG8gd2l0aCB0aGUgZHJvcHBlZCBjb250ZW50LCB0aGVuIHdlIHNob3VsZCBmYWxsCisgICAgICAg
ICAgICBiYWNrIHRvIGluc2VydGluZyB0aGUgY29udGVudCBhcyBhbiBhdHRhY2htZW50LgorICAg
ICAgICAzLiAgVGVzdCB0aGF0IGlmIG11bHRpcGxlIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaXRl
bSBwcm92aWRlcnMgYXJlIHByZXNlbnQsIFdlYktpdCB3aWxsIHJlc3BlY3QgdGhlIG9yZGVyIGlu
CisgICAgICAgICAgICB3aGljaCB0aGV5IHdlcmUgaW5zZXJ0ZWQgYnkgdGhlIHNvdXJjZSAoYXMg
b3Bwb3NlZCB0bywgZm9yIGluc3RhbmNlLCBwdXR0aW5nIGFsbCBvZiB0aGUgYXR0YWNobWVudHMg
aW4gZnJvbnQKKyAgICAgICAgICAgIG9yIGF0IHRoZSBlbmQpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6XSk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0
byByZXR1cm4gYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgcmVzdWx0IG9mIGV2YWx1YXRp
bmcgc29tZSBnaXZlbiBzY3JpcHQsIGFuZCByZXdyaXRlCisgICAgICAgIC1zdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0IHRvIGp1c3QgdHVybiBhcm91bmQgYW5kIGNhbGwgdGhpcy4KKworICAg
ICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6XSk6CisK
IDIwMTgtMDEtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgZmlsdGVyLWJ1aWxkLXdlYmtpdCBmaWx0ZXJzIG91dCB1c2VmdWwgY29tcGlsZXIgZXJy
b3IgbGluZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCmluZGV4IDA0ZWExNmM3N2U2MmVmNzZkOTU4NTBl
NjJjYWViZDlkZTUyNTI4MTYuLjc0MzU0N2QzYzc3YWNlOTExNTg3NmY1Yzg0YTk4MzlkYjZjNjhk
NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
dHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMzIxLDYgKzMyMSwyNCBAQCBAZW5kCiAKICNw
cmFnbWEgbWFyayAtIFBsYXRmb3JtIHRlc3RpbmcgaGVscGVyIGZ1bmN0aW9ucwogCisjaWYgUExB
VEZPUk0oSU9TKQorCit0eXBlZGVmIHZvaWQoXkl0ZW1Qcm92aWRlckRhdGFMb2FkSGFuZGxlciko
TlNEYXRhICosIE5TRXJyb3IgKik7CisKK0BpbXBsZW1lbnRhdGlvbiBOU0l0ZW1Qcm92aWRlciAo
QXR0YWNobWVudFRlc3RpbmcpCisKKy0gKHZvaWQpcmVnaXN0ZXJEYXRhOihOU0RhdGEgKilkYXRh
IHR5cGU6KE5TU3RyaW5nICopdHlwZQoreworICAgIFtzZWxmIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltwcm90ZWN0ZWREYXRhID0gcmV0
YWluUHRyKGRhdGEpXSAoSXRlbVByb3ZpZGVyRGF0YUxvYWRIYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyKSAtPiBOU1Byb2dyZXNzICogeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwcm90ZWN0
ZWREYXRhLmdldCgpLCBuaWwpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH1dOworfQorCitA
ZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIHZvaWQgcGxhdGZvcm1Db3B5UmljaFRl
eHRXaXRoTXVsdGlwbGVBdHRhY2htZW50cygpCiB7CiAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aERhdGE6dGVzdEltYWdlRGF0YSgpIG9m
VHlwZTooTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7CkBAIC0zNjMsOCArMzgxLDYgQEAgdm9pZCBw
bGF0Zm9ybUNvcHlSaWNoVGV4dFdpdGhJbWFnZSgpCiAjZW5kaWYKIH0KIAotdHlwZWRlZiB2b2lk
KF5JdGVtUHJvdmlkZXJEYXRhTG9hZEhhbmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopOwotCiB2
b2lkIHBsYXRmb3JtQ29weVBORygpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzc1LDEwICsz
OTEsNyBAQCB2b2lkIHBsYXRmb3JtQ29weVBORygpCiAgICAgVUlQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkID0gW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF07CiAgICAgYXV0byBpdGVtID0g
YWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2l0ZW0gc2V0UHJl
ZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFj
aG1lbnRdOwotICAgIFtpdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZVBORyB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltdIChJdGVtUHJvdmlkZXJEYXRh
TG9hZEhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHRlc3RJbWFnZURhdGEoKSwgbmlsKTsKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICB9XTsKKyAgICBbaXRlbSByZWdpc3RlckRhdGE6dGVzdEltYWdlRGF0YSgpIHR5
cGU6KE5TU3RyaW5nICopa1VUVHlwZVBOR107CiAgICAgcGFzdGVib2FyZC5pdGVtUHJvdmlkZXJz
ID0gQFsgaXRlbS5nZXQoKSBdOwogI2VuZGlmCiB9CkBAIC05NjAsMTEgKzk3Myw3IEBAIFRFU1Qo
V0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRJbWFnZUFzQXR0YWNobWVudCkKICAg
ICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CiAgICAgYXV0
byBkcmFnZ2luZ1NpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
YWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAgICAgYXV0byBpdGVtID0g
YWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW2l0ZW0gc2V0UHJl
ZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFj
aG1lbnRdOwotICAgIFtpdGVtIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50
aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZVBORyB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsIGxvYWRIYW5kbGVyOltdIChJdGVtUHJvdmlkZXJEYXRh
TG9hZEhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXIpIC0+IE5TUHJvZ3Jlc3MgKiB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHRlc3RJbWFnZURhdGEoKSwgbmlsKTsKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICB9XTsKKyAgICBbaXRlbSByZWdpc3RlckRhdGE6dGVzdEltYWdlRGF0YSgpIHR5
cGU6KE5TU3RyaW5nICopa1VUVHlwZVBOR107CiAgICAgW2RyYWdnaW5nU2ltdWxhdG9yIHNldEV4
dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtLmdldCgpIF1dOwogICAgIFtkcmFnZ2luZ1NpbXVs
YXRvciBydW5Gcm9tOkNHUG9pbnRaZXJvIHRvOkNHUG9pbnRNYWtlKDUwLCA1MCldOwogCkBAIC0x
MDEwLDYgKzEwMTksMTE1IEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3Bw
ZWRBdHRyaWJ1dGVkU3RyaW5nQ29udGFpbmluZ0F0dGFjaG1lbnQpCiAgICAgfQogfQogCitURVNU
KFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkUmljaEFuZFBsYWluVGV4dEZpbGVz
QXNBdHRhY2htZW50cykKK3sKKyAgICAvLyBIZXJlLCBib3RoIHJpY2ggdGV4dCBhbmQgcGxhaW4g
dGV4dCBhcmUgY29udGVudCB0eXBlcyB0aGF0IFdlYktpdCBhbHJlYWR5IHVuZGVyc3RhbmRzIGhv
dyB0byBpbnNlcnQgaW4gZWRpdGFibGUKKyAgICAvLyBhcmVhcyBpbiB0aGUgYWJzZW5jZSBvZiBh
dHRhY2htZW50IGVsZW1lbnRzLiBIb3dldmVyLCBkdWUgdG8gdGhlIGV4cGxpY2l0bHkgc2V0IGF0
dGFjaG1lbnQgcHJlc2VudGF0aW9uIHN0eWxlCisgICAgLy8gb24gdGhlIGl0ZW0gcHJvdmlkZXJz
LCB3ZSBzaG91bGQgaW5zdGVhZCB0cmVhdCB0aGVtIGFzIGRyb3BwZWQgZmlsZXMgYW5kIGluc2Vy
dCBhdHRhY2htZW50IGVsZW1lbnRzLgorICAgIC8vIFRoaXMgZXhlcmNpc2VzIHRoZSBzY2VuYXJp
byBvZiBkcmFnZ2luZyByaWNoIGFuZCBwbGFpbiB0ZXh0IGZpbGVzIGZyb20gRmlsZXMgdG8gTWFp
bC4KKyAgICBhdXRvIHJpY2hUZXh0SXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gcmljaFRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIkhlbGxvIHdvcmxkIiBhdHRyaWJ1dGVzOkB7IE5T
Rm9udEF0dHJpYnV0ZU5hbWU6IFtVSUZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6MTJdIH1dKTsK
KyAgICBbcmljaFRleHRJdGVtIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50XTsKKyAgICBbcmljaFRleHRJdGVtIHJlZ2lz
dGVyT2JqZWN0OnJpY2hUZXh0LmdldCgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNl
bnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIFtyaWNoVGV4dEl0ZW0gc2V0U3VnZ2VzdGVkTmFt
ZTpAImhlbGxvLnJ0ZiJdOworCisgICAgYXV0byBwbGFpblRleHRJdGVtID0gYWRvcHROUyhbW05T
SXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3BsYWluVGV4dEl0ZW0gc2V0UHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGU6VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1l
bnRdOworICAgIFtwbGFpblRleHRJdGVtIHJlZ2lzdGVyT2JqZWN0OkAiSGVsbG8gd29ybGQiIHZp
c2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAg
IFtwbGFpblRleHRJdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJ3b3JsZC50eHQiXTsKKworICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKyAgICBhdXRvIGRy
YWdnaW5nU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxv
Y10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbZHJhZ2dpbmdTaW11bGF0
b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIHJpY2hUZXh0SXRlbS5nZXQoKSwgcGxhaW5U
ZXh0SXRlbS5nZXQoKSBdXTsKKyAgICBbZHJhZ2dpbmdTaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50
WmVybyB0bzpDR1BvaW50TWFrZSg1MCwgNTApXTsKKworICAgIEVYUEVDVF9FUSgyVSwgW2RyYWdn
aW5nU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50KTsKKyAgICBFWFBFQ1RfRVEo
MFUsIFtkcmFnZ2luZ1NpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50KTsKKworICAg
IGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCBpbiBbZHJhZ2dpbmdTaW11bGF0b3IgaW5z
ZXJ0ZWRBdHRhY2htZW50c10pIHsKKyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAg
ICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6JmVycm9y
XS5sZW5ndGgsIDBVKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgTlNMb2coQCJFcnJvcjogJUAiLCBlcnJvcik7CisgICAgfQor
CisgICAgRVhQRUNUX0VRKDIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JykubGVuZ3RoIl0uaW50VmFs
dWUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8ucnRmIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1l
bnQnKVswXS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0
ZXh0L3J0ZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0eXBlJyki
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ3b3JsZC50eHQiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVu
dCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRl
eHQvcGxhaW4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndHlwZScp
Il0pOworfQorCitURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkWmlwQXJj
aGl2ZUFzQXR0YWNobWVudCkKK3sKKyAgICAvLyBTaW5jZSBXZWJLaXQgZG9lc24ndCBoYXZlIGFu
eSBkZWZhdWx0IERPTSByZXByZXNlbnRhdGlvbiBmb3IgWklQIGFyY2hpdmVzLCB3ZSBzaG91bGQg
ZmFsbCBiYWNrIHRvIGluc2VydGluZworICAgIC8vIGF0dGFjaG1lbnQgZWxlbWVudHMuIFRoaXMg
ZXhlcmNpc2VzIHRoZSBmbG93IG9mIGRyYWdnaW5nIGEgWklQIGZpbGUgZnJvbSBhbiBhcHAgdGhh
dCBkb2Vzbid0IHNwZWNpZnkgYSBwcmVmZXJyZWQKKyAgICAvLyBwcmVzZW50YXRpb24gc3R5bGUg
KGUuZy4gTm90ZXMpIGludG8gTWFpbC4KKyAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVt
UHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBOU0RhdGEgKmRhdGEgPSB0ZXN0WklQRGF0YSgp
OworICAgIFtpdGVtIHJlZ2lzdGVyRGF0YTpkYXRhIHR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVpp
cEFyY2hpdmVdOworICAgIFtpdGVtIHNldFN1Z2dlc3RlZE5hbWU6QCJhcmNoaXZlLnppcCJdOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworICAg
IGF1dG8gZHJhZ2dpbmdTaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkcmFnZ2lu
Z1NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbS5nZXQoKSBdXTsKKyAg
ICBbZHJhZ2dpbmdTaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50WmVybyB0bzpDR1BvaW50TWFrZSg1
MCwgNTApXTsKKworICAgIEVYUEVDVF9FUSgxVSwgW2RyYWdnaW5nU2ltdWxhdG9yIGluc2VydGVk
QXR0YWNobWVudHNdLmNvdW50KTsKKyAgICBFWFBFQ1RfRVEoMFUsIFtkcmFnZ2luZ1NpbXVsYXRv
ciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50KTsKKyAgICBbW2RyYWdnaW5nU2ltdWxhdG9yIGlu
c2VydGVkQXR0YWNobWVudHNdLmZpcnN0T2JqZWN0IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOmRh
dGFdOworICAgIEVYUEVDVF9FUSgxLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpLmxlbmd0aCJdLmlu
dFZhbHVlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImFyY2hpdmUuemlwIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3ppcCIsIFt3ZWJWaWV3IHZhbHVlT2ZB
dHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKK30KKwor
VEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZEl0ZW1Qcm92aWRlcnNJbk9y
ZGVyKQoreworICAgIC8vIFRlc3RzIHRoYXQgaXRlbSBwcm92aWRlcnMgYXJlIGluc2VydGVkIGlu
IHRoZSBvcmRlciB0aGV5IGFyZSBzcGVjaWZpZWQuIEluIHRoaXMgY2FzZSwgdGhlIHR3byBpbnNl
cnRlZCBhdHRhY2htZW50cworICAgIC8vIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgYSBsaW5rLgor
ICAgIGF1dG8gZmlyc3RBdHRhY2htZW50SXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBh
bGxvY10gaW5pdF0pOworICAgIFtmaXJzdEF0dGFjaG1lbnRJdGVtIHNldFByZWZlcnJlZFByZXNl
bnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVBdHRhY2htZW50XTsKKyAg
ICBbZmlyc3RBdHRhY2htZW50SXRlbSByZWdpc3Rlck9iamVjdDpAIkZJUlNUIiB2aXNpYmlsaXR5
Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbZmlyc3RB
dHRhY2htZW50SXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAiZmlyc3QudHh0Il07CisKKyAgICBhdXRv
IGlubGluZVRleHRJdGVtID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBhcHBsZVVSTCA9IHJldGFpblB0cihbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHBzOi8vd3d3LmFwcGxlLmNvbS8iXSk7CisgICAgW2lubGluZVRleHRJdGVtIHJlZ2lzdGVyT2Jq
ZWN0OmFwcGxlVVJMLmdldCgpIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlv
blZpc2liaWxpdHlBbGxdOworCisgICAgYXV0byBzZWNvbmRBdHRhY2htZW50SXRlbSA9IGFkb3B0
TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtzZWNvbmRBdHRhY2htZW50
SXRlbSByZWdpc3RlckRhdGE6dGVzdFBERkRhdGEoKSB0eXBlOihOU1N0cmluZyAqKWtVVFR5cGVQ
REZdOworICAgIFtzZWNvbmRBdHRhY2htZW50SXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAic2Vjb25k
LnBkZiJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cygpOworICAgIGF1dG8gZHJhZ2dpbmdTaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAg
IFtkcmFnZ2luZ1NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgZmlyc3RBdHRh
Y2htZW50SXRlbS5nZXQoKSwgaW5saW5lVGV4dEl0ZW0uZ2V0KCksIHNlY29uZEF0dGFjaG1lbnRJ
dGVtLmdldCgpIF1dOworICAgIFtkcmFnZ2luZ1NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRaZXJv
IHRvOkNHUG9pbnRNYWtlKDUwLCA1MCldOworCisgICAgRVhQRUNUX0VRKDJVLCBbZHJhZ2dpbmdT
aW11bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10uY291bnQpOworICAgIEVYUEVDVF9FUSgwVSwg
W2RyYWdnaW5nU2ltdWxhdG9yIHJlbW92ZWRBdHRhY2htZW50c10uY291bnQpOworCisgICAgZm9y
IChfV0tBdHRhY2htZW50ICphdHRhY2htZW50IGluIFtkcmFnZ2luZ1NpbXVsYXRvciBpbnNlcnRl
ZEF0dGFjaG1lbnRzXSkgeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAg
RVhQRUNUX0dUKFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTomZXJyb3JdLmxl
bmd0aCwgMFUpOworICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOworICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICBOU0xvZyhAIkVycm9yOiAlQCIsIGVycm9yKTsKKyAgICB9CisKKyAg
ICBOU0FycmF5ICpvYnNlcnZlZEVsZW1lbnRUYWdzID0gKE5TQXJyYXkgKilbd2ViVmlldyBvYmpl
Y3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiQXJyYXkuZnJvbShkb2N1bWVudC5ib2R5LmNoaWxk
cmVuKS5tYXAoZSA9PiBlLnRhZ05hbWUpIl07CisgICAgTlNBcnJheSAqZXhwZWN0ZWRFbGVtZW50
VGFncyA9IEBbIEAiQVRUQUNITUVOVCIsIEAiQSIsIEAiQVRUQUNITUVOVCIgXTsKKyAgICBFWFBF
Q1RfVFJVRShbb2JzZXJ2ZWRFbGVtZW50VGFncyBpc0VxdWFsVG9BcnJheTpleHBlY3RlZEVsZW1l
bnRUYWdzXSk7CisgICAgaWYgKCFbb2JzZXJ2ZWRFbGVtZW50VGFncyBpc0VxdWFsVG9BcnJheTpl
eHBlY3RlZEVsZW1lbnRUYWdzXSkKKyAgICAgICAgTlNMb2coQCJPYnNlcnZlZCBlbGVtZW50czog
JUAgZGlkIG5vdCBtYXRjaCBleHBlY3RhdGlvbnM6ICVAIiwgb2JzZXJ2ZWRFbGVtZW50VGFncywg
ZXhwZWN0ZWRFbGVtZW50VGFncyk7CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImZpcnN0LnR4dCIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgidGV4dC9wbGFpbiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMF0u
Z2V0QXR0cmlidXRlKCd0eXBlJykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFthcHBsZVVSTCBh
YnNvbHV0ZVN0cmluZ10sIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJocmVmIiBmb3JRdWVy
eVNlbGVjdG9yOkAiYSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInNlY29uZC5wZGYiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoImFwcGxpY2F0aW9uL3BkZiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhdHRhY2htZW50JylbMV0u
Z2V0QXR0cmlidXRlKCd0eXBlJykiXSk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KaW5kZXggODVhMTFhNDNhNWQw
M2Q4N2M1ZDEyOWI2YmZhZjhhN2ZjOGVjZjhlNy4uYTU5MDhkNmY1NDA0ODc3MzdhZjljNWRhMjYw
OGZjZjNjZTYwY2Q2NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
RGF0YUludGVyYWN0aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KQEAgLTM0NCw3ICszNDQsNyBAQCBURVNUKERhdGFJ
bnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBF
WFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFj
dGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVz
IGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVd
KTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVl
KDEsIDIwMSwgOTYxLCAyMjcpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxl
Y3Rpb25SZWN0c10pOwotICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlk
ZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRU
eXBlUlRGRCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOworICAgIGNoZWNrVHlw
ZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUlRGLCAoTlNTdHJpbmcgKilrVVRUeXBl
VVRGOFBsYWluVGV4dCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRF
ZGl0YWJsZVRvVGV4dGFyZWEpCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rp
b25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKICAgICBFWFBFQ1RfVFJVRShbb2Jz
ZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5h
bWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0
OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1Nl
bGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDYsIDIwMywgOTkwLCAy
MzIpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOwot
ICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUlRGRCwgKE5TU3Ry
aW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVj
ZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAo
TlNTdHJpbmcgKilrVVRUeXBlUlRGLCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7
CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZU1vdmVQYXJh
Z3JhcGhzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBl
NTUyZDk2YWJmYTdhMmE0MmNhYmRmMzgyNTVjM2NhMDUxNTg3N2U5Li5kYWEzYjI2ZDY2YjhlODkw
MTcwNGNiNTlmNWYxNzQxMDE3ZDAxY2RlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaApAQCAtNDUsNiArNDUsNyBAQAogLSAodm9pZClsb2FkVGVzdFBhZ2VOYW1l
ZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKIC0gKHZvaWQpc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOihOU1N0cmluZyAqKWh0bWw7CiAtICh2b2lkKXN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKKy0gKGlkKW9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0OwogLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6
KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlzcGF0
Y2hfYmxvY2tfdClhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tCmluZGV4IGVmNDE3ZmI5N2FkNGFjOThjZTQwNzk0NDgxOTMxNTU5OTBkMDc5NjEuLjI1
ODk3ZDY3MjI0NGYyZWVkMzI5NWM1NDFlMTA3MGM0YjMyNGZlMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTIzOCwyMSArMjM4LDI0IEBAIC0gKHZv
aWQpc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lCiAg
ICAgW3NlbGYgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogfQogCi0tIChOU1N0
cmluZyAqKXN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0Cist
IChpZClvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdAogewot
ICAgIF9fYmxvY2sgYm9vbCBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7Ci0gICAgX19i
bG9jayBOU1N0cmluZyAqZXZhbFJlc3VsdCA9IG5pbDsKLSAgICBbc2VsZiBfZXZhbHVhdGVKYXZh
U2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpCi0gICAgewotICAgICAgICBldmFsUmVzdWx0ID0gW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6QCIlQCIsIHJlc3VsdF07CisgICAgYm9vbCBpc1dh
aXRpbmdGb3JKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0
OworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6c2NyaXB0
IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBldmFsUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICBpc1dhaXRpbmdGb3JKYXZhU2NyaXB0
ID0gdHJ1ZTsKICAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKICAgICAgICAgaWYgKGVycm9y
KQogICAgICAgICAgICAgTlNMb2coQCJFbmNvdW50ZXJlZCBlcnJvcjogJUAgd2hpbGUgZXZhbHVh
dGluZyBzY3JpcHQ6ICVAIiwgZXJyb3IsIHNjcmlwdCk7CiAgICAgfV07Ci0KICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzV2FpdGluZ0ZvckphdmFTY3JpcHQpOwotICAgIHJldHVybiBb
ZXZhbFJlc3VsdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGV2YWxSZXN1bHQuYXV0b3JlbGVh
c2UoKTsKK30KKworLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihO
U1N0cmluZyAqKXNjcmlwdAoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVAIiwgW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdXTsKIH0K
IAogLSAodm9pZCl3YWl0Rm9yTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330449</attachid>
            <date>2018-01-03 23:11:59 -0800</date>
            <delta_ts>2018-01-03 23:44:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181192-20180103231158.patch</filename>
            <type>text/plain</type>
            <size>72107</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFkNTFkOTIzMzBhZTBi
Y2JlYTY4NWZlY2M5MmE4YjZmNGU3ZGZjYy4uOTI1N2Y5OGE5YWY1MzdlODRkMWNhOWUwNWZhOGQx
ZjAwNzI0OTYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAxOC0wMS0wMyAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVu
dCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5nIGZpbGVz
IG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgxMTkyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjI4MDk0NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEltcGxlbWVudHMgc3VwcG9ydCBmb3IgZHJv
cHBpbmcgZGF0YSBhcyBhdHRhY2htZW50IGVsZW1lbnRzIG9uIGlPUy4gU2VlIGNvbW1lbnRzIGJl
bG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0czogIFdLQXR0YWNobWVudFRlc3Rz
Lkluc2VydERyb3BwZWRSaWNoQW5kUGxhaW5UZXh0RmlsZXNBc0F0dGFjaG1lbnRzCisgICAgICAg
ICAgICAgICAgV0tBdHRhY2htZW50VGVzdHMuSW5zZXJ0RHJvcHBlZFppcEFyY2hpdmVBc0F0dGFj
aG1lbnQKKyAgICAgICAgICAgICAgICBXS0F0dGFjaG1lbnRUZXN0cy5JbnNlcnREcm9wcGVkSXRl
bVByb3ZpZGVyc0luT3JkZXIKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6ZW5zdXJlRnJhZ21lbnQpOgorCisgICAgICAg
IEFkZCBhIG5ldyBoZWxwZXIgdG8gY3JlYXRlIHRoZSBXZWJDb250ZW50UmVhZGVyJ3MgZnJhZ21l
bnQsIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gY3JlYXRlZC4KKworICAgICAgICAqIGVkaXRp
bmcvV2ViQ29udGVudFJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZEZpbGVQYXRocyk6CisKKyAgICAgICAgUmVuYW1lIHJlYWRGaWxlbmFtZXMgdG8gcmVhZEZpbGVQ
YXRocyAod2hpY2ggYmV0dGVyIHJlZmxlY3RzIGl0cyBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgZmls
ZSBwYXRocykuIEFsc28sIG1vdmUKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHJlYWRG
aWxlUGF0aHMgdG8gc2hhcmVkIGlPUy9tYWNPUyBjb2RlIGluIFdlYkNvbnRlbnRSZWFkZXJDb2Nv
YSwgYW5kIHJlbW92ZSB0aGUgc3R1YgorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvbiBpT1MuCisK
KyAgICAgICAgVGhlcmUncyBhIGJpdCBvZiBjb2RlIGhlcmUgdGhhdCBJIGtlcHQgbWFjT1Mtb25s
eSB3aGljaCBkZWFscyB3aXRoIGluc2VydGluZyBmaWxlIHBhdGhzIGFzIHBsYWluIHRleHQgaW4K
KyAgICAgICAgZWRpdGFibGUgYXJlYXMsIGJ1dCBpdCdzIHVuY2xlYXIgdG8gbWUgd2h5IGFuZCBp
ZiBXZWJLaXQgY2xpZW50cyBjdXJyZW50bHkgZmluZCB0aGlzIHVzZWZ1bCwgc28gSSBsZWZ0IGEg
RklYTUUKKyAgICAgICAgdG8gaW52ZXN0aWdhdGUgcmVtb3ZpbmcgdGhpcyBhbHRvZ2V0aGVyLiBD
b2RlIGZvciBoYW5kbGluZyB0aGlzIHBsYWluIHRleHQgaW5zZXJ0aW9uIG9mIGZpbGUgcGF0aHMg
b24gTWFjIHdhcworICAgICAgICBpbnRyb2R1Y2VkIGluIHI2NzQwMy4KKworICAgICAgICAqIGVk
aXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkRmlsZW5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L21hYy9XZWJDb250ZW50UmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZEZpbGVuYW1lcyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9tYWMvRHJh
Z0NvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dXBk
YXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kIGNvbnN0KToK
KworICAgICAgICBUZWFjaCBEcmFnQ29udHJvbGxlciB0byBhY2NlcHQgYWxsIHR5cGVzIGNvbmZv
cm1pbmcgdG8gInB1YmxpYy5pdGVtIiBhbmQgInB1YmxpYy5jb250ZW50IiBvbiBpT1MsIG9ubHkg
d2hlbgorICAgICAgICBhdHRhY2htZW50IGVsZW1lbnRzIGFyZSBlbmFibGVkLiBUaGlzIGFsbG93
cyB1cyB0byBsb2FkIGNvbnRlbnQgZnJvbSBpdGVtIHByb3ZpZGVycyB0aGF0IHdlIG90aGVyd2lz
ZSB3b3VsZCBub3QKKyAgICAgICAgaGF2ZSBsb2FkZWQsIHNpbmNlIHdlIG5vdyBoYXZlIHRoZSBh
YmlsaXR5IHRvIGZhbGwgYmFjayB0byBhdHRhY2htZW50IGVsZW1lbnQgaW5zZXJ0aW9uIGlmIHRo
ZSB0eXBlIGlzIG5vdCBoYXZlCisgICAgICAgIGEgZGVmYXVsdCByZXByZXNlbnRhdGlvbiB1c2lu
ZyBzdGFuZGFyZCB3ZWIgY29udGVudC4KKworICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm86OmRlY29kZSk6CisKKyAgICAgICAgQWRkIFBh
c3RlYm9hcmRJdGVtSW5mbywgYSBzdHJ1Y3QgdGhhdCBkZXNjcmliZXMgYW4gaXRlbSBvbiB0aGUg
cGFzdGVib2FyZC4gQWxzbywgaW1wbGVtZW50IGVuY29kaW5nIGFuZCBkZWNvZGluZworICAgICAg
ICBzdXBwb3J0IGZvciBQYXN0ZWJvYXJkSXRlbUluZm8uIFNvIGZhciwgdGhlIGl0ZW0gaW5mbyBv
bmx5IGRlc2NyaWJlcyBmaWxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXN0ZWJvYXJkIGl0ZW0s
CisgICAgICAgIGFuZCBmbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGl0ZW0gcHJlZmVycyBh
dHRhY2htZW50IG9yIGlubGluZSBwcmVzZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKworICAgICAgICBSZXBsYWNlIGdldEZpbGVuYW1lc0ZvckRh
dGFJbnRlcmFjdGlvbiB3aXRoIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXguIEluc3RlYWQgb2Yg
cmV0dXJuaW5nIGFsbCBvZiB0aGUgZmlsZQorICAgICAgICBwYXRocyBhc3NvY2lhdGVkIHdpdGgg
YW55IGl0ZW0gb24gdGhlIHBhc3RlYm9hcmQsIGZldGNoIGEgUGFzdGVib2FyZEl0ZW1JbmZvIGF0
IGEgZ2l2ZW4gaXRlbSBpbmRleCwgd2hpY2gKKyAgICAgICAgaW5jbHVkZXMgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIGZpbGUgcGF0aCBhcyB3ZWxsIGFzIHNvbWUgb3RoZXIgbWV0YWRhdGEgd2UnbGwg
bmVlZCB3aGVuIGRlY2lkaW5nIGhvdyB0byByZWFkCisgICAgICAgIHBhc3RlYm9hcmQgY29udGVu
dHMgYXMgYSBkb2N1bWVudCBmcmFnbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToK
KworICAgICAgICBUZWFjaCB0aGUgaU9TIFBhc3RlYm9hcmQgdG8gcmVhZCB3ZWIgY29udGVudCB1
c2luZyBhdHRhY2htZW50IGVsZW1lbnRzLCBpZiBlbmFibGVkLiBUaGVyZSBhcmUgdHdvIHNjZW5h
cmlvcyBpbgorICAgICAgICB3aGljaCB3ZSB3b3VsZCB3YW50IHRvIGluc2VydCBhbiBhdHRhY2ht
ZW50IGVsZW1lbnQ6CisgICAgICAgICgxKSBUaGUgaXRlbSBwcm92aWRlciB1c2VzIGEgcHJlZmVy
cmVkIHByZXNlbnRhdGlvbiBzdHlsZSBvZiBhdHRhY2htZW50LCBpbiB3aGljaCBjYXNlIHdlIGJh
aWwgb3V0IG9mIHRyeWluZyB0bworICAgICAgICAgICAgaGFuZGxlIHRoZSBkcm9wIHVzaW5nIHRo
ZSBkZWZhdWx0IG1lY2hhbmlzbXMsIGFuZCBzaW1wbHkgaW5zZXJ0IGl0IGFzIGFuIGF0dGFjaG1l
bnQuIFdlIG5lZWQgdGhpcyB0byBkZWFsCisgICAgICAgICAgICB3aXRoIHRoZSBjYXNlIHdoZXJl
IHdlIGRyb3AgdGV4dCBvciBIVE1MIGZpbGVzIGZyb20gdGhlIEZpbGVzIGFwcCwgc28gdGhhdCB3
ZSBkb24ndCB0cnkgYW5kIGluc2VydCB0aGUKKyAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSB0
ZXh0IG9yIEhUTUwgYXMgaW5saW5lIHdlYiBjb250ZW50LgorICAgICAgICAoMikgVGhlIGl0ZW0g
cHJvdmlkZXIgZG9lc24ndCBoYXZlIGEgcHJlZmVycmVkIGF0dGFjaG1lbnQgcHJlc2VudGF0aW9u
IHN0eWxlLCBidXQgdGhlcmUncyBub3RoaW5nIFdlYktpdCB3b3VsZAorICAgICAgICAgICAgb3Ro
ZXJ3aXNlIGRvIHdpdGggdGhlIGRyb3BwZWQgY29udGVudCwgc28gaW5zZXJ0IGFuIGF0dGFjaG1l
bnQgZWxlbWVudCBhcyBhIGZhbGxiYWNrLiBFeGFtcGxlcyB3aGVyZSB0aGlzIGlzCisgICAgICAg
ICAgICByZWxldmFudCBhcmUgZHJvcHBpbmcgYSBQREYgb3IgWklQIGFyY2hpdmUgd2l0aG91dCBh
dHRhY2htZW50IHByZXNlbnRhdGlvbiBzdHlsZSBleHBsaWNpdGx5IHNldC4KKyAgICAgICAgV2Ug
Zmlyc3QgY2hlY2sgaWYgd2UgZmFsbCBpbnRvIGNhc2UgKDEpLiBJZiBzbywgd2UgY2FuIGJhaWwg
ZWFybHkgYnkgaW5zZXJ0aW5nIGFuIGF0dGFjaG1lbnQ7IG90aGVyd2lzZSwgd2UKKyAgICAgICAg
cHJvY2VlZCBub3JtYWxseSBhbmQgc2VlIGlmIHdlIGNhbiByZWFkIHRoZSBjb250ZW50cyBvZiB0
aGUgZHJvcCBhcyB3ZWIgY29udGVudC4gSWYsIGF0IHRoZSBlbmQgb2YgZGVmYXVsdCBkcm9wCisg
ICAgICAgIGhhbmRsaW5nLCB3ZSBkb24ndCBzdGlsbCBoYXZlIGEgd2F5IHRvIHJlcHJlc2VudCB0
aGUgZHJvcHBlZCBjb250ZW50LCBlbnRlciBjYXNlICgyKS4KKworICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6cmVhZEZpbGVQYXRocyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkRmlsZW5hbWVzKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgcmVhZEZpbGVuYW1l
cyB0byByZWFkRmlsZVBhdGhzLCBhbmQgcmVpbXBsZW1lbnQgaXQgdXNpbmcgaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleC4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpwYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmZp
bGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisKKyAgICAgICAgSW1wbGVtZW50
IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXggYW5kIHJlbW92ZSBmaWxlbmFtZXNGb3JEYXRhSW50
ZXJhY3Rpb24uIEFzIGJlZm9yZSwgd2UgYXNrIHRoZSBwYXN0ZWJvYXJkCisgICAgICAgIChpLmUu
IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQpIGZvciBpbmZvcm1hdGlvbiBhYm91dCBkcm9wcGVk
IGZpbGUgVVJMcy4gVGhpcyB0aW1lLCB3ZSBsaW1pdCB0aGlzIHRvIGEgc2luZ2xlCisgICAgICAg
IGZpbGUsIHNvIHdlIGRvbid0IGVuZCB1cCBjcmVhdGluZyBtdWx0aXBsZSBhdHRhY2htZW50IGVs
ZW1lbnRzIGZvciBlYWNoIHJlcHJlc2VudGF0aW9uIG9mIGEgc2luZ2xlIGl0ZW0KKyAgICAgICAg
cHJvdmlkZXIuIFNlZSBiZWxvdyBmb3IgLXByZWZlcnJlZEZpbGVVcGxvYWRVUkxBdEluZGV4OmZp
bGVUeXBlOiBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0
IGluaXRXaXRoSXRlbVByb3ZpZGVyOnR5cGVzVG9Mb2FkOl0pOgorICAgICAgICAoLVtXZWJJdGVt
UHJvdmlkZXJMb2FkUmVzdWx0IGNhbkJlUmVwcmVzZW50ZWRBc0ZpbGVVcGxvYWRdKToKKworICAg
ICAgICBSZW1vdmUgdGhpcyBzeW50aGVzaXplZCBpbnN0YW5jZSB2YXJpYWJsZSBhbmQgaW5zdGVh
ZCBqdXN0IGNoZWNrIHRoZSBpdGVtIHByb3ZpZGVyJ3MgcHJlZmVycmVkUHJlc2VudGF0aW9uU3R5
bGUuCisKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCBkZXNjcmlwdGlvbl0p
OgorCisgICAgICAgIEFkZCBhIHZlcmJvc2UgLWRlc2NyaXB0aW9uIHRvIHRoZSBsb2FkIHJlc3Vs
dCBvYmplY3QuIFVzZWZ1bCBmb3IgZGVidWdnaW5nIHdoYXQgd2FzIGNvbnRlbnQgd2FzIGxvYWRl
ZCBmcm9tIGFuCisgICAgICAgIGl0ZW0gcHJvdmlkZXIgb24gZHJvcC4KKworICAgICAgICAoLVtX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHByZWZlcnJlZEZpbGVVcGxvYWRVUkxBdEluZGV4OmZp
bGVUeXBlOl0pOgorCisgICAgICAgIFJldHVybiB0aGUgaGlnaGVzdCBmaWRlbGl0eSBsb2FkZWQg
dHlwZSBpZGVudGlmaWVyIGZvciBhIGdpdmVuIGl0ZW0uCisKKyAgICAgICAgKC1bV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZCBhbGxEcm9wcGVkRmlsZVVSTHNdKToKKyAgICAgICAgKC1bV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZCB0eXBlSWRlbnRpZmllcnNUb0xvYWRGb3JSZWdpc3RlcmVkVHlw
ZUlkZW50ZmllcnM6XSk6CisKKyAgICAgICAgUHJlZmVyIGZsYXQgUlRGRCB0byBSVEZELiBJbiB0
aGUgY2FzZSB3aGVyZSBhdHRhY2htZW50cyBhcmUgZW5hYmxlZCBhbmQgd2UncmUgYWNjZXB0aW5n
IGFsbCB0eXBlcyBvZiBjb250ZW50CisgICAgICAgIHVzaW5nIGF0dGFjaG1lbnQgZWxlbWVudHMg
YXMgYSBmYWxsYmFjayByZXByZXNlbnRhdGlvbiwgaWYgdGhlIHNvdXJjZSB3cml0ZXMgYXR0cmli
dXRlZCBzdHJpbmdzIHRvIHRoZQorICAgICAgICBwYXN0ZWJvYXJkIHdpdGggY29tLmFwcGxlLnJ0
ZmQgYXQgYSBoaWdoZXIgZmlkZWxpdHkgdGhhbiBjb20uYXBwbGUuZmxhdC1ydGZkLCB3ZSdsbCBl
bmQgdXAgbG9hZGluZyBvbmx5CisgICAgICAgIGNvbS5hcHBsZS5ydGZkIGFuZCBkcm9wcGluZyB0
aGUgdGV4dCBhcyBhbiBhdHRhY2htZW50IGVsZW1lbnQgYmVjYXVzZSB3ZSBjYW5ub3QgY29udmVy
dCB0aGUgZHJvcHBlZCBjb250ZW50IHRvCisgICAgICAgIG1hcmt1cC4gSW5zdGVhZCwgaWYgZmxh
dCBSVEZEIGlzIHByZXNlbnQgaW4gdGhlIGl0ZW0gcHJvdmlkZXIsIGFsd2F5cyBwcmVmZXIgdGhh
dCBvdmVyIFJURkQgc28gdGhhdCBkcm9wcGluZyBhcworICAgICAgICByZWd1bGFyIHdlYiBjb250
ZW50IGlzbid0IG92ZXJyaWRkZW4gd2hlbiBhdHRhY2htZW50IGVsZW1lbnRzIGFyZSBlbmFibGVk
LgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgZG9BZnRlckxvYWRpbmdQ
cm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6c3luY2hyb25vdXNUaW1lb3V0Ol0pOgorICAgICAg
ICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGRyb3BwZWRGaWxlVVJMc10pOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50IGNvbnN0KToKKworICAgICAg
ICBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCBzaG91bGQgYmUgdHJ1ZSB3aGVu
IGF0dGFjaG1lbnQgZWxlbWVudHMgYXJlIGVuYWJsZWQsIGFuZCB0aGVyZSBhcmUgZmlsZXMgd2UK
KyAgICAgICAgY2FuIGRyb3AgYXMgYXR0YWNobWVudCBlbGVtZW50cy4KKworICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkRmlsZVBhdGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMpOiBEZWxldGVkLgor
CiAyMDE4LTAxLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEFkZCBwbHVtYmluZyBmb3Igc3RhcnRpbmcgYSBk
cmFnIHdpdGggcHJvbWlzZWQgYmxvYiBkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA1ODIyNTRkMTA0NmM3YzA2
ZTJjNTNlNjkxZWE2MmE3ODM3NWE3MzIuLjljZTM1YWIwOTVlYmRmMTliOWMxNjc3MzVhOTExZGE4
NmFlOTYwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMDEtMDQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3Vw
cG9ydF0gQ3JlYXRlIGF0dGFjaG1lbnQgZWxlbWVudHMgd2hlbiBkcm9wcGluZyBmaWxlcyBvbiBp
T1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE5
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYyODA5NDU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBNYWtlIHNvbWUgbWlub3IgYWRqdXN0bWVudHMgZm9y
IGNoYW5nZXMgdG8gdGhlIHBhc3RlYm9hcmQgaW4gV2ViQ29yZS4gU2VlIFdlYkNvcmUvQ2hhbmdl
TG9nIGZvciBtb3JlIGRldGFpbC4KKyAgICAgICAgVGVhY2hlcyBXZWJQYXN0ZWJvYXJkUHJveHkg
ZXQuIGFsLiB0byBwbHVtYiBQYXN0ZWJvYXJkSXRlbUluZm8gZnJvbSB0aGUgVUkgcHJvY2VzcyB0
byB0aGUgd2ViIHByb2Nlc3MgdmlhIHRoZQorICAgICAgICBuZXcgYEluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXhgIGNvZGVwYXRoLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldEZpbGVuYW1lc0ZvckRhdGFJ
bnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKwogMjAxOC0wMS0wMyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBB
ZGQgcGx1bWJpbmcgZm9yIHN0YXJ0aW5nIGEgZHJhZyB3aXRoIHByb21pc2VkIGJsb2IgZGF0YQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDMzMzQxYjhjOWI5ZmRlN2MzNDVjOWUxYzdl
NDA0N2Q5OWRlYmRlZDEuLjAyMDE2OWEyYjYyZmZjZTU2MzMyNWU1M2Q4MDM4OGIyZGU0NzBkMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wMS0w
NCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0
YWNobWVudCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRyb3BwaW5n
IGZpbGVzIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgxMTkyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjI4MDk0NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIE1ha2Ugc29tZSBtaW5vciBhZGp1
c3RtZW50cyBmb3IgY2hhbmdlcyB0byB0aGUgcGFzdGVib2FyZCBpbiBXZWJDb3JlLiBTZWUgV2Vi
Q29yZS9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0RmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKTogRGVsZXRlZC4KKwogMjAxOC0wMS0w
MyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0
YWNobWVudCBTdXBwb3J0XSBBZGQgcGx1bWJpbmcgZm9yIHN0YXJ0aW5nIGEgZHJhZyB3aXRoIHBy
b21pc2VkIGJsb2IgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ1YmJiMGNhYjMzMDcxZjk2MDc2NDU5MmVmZDE1ZTEzZTJm
ODE0YWYuLjQwOTg0YWY3MjQ2YTFjYzUzOWFiMmZhMDdjZDI3NjI5MDcyZTQ0MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2
NTMsNiArNDY1Myw3IEBACiAJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ4MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0gKi87IH07CiAJCUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDgyMjMwRjFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYwQUIgLyogUGFz
dGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5
ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlw
dHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAw
NzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5
QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8q
IEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKIAkJRjUwNjY0RjgxNTdGNTJEQzAwQUMyMjZG
IC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCAq
LzsgfTsKQEAgLTE0MDg2LDYgKzE0MDg3LDcgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5
IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4
Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsgcGF0
aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3RvcnlV
dGlsLmpzOyBwYXRoID0gU2NyaXB0cy9FZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJk
SXRlbUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY2MTU3RjUy
REMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb3JtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNjkxLDYgKzIzNjkzLDcgQEAKIAkJCQk0
MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICovLAogCQkJ
CTJFRTAyQTFFMUY3MzI0MjgwMDA2QUY3MiAvKiBQYXN0ZWJvYXJkLmNwcCAqLywKIAkJCQk0QjI3
MDhDNTBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oICovLAorCQkJCUY0OTc4Njg3MUZG
NDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLywKIAkJCQlDNUY3NjVCNDE0
RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggKi8sCiAJCQkJMUFGNUU0RDIx
RTU2NzM1QTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcCAqLywKIAkJCQkxQUY1
RTREMzFFNTY3MzVBMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCAqLywKQEAgLTI4
NjkwLDYgKzI4NjkzLDcgQEAKIAkJCQk1MzZENUEyMzE5M0U4RTBDMDBDRTRDQUIgLyogUGFyc2lu
Z1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQ0ExMjUxRjEyRDAwM0VGMjY5
IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjI3MDhDNzBBRjE5
RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ5Nzg2ODgx
RkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzU5ODkwNTcxNEU5QzI4MDAwRThEMThCIC8qIFBhc3RlYm9hcmRTdHJhdGVneS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFGNUU0RTMxRTU3NzlCMTAwNEExRjAxIC8qIFBhc3RlYm9hcmRXcml0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjVFNEQ1MUU1NjczNUIwMDRBMUYwMSAvKiBQYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb250ZW50UmVhZGVyLmNwcAppbmRleCBjZjQxOTM2N2QxODRkMThkMzgyY2FkMmVjOTM2
YTMzODI3YjU0YTRmLi41NDQ5MTJhNzQ5M2M3MTY4MDc3NzdlMzVlZWUwMjNlNGUyM2VhNzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5jcHAKQEAgLTMxLDYg
KzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRG9jdW1lbnRGcmFnbWVudCYgV2Vi
Q29udGVudFJlYWRlcjo6ZW5zdXJlRnJhZ21lbnQoKQoreworICAgIEFTU0VSVChmcmFtZS5kb2N1
bWVudCgpKTsKKyAgICBpZiAoIWZyYWdtZW50KQorICAgICAgICBmcmFnbWVudCA9IGZyYW1lLmRv
Y3VtZW50KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICByZXR1cm4gKmZyYWdtZW50
OworfQorCiB2b2lkIFdlYkNvbnRlbnRSZWFkZXI6OmFkZEZyYWdtZW50KFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmIG5ld0ZyYWdtZW50KQogewogICAgIGlmICghZnJhZ21lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IGNjMTcwMzVhOTEwMGE5NjU2YzI2
MTkxYTA4NGQ3NmQ4Y2Y0NjRlZjIuLmRmOTg0YmFmYmQzOWU1MjYxNGVhOTM5MjQ2ZTJmOGJiZmM0
OGQxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC02
MywxMiArNjMsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBEb2N1bWVudEZyYWdt
ZW50JiBlbnN1cmVGcmFnbWVudCgpOwogICAgIHZvaWQgYWRkRnJhZ21lbnQoUmVmPERvY3VtZW50
RnJhZ21lbnQ+JiYpOwogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wg
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRmls
ZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRmls
ZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkSFRN
TChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
QEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJv
b2wgcmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRl
eCAxZTNiYmZkMTlkMzQ1YzUwOTRiMTAzM2FmZWM3MTZkMTk5ZjkzNjIwLi4yMDQ5MDNkYTk4ZTc0
MDM5Yzk3YzRlMzcyYzU5ZDEzZjVlODQ5NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNTk2LDQgKzU5Niwz
NCBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXRocykKK3sKKyAgICBpZiAocGF0aHMuaXNFbXB0eSgpIHx8ICFmcmFtZS5kb2N1bWVudCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOworICAgIGJvb2wgcmVhZEFueUZpbGVQYXRoID0gZmFsc2U7CisgICAgZm9yIChh
dXRvJiBwYXRoIDogcGF0aHMpIHsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWQoKSkgeworICAgICAgICAgICAgYXV0byBhdHRhY2htZW50ID0gSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1
bWVudCk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRVbmlxdWVJZGVudGlmaWVyKGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxl
KEZpbGU6OmNyZWF0ZShwYXRoKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5
QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgICAgIGVuc3VyZUZyYWdtZW50KCkuYXBwZW5kQ2hp
bGQoYXR0YWNobWVudCk7CisgICAgICAgICAgICByZWFkQW55RmlsZVBhdGggPSB0cnVlOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICAgICAgLy8gRklYTUU6IERvZXMgKGFuZCBzaG91bGQpIGFueSBtYWNPUyBjbGllbnQgZGVw
ZW5kIG9uIGluc2VydGluZyBmaWxlIHBhdGhzIGFzIHBsYWluIHRleHQgaW4gd2ViIGNvbnRlbnQ/
CisgICAgICAgIC8vIElmIG5vdCwgd2Ugc2hvdWxkIGp1c3QgcmVtb3ZlIHRoaXMuCisgICAgICAg
IGF1dG8gcGFyYWdyYXBoID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQp
OworICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aF0pKSk7CisgICAg
ICAgIGVuc3VyZUZyYWdtZW50KCkuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKKyAgICAgICAgcmVh
ZEFueUZpbGVQYXRoID0gdHJ1ZTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4gcmVhZEFueUZp
bGVQYXRoOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9X
ZWJDb250ZW50UmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvV2ViQ29u
dGVudFJlYWRlcklPUy5tbQppbmRleCAwMzRiYTlhOTRjM2Q4ZGJiZWNhNDUzZGNkZmMwMTFhZTcz
ODE4MDg2Li4yMDNjODQ3NTkzYTg5OWE3ODBiOWNmMDQ0NGZjYmJkNjIxMmZhMjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9XZWJDb250ZW50UmVhZGVySU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL1dlYkNvbnRlbnRSZWFkZXJJT1MubW0KQEAg
LTQ3LDExICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKLXsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9XZWJDb250ZW50UmVhZGVyTWFjLm1tCmlu
ZGV4IDljNWQyNTQwYjYwNWVlYWQyMzI4ODVhNzZkNTliMzJjNDZhZjc4ZjMuLjQyODNhNGYxMzdm
NmVhZjVmYjQ3NDI1YWEzZjE1ZWE2MmEwN2ZjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL1dlYkNvbnRlbnRSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvV2ViQ29udGVudFJlYWRlck1hYy5tbQpAQCAtMzgsNDkgKzM4LDE1IEBACiAj
aW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bXBvcnQgIkhUTUxBbmNob3JFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MQXR0YWNobWVudEVsZW1l
bnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5o
IgotI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2ltcG9ydCAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2ltcG9ydCAiU2V0dGluZ3MuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBv
cnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAibWFya3VwLmgiCi0jaW1wb3J0IDx3
dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCi17Ci0gICAgaWYg
KHBhdGhzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFmcmFt
ZS5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRG9jdW1lbnQmIGRvY3Vt
ZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7Ci0KLSAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0
ZURvY3VtZW50RnJhZ21lbnQoKTsKLQotICAgIGZvciAoYXV0byYgdGV4dCA6IHBhdGhzKSB7Ci0j
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkpIHsK
LSAgICAgICAgICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3Jl
YXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwotICAgICAgICAgICAgYXR0
YWNobWVudC0+c2V0VW5pcXVlSWRlbnRpZmllcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkp
OwotICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDp0ZXh0XS5wYXRoKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVE
aXNwbGF5QXR0cmlidXRlczo6WWVzKTsKLSAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGls
ZChhdHRhY2htZW50KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0jZWxzZQot
ICAgICAgICBhdXRvIHBhcmFncmFwaCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRv
Y3VtZW50KTsKLSAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh1c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnRleHRdKSkp
OwotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKLSNlbmRpZgotICAg
IH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKHVybC5z
dHJpbmcoKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9E
cmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9s
bGVyTWFjLm1tCmluZGV4IDVlODcyYzQ5NDFhY2E0MGM2Y2Q5NDFiYWUwMjcwOTRmMThhM2NmZWEu
LmY3NWQxZTRkZGEwOGM5MzI1MDkzMDNmYjUwODNmYTNmZGVjNGQ2MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC00NSw2ICs0NSw3IEBACiAj
aW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKKyNpbXBvcnQgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogI2ltcG9ydCA8TW9iaWxlQ29yZVNl
cnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgpAQCAtMTI1LDggKzEyNiwxNCBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxp
bmdNZXRob2QoRHJhZ0hhbgogICAgICAgICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoa1VUVHlwZVBs
YWluVGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRHJhZ0hhbmRsaW5nTWV0aG9kOjpF
ZGl0UmljaFRleHQ6Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gUGFzdGVib2FyZDo6
c3VwcG9ydGVkV2ViQ29udGVudFBhc3RlYm9hcmRUeXBlcygpKQotICAgICAgICAgICAgc3VwcG9y
dGVkVHlwZXMuYXBwZW5kKHR5cGUpOworICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSkgeworICAgICAg
ICAgICAgc3VwcG9ydGVkVHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKKyAgICAg
ICAgICAgIHN1cHBvcnRlZFR5cGVzLmFwcGVuZChrVVRUeXBlQ29udGVudCk7CisgICAgICAgICAg
ICBzdXBwb3J0ZWRUeXBlcy5hcHBlbmQoa1VUVHlwZUl0ZW0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRX
ZWJDb250ZW50UGFzdGVib2FyZFR5cGVzKCkpCisgICAgICAgICAgICAgICAgc3VwcG9ydGVkVHlw
ZXMuYXBwZW5kKHR5cGUpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gUGFzdGVib2FyZDo6c3VwcG9ydGVkRmls
ZVVwbG9hZFBhc3RlYm9hcmRUeXBlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CmluZGV4IDIxYmY5MDNkMDhkYWFjNTNhYzU4ODBjNDY3ZGNlNWJmM2E5NmRmOTIuLmE1NDZmNTkx
YzkyODI1MjRkYzIzNzUxZmM3ZjY4YTU4ZTNjNWNjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
RHJhZ0ltYWdlLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEl0ZW1JbmZvLmgiCiAjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hT
ZXQuaD4KQEAgLTEzNCw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCByZWFkRmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7CkBAIC0yOTAsNyArMjkxLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgVmVjdG9yPFN0cmluZz4gcmVhZEZp
bGVuYW1lcygpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHMoKTsKICAgICBTdHJp
bmcgcmVhZFBsYXRmb3JtVmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIGRvbVR5cGUsIGxvbmcg
Y2hhbmdlQ291bnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIHN0YXRpYyB2
b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+
JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFk
U3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2MzNWQyMzdiNjI1ZWRh
MTU2YzgzZWU2YjY5MWQ5N2QyMjVmMTBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBj
bGFzcyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHsKKyAgICBVbnNwZWNpZmllZCwK
KyAgICBJbmxpbmUsCisgICAgQXR0YWNobWVudAorfTsKKworc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbyB7CisgICAgU3RyaW5nIHBhdGhGb3JGaWxlVXBsb2FkOworICAgIFN0cmluZyBjb250ZW50
VHlwZUZvckZpbGVVcGxvYWQ7CisgICAgUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSB7IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5
bGU6OlVuc3BlY2lmaWVkIH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUGFzdGVib2FyZEl0ZW1JbmZvOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBhdGhGb3JGaWxl
VXBsb2FkIDw8IGNvbnRlbnRUeXBlRm9yRmlsZVVwbG9hZDsKKyAgICBlbmNvZGVyLmVuY29kZUVu
dW0ocHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5m
bzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIHJl
c3VsdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoRm9yRmlsZVVwbG9hZCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5jb250ZW50VHlwZUZvckZpbGVVcGxvYWQpKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnByZWZlcnJlZFBy
ZXNlbnRhdGlvblN0eWxlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRW51bVRyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1lIEUsIEUu
Li4+IHN0cnVjdCBFbnVtVmFsdWVzOworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OlBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbVByZXNlbnRh
dGlvblN0eWxlLAorICAgICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlOjpVbnNwZWNpZmllZCwKKyAgICAgICAgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1QcmVzZW50
YXRpb25TdHlsZTo6SW5saW5lLAorICAgICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbVByZXNl
bnRhdGlvblN0eWxlOjpBdHRhY2htZW50CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCBj
MDY0YWQwZmM5ZmM4NmI1ZjIyYjQ4OTE2MDUzNWNlNzIzN2UxMTJkLi41ODM3ZDkxYzk2ODliYTdl
YTdmYjFjZDhmNjZjNjc1MWNjYTcxMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBTZWxlY3Rpb25EYXRh
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVVJMOwogc3RydWN0IFBhc3RlYm9hcmRJbWFn
ZTsKK3N0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0
cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIHN0cnVjdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsK
QEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAg
ICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcm
IHRpdGxlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFj
dGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CisgICAgdmlydHVhbCBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleChW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBkOGQ3Yzk0OTI3NmYxZThlNmEw
N2U5YzQzMDE3YjdhMGRkZDUwYzQ1Li4yNDg4MDUzNmY5YTJkZDRlZTAxNTE2Y2FjMmJkNTUyMjlj
ZWQ4NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBVUkw7CiBzdHJ1
Y3QgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOworc3RydWN0
IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3Rl
Ym9hcmRXZWJDb250ZW50OwogCkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShXUEUpCiAgICAgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PFN0cmluZz4gZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdElu
ZGV4KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgaW50IGluZGV4KTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNTA4NWUyMDQ4N2IxMzY4ODJhNTNhNDk2ZDFkYTE4YzNm
NzM4ZGQ2MS4uYTYyZTc0NGYzZGI3OTZkYzNlNzQ3OTcxNjBiOTBiM2QyYzAxYzUzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAt
MTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5H
KFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyJiByZWFkZXIpCiB7Ci0gICAgYXV0byBmaWxlbmFtZXMgPSByZWFkRmls
ZW5hbWVzKCk7CisgICAgYXV0byBmaWxlbmFtZXMgPSByZWFkRmlsZVBhdGhzKCk7CiAgICAgaWYg
KCFmaWxlbmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBm
aWxlbmFtZXMpCiAgICAgICAgICAgICByZWFkZXIucmVhZEZpbGVuYW1lKGZpbGVuYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAppbmRl
eCBlOGU1YmYzNmJjYjI2NzM5MWVkZDNjNjE3Mjk1MjNlMDQzMGNmYmNhLi40MjEwMTg2OThlMTI1
NTg2MjQ3ODg4ZmJhZjdhNGJkNjljNmIyZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oCkBAIC01Niw3ICs1Niw4IEBAIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCiAtICh2b2lkKXNldEl0ZW1zOihOU0FycmF5PE5TRGljdGlvbmFyeSAq
PiAqKWl0ZW1zOwogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlc0J5Rmlk
ZWxpdHlGb3JJdGVtQXRJbmRleDooTlNVSW50ZWdlcilpbmRleDsKIEBwcm9wZXJ0eSAocmVhZG9u
bHksIG5vbmF0b21pYykgTlNJbnRlZ2VyIG51bWJlck9mRmlsZXM7Ci1AcHJvcGVydHkgKHJlYWRv
bmx5LCBub25hdG9taWMpIE5TQXJyYXk8TlNVUkwgKj4gKmRyb3BwZWRGaWxlVVJMczsKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAqYWxsRHJvcHBlZEZp
bGVVUkxzOworLSAobnVsbGFibGUgTlNVUkwgKilwcmVmZXJyZWRGaWxlVXBsb2FkVVJMQXRJbmRl
eDooTlNVSW50ZWdlcilpbmRleCBmaWxlVHlwZTooTlNTdHJpbmcgKl9OdWxsYWJsZSAqX051bGxh
YmxlKW91dEZpbGVUeXBlOwogLSAodm9pZCl1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlczsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBjZDFiNzQ2ZTI1MmM1NzA5YzI2ZDNk
ZmFkZDA2ZGFkYzdjOWZlODFlLi5iODg3OTg0NzZmY2NlNTAzMmVkOGM1ZWQ4NjhkZWEwZDlmYzYx
ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpA
QCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVBhc3RlYm9hcmQuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgor
I2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVy
LmgiCiAjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgpAQCAtMjQ0LDEw
ICsyNDUsMTAgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJiByZWFkZXIpCiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mSXRlbXM7IGkr
KykgewogICAgICAgICBmb3IgKGludCB0eXBlSW5kZXggPSAwOyB0eXBlSW5kZXggPCBudW1iZXJP
ZlR5cGVzOyB0eXBlSW5kZXgrKykgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSByZWFkUGFz
dGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCBbdHlwZXMgb2Jq
ZWN0QXRJbmRleDp0eXBlSW5kZXhdLCBpKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkpCisgICAgICAgICAgICBh
dXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFk
ZXIsIHN0cmF0ZWd5LCBbdHlwZXMgb2JqZWN0QXRJbmRleDp0eXBlSW5kZXhdLCBpKTsKKyAgICAg
ICAgICAgIGlmIChpdGVtUmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5n
ZWRFeHRlcm5hbGx5KQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSkKKyAgICAgICAgICAgIGlmIChpdGVtUmVz
dWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTcgKzI2NywzMCBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJl
YWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVh
ZGVyKQogICAgIEFTU0VSVChyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSk7CiAgICAgYXV0byYgc3Ry
YXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogICAg
IGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmROYW1lKTsgaW5kZXggPCBudW1iZXJPZkl0
ZW1zOyArK2luZGV4KSB7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAg
YXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIGJvb2wgY2FuUmVhZEF0dGFjaG1lbnQgPSBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCgpICYmICFpbmZvLnBhdGhGb3JGaWxlVXBsb2FkLmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGNh
blJlYWRBdHRhY2htZW50ICYmIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFz
dGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6QXR0YWNobWVudCkgeworICAgICAgICAgICAg
cmVhZGVyLnJlYWRGaWxlUGF0aHMoeyBpbmZvLnBhdGhGb3JGaWxlVXBsb2FkIH0pOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAvLyBUcnkgdG8gcmVh
ZCBkYXRhIGZyb20gZWFjaCB0eXBlIGlkZW50aWZpZXIgdGhhdCB0aGlzIHBhc3RlYm9hcmQgaXRl
bSBzdXBwb3J0cywgYW5kIFdlYktpdCBhbHNvIHJlY29nbml6ZXMuIFR5cGUgaWRlbnRpZmllcnMg
YXJlCiAgICAgICAgIC8vIHJlYWQgaW4gb3JkZXIgb2YgZmlkZWxpdHksIGFzIHNwZWNpZmllZCBi
eSBlYWNoIHBhc3RlYm9hcmQgaXRlbS4KICAgICAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXNGb3JJ
dGVtSW5PcmRlck9mRmlkZWxpdHk7CiAgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzQnlGaWRlbGl0
eUZvckl0ZW1BdEluZGV4KHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5LCBpbmRleCwgbV9w
YXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFJlYWRlclJlc3VsdCByZXN1bHQgPSBSZWFkZXJSZXN1
bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlc0Zvckl0
ZW1Jbk9yZGVyT2ZGaWRlbGl0eSkgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSByZWFkUGFz
dGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRl
eCk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9y
VHlwZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpbmRleCk7CiAgICAgICAgICAgICBpZiAocmVz
dWx0ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVhZGVyUmVz
dWx0OjpSZWFkVHlwZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAm
JiByZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZSkKKyAgICAgICAgICAgIHJl
YWRlci5yZWFkRmlsZVBhdGhzKHsgaW5mby5wYXRoRm9yRmlsZVVwbG9hZCB9KTsKKyNlbmRpZgog
ICAgIH0KIH0KIApAQCAtNDA1LDEyICs0MTksMTcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGNv
Y29hVHlwZS5nZXQoKSwgZGF0YSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAKLVZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMoKQorVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6cmVhZEZpbGVQYXRocygpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzOwotICAg
IC8vIEN1cnJlbnRseSwgZGF0YSBpbnRlcmFjdGlvbiBpcyB0aGUgb25seSBjYXNlIG9uIGlPUyB3
aGVyZSB0aGUgcGFzdGVib2FyZCBtYXkgY29udGFpbiByZWxldmFudCBmaWxlbmFtZXMuCi0gICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRGaWxlbmFtZXNG
b3JEYXRhSW50ZXJhY3Rpb24oZmlsZW5hbWVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1
cm4gZmlsZW5hbWVzOworICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKyAgICBhdXRvJiBz
dHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7Cisg
ICAgZm9yIChOU1VJbnRlZ2VyIGluZGV4ID0gMCwgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5Lmdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOyBpbmRleCA8IG51bWJlck9m
SXRlbXM7ICsraW5kZXgpIHsKKyAgICAgICAgLy8gQ3VycmVudGx5LCBkcmFnIGFuZCBkcm9wIGlz
IHRoZSBvbmx5IGNhc2Ugb24gaU9TIHdoZXJlIHRoZSAicGFzdGVib2FyZCIgbWF5IGNvbnRhaW4g
ZmlsZSBwYXRocy4KKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IHN0cmF0ZWd5LmluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpLnBhdGhGb3JGaWxlVXBsb2Fk
OworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGZpbGVQYXRo
cy5hcHBlbmQoV1RGTW92ZShmaWxlUGF0aCkpOworICAgIH0KKyAgICByZXR1cm4gZmlsZVBhdGhz
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQppbmRleCAxNmI3MWY4NWIyMmMyZGMwN2EyZDMwOGJkMDYwMzE2Njk4
ODgxNmFmLi45MWM5MDExNjNlYmJmNGIwYjBhNjRhNGE4ZmExYzRiYjNlMWVlNTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0KQEAgLTEwMiwxOCArMTAyLDQ5IEBAIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9m
RmlsZXMoKSBjb25zdAogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IobnVtYmVyT2ZGaWxlcyldID8gW21fcGFzdGVib2FyZCBudW1iZXJPZkZpbGVz
XSA6IDA7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6ZmlsZW5hbWVz
Rm9yRGF0YUludGVyYWN0aW9uKCkKKyNpZiBQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJPVklE
RVJTCisKK3N0YXRpYyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHBhc3RlYm9hcmRJ
dGVtUHJlc2VudGF0aW9uU3R5bGUoVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSBzdHlsZSkK
K3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBVSVByZWZlcnJlZFByZXNlbnRhdGlv
blN0eWxlVW5zcGVjaWZpZWQ6CisgICAgICAgIHJldHVybiBQYXN0ZWJvYXJkSXRlbVByZXNlbnRh
dGlvblN0eWxlOjpVbnNwZWNpZmllZDsKKyAgICBjYXNlIFVJUHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGVJbmxpbmU6CisgICAgICAgIHJldHVybiBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0
eWxlOjpJbmxpbmU7CisgICAgY2FzZSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlQXR0YWNo
bWVudDoKKyAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OkF0
dGFjaG1lbnQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlOjpVbnNwZWNpZmll
ZDsKKyAgICB9Cit9CisKK1Bhc3RlYm9hcmRJdGVtSW5mbyBQbGF0Zm9ybVBhc3RlYm9hcmQ6Omlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4KQogewotICAgIGlmICghW21fcGFzdGVi
b2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRyb3BwZWRGaWxlVVJMcyldKQorICAg
IGlmIChpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJlck9mSXRlbXNdKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzOwotICAgIGZvciAoTlNVUkwg
KmZpbGVVUkwgaW4gW21fcGFzdGVib2FyZCBkcm9wcGVkRmlsZVVSTHNdKQotICAgICAgICBmaWxl
bmFtZXMuYXBwZW5kKGZpbGVVUkwucGF0aCk7CisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87
CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwcmVm
ZXJyZWRGaWxlVXBsb2FkVVJMQXRJbmRleDpmaWxlVHlwZTopXSkgeworICAgICAgICBOU1N0cmlu
ZyAqZmlsZVR5cGUgPSBuaWw7CisgICAgICAgIGluZm8ucGF0aEZvckZpbGVVcGxvYWQgPSBbbV9w
YXN0ZWJvYXJkIHByZWZlcnJlZEZpbGVVcGxvYWRVUkxBdEluZGV4OmluZGV4IGZpbGVUeXBlOiZm
aWxlVHlwZV0ucGF0aDsKKyAgICAgICAgaW5mby5jb250ZW50VHlwZUZvckZpbGVVcGxvYWQgPSBm
aWxlVHlwZTsKKyAgICB9CisKKyAgICBOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gW1tt
X3Bhc3RlYm9hcmQgaXRlbVByb3ZpZGVyc10gb2JqZWN0QXRJbmRleDppbmRleF07CisgICAgaW5m
by5wcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9IHBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9u
U3R5bGUoaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKTsKKyAgICByZXR1
cm4gaW5mbzsKK30KKworI2Vsc2UKIAotICAgIHJldHVybiBmaWxlbmFtZXM7CitQYXN0ZWJvYXJk
SXRlbUluZm8gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGlu
dCkKK3sKKyAgICByZXR1cm4geyB9OwogfQogCisjZW5kaWYKKwogc3RhdGljIGJvb2wgcGFzdGVi
b2FyZE1heUNvbnRhaW5GaWxlUGF0aHMoaWQ8QWJzdHJhY3RQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJk
KQogewogI2lmIFBBU1RFQk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5o
CmluZGV4IGFiZmYyNjhjOGEyMDgxY2E0MDkwZDVkZWY3NDk3ODgxN2E0YWRiNTIuLmNjODhmZjZj
ZWFhYWIyNzg0NTQyMWYxNDY4ZWRiMTAwMTVhY2IyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaApAQCAtOTAs
NyArOTAsMTAgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJhY3RQYXN0ZWJvYXIKIEBwcm9wZXJ0eSAocmVhZG9ubHks
IG5vbmF0b21pYykgTlNJbnRlZ2VyIGNoYW5nZUNvdW50OwogCiAvLyBUaGlzIHdpbGwgb25seSBi
ZSBub24tZW1wdHkgd2hlbiBhbiBvcGVyYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkLgotQHByb3Bl
cnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICpkcm9wcGVkRmlsZVVS
THM7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TQXJyYXk8TlNVUkwgKj4gKmFs
bERyb3BwZWRGaWxlVVJMczsKKworLy8gVGhlIHByZWZlcnJlZCBmaWxlIFVSTCBjb3JyZXNwb25k
cyB0byB0aGUgaGlnaGVzdCBmaWRlbGl0eSBub24tcHJpdmF0ZSBVVEkgdGhhdCB3YXMgbG9hZGVk
LgorLSAobnVsbGFibGUgTlNVUkwgKilwcmVmZXJyZWRGaWxlVXBsb2FkVVJMQXRJbmRleDooTlNV
SW50ZWdlcilpbmRleCBmaWxlVHlwZTooTlNTdHJpbmcgKl9OdWxsYWJsZSAqX051bGxhYmxlKW91
dEZpbGVUeXBlOwogCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIEJPT0wgaGFzUGVu
ZGluZ09wZXJhdGlvbjsKIC0gKHZvaWQpaW5jcmVtZW50UGVuZGluZ09wZXJhdGlvbkNvdW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbQppbmRleCBiMzQzMTY4ZWYyNDQyZTVlN2QzZjdiNWQ1M2QwOTI5YWZlODZl
N2Q5Li5mOGVkZTE1MzM2YmY1NWNhMjcxMWUyMmVmMjFiZGU0MTcwZDg2YzgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbQpAQCAtMjQzLDExICsyNDMsMTUgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRl
bVByb3ZpZGVyOihOU0l0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRlciB0eXBlc1RvTG9hZDoKICAg
ICBfZmlsZVVSTHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OwogICAgIF9pdGVtUHJvdmlkZXIgPSBpdGVtUHJvdmlkZXI7CiAgICAgX3R5cGVzVG9Mb2FkID0g
dHlwZXNUb0xvYWQ7Ci0gICAgX2NhbkJlUmVwcmVzZW50ZWRBc0ZpbGVVcGxvYWQgPSBpdGVtUHJv
dmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgIT0gVUlQcmVmZXJyZWRQcmVzZW50YXRp
b25TdHlsZUlubGluZTsKIAogICAgIHJldHVybiBzZWxmOwogfQogCistIChCT09MKWNhbkJlUmVw
cmVzZW50ZWRBc0ZpbGVVcGxvYWQKK3sKKyAgICByZXR1cm4gW19pdGVtUHJvdmlkZXIgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGVdICE9IFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxp
bmU7Cit9CisKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlc1RvTG9hZAogewogICAgIHJl
dHVybiBfdHlwZXNUb0xvYWQuZ2V0KCk7CkBAIC0yNzgsNiArMjgyLDI2IEBAIC0gKE5TSXRlbVBy
b3ZpZGVyICopaXRlbVByb3ZpZGVyCiAgICAgcmV0dXJuIF9pdGVtUHJvdmlkZXIuZ2V0KCk7CiB9
CiAKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KK3sKKyAgICBfX2Jsb2NrIE5TTXV0YWJsZVN0
cmluZyAqZGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgW2Rlc2Ny
aXB0aW9uIGFwcGVuZEZvcm1hdDpAIjwlQDogJXAgdHlwZXNUb0xvYWQ6IFsgIiwgW3NlbGYgY2xh
c3NdLCBzZWxmXTsKKyAgICBbX3R5cGVzVG9Mb2FkIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2Nr
Ol4oTlNTdHJpbmcgKnR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKikgeworICAgICAgICBb
ZGVzY3JpcHRpb24gYXBwZW5kU3RyaW5nOnR5cGVdOworICAgICAgICBpZiAoaW5kZXggKyAxIDwg
W190eXBlc1RvTG9hZCBjb3VudF0pCisgICAgICAgICAgICBbZGVzY3JpcHRpb24gYXBwZW5kU3Ry
aW5nOkAiLCAiXTsKKyAgICB9XTsKKyAgICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiIF0g
ZmlsZVVSTHM6IHsgIl07CisgICAgX19ibG9jayBOU1VJbnRlZ2VyIGluZGV4ID0gMDsKKyAgICBb
X2ZpbGVVUkxzIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpeKE5TU3RyaW5nICp0
eXBlLCBOU1VSTCAqdXJsLCBCT09MICopIHsKKyAgICAgICAgW2Rlc2NyaXB0aW9uIGFwcGVuZEZv
cm1hdDpAIiVAID0+IFwiJUBcIiIsIHR5cGUsIHVybC5wYXRoXTsKKyAgICAgICAgaWYgKCsraW5k
ZXggPCBbX2ZpbGVVUkxzIGNvdW50XSkKKyAgICAgICAgICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRT
dHJpbmc6QCIsICJdOworICAgIH1dOworICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRGb3JtYXQ6QCIg
fT4iXTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb247Cit9CisKIEBlbmQKIAogQGludGVyZmFjZSBX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkICgpCkBAIC00NzAsNyArNDk0LDM4IEBAIC0gKE5TSW50
ZWdlciljaGFuZ2VDb3VudAogICAgIHJldHVybiBfY2hhbmdlQ291bnQ7CiB9CiAKLS0gKE5TQXJy
YXk8TlNVUkwgKj4gKilkcm9wcGVkRmlsZVVSTHMKKy0gKE5TVVJMICopcHJlZmVycmVkRmlsZVVw
bG9hZFVSTEF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXggZmlsZVR5cGU6KE5TU3RyaW5nICoqKW91
dEZpbGVUeXBlCit7CisgICAgaWYgKG91dEZpbGVUeXBlKQorICAgICAgICAqb3V0RmlsZVR5cGUg
PSBuaWw7CisKKyAgICBpZiAoaW5kZXggPj0gX2xvYWRSZXN1bHRzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIGF1dG8gcmVzdWx0ID0gX2xvYWRSZXN1bHRzW2luZGV4XTsKKyAg
ICBpZiAoIVtyZXN1bHQgY2FuQmVSZXByZXNlbnRlZEFzRmlsZVVwbG9hZF0pCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gW3Jlc3VsdCBp
dGVtUHJvdmlkZXJdOworICAgIGZvciAoTlNTdHJpbmcgKnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmll
ciBpbiBpdGVtUHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVycykgeworICAgICAgICAv
LyBTZWFyY2ggZm9yIHRoZSBoaWdoZXN0IGZpZGVsaXR5IG5vbi1wcml2YXRlIHR5cGUgaWRlbnRp
ZmllciB3ZSBsb2FkZWQgZnJvbSB0aGUgaXRlbSBwcm92aWRlci4KKyAgICAgICAgaWYgKCFVVFR5
cGVJc0RlY2xhcmVkKChDRlN0cmluZ1JlZilyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIpICYmICFV
VFR5cGVJc0R5bmFtaWMoKENGU3RyaW5nUmVmKXJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcikpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKE5TU3RyaW5nICpsb2FkZWRUeXBl
SWRlbnRpZmllciBpbiBbcmVzdWx0IGxvYWRlZFR5cGVJZGVudGlmaWVyc10pIHsKKyAgICAgICAg
ICAgIGlmICghVVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpcmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVyLCAoQ0ZTdHJpbmdSZWYpbG9hZGVkVHlwZUlkZW50aWZpZXIpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAob3V0RmlsZVR5cGUpCisgICAgICAgICAg
ICAgICAgKm91dEZpbGVUeXBlID0gbG9hZGVkVHlwZUlkZW50aWZpZXI7CisgICAgICAgICAgICBy
ZXR1cm4gW3Jlc3VsdCBmaWxlVVJMRm9yVHlwZTpsb2FkZWRUeXBlSWRlbnRpZmllcl07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0FycmF5PE5TVVJMICo+
ICopYWxsRHJvcHBlZEZpbGVVUkxzCiB7CiAgICAgTlNNdXRhYmxlQXJyYXk8TlNVUkwgKj4gKmZp
bGVVUkxzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBmb3IgKGF1dG8gbG9hZFJlc3Vs
dCA6IF9sb2FkUmVzdWx0cykgewpAQCAtNTM5LDggKzU5NCwxOSBAQCAtIChOU0FycmF5PE5TU3Ry
aW5nICo+ICopdHlwZUlkZW50aWZpZXJzVG9Mb2FkRm9yUmVnaXN0ZXJlZFR5cGVJZGVudGZpZXJz
OihOU0FycgogICAgIE5TTXV0YWJsZVNldCAqdHlwZXNUb0xvYWQgPSBbTlNNdXRhYmxlU2V0IHNl
dF07CiAgICAgTlNTdHJpbmcgKmhpZ2hlc3RGaWRlbGl0eUNvbnRlbnRUeXBlID0gbmlsOwogCisg
ICAgQk9PTCBjb250YWluc0ZsYXRSVEZEID0gW3JlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMgY29u
dGFpbnNPYmplY3Q6KE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXTsKICAgICAvLyBGaXJzdCwg
d2Ugd2FudCB0byBlaXRoZXIgbG9hZCB0aGUgaGlnaGVzdCBmaWRlbGl0eSBzdXBwb3J0ZWQgdHlw
ZSBvciB0aGUgaGlnaGVzdCBmaWRlbGl0eSBnZW5lcmljIGNvbnRlbnQgdHlwZS4KICAgICBmb3Ig
KE5TU3RyaW5nICpyZWdpc3RlcmVkVHlwZUlkZW50aWZpZXIgaW4gcmVnaXN0ZXJlZFR5cGVJZGVu
dGlmaWVycykgeworICAgICAgICBpZiAoY29udGFpbnNGbGF0UlRGRCAmJiBbcmVnaXN0ZXJlZFR5
cGVJZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlUlRGRF0pIHsK
KyAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGF0dGFjaG1lbnRzIGFyZSBlbmFibGVk
IGFuZCB3ZSdyZSBhY2NlcHRpbmcgYWxsIHR5cGVzIG9mIGNvbnRlbnQgdXNpbmcgYXR0YWNobWVu
dAorICAgICAgICAgICAgLy8gZWxlbWVudHMgYXMgYSBmYWxsYmFjayByZXByZXNlbnRhdGlvbiwg
aWYgdGhlIHNvdXJjZSB3cml0ZXMgYXR0cmlidXRlZCBzdHJpbmdzIHRvIHRoZSBwYXN0ZWJvYXJk
IHdpdGgKKyAgICAgICAgICAgIC8vIGNvbS5hcHBsZS5ydGZkIGF0IGEgaGlnaGVyIGZpZGVsaXR5
IHRoYW4gY29tLmFwcGxlLmZsYXQtcnRmZCwgd2UnbGwgZW5kIHVwIGxvYWRpbmcgb25seSBjb20u
YXBwbGUucnRmZAorICAgICAgICAgICAgLy8gYW5kIGRyb3BwaW5nIHRoZSB0ZXh0IGFzIGFuIGF0
dGFjaG1lbnQgZWxlbWVudCBiZWNhdXNlIHdlIGNhbm5vdCBjb252ZXJ0IHRoZSBkcm9wcGVkIGNv
bnRlbnQgdG8gbWFya3VwLgorICAgICAgICAgICAgLy8gSW5zdGVhZCwgaWYgZmxhdCBSVEZEIGlz
IHByZXNlbnQgaW4gdGhlIGl0ZW0gcHJvdmlkZXIsIGFsd2F5cyBwcmVmZXIgdGhhdCBvdmVyIFJU
RkQgc28gdGhhdCBkcm9wcGluZyBhcworICAgICAgICAgICAgLy8gcmVndWxhciB3ZWIgY29udGVu
dCBpc24ndCBvdmVycmlkZGVuIGJ5IGVuYWJsaW5nIGF0dGFjaG1lbnQgZWxlbWVudHMuCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0eXBlQ29uZm9ybXNU
b1R5cGVzKHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllciwgX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cy5nZXQoKSkpIHsKICAgICAgICAgICAgIFt0eXBlc1RvTG9hZCBhZGRPYmplY3Q6cmVnaXN0ZXJl
ZFR5cGVJZGVudGlmaWVyXTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjI2LDcgKzY5Miw3IEBA
IC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0
ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spCiAgICAgICAgICAgICAgICAgcmV0YWluZWRTZWxmLT5f
bG9hZFJlc3VsdHMuYXBwZW5kKGxvYWRSZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgY29t
cGxldGlvbkJsb2NrKFtyZXRhaW5lZFNlbGYgZHJvcHBlZEZpbGVVUkxzXSk7CisgICAgICAgIGNv
bXBsZXRpb25CbG9jayhbcmV0YWluZWRTZWxmIGFsbERyb3BwZWRGaWxlVVJMc10pOwogICAgIH07
CiAKICAgICBpZiAoc3luY2hyb25vdXNUaW1lb3V0ID4gMCAmJiAhZGlzcGF0Y2hfZ3JvdXBfd2Fp
dChzeW5jaHJvbm91c0ZpbGVMb2FkaW5nR3JvdXAuZ2V0KCksIGRpc3BhdGNoX3RpbWUoRElTUEFU
Q0hfVElNRV9OT1csIHN5bmNocm9ub3VzVGltZW91dCAqIE5TRUNfUEVSX1NFQykpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggNDA2ZDQ1YTlkYjg5
YzU0Y2MyNDRkODdjYjVhMjVlMTRjNjQ3NTcwYi4uNjBiN2MzYTg5NjA4NWRkMjRlMjE3MzQ1ZGEx
N2JmMzVmYjNkOTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAj
aW1wb3J0ICJQbGF0Zm9ybVBhc3RlYm9hcmQuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgorI2ltcG9ydCAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2ltcG9ydCAiV2ViQ29y
ZU5TVVJMRXh0cmFzLmgiCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yMjAsNiArMjIxLDkgQEAg
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2Ug
cHVycG9zZSkgY29uc3QKICAgICBpZiAocHVycG9zZSA9PSBEcmFnZ2luZ1B1cnBvc2U6OkZvckZp
bGVVcGxvYWQpCiAgICAgICAgIHJldHVybiBjb250YWluc0ZpbGVzKCk7CiAKKyAgICBpZiAocHVy
cG9zZSA9PSBEcmFnZ2luZ1B1cnBvc2U6OkZvckVkaXRpbmcgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAmJiBjb250
YWluc0ZpbGVzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgVmVjdG9yPFN0cmluZz4g
dHlwZXM7CiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5n
ZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgcmV0dXJuIHR5cGVzLmNvbnRh
aW5zKFN0cmluZyhXZWJBcmNoaXZlUGJvYXJkVHlwZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGI2NzRjNzlmMjIzN2IwYjczMTgwYjI4ODQ4
OWUxMjJhNzA5MmVkNGIuLjJiNjNiMmY0NWEyMjA4YmIwNDcwYmIwNzAwOTFhODJhOTk1MWM0MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0z
NTAsNyArMzUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiByZWFkZXIpCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxl
bmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7
CiAgICAgICAgIHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aHMsIGxlZ2FjeUZpbGVu
YW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOwotICAgICAgICBpZiAobV9j
aGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkRmlsZW5hbWVzKHBhdGhz
KSkKKyAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIu
cmVhZEZpbGVQYXRocyhwYXRocykpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
NTQsNyArNTU0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICB9CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMoKQorVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVh
ZEZpbGVQYXRocygpCiB7CiAgICAgLy8gRklYTUU6IFNlZW1zIHNpbGx5IHRvIGNvbnZlcnQgcGF0
aHMgdG8gVVJMcyBhbmQgdGhlbiBiYWNrIHRvIHBhdGhzLiBEb2VzIHRoYXQgZG8gYW55dGhpbmcg
aGVscGZ1bD8KICAgICBWZWN0b3I8U3RyaW5nPiBhYnNvbHV0ZVVSTHMgPSBhYnNvbHV0ZVVSTHNG
cm9tUGFzdGVib2FyZEZpbGVuYW1lcyhtX3Bhc3RlYm9hcmROYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0K
aW5kZXggNjMyNTRkOTdkZmM4YWViMTU5ODczNzk2MzViYTdjZjVjNWU4ZDM0MS4uYjIwMTIyYjZh
OGRkNGJjMWU0NTc1ZDEzNmI2MTcwYTAwZWEzMzkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTI5
LDYgKzI5LDcgQEAKICNpbXBvcnQgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJv
YXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9VUkwuaD4KQEAgLTIyNSw5ICsyMjYsOSBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdQogICAg
IGl0ZW1zQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJh
Y3Rpb24oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzdGVib2FyZEl0ZW1J
bmZvJiBpbmZvKQogewotICAgIGZpbGVuYW1lcyA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCk7CisgICAgaW5mbyA9IFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChp
bmRleCk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJv
YXJkUHJveHkuaAppbmRleCA2Y2VkZTA1ZTJhMzMyODdlYjJiZDZiNGEyNGU1ZWJkNTIzMDY0YmI0
Li5hZjI3MDVkNjcxNWUwNzA5ZDY0N2Y4YjAwNWRmZjJkMTI3MGRiYTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaApAQCAtMzUsNiArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIHN0cnVjdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CitzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZv
Owogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiB9
CkBAIC03Nyw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdXJsLCBTdHJpbmcmIHRpdGxlKTsKICAgICB2
b2lkIHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmLCB1aW50NjRfdCYgc2l6ZSk7CiAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgaXRlbXNDb3Vu
dCk7Ci0gICAgdm9pZCBnZXRGaWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CisgICAgdm9pZCBp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvJiBmaWxlbmFtZSk7CiAgICAgdm9p
ZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFz
dGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlMTYxODQyNGM3MzZjZjJjMTgxYzM3YTRj
ZDg0NDc3NTdkY2FmYmMuLmM3YjNiMjY4MDcxODgwYWFmNjU0YWRiZDhkZWE5NjBjOWE5OGU2YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2Fy
ZFByb3h5IHsKICAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwg
U3RyaW5nIHRpdGxlKQogICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRl
eCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkKICAgICBHZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBp
dGVtc0NvdW50KQotICAgIEdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihTdHJpbmcgcGFz
dGVib2FyZE5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiBmaWxlbmFtZXMpCisgICAgSW5mb3JtYXRp
b25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvKQogICAgIFVwZGF0ZVN1
cHBvcnRlZFR5cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5n
IHBhc3RlYm9hcmROYW1lKQogICAgIEdldFBhc3RlYm9hcmRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9y
PFN0cmluZz4gdHlwZXMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggZGIzMTc4OGMwNWI5ZjkwOTRlN2Q1NzJlMTgzMzY5YWNkYTZmMmNmNC4uODU0NDg3Y2Yw
M2MyMzc0NmY4NjY3MjNjM2Q1YmZmYWE0YTZjNGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtp
bmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRJdGVtSW5mby5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtUGFzdGVib2FyZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2Vy
Lmg+CkBAIC0zMjIsOSArMzIzLDExIEBAIGludCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0
dXJuIGl0ZW1zQ291bnQ7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRGaWxl
bmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1Bhc3RlYm9hcmRJdGVtSW5mbyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbihwYXN0ZWJvYXJkTmFtZSksIE1lc3Nh
Z2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldEZpbGVuYW1lc0ZvckRhdGFJbnRlcmFjdGlvbjo6
UmVwbHkoZmlsZW5hbWVzKSwgMCk7CisgICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6SW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChpbmRleCwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpJ
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4OjpSZXBseShpbmZvKSwgMCk7CisgICAgcmV0dXJuIGlu
Zm87CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cGRhdGVTdXBwb3J0ZWRUeXBl
SWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGFk
MmU4ZjE1ZTk1NGE4NmRlMDYzODFlYjkyNDNhOTk0NjczOTQ0MGQuLmNkMzBmYzE1ZGEzN2YzNWQ3
NjZjNTM2MWE5M2ZlMmRmMzcwMzU4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6VVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZ2V0RmlsZW5hbWVzRm9yRGF0YUludGVy
YWN0aW9uKFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzQnlGaWRlbGl0eUZvckl0ZW1BdEluZGV4
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgdWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CmluZGV4IGU3NTkyNTZiOGZlZDc1OTQ5YzE1NzY4ZjAyZjY2NmJlZmM1NjQzMGQuLjg0MmNjZGMw
YThmODNlODEyN2M2NmZmZjJiYmFkZDg3OWYyMjFlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOwogICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldEZpbGVuYW1lc0ZvckRh
dGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8g
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVt
QXRJbmRleChWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCmluZGV4IDIzNDA5Njc0NGM0ZjVjZjcxOTMyYzljYzU5ZjRlMmYwYzA0MTk1Zjku
LmVkN2Y3ZjVmZjI2YmFkNmE2M2I2NDM4YzcyNDdjZWJmYzUxZDQxYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29s
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUlu
Zm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgpAQCAtMjM5LDggKzI0MCw4IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYKICAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCB0
eXBlKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldEZpbGVuYW1lc0ZvckRh
dGFJbnRlcmFjdGlvbihWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQorV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgZmlsZW5hbWVzID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5maWxlbmFtZXNGb3JEYXRhSW50ZXJhY3Rpb24oKTsKKyAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KGluZGV4KTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTNmOWJhYjllYTYxM2Y5MGY3
ZDg0YTcxYzI0NWQyOTczNjFjZmY1YS4uMTIwMGNiOWRjMzY5MTRmYzNkY2M0NmIyMDNiY2U1Mjcz
YzdhM2U5YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTAxLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIENyZWF0ZSBhdHRh
Y2htZW50IGVsZW1lbnRzIHdoZW4gZHJvcHBpbmcgZmlsZXMgb24gaU9TCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExOTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM2MjgwOTQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisK
KyAgICAgICAgQWRkcyAzIG5ldyBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgZGlmZmVyZW50IHVzZSBj
YXNlcyBvZiBkcm9wcGluZyBjb250ZW50IGFzIGF0dGFjaG1lbnQgZWxlbWVudHMgd2hlbiB0aGUg
cnVudGltZQorICAgICAgICBzd2l0Y2ggaXMgZW5hYmxlZC4gU2VlIGJlbG93IGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tOgorICAgICAgICAoLVtOU0l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGE6
dHlwZTpdKToKKyAgICAgICAgKHBsYXRmb3JtQ29weVBORyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJh
Y3Rpb25UZXN0cy5tbToKKworICAgICAgICBGaXggc29tZSBjdXJyZW50bHkgZmFpbGluZyBpT1Mg
ZHJhZyBhbmQgZHJvcCB0ZXN0cy4gSW4gdGhpcyBjYXNlLCB0aGVyZSdzIG5vIHJlYXNvbiBSVEZE
IHNob3VsZCBhcHBlYXIgaW4gdGhlCisgICAgICAgIHNvdXJjZSBpdGVtIHByb3ZpZGVyIHdoZW4g
ZHJhZ2dpbmcgcmljaCB0ZXh0ICp3aXRob3V0KiBhdHRhY2htZW50cywgc28gdGhpcyBzaG91bGQg
aGF2ZSBiZWVuIGEgY2hlY2sgZm9yIGp1c3QKKyAgICAgICAga1VUVHlwZVJURiBpbnN0ZWFkLgor
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworICAgICAgICBUZXN0cyBhIGZldyBj
YXNlcyBvZiBpbnNlcnRpbmcgYXR0YWNobWVudCBlbGVtZW50cyB2aWEgZHJvcDoKKyAgICAgICAg
MS4gIFdlIHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRyb3BzIGNvbnRhaW5pbmcgcmljaC9w
bGFpbiB0ZXh0IGZpbGVzIGZyb20ganVzdCBkcm9wcGluZyByaWNoL3BsYWluIHRleHQuCisgICAg
ICAgICAgICBJbnN0ZWFkIG9mIGluc2VydGluZyB0aGUgY29udGVudHMgYXMgaW5saW5lIHdlYiBj
b250ZW50LCB0aGlzIHNob3VsZCBnZW5lcmF0ZSBhdHRhY2htZW50IGVsZW1lbnRzLgorICAgICAg
ICAyLiAgVGVzdCB0aGUgZmFsbGJhY2sgbWVjaGFuaXNtIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cy4gSWYgdGhlIHByZWZlcnJlZCBwcmVzZW50YXRpb24gc3R5bGUgaXMgbm90Cisg
ICAgICAgICAgICBleHBsaWNpdGx5IHNldCwgYnV0IHRoZXJlJ3Mgbm90aGluZyBXZWJLaXQgd291
bGQgb3RoZXJ3aXNlIGRvIHdpdGggdGhlIGRyb3BwZWQgY29udGVudCwgdGhlbiB3ZSBzaG91bGQg
ZmFsbAorICAgICAgICAgICAgYmFjayB0byBpbnNlcnRpbmcgdGhlIGNvbnRlbnQgYXMgYW4gYXR0
YWNobWVudC4KKyAgICAgICAgMy4gIFRlc3QgdGhhdCBpZiBtdWx0aXBsZSBhdHRhY2htZW50cyBh
bmQgaW5saW5lIGl0ZW0gcHJvdmlkZXJzIGFyZSBwcmVzZW50LCBXZWJLaXQgd2lsbCByZXNwZWN0
IHRoZSBvcmRlciBpbgorICAgICAgICAgICAgd2hpY2ggdGhleSB3ZXJlIGluc2VydGVkIGJ5IHRo
ZSBzb3VyY2UgKGFzIG9wcG9zZWQgdG8sIGZvciBpbnN0YW5jZSwgcHV0dGluZyBhbGwgb2YgdGhl
IGF0dGFjaG1lbnRzIGluIGZyb250CisgICAgICAgICAgICBvciBhdCB0aGUgZW5kKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0Ol0pOgorCisgICAgICAgIEFkZCBhIGhl
bHBlciBtZXRob2QgdG8gcmV0dXJuIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHJlc3Vs
dCBvZiBldmFsdWF0aW5nIHNvbWUgZ2l2ZW4gc2NyaXB0LCBhbmQgcmV3cml0ZQorICAgICAgICAt
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdCB0byBqdXN0IHR1cm4gYXJvdW5kIGFuZCBjYWxs
IHRoaXMuCisKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0Ol0pOgorCiAyMDE4LTAxLTAzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIGZpbHRlci1idWlsZC13ZWJraXQgZmlsdGVycyBvdXQgdXNlZnVs
IGNvbXBpbGVyIGVycm9yIGxpbmVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCAwNGVhMTZjNzdl
NjJlZjc2ZDk1ODUwZTYyY2FlYmQ5ZGU1MjUyODE2Li43NDM1NDdkM2M3N2FjZTkxMTU4NzZmNWM4
NGE5ODM5ZGI2YzY4ZDZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTMyMSw2ICszMjEsMjQg
QEAgQGVuZAogCiAjcHJhZ21hIG1hcmsgLSBQbGF0Zm9ybSB0ZXN0aW5nIGhlbHBlciBmdW5jdGlv
bnMKIAorI2lmIFBMQVRGT1JNKElPUykKKwordHlwZWRlZiB2b2lkKF5JdGVtUHJvdmlkZXJEYXRh
TG9hZEhhbmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopOworCitAaW1wbGVtZW50YXRpb24gTlNJ
dGVtUHJvdmlkZXIgKEF0dGFjaG1lbnRUZXN0aW5nKQorCistICh2b2lkKXJlZ2lzdGVyRGF0YToo
TlNEYXRhICopZGF0YSB0eXBlOihOU1N0cmluZyAqKXR5cGUKK3sKKyAgICBbc2VsZiByZWdpc3Rl
ckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGUgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbcHJvdGVj
dGVkRGF0YSA9IHJldGFpblB0cihkYXRhKV0gKEl0ZW1Qcm92aWRlckRhdGFMb2FkSGFuZGxlciBj
b21wbGV0aW9uSGFuZGxlcikgLT4gTlNQcm9ncmVzcyAqIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIocHJvdGVjdGVkRGF0YS5nZXQoKSwgbmlsKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICB9XTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiB2b2lkIHBsYXRm
b3JtQ29weVJpY2hUZXh0V2l0aE11bHRpcGxlQXR0YWNobWVudHMoKQogewogICAgIGF1dG8gaW1h
Z2UgPSBhZG9wdE5TKFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhEYXRhOnRlc3RJ
bWFnZURhdGEoKSBvZlR5cGU6KE5TU3RyaW5nICopa1VUVHlwZVBOR10pOwpAQCAtMzYzLDggKzM4
MSw2IEBAIHZvaWQgcGxhdGZvcm1Db3B5UmljaFRleHRXaXRoSW1hZ2UoKQogI2VuZGlmCiB9CiAK
LXR5cGVkZWYgdm9pZCheSXRlbVByb3ZpZGVyRGF0YUxvYWRIYW5kbGVyKShOU0RhdGEgKiwgTlNF
cnJvciAqKTsKLQogdm9pZCBwbGF0Zm9ybUNvcHlQTkcoKQogewogI2lmIFBMQVRGT1JNKE1BQykK
QEAgLTM3NSwxMCArMzkxLDcgQEAgdm9pZCBwbGF0Zm9ybUNvcHlQTkcoKQogICAgIFVJUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCA9IFtVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwogICAg
IGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tVSUl0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAg
IFtpdGVtIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVBdHRhY2htZW50XTsKLSAgICBbaXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVQTkcgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbXSAoSXRl
bVByb3ZpZGVyRGF0YUxvYWRIYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNz
ICogewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0ZXN0SW1hZ2VEYXRhKCksIG5pbCk7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfV07CisgICAgW2l0ZW0gcmVnaXN0ZXJEYXRhOnRlc3RJ
bWFnZURhdGEoKSB0eXBlOihOU1N0cmluZyAqKWtVVFR5cGVQTkddOwogICAgIHBhc3RlYm9hcmQu
aXRlbVByb3ZpZGVycyA9IEBbIGl0ZW0uZ2V0KCkgXTsKICNlbmRpZgogfQpAQCAtOTYwLDExICs5
NzMsNyBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9TLCBJbnNlcnREcm9wcGVkSW1hZ2VBc0F0
dGFjaG1lbnQpCiAgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cygpOwogICAgIGF1dG8gZHJhZ2dpbmdTaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAg
IGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwotICAg
IFtpdGVtIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVBdHRhY2htZW50XTsKLSAgICBbaXRlbSByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVQTkcgdmlzaWJpbGl0eTpOU0l0
ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbCBsb2FkSGFuZGxlcjpbXSAoSXRl
bVByb3ZpZGVyRGF0YUxvYWRIYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBOU1Byb2dyZXNz
ICogewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0ZXN0SW1hZ2VEYXRhKCksIG5pbCk7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfV07CisgICAgW2l0ZW0gcmVnaXN0ZXJEYXRhOnRlc3RJ
bWFnZURhdGEoKSB0eXBlOihOU1N0cmluZyAqKWtVVFR5cGVQTkddOwogICAgIFtkcmFnZ2luZ1Np
bXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbS5nZXQoKSBdXTsKICAgICBb
ZHJhZ2dpbmdTaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50WmVybyB0bzpDR1BvaW50TWFrZSg1MCwg
NTApXTsKIApAQCAtMTAxMCw2ICsxMDE5LDExNSBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzSU9T
LCBJbnNlcnREcm9wcGVkQXR0cmlidXRlZFN0cmluZ0NvbnRhaW5pbmdBdHRhY2htZW50KQogICAg
IH0KIH0KIAorVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0RHJvcHBlZFJpY2hBbmRQ
bGFpblRleHRGaWxlc0FzQXR0YWNobWVudHMpCit7CisgICAgLy8gSGVyZSwgYm90aCByaWNoIHRl
eHQgYW5kIHBsYWluIHRleHQgYXJlIGNvbnRlbnQgdHlwZXMgdGhhdCBXZWJLaXQgYWxyZWFkeSB1
bmRlcnN0YW5kcyBob3cgdG8gaW5zZXJ0IGluIGVkaXRhYmxlCisgICAgLy8gYXJlYXMgaW4gdGhl
IGFic2VuY2Ugb2YgYXR0YWNobWVudCBlbGVtZW50cy4gSG93ZXZlciwgZHVlIHRvIHRoZSBleHBs
aWNpdGx5IHNldCBhdHRhY2htZW50IHByZXNlbnRhdGlvbiBzdHlsZQorICAgIC8vIG9uIHRoZSBp
dGVtIHByb3ZpZGVycywgd2Ugc2hvdWxkIGluc3RlYWQgdHJlYXQgdGhlbSBhcyBkcm9wcGVkIGZp
bGVzIGFuZCBpbnNlcnQgYXR0YWNobWVudCBlbGVtZW50cy4KKyAgICAvLyBUaGlzIGV4ZXJjaXNl
cyB0aGUgc2NlbmFyaW8gb2YgZHJhZ2dpbmcgcmljaCBhbmQgcGxhaW4gdGV4dCBmaWxlcyBmcm9t
IEZpbGVzIHRvIE1haWwuCisgICAgYXV0byByaWNoVGV4dEl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVt
UHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHJpY2hUZXh0ID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJIZWxsbyB3b3JsZCIgYXR0
cmlidXRlczpAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250IGJvbGRTeXN0ZW1Gb250T2ZT
aXplOjEyXSB9XSk7CisgICAgW3JpY2hUZXh0SXRlbSBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25T
dHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlQXR0YWNobWVudF07CisgICAgW3JpY2hU
ZXh0SXRlbSByZWdpc3Rlck9iamVjdDpyaWNoVGV4dC5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVBy
b3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAgICBbcmljaFRleHRJdGVtIHNl
dFN1Z2dlc3RlZE5hbWU6QCJoZWxsby5ydGYiXTsKKworICAgIGF1dG8gcGxhaW5UZXh0SXRlbSA9
IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtwbGFpblRleHRJ
dGVtIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGVBdHRhY2htZW50XTsKKyAgICBbcGxhaW5UZXh0SXRlbSByZWdpc3Rlck9iamVjdDpAIkhl
bGxvIHdvcmxkIiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmls
aXR5QWxsXTsKKyAgICBbcGxhaW5UZXh0SXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAid29ybGQudHh0
Il07CisKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7
CisgICAgYXV0byBkcmFnZ2luZ1NpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2Ry
YWdnaW5nU2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyByaWNoVGV4dEl0ZW0u
Z2V0KCksIHBsYWluVGV4dEl0ZW0uZ2V0KCkgXV07CisgICAgW2RyYWdnaW5nU2ltdWxhdG9yIHJ1
bkZyb206Q0dQb2ludFplcm8gdG86Q0dQb2ludE1ha2UoNTAsIDUwKV07CisKKyAgICBFWFBFQ1Rf
RVEoMlUsIFtkcmFnZ2luZ1NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5jb3VudCk7Cisg
ICAgRVhQRUNUX0VRKDBVLCBbZHJhZ2dpbmdTaW11bGF0b3IgcmVtb3ZlZEF0dGFjaG1lbnRzXS5j
b3VudCk7CisKKyAgICBmb3IgKF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gW2RyYWdnaW5n
U2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdKSB7CisgICAgICAgIE5TRXJyb3IgKmVycm9y
ID0gbmlsOworICAgICAgICBFWFBFQ1RfR1QoW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVl
c3REYXRhOiZlcnJvcl0ubGVuZ3RoLCAwVSk7CisgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7
CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIE5TTG9nKEAiRXJyb3I6ICVAIiwgZXJy
b3IpOworICAgIH0KKworICAgIEVYUEVDVF9FUSgyLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpLmxl
bmd0aCJdLmludFZhbHVlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvLnJ0ZiIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCdhdHRhY2htZW50JylbMF0uZ2V0QXR0cmlidXRlKCd0aXRsZScpIl0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgidGV4dC9ydGYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzBdLmdldEF0dHJp
YnV0ZSgndHlwZScpIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgid29ybGQudHh0IiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJ2F0dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykiXSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJ0ZXh0L3BsYWluIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVsxXS5nZXRBdHRy
aWJ1dGUoJ3R5cGUnKSJdKTsKK30KKworVEVTVChXS0F0dGFjaG1lbnRUZXN0c0lPUywgSW5zZXJ0
RHJvcHBlZFppcEFyY2hpdmVBc0F0dGFjaG1lbnQpCit7CisgICAgLy8gU2luY2UgV2ViS2l0IGRv
ZXNuJ3QgaGF2ZSBhbnkgZGVmYXVsdCBET00gcmVwcmVzZW50YXRpb24gZm9yIFpJUCBhcmNoaXZl
cywgd2Ugc2hvdWxkIGZhbGwgYmFjayB0byBpbnNlcnRpbmcKKyAgICAvLyBhdHRhY2htZW50IGVs
ZW1lbnRzLiBUaGlzIGV4ZXJjaXNlcyB0aGUgZmxvdyBvZiBkcmFnZ2luZyBhIFpJUCBmaWxlIGZy
b20gYW4gYXBwIHRoYXQgZG9lc24ndCBzcGVjaWZ5IGEgcHJlZmVycmVkCisgICAgLy8gcHJlc2Vu
dGF0aW9uIHN0eWxlIChlLmcuIE5vdGVzKSBpbnRvIE1haWwuCisgICAgYXV0byBpdGVtID0gYWRv
cHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgTlNEYXRhICpkYXRhID0g
dGVzdFpJUERhdGEoKTsKKyAgICBbaXRlbSByZWdpc3RlckRhdGE6ZGF0YSB0eXBlOihOU1N0cmlu
ZyAqKWtVVFR5cGVaaXBBcmNoaXZlXTsKKyAgICBbaXRlbSBzZXRTdWdnZXN0ZWROYW1lOkAiYXJj
aGl2ZS56aXAiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNo
bWVudHMoKTsKKyAgICBhdXRvIGRyYWdnaW5nU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsK
KyAgICBbZHJhZ2dpbmdTaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW0u
Z2V0KCkgXV07CisgICAgW2RyYWdnaW5nU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludFplcm8gdG86
Q0dQb2ludE1ha2UoNTAsIDUwKV07CisKKyAgICBFWFBFQ1RfRVEoMVUsIFtkcmFnZ2luZ1NpbXVs
YXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5jb3VudCk7CisgICAgRVhQRUNUX0VRKDBVLCBbZHJh
Z2dpbmdTaW11bGF0b3IgcmVtb3ZlZEF0dGFjaG1lbnRzXS5jb3VudCk7CisgICAgW1tkcmFnZ2lu
Z1NpbXVsYXRvciBpbnNlcnRlZEF0dGFjaG1lbnRzXS5maXJzdE9iamVjdCBleHBlY3RSZXF1ZXN0
ZWREYXRhVG9CZTpkYXRhXTsKKyAgICBFWFBFQ1RfRVEoMSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQn
KS5sZW5ndGgiXS5pbnRWYWx1ZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJhcmNoaXZlLnppcCIs
IFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0
dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi96aXAiLCBbd2Vi
VmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1l
bnQiXSk7Cit9CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHNJT1MsIEluc2VydERyb3BwZWRJdGVt
UHJvdmlkZXJzSW5PcmRlcikKK3sKKyAgICAvLyBUZXN0cyB0aGF0IGl0ZW0gcHJvdmlkZXJzIGFy
ZSBpbnNlcnRlZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc3BlY2lmaWVkLiBJbiB0aGlzIGNhc2Us
IHRoZSB0d28gaW5zZXJ0ZWQgYXR0YWNobWVudHMKKyAgICAvLyBzaG91bGQgYmUgc2VwYXJhdGVk
IGJ5IGEgbGluay4KKyAgICBhdXRvIGZpcnN0QXR0YWNobWVudEl0ZW0gPSBhZG9wdE5TKFtbTlNJ
dGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbZmlyc3RBdHRhY2htZW50SXRlbSBzZXRQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlQXR0
YWNobWVudF07CisgICAgW2ZpcnN0QXR0YWNobWVudEl0ZW0gcmVnaXN0ZXJPYmplY3Q6QCJGSVJT
VCIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07
CisgICAgW2ZpcnN0QXR0YWNobWVudEl0ZW0gc2V0U3VnZ2VzdGVkTmFtZTpAImZpcnN0LnR4dCJd
OworCisgICAgYXV0byBpbmxpbmVUZXh0SXRlbSA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gYXBwbGVVUkwgPSByZXRhaW5QdHIoW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vIl0pOworICAgIFtpbmxpbmVUZXh0SXRl
bSByZWdpc3Rlck9iamVjdDphcHBsZVVSTC5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVy
UmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKworICAgIGF1dG8gc2Vjb25kQXR0YWNobWVu
dEl0ZW0gPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbc2Vj
b25kQXR0YWNobWVudEl0ZW0gcmVnaXN0ZXJEYXRhOnRlc3RQREZEYXRhKCkgdHlwZTooTlNTdHJp
bmcgKilrVVRUeXBlUERGXTsKKyAgICBbc2Vjb25kQXR0YWNobWVudEl0ZW0gc2V0U3VnZ2VzdGVk
TmFtZTpAInNlY29uZC5wZGYiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0
aW5nQXR0YWNobWVudHMoKTsKKyAgICBhdXRvIGRyYWdnaW5nU2ltdWxhdG9yID0gYWRvcHROUyhb
W0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcu
Z2V0KCldKTsKKyAgICBbZHJhZ2dpbmdTaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJz
OkBbIGZpcnN0QXR0YWNobWVudEl0ZW0uZ2V0KCksIGlubGluZVRleHRJdGVtLmdldCgpLCBzZWNv
bmRBdHRhY2htZW50SXRlbS5nZXQoKSBdXTsKKyAgICBbZHJhZ2dpbmdTaW11bGF0b3IgcnVuRnJv
bTpDR1BvaW50WmVybyB0bzpDR1BvaW50TWFrZSg1MCwgNTApXTsKKworICAgIEVYUEVDVF9FUSgy
VSwgW2RyYWdnaW5nU2ltdWxhdG9yIGluc2VydGVkQXR0YWNobWVudHNdLmNvdW50KTsKKyAgICBF
WFBFQ1RfRVEoMFUsIFtkcmFnZ2luZ1NpbXVsYXRvciByZW1vdmVkQXR0YWNobWVudHNdLmNvdW50
KTsKKworICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCBpbiBbZHJhZ2dpbmdTaW11
bGF0b3IgaW5zZXJ0ZWRBdHRhY2htZW50c10pIHsKKyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7CisgICAgICAgIEVYUEVDVF9HVChbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdERh
dGE6JmVycm9yXS5sZW5ndGgsIDBVKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKKyAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTlNMb2coQCJFcnJvcjogJUAiLCBlcnJvcik7
CisgICAgfQorCisgICAgTlNBcnJheSAqb2JzZXJ2ZWRFbGVtZW50VGFncyA9IChOU0FycmF5ICop
W3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIkFycmF5LmZyb20oZG9jdW1l
bnQuYm9keS5jaGlsZHJlbikubWFwKGUgPT4gZS50YWdOYW1lKSJdOworICAgIE5TQXJyYXkgKmV4
cGVjdGVkRWxlbWVudFRhZ3MgPSBAWyBAIkFUVEFDSE1FTlQiLCBAIkEiLCBAIkFUVEFDSE1FTlQi
IF07CisgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRWxlbWVudFRhZ3MgaXNFcXVhbFRvQXJyYXk6
ZXhwZWN0ZWRFbGVtZW50VGFnc10pOworICAgIGlmICghW29ic2VydmVkRWxlbWVudFRhZ3MgaXNF
cXVhbFRvQXJyYXk6ZXhwZWN0ZWRFbGVtZW50VGFnc10pCisgICAgICAgIE5TTG9nKEAiT2JzZXJ2
ZWQgZWxlbWVudHM6ICVAIGRpZCBub3QgbWF0Y2ggZXhwZWN0YXRpb25zOiAlQCIsIG9ic2VydmVk
RWxlbWVudFRhZ3MsIGV4cGVjdGVkRWxlbWVudFRhZ3MpOworCisgICAgRVhQRUNUX1dLX1NUUkVR
KCJmaXJzdC50eHQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzBdLmdldEF0dHJpYnV0ZSgndGl0
bGUnKSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvcGxhaW4iLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0
YWNobWVudCcpWzBdLmdldEF0dHJpYnV0ZSgndHlwZScpIl0pOworICAgIEVYUEVDVF9XS19TVFJF
UShbYXBwbGVVUkwgYWJzb2x1dGVTdHJpbmddLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAi
aHJlZiIgZm9yUXVlcnlTZWxlY3RvcjpAImEiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJzZWNv
bmQucGRmIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyki
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsaWNhdGlvbi9wZGYiLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0
YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndHlwZScpIl0pOworfQorCiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4
IDg1YTExYTQzYTVkMDNkODdjNWQxMjliNmJmYWY4YTdmYzhlY2Y4ZTcuLmE1OTA4ZDZmNTQwNDg3
NzM3YWY5YzVkYTI2MDhmY2YzY2U2MGNkNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC0zNDQsNyArMzQ0LDcg
QEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9Db250ZW50RWRp
dGFibGUpCiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVj
dDpEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7CiAgICAgRVhQRUNUX1RSVUUoW29ic2Vy
dmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0
aW9uRXZlbnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBbIG1h
a2VDR1JlY3RWYWx1ZSgxLCAyMDEsIDk2MSwgMjI3KSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKLSAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2Vk
ZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5T
U3RyaW5nICopa1VUVHlwZVJURkQsIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0KTsK
KyAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVJURiwgKE5TU3Ry
aW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRl
c3RzLCBDb250ZW50RWRpdGFibGVUb1RleHRhcmVhKQpAQCAtMzY0LDcgKzM2NCw3IEBAIFRFU1Qo
RGF0YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvVGV4dGFyZWEpCiAgICAgRVhQ
RUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rp
b25PdmVyRXZlbnROYW1lXSk7CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBj
b250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7
CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1JlY3RWYWx1ZSg2
LCAyMDMsIDk5MCwgMjMyKSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0
aW9uUmVjdHNdKTsKLSAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVu
dGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlw
ZVJURkQsIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0KTsKKyAgICBjaGVja1R5cGVJ
ZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVs
YXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVJURiwgKE5TU3RyaW5nICopa1VUVHlwZVVU
RjhQbGFpblRleHQpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRp
dGFibGVNb3ZlUGFyYWdyYXBocykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKaW5kZXggZTU1MmQ5NmFiZmE3YTJhNDJjYWJkZjM4MjU1YzNjYTA1MTU4NzdlOS4uZGFh
M2IyNmQ2NmI4ZTg5MDE3MDRjYjU5ZjVmMTc0MTAxN2QwMWNkZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIC0gKHZvaWQpbG9h
ZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWU7CiAtICh2b2lkKXN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzooTlNTdHJpbmcgKilodG1sOwogLSAodm9pZClzeW5jaHJvbm91c2x5
TG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5nICopcGFnZU5hbWU7CistIChpZClvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdDsKIC0gKE5TU3RyaW5nICopc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQ7CiAtICh2b2lkKXdh
aXRGb3JNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2U7CiAtICh2b2lkKXBlcmZvcm1BZnRlckxv
YWRpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBlZjQxN2ZiOTdhZDRhYzk4Y2U0MDc5NDQ4MTkzMTU1
OTkwZDA3OTYxLi4yNTg5N2Q2NzIyNDRmMmVlZDMyOTVjNTQxZTEwNzBjNGIzMjRmZTFjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yMzgsMjEgKzIz
OCwyNCBAQCAtICh2b2lkKXN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcg
KilwYWdlTmFtZQogICAgIFtzZWxmIF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
IH0KIAotLSAoTlNTdHJpbmcgKilzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OihOU1N0cmlu
ZyAqKXNjcmlwdAorLSAoaWQpb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDooTlNTdHJpbmcg
KilzY3JpcHQKIHsKLSAgICBfX2Jsb2NrIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZh
bHNlOwotICAgIF9fYmxvY2sgTlNTdHJpbmcgKmV2YWxSZXN1bHQgPSBuaWw7Ci0gICAgW3NlbGYg
X2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTpzY3JpcHQgY29tcGxldGlvbkhh
bmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKQotICAgIHsKLSAgICAgICAgZXZhbFJl
c3VsdCA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRm9ybWF0OkAiJUAiLCByZXN1bHRdOwor
ICAgIGJvb2wgaXNXYWl0aW5nRm9ySmF2YVNjcmlwdCA9IGZhbHNlOworICAgIFJldGFpblB0cjxp
ZD4gZXZhbFJlc3VsdDsKKyAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJH
ZXN0dXJlOnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgZXZhbFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaXNXYWl0aW5n
Rm9ySmF2YVNjcmlwdCA9IHRydWU7CiAgICAgICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CiAgICAg
ICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIE5TTG9nKEAiRW5jb3VudGVyZWQgZXJyb3I6ICVA
IHdoaWxlIGV2YWx1YXRpbmcgc2NyaXB0OiAlQCIsIGVycm9yLCBzY3JpcHQpOwogICAgIH1dOwot
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc1dhaXRpbmdGb3JKYXZhU2NyaXB0KTsK
LSAgICByZXR1cm4gW2V2YWxSZXN1bHQgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBldmFsUmVz
dWx0LmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKE5TU3RyaW5nICopc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHQKK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlQCIsIFtzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
c2NyaXB0XV07CiB9CiAKIC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>