<?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>224314</bug_id>
          
          <creation_ts>2021-04-07 18:55:15 -0700</creation_ts>
          <short_desc>[GPU Process] Simplify DisplayList::Iterator part 7: Migrate ItemBufferReadingClient from ItemHandle to a const Variant&amp;</short_desc>
          <delta_ts>2021-05-09 15:14:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>224270</dependson>
          <blocked>223560</blocked>
    
    <blocked>225579</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748178</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-04-07 18:55:15 -0700</bug_when>
    <thetext>[GPU Process] Simplify DisplayList::Iterator part 7: Migrate ItemBufferReadingClient from ItemHandle to a const Variant&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748181</commentid>
    <comment_count>1</comment_count>
      <attachid>425469</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-04-07 18:58:32 -0700</bug_when>
    <thetext>Created attachment 425469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750441</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-14 18:56:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/76678162&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751565</commentid>
    <comment_count>3</comment_count>
      <attachid>425469</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-17 22:08:17 -0700</bug_when>
    <thetext>Comment on attachment 425469
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:397
&gt; +        m_isValid = false;
&gt; +        if (auto decodedItem = client-&gt;decodeItem(startOfData, dataLength, itemType)) {
&gt; +            if (safeCopy(decodedItem.value(), ItemHandle { m_currentBufferForItem }))
&gt; +                m_isValid = true;
&gt; +        }

I often prefer the form *decodedItem to the form decodedItem.value().

Not sure I understand the meaning of the word &quot;safe&quot; in this function name.

Since we are setting a boolean, seems like we could stick with a single if statement instead of two.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.h:85
&gt; +bool safeCopy(const DisplayListItem&amp; source, ItemHandle destination);

Copying from the left argument into the right argument goes against C tradition and functions like memcpy and strcpy.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2285
&gt; +using DisplayListItem = Variant&lt;

It’s hard to keep this in &quot;logical&quot; order. I suggest alphabetical order instead when the list is this long. Like includes, with conditional sections at the bottom also in alphabetical order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752957</commentid>
    <comment_count>4</comment_count>
      <attachid>425469</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-04-21 15:53:49 -0700</bug_when>
    <thetext>Comment on attachment 425469
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:397
&gt;&gt; +        }
&gt; 
&gt; I often prefer the form *decodedItem to the form decodedItem.value().
&gt; 
&gt; Not sure I understand the meaning of the word &quot;safe&quot; in this function name.
&gt; 
&gt; Since we are setting a boolean, seems like we could stick with a single if statement instead of two.

Do you mean like

if (auto decodedItem = client-&gt;decodeItem(startOfData, dataLength, itemType); safeCopy(decodedItem.value(), ItemHandle { m_currentBufferForItem }))
    m_isValid = true;

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752964</commentid>
    <comment_count>5</comment_count>
      <attachid>425469</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-21 16:18:15 -0700</bug_when>
    <thetext>Comment on attachment 425469
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:397
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; I often prefer the form *decodedItem to the form decodedItem.value().
&gt;&gt; 
&gt;&gt; Not sure I understand the meaning of the word &quot;safe&quot; in this function name.
&gt;&gt; 
&gt;&gt; Since we are setting a boolean, seems like we could stick with a single if statement instead of two.
&gt; 
&gt; Do you mean like
&gt; 
&gt; if (auto decodedItem = client-&gt;decodeItem(startOfData, dataLength, itemType); safeCopy(decodedItem.value(), ItemHandle { m_currentBufferForItem }))
&gt;     m_isValid = true;
&gt; 
&gt; ?

I actually meant this:

    if (auto decodedItem = client-&gt;decodeItem(startOfData, dataLength, itemType))
        m_isValid = safeCopy(*decodedItem, ItemHandle { m_currentBufferForItem });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758308</commentid>
    <comment_count>6</comment_count>
      <attachid>425469</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 01:48:17 -0700</bug_when>
    <thetext>Comment on attachment 425469
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:395
&gt; +            if (safeCopy(decodedItem.value(), ItemHandle { m_currentBufferForItem }))

I need to add a comment around this copy operation saying that it&apos;s temporary and will be removed in a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758313</commentid>
    <comment_count>7</comment_count>
      <attachid>428119</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 02:08:54 -0700</bug_when>
    <thetext>Created attachment 428119
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758314</commentid>
    <comment_count>8</comment_count>
      <attachid>428120</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 02:19:50 -0700</bug_when>
    <thetext>Created attachment 428120
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758318</commentid>
    <comment_count>9</comment_count>
      <attachid>428122</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:12:02 -0700</bug_when>
    <thetext>Created attachment 428122
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758326</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:58:26 -0700</bug_when>
    <thetext>I&apos;m going to wait to land this until https://bugs.webkit.org/show_bug.cgi?id=225579 is ready, so I can land them both together. This patch introduces an extra copy that will end up getting deleted in that patch, and I don&apos;t want to cause a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758382</commentid>
    <comment_count>11</comment_count>
      <attachid>428122</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 15:14:42 -0700</bug_when>
    <thetext>Comment on attachment 428122
Patch for committing

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:629
&gt; +        using I = typename WTF::RemoveCVAndReference&lt;decltype(type)&gt;::type::type;

We can apply the treatment from https://bugs.webkit.org/show_bug.cgi?id=225579#c8 here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425469</attachid>
            <date>2021-04-07 18:58:32 -0700</date>
            <delta_ts>2021-04-17 22:08:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224314-20210407185832.patch</filename>
            <type>text/plain</type>
            <size>24473</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMzYTE5NGQ5YWI1ZTM0
NzkwM2IxZGFlZjViOWY2MmNmYWRhNThiNS4uOGUzOTE1YzMyNGE1NDM2OThhZGQ0OWEwODY2YjJi
NWE2MmYxNGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA0LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA3OiBNaWdyYXRlIEl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBhIGNvbnN0IFZhcmlhbnQmCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGFkZHMgYSBuZXcgVmFyaWFudCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgRGlzcGxheUxpc3QgaXRl
bSB0eXBlcywgbmFtZWQgRGlzcGxheUxpc3RJdGVtLiBJdCBhbHNvIG1pZ3JhdGVzCisgICAgICAg
IEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byB0aGlzIG5ldyBWYXJp
YW50LgorCisgICAgICAgIFRoZSBtYWpvciBiZW5lZml0IG9mIHRoaXMgaXMgdGhhdCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKCkgbm8gbG9uZ2VyIGhhcyB0byBoYXZlIGEgYmln
IHRhYmxlIG9mIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtIHR5cGVzIGluc2lkZSBpdC4gQWxz
bywgd2UgY2FuIGVudGlyZWx5IGRlbGV0ZSB0aGUgZGVjb2RlQW5kQ3JlYXRlKCkgZnVuY3Rpb24u
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRl
cmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpj
b3B5SW50byk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2FmZUNvcHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1l
bW9yeURpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbk1l
bW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oOgorCiAy
MDIxLTA0LTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBSZXBhaW50TGF5b3V0UmVjdHNNYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGUwNjU0YTEyNzJm
OWM2MDI3NWQ5YzRhNmIyN2RhYmZmMzYwNzQyNC4uZTIzYTY5NGM3M2U2ZGU5YWM4YjdmNzY1MDY1
OTcwODhlYmZjYjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNC0wNyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNzogTWlncmF0ZSBJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50Jgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MzE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlQW5kQ3JlYXRlKTogRGVsZXRlZC4KKwogMjAy
MS0wNC0wNyAgQWRhIENoYW4gIDxhZGEuY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYlhS
XSBJbnRyb2R1Y2UgWFJEZXZpY2VJZGVudGlmaWVyIGFuZCBYUkRldmljZUluZm8gdG8gYmUgdXNl
ZCB0byBjb21tdW5pY2F0ZSBkZXZpY2UgaW5mbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5k
ZXggYTdkMWU3NDFiZDU4OGQ0MTkzZGM0YmQxYjhmY2ViZGJjZjY3Yjk4ZC4uOGEwZTNlZTk0Mzhk
MmE3MGY3ZGM5NDdmMzA4ODY2ZDBkZWZmODA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
CkBAIC0zOTAsOSArMzkwLDExIEBAIHZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVD
dXJyZW50SXRlbSgpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudCk7CiAgICAgICAgIGF1
dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07
CiAgICAgICAgIGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2
NF90KTsKLSAgICAgICAgYXV0byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+ZGVjb2RlSXRl
bShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0pOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZWRJdGVtSGFuZGxlKSkKLSAgICAgICAg
ICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICAg
ICAgaWYgKGF1dG8gZGVjb2RlZEl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEs
IGRhdGFMZW5ndGgsIGl0ZW1UeXBlKSkgeworICAgICAgICAgICAgaWYgKHNhZmVDb3B5KGRlY29k
ZWRJdGVtLnZhbHVlKCksIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKQor
ICAgICAgICAgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICBt
X2N1cnJlbnRCdWZmZXJGb3JJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUp
OwogICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRf
dCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYjg1YWE3
MGRlZDVhN2E3NzFkODdlZjY1MGVhZjY1M2I2ZmRjMGJlNC4uMjY2MjEyMzY1MmUwZmYxZmM4ZDJk
ZDEwNzJjMDZlNmYwMzViODFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRl
bUJ1ZmZlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisjaW5j
bHVkZSA8d3RmL0JyaWdhbmQuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00NDIsMTcgKzQ0MywyOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNl
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8
VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0g
dHJ1ZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLXN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFu
ZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCitzdGF0aWMg
aW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+
IGlzVmFsaWQoY29uc3QgSXRlbSYpCiB7Ci0gICAgbmV3IChkZXN0aW5hdGlvbldpdGhPZmZzZXQp
IEl0ZW0oaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci1zdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxI
YXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFu
ZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCitzdGF0aWMgaW5saW5lIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25z
dCBJdGVtJiBpdGVtKQogewotICAgIGF1dG8qIG5ld0l0ZW0gPSBuZXcgKGRlc3RpbmF0aW9uV2l0
aE9mZnNldCkgSXRlbShpdGVtSGFuZGxlLmdldDxJdGVtPigpKTsKLSAgICByZXR1cm4gbmV3SXRl
bS0+aXNWYWxpZCgpOworICAgIHJldHVybiBpdGVtLmlzVmFsaWQoKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBpbmxpbmUgYm9vbCBjb3B5SW50byhjb25zdCBJdGVtJiBp
dGVtLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCit7CisgICAgYXV0byogbmV3SXRl
bSA9IG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW0pOworICAgIHJldHVybiBp
c1ZhbGlkKCpuZXdJdGVtKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3N0YXRpYyBp
bmxpbmUgYm9vbCBjb3B5SW50byhjb25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90
KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCit7CisgICAgcmV0dXJuIGNvcHlJbnRvKGl0ZW1IYW5k
bGUuZ2V0PEl0ZW0+KCksIGRlc3RpbmF0aW9uV2l0aE9mZnNldCk7CiB9CiAKIGJvb2wgSXRlbUhh
bmRsZTo6c2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKQEAgLTU5Nyw2ICs2
MDksMzggQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9u
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBzYWZlQ29weShjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mIHNvdXJjZSwgSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1
cm4gV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYgc291cmNlKSAtPiBib29sIHsKKyAgICAgICAg
dXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZl
cmVuY2U8ZGVjbHR5cGUoc291cmNlKT46OnR5cGU7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIGl0
ZW1UeXBlID0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGU7CisgICAgICAgIGRlc3RpbmF0
aW9uLmRhdGFbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7CisgICAgICAgIGF1
dG8gaXRlbU9mZnNldCA9IGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YodWludDY0X3QpOworICAg
ICAgICByZXR1cm4gY29weUludG88RGlzcGxheUxpc3RJdGVtVHlwZT4oc291cmNlLCBpdGVtT2Zm
c2V0KTsKKyAgICB9LCBzb3VyY2UpOworfQorCitPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IHNh
ZmVDb3B5KEl0ZW1IYW5kbGUgc291cmNlKQoreworICAgIHVzaW5nIFNlcXVlbmNlID0gYnJpZ2Fu
ZDo6bWFrZV9zZXF1ZW5jZTxicmlnYW5kOjpwdHJkaWZmX3Q8MD4sIFdURjo6dmFyaWFudF9zaXpl
PERpc3BsYXlMaXN0SXRlbT46OnZhbHVlPjsKKworICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRl
bT4gcmVzdWx0OworICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5
cGUpIHsKKyAgICAgICAgdXNpbmcgSSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVu
Y2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0eXBlOworICAgICAgICB1c2luZyBEaXNwbGF5TGlz
dEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8STo6dmFsdWUsIERpc3BsYXlM
aXN0SXRlbT47CisKKyAgICAgICAgaWYgKHNvdXJjZS50eXBlKCkgIT0gRGlzcGxheUxpc3RJdGVt
VHlwZTo6aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBkaXNw
bGF5TGlzdEl0ZW0gPSBzb3VyY2UuZ2V0PERpc3BsYXlMaXN0SXRlbVR5cGU+KCk7CisgICAgICAg
IGlmIChpc1ZhbGlkKGRpc3BsYXlMaXN0SXRlbSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghcmVz
dWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IERpc3BsYXlMaXN0SXRlbShXVEZNb3ZlKGRpc3Bs
YXlMaXN0SXRlbSkpOworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwogSXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVySGFuZGxlcyYmIGhhbmRsZXMpCiAg
ICAgOiBtX3JlYWRPbmx5QnVmZmVycyhXVEZNb3ZlKGhhbmRsZXMpKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM0NDFhYzM1YTk1ZjRjYzQ5Y2NmM2I2
NzNmMjllYmNjNjI1MDExMWEuLmZhYWJjNjM5NzAxN2MwZjY4YzM4NTA5YjdhNjcwZjQyZTU3MjQ3
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTgyLDYg
KzgyLDkgQEAgc3RydWN0IEl0ZW1IYW5kbGUgewogICAgIGJvb2wgc2FmZUNvcHkoSXRlbUhhbmRs
ZSBkZXN0aW5hdGlvbikgY29uc3Q7CiB9OwogCitib29sIHNhZmVDb3B5KGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYgc291cmNlLCBJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKTsKK09wdGlvbmFsPERpc3Bs
YXlMaXN0SXRlbT4gc2FmZUNvcHkoSXRlbUhhbmRsZSk7CisKIGVudW0gY2xhc3MgRGlkQ2hhbmdl
SXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKIGNsYXNzIEl0ZW1CdWZmZXJXcml0aW5n
Q2xpZW50IHsKQEAgLTEyMSw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0
ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlLCB1aW50
OF90KiBoYW5kbGVMb2NhdGlvbikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUpID0gMDsKIH07CiAKIC8vIEFuIEl0ZW1CdWZm
ZXIgY29udGFpbnMgZGlzcGxheSBsaXN0IGl0ZW0gZGF0YSwgYW5kIGNvbnNpc3RzIG9mIGEgcmVh
ZHdyaXRlIEl0ZW1CdWZmZXJIYW5kbGUgKHRvIHdoaWNoIGRpc3BsYXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCmluZGV4IGJiMzc3NWFmNmM5MzZkNGFlYmFkNzRiYmU5NTI1NmE1MDNh
MTZjNDIuLmVmOTQ3Mjk1OGU1OTkzYzMzZDZmMzZjY2QyMTFjZmRiNjc1NjZlYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjI4Miw2ICsyMjgyLDc4IEBAIHByaXZhdGU6
CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07CiAKK3Vz
aW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQ8CisgICAgU2F2ZSwKKyAgICBSZXN0b3JlLAor
ICAgIFRyYW5zbGF0ZSwKKyAgICBSb3RhdGUsCisgICAgU2NhbGUsCisgICAgU2V0Q1RNLAorICAg
IENvbmNhdGVuYXRlQ1RNLAorICAgIFNldElubGluZUZpbGxHcmFkaWVudCwKKyAgICBTZXRJbmxp
bmVGaWxsQ29sb3IsCisgICAgU2V0SW5saW5lU3Ryb2tlQ29sb3IsCisgICAgU2V0U3Ryb2tlVGhp
Y2tuZXNzLAorICAgIFNldFN0YXRlLAorICAgIFNldExpbmVDYXAsCisgICAgU2V0TGluZURhc2gs
CisgICAgU2V0TGluZUpvaW4sCisgICAgU2V0TWl0ZXJMaW1pdCwKKyAgICBDbGVhclNoYWRvdywK
KyAgICBDbGlwLAorICAgIENsaXBPdXQsCisgICAgQ2xpcFRvSW1hZ2VCdWZmZXIsCisgICAgQ2xp
cE91dFRvUGF0aCwKKyAgICBDbGlwUGF0aCwKKyAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAgRHJhd0dseXBocywKKyAgICBE
cmF3SW1hZ2VCdWZmZXIsCisgICAgRHJhd05hdGl2ZUltYWdlLAorICAgIERyYXdQYXR0ZXJuLAor
ICAgIEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIsCisgICAgRW5kVHJhbnNwYXJlbmN5TGF5ZXIsCisg
ICAgRHJhd1JlY3QsCisgICAgRHJhd0xpbmUsCisgICAgRHJhd0xpbmVzRm9yVGV4dCwKKyAgICBE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyLAorICAgIERyYXdFbGxpcHNlLAorICAgIERyYXdQYXRo
LAorICAgIERyYXdGb2N1c1JpbmdQYXRoLAorICAgIERyYXdGb2N1c1JpbmdSZWN0cywKKyAgICBG
aWxsUmVjdCwKKyAgICBGaWxsUmVjdFdpdGhDb2xvciwKKyAgICBGaWxsUmVjdFdpdGhHcmFkaWVu
dCwKKyAgICBGaWxsQ29tcG9zaXRlZFJlY3QsCisgICAgRmlsbFJvdW5kZWRSZWN0LAorICAgIEZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlLAorI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorICAg
IEZpbGxJbmxpbmVQYXRoLAorI2VuZGlmCisgICAgRmlsbFBhdGgsCisgICAgRmlsbEVsbGlwc2Us
CisgICAgR2V0SW1hZ2VEYXRhLAorICAgIFB1dEltYWdlRGF0YSwKKyNpZiBFTkFCTEUoVklERU8p
CisgICAgUGFpbnRGcmFtZUZvck1lZGlhLAorI2VuZGlmCisgICAgU3Ryb2tlUmVjdCwKKyAgICBT
dHJva2VMaW5lLAorI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQorICAgIFN0cm9rZUlubGlu
ZVBhdGgsCisjZW5kaWYKKyAgICBTdHJva2VQYXRoLAorICAgIFN0cm9rZUVsbGlwc2UsCisgICAg
Q2xlYXJSZWN0LAorI2lmIFVTRShDRykKKyAgICBBcHBseVN0cm9rZVBhdHRlcm4sCisgICAgQXBw
bHlGaWxsUGF0dGVybiwKKyNlbmRpZgorICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IsCisgICAg
Rmx1c2hDb250ZXh0LAorICAgIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciwKKyAgICBNZXRh
Q29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+OworCiBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mLCBJdGVtSGFuZGxlKTsKIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAppbmRleCA5ZGZh
MWM2NmEyY2NjMjY1ODlkMTE0ZWI2ZTMyODJkNWY4NDkyMGY1Li4wMjNlNmZjMWE0ZTIzMzM0Yzc0
NTQ4NDJlMWFmYzExZjM1MTEyZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxh
eUxpc3QuY3BwCkBAIC0zOSwxNSArMzksMTIgQEAgdm9pZCBJbk1lbW9yeURpc3BsYXlMaXN0OjpX
cml0aW5nQ2xpZW50OjplbmNvZGVJdGVtSW5saW5lKEl0ZW1IYW5kbGUgaXRlbUhhbmRsZSwKICAg
ICBpdGVtSGFuZGxlLnNhZmVDb3B5KHsgbG9jYXRpb24gfSk7CiB9CiAKLU9wdGlvbmFsPEl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xp
ZW50OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJ
dGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKK09wdGlvbmFsPERpc3BsYXlM
aXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdD
bGllbnQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgs
IEl0ZW1UeXBlIHR5cGUpCiB7CiAgICAgY29uc3QgSXRlbUhhbmRsZSBkYXRhSGFuZGxlIHsgY29u
c3RfY2FzdDx1aW50OF90Kj4oZGF0YSkgfTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIGRhdGFI
YW5kbGUudHlwZSgpID09IHR5cGUpOwogICAgIEFTU0VSVF9VTlVTRUQoZGF0YUxlbmd0aCwgZGF0
YUxlbmd0aCA+PSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoZGF0YUhhbmRsZS50eXBl
KCkpKTsKLSAgICBJdGVtSGFuZGxlIHJlc3VsdCB7IGhhbmRsZUxvY2F0aW9uIH07Ci0gICAgaWYg
KGRhdGFIYW5kbGUuc2FmZUNvcHkocmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzYWZlQ29weShkYXRhSGFuZGxlKTsK
IH0KIAogSW5NZW1vcnlEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1v
cnlEaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAppbmRleCA0ZThmOTkwNjQ3NDI1ZWM5NzFiYzg5
ZWJkYjA1NWQ5YzJjZjM3MDgwLi5hYmQ2ZThhNTllOGZmYmIyNmExYjcxZWNjNTYwNzIwZTc0YmNm
N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJlYWRpbmdDbGllbnQgOiBw
dWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJO
X1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlw
ZSwgdWludDhfdCopIGZpbmFsOworICAgICAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1U
eXBlKSBmaW5hbDsKICAgICB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmlu
ZGV4IDJiZmM5M2E3M2Y0YzZjY2Q5NzQ3Mjc5ZTVkOTlkMDQ3NjcxYzM5ODUuLjJhOGRiMzQwZDgx
N2I0NTQ1NzliZWI3NjRkMmU2Y2I3NzY2ZDM2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPHd0Zi9CcmlnYW5k
Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC00ODQsMTA2
ICs0ODUsMjcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZShEaXNwbGF5TGlzdDo6SXRlbUIKICAgICAgICAgd2FrZVVwQW5kQXBw
bHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVs
bG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKLU9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUg
dHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCi17Ci0gICAgLyogVGhpcyBuZWVkcyB0byBt
YXRjaCAoMSkgaXNJbmxpbmVJdGVtKCkgaW4gRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAsICgyKSBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjplbmNvZGVJdGVtKCksCi0gICAgICogYW5kICgzKSBhbGwg
dGhlICJzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRp
dmlkdWFsIGl0ZW0gY2xhc3Nlcy4KLSAgICAgKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBv
ZiBEaXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoeS4gKi8KLQotICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICBy
ZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihkYXRhLCBs
ZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNs
aXBQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihkYXRhLCBsZW5ndGgsIGhh
bmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpE
cmF3Rm9jdXNSaW5nUmVjdHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzPihkYXRhLCBsZW5ndGgsIGhhbmRs
ZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0xp
bmVzRm9yVGV4dD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3Jl
YXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRS
ZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OkZpbGxQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPihkYXRh
LCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8
RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91
bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICBy
ZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OlB1dEltYWdlRGF0YT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oZGF0YSwgbGVuZ3RoLCBoYW5k
bGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0YXRlOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OlN0cm9rZVBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShD
RykKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlm
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3UGF0dGVybjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xp
bmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRI
X0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgot
I2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotI2lmIEVOQUJMRShWSURFTykKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
UGFpbnRGcmFtZUZvck1lZGlhOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJvdGF0ZToKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldENU
TToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0
U3Ryb2tlVGhpY2tuZXNzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VF
bGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlN0cm9rZUxpbmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0
ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOiB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CitPcHRp
b25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgaXRlbVR5cGUpCit7CisgICAgdXNpbmcg
U2VxdWVuY2UgPSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0cmRpZmZfdDwwPiwg
V1RGOjp2YXJpYW50X3NpemU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT46OnZhbHVlPjsK
KworICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IHJlc3VsdDsKKyAg
ICBicmlnYW5kOjpmb3JfZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8mJiB0eXBlKSB7CisgICAgICAg
IHVzaW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHR5
cGUpPjo6dHlwZTo6dHlwZTsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdU
Rjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEk6OnZhbHVlLCBEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3RJdGVtPjsKKworICAgICAgICBpZiAoaXRlbVR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6
aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5
TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pOworICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNw
bGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGRp
c3BsYXlMaXN0SXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PERpc3BsYXlM
aXN0SXRlbVR5cGU+KGRhdGEsIGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXJl
c3VsdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0geyBXVEZNb3ZlKGRpc3BsYXlMaXN0SXRl
bS52YWx1ZSgpKSB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVSZW5k
ZXJpbmdSZXNvdXJjZVJlcXVlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNDYwY2JmMmJj
ZDgzMjg2NGFmYjEwYWY3MzVhODJiMTM4OWFlNTA4YS4uODM1Y2Q4YTA5MjQ3NjZhNzZkNmY0ZmM5
Y2ZmMzFmMGY5MTliMTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC04OSwxOSArODksNyBA
QCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmKTsK
ICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlQW5kQ3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQotICAgIHsKLSAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PFQ+
KGRhdGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZWJLaXQyIHNob3VsZCBu
b3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDggYnl0ZXMgYXQgdGhlIGhhbmRsZSBhcmUg
cmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAgICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0
IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0aGluIGRpc3BsYXkgbGlzdCBjb2RlIGlu
IFdlYkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2
NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9j
YXRpb24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBvdmVycmlkZTsKIAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlv
bik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGlu
aXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGUyN2ViMGNmZGU3ZDlhNjRhYzJjODdkOWJl
YzQ5YWRjYmQ3Y2QyMi4uM2JlYjE0ZjU5ODNkNTNiMjgzNDRjZGIyMDM5Y2YwZDcyM2I3YjkwZSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTA0LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRl
cmF0b3IgcGFydCA3OiBNaWdyYXRlIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhh
bmRsZSB0byBhIGNvbnN0IFZhcmlhbnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjQzMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlz
dFRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorCiAy
MDIxLTA0LTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2Via2l0c2NtcHldIEhhbmRsZSBtdWx0aXBsZSBkb3VibGUtYnJhbmNoIGNvbW1pdHMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcAppbmRleCAwZDUwODdlMTY0NmI4M2JmYzAwMjg0YzBkNWUwNjI2OTAxYzVlZTVjLi4w
MjJjZjM2Mzk2NThkMjdiZmYwN2QzOWEzODJjYWM1YWUzNzEzZWE4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBA
IC0xNzYsMTIgKzE3NiwxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGll
bnQpCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5k
bGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikg
ZmluYWwKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRl
bVR5cGUgdHlwZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQRUNUX0VRKHR5cGUs
IEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhTGVuZ3Ro
LCBzaXplb2Yoc2l6ZV90KSk7Ci0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6
ZW9mKHVpbnQ2NF90KSkgU3Ryb2tlUGF0aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0PGNvbnN0
IHNpemVfdCo+KGRhdGEpXSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24g
fX07CisgICAgICAgICAgICByZXR1cm4gRGlzcGxheUxpc3RJdGVtKFN0cm9rZVBhdGgobV9pdGVt
c1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pKTsKICAgICAgICAgfQog
CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKaW5kZXggMjVlOThiYjExN2NkMWQyNjdhNmE3YTQyZDBiYWE3ZjI2OTZiMGQyOC4u
OWEzNzQwMGE2YjI2MWM3NWNhMGI5YTI0ZTk3OTJlMWFmZTFhZDUyNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGds
b2JhbEJ1ZmZlcklkZW50aWZpZXIgPSBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXIKIAogY2xh
c3MgUmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwcml2
YXRlOgotICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJ
dGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5h
bAorICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29k
ZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKICAgICB7
CiAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6RmlsbFBhdGgpOwogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0Owo=
</data>
<flag name="review"
          id="445434"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428119</attachid>
            <date>2021-05-09 02:08:54 -0700</date>
            <delta_ts>2021-05-09 02:16:31 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20881</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDBkYzVjODA3YTk5ZGQ2NjU3ZTRlZWFlMDFlMjc4NmU4NDFmZmI0OGQKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MDI6MDE6NDUgMjAyMSAtMDcwMAoKICAgIFBhcnQgNwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmY0YmQwZTEx
YjIuLjA1NjA0OTU0ODBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA3OiBNaWdyYXRl
IEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBhIGNvbnN0IFZhcmlh
bnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQz
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgYSBuZXcgVmFyaWFudCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgRGlzcGxheUxp
c3QgaXRlbSB0eXBlcywgbmFtZWQgRGlzcGxheUxpc3RJdGVtLiBJdCBhbHNvIG1pZ3JhdGVzCisg
ICAgICAgIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byB0aGlzIG5l
dyBWYXJpYW50LgorCisgICAgICAgIFRoZSBtYWpvciBiZW5lZml0IG9mIHRoaXMgaXMgdGhhdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKCkgbm8gbG9uZ2VyIGhhcyB0byBoYXZl
IGEgYmlnIHRhYmxlIG9mIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtIHR5cGVzIGluc2lkZSBp
dC4gQWxzbywgd2UgY2FuIGVudGlyZWx5IGRlbGV0ZSB0aGUgZGVjb2RlQW5kQ3JlYXRlKCkgZnVu
Y3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0Ojpjb3B5SW50byk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2FmZUNvcHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5o
OgorCiAyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3Ig
cGFydCA2OiBNaWdyYXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0
byBhIGNvbnN0IFZhcmlhbnQmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCmluZGV4IDVhNzI1MDE0MTU1MC4uZWZlYjUwZjA2Y2Y2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlIDx3dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxOSw2ICs2MjAsMzggQEAg
Ym9vbCBzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uLCBjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mIHNvdXJjZSkKICAgICB9LCBzb3VyY2UpOwogfQogCitib29sIHNhZmVDb3B5KGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYgc291cmNlLCBJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKQoreworICAgIHJl
dHVybiBXVEY6OnZpc2l0KFsmXShjb25zdCBhdXRvJiBzb3VyY2UpIC0+IGJvb2wgeworICAgICAg
ICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFuZFJl
ZmVyZW5jZTxkZWNsdHlwZShzb3VyY2UpPjo6dHlwZTsKKyAgICAgICAgY29uc3RleHByIGF1dG8g
aXRlbVR5cGUgPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZTsKKyAgICAgICAgZGVzdGlu
YXRpb24uZGF0YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKKyAgICAgICAg
YXV0byBpdGVtT2Zmc2V0ID0gZGVzdGluYXRpb24uZGF0YSArIHNpemVvZih1aW50NjRfdCk7Cisg
ICAgICAgIHJldHVybiBjb3B5SW50bzxEaXNwbGF5TGlzdEl0ZW1UeXBlPihpdGVtT2Zmc2V0LCBz
b3VyY2UpOworICAgIH0sIHNvdXJjZSk7Cit9CisKK09wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4g
c2FmZUNvcHkoSXRlbUhhbmRsZSBzb3VyY2UpCit7CisgICAgdXNpbmcgU2VxdWVuY2UgPSBicmln
YW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0cmRpZmZfdDwwPiwgV1RGOjp2YXJpYW50X3Np
emU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJ
dGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShhdXRvJiYg
dHlwZSkgeworICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFuZFJlZmVy
ZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVzaW5nIERpc3BsYXlM
aXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2YWx1ZSwgRGlzcGxh
eUxpc3RJdGVtPjsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUoKSAhPSBEaXNwbGF5TGlzdEl0
ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGRp
c3BsYXlMaXN0SXRlbSA9IHNvdXJjZS5nZXQ8RGlzcGxheUxpc3RJdGVtVHlwZT4oKTsKKyAgICAg
ICAgaWYgKGlzVmFsaWQoZGlzcGxheUxpc3RJdGVtKSkgeworICAgICAgICAgICAgQVNTRVJUKCFy
ZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gRGlzcGxheUxpc3RJdGVtKFdURk1vdmUoZGlz
cGxheUxpc3RJdGVtKSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVzJiYgaGFuZGxlcykK
ICAgICA6IG1fcmVhZE9ubHlCdWZmZXJzKFdURk1vdmUoaGFuZGxlcykpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYjk5MTc1N2MyMmRjLi5iZDVlY2Y2
Y2IxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTg0
LDYgKzg0LDkgQEAgc3RydWN0IEl0ZW1IYW5kbGUgewogCiBib29sIHNhZmVDb3B5KEl0ZW1IYW5k
bGUgZGVzdGluYXRpb24sIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgc291cmNlKTsKIAorYm9vbCBz
YWZlQ29weShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHNvdXJjZSwgSXRlbUhhbmRsZSBkZXN0aW5h
dGlvbik7CitPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IHNhZmVDb3B5KEl0ZW1IYW5kbGUpOwor
CiBlbnVtIGNsYXNzIERpZENoYW5nZUl0ZW1CdWZmZXIgOiBib29sIHsgTm8sIFllcyB9OwogCiBj
bGFzcyBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCB7CkBAIC0xMjMsNyArMTI2LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoLCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0
dWFsIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0
ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7
CiB9OwogCiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEs
IGFuZCBjb25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBk
aXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggZTc2
Njc3MmJlZWFjLi41MDkyYWNjNDUwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAKQEAgLTg1LDkgKzg1LDExIEBAIHZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9y
Ojp1cGRhdGVDdXJyZW50SXRlbSgpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudCk7CiAg
ICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1
cnNvcilbMV07CiAgICAgICAgIGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6
ZW9mKHVpbnQ2NF90KTsKLSAgICAgICAgYXV0byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+
ZGVjb2RlSXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0pOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWRlY29kZWRJdGVtSGFuZGxlKSkK
LSAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgICAgICBtX2lzVmFsaWQgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKGF1dG8gZGVjb2RlZEl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3Rh
cnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlKSkgeworICAgICAgICAgICAgLy8gVGhpcyBj
b3B5IG9wZXJhdGlvbiBpcyB0ZW1wb3JhcnksIGFuZCB3aWxsIGJlIHJlbW92ZWQgYXMgYSBwYXJ0
IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCisgICAg
ICAgICAgICBtX2lzVmFsaWQgPSBzYWZlQ29weShkZWNvZGVkSXRlbS52YWx1ZSgpLCBJdGVtSGFu
ZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KTsKKyAgICAgICAgfQogCiAgICAgICAgIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7
CiAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90
KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0luTWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDcwNzgxOGIwZTc5
ZC4uYTU2NzkzNzc5MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3Qu
Y3BwCkBAIC00MSwxNSArNDEsMTIgQEAgdm9pZCBJbk1lbW9yeURpc3BsYXlMaXN0OjpXcml0aW5n
Q2xpZW50OjplbmNvZGVJdGVtSW5saW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYKICAgICBzYWZl
Q29weSh7IGxvY2F0aW9uIH0sIGRpc3BsYXlMaXN0SXRlbSk7CiB9CiAKLU9wdGlvbmFsPEl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xp
ZW50OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJ
dGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKK09wdGlvbmFsPERpc3BsYXlM
aXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdD
bGllbnQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgs
IEl0ZW1UeXBlIHR5cGUpCiB7CiAgICAgY29uc3QgSXRlbUhhbmRsZSBkYXRhSGFuZGxlIHsgY29u
c3RfY2FzdDx1aW50OF90Kj4oZGF0YSkgfTsKICAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIGRhdGFI
YW5kbGUudHlwZSgpID09IHR5cGUpOwogICAgIEFTU0VSVF9VTlVTRUQoZGF0YUxlbmd0aCwgZGF0
YUxlbmd0aCA+PSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoZGF0YUhhbmRsZS50eXBl
KCkpKTsKLSAgICBJdGVtSGFuZGxlIHJlc3VsdCB7IGhhbmRsZUxvY2F0aW9uIH07Ci0gICAgaWYg
KGRhdGFIYW5kbGUuc2FmZUNvcHkocmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzYWZlQ29weShkYXRhSGFuZGxlKTsK
IH0KIAogSW5NZW1vcnlEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1v
cnlEaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAppbmRleCAxY2MwOGFmYWJmZjIuLmU3YjhmMThm
NDk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZWFkaW5nQ2xpZW50IDog
cHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5
cGUsIHVpbnQ4X3QqKSBmaW5hbDsKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBX
QVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVt
VHlwZSkgZmluYWw7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTJlZmEzZjFiMDc0
Li5iZDNjNDRlMDRjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDc6IE1pZ3JhdGUgSXRl
bUJ1ZmZlclJlYWRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxlIHRvIGEgY29uc3QgVmFyaWFudCYK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDMxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUFuZENyZWF0ZSk6IERlbGV0ZWQuCisKIDIw
MjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDY6
IE1pZ3JhdGUgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxlIHRvIGEgY29u
c3QgVmFyaWFudCYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA4ZDk2NGYyYmRhMTYuLjkz
ZTFlYTUxMTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8d3RmL0JyaWdhbmQuaD4KICNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAgLTQ4OCwxMDYgKzQ4OSwyNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERp
c3BsYXlMaXN0OjpJdGVtQgogICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6
ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsK
IH0KIAotT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVS
TiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5k
bGVMb2NhdGlvbikKLXsKLSAgICAvKiBUaGlzIG5lZWRzIHRvIG1hdGNoICgxKSBpc0lubGluZUl0
ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwgKDIpIFJlbW90ZUltYWdlQnVmZmVyUHJv
eHk6OmVuY29kZUl0ZW0oKSwKLSAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2Vz
LgotICAgICAqIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9mIERpc3BsYXlMaXN0SXRlbXMu
aCBmb3Igd2h5LiAqLwotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVh
dGU8RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRp
b24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAg
cmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KGRhdGEsIGxlbmd0
aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAg
IHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxh
eUxpc3Q6OkRyYXdHbHlwaHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PihkYXRhLCBs
ZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRy
YXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0
aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFBhdGg+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9j
YXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFk
aWVudDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJl
Y3RXaXRoR3JhZGllbnQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAg
cmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoUm91bmRlZEhv
bGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVh
dGU8RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPihk
YXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxh
eUxpc3Q6OlNldExpbmVEYXNoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldFN0YXRlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGVhclNoYWRvdzoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcDoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0
aXZlSW1hZ2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0jaWYgRU5BQkxFKFZJ
REVPKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6
Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTY2FsZToK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNl
dExpbmVKb2luOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxF
KElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9r
ZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ry
b2tlUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK09wdGlvbmFsPERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlM
aXN0OjpJdGVtVHlwZSBpdGVtVHlwZSkKK3sKKyAgICB1c2luZyBTZXF1ZW5jZSA9IGJyaWdhbmQ6
Om1ha2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+LCBXVEY6OnZhcmlhbnRfc2l6ZTxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0aW9uYWw8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gcmVzdWx0OworICAgIGJyaWdhbmQ6OmZvcl9lYWNo
PFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKKyAgICAgICAgdXNpbmcgSSA9IHR5cGVuYW1l
IFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0eXBlOwor
ICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0
aXZlX3Q8STo6dmFsdWUsIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAg
IGlmIChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIURpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5s
aW5lSXRlbSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIURpc3BsYXlMaXN0SXRlbVR5cGU6Omlz
SW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKGF1dG8gZGlzcGxheUxpc3RJdGVtID0gSVBD
OjpEZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8RGlzcGxheUxpc3RJdGVtVHlwZT4oZGF0YSwg
bGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSB7IFdURk1vdmUoZGlzcGxheUxpc3RJdGVtLnZhbHVlKCkpIH07CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVz
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA3NDhjNGEyZDM0NTguLjM2MDY0ZjFlZDE1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC05MiwxOSArOTIsNyBAQCBwcml2YXRlOgogICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBzdGFydExpc3Rl
bmluZ0ZvcklQQygpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhfdCog
aGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURf
UkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxUPihkYXRhLCBsZW5ndGgpKSB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogV2ViS2l0MiBzaG91bGQgbm90IG5lZWQgdG8ga25vdyB0aGF0
IHRoZSBmaXJzdCA4IGJ5dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJlc2VydmVkIGZvciB0aGUgdHlw
ZS4KLSAgICAgICAgICAgIC8vIE5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0byBrZWVwIHRoaXMg
a25vd2xlZGdlIHdpdGhpbiBkaXNwbGF5IGxpc3QgY29kZSBpbiBXZWJDb3JlLgotICAgICAgICAg
ICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFQoV1RGTW92ZSgqaXRl
bSkpOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQorICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNv
ZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5n
RGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNp
emVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYsIEdQVVByb2Nlc3NX
YWtldXBSZWFzb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGY3ZjFiNDNkN2EyNC4uNmRkNDI1ZTU5OGE2IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUt
MDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBb
R1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDc6IE1pZ3Jh
dGUgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxlIHRvIGEgY29uc3QgVmFy
aWFudCYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NDMxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisKIDIwMjEtMDUtMDkgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3Nd
IFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDY6IE1pZ3JhdGUgSXRlbUJ1ZmZl
cldyaXRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxlIHRvIGEgY29uc3QgVmFyaWFudCYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcAppbmRleCBiYzdhODQ5YWQ3NGUuLjVjYmZkMmQ0NDRiMyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAt
MTc3LDEyICsxNzcsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50
KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIGZp
bmFsCisgICAgICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJO
IGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1U
eXBlIHR5cGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJ
dGVtVHlwZTo6U3Ryb2tlUGF0aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwg
c2l6ZW9mKHNpemVfdCkpOwotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVv
Zih1aW50NjRfdCkpIFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBz
aXplX3QqPihkYXRhKV0pOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19
OworICAgICAgICAgICAgcmV0dXJuIERpc3BsYXlMaXN0SXRlbShTdHJva2VQYXRoKG1faXRlbXNb
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBjb25zdCBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwCmluZGV4IDQxYWMzOWU1MzZkOC4uMmI2NTliNmY3YjJlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgSXRlbUJ1ZmZlcklkZW50aWZpZXIgZ2xv
YmFsQnVmZmVySWRlbnRpZmllciA9IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcgogCiBjbGFz
cyBSZWFkaW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKIHByaXZh
dGU6Ci0gICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0
ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCopIGZpbmFs
CisgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2Rl
SXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlKSBmaW5hbAogICAgIHsK
ICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpGaWxsUGF0aCk7CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428120</attachid>
            <date>2021-05-09 02:19:50 -0700</date>
            <delta_ts>2021-05-09 03:10:33 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20270</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDhhYzBmZWM0ZTdlMTMxYjk5NzZjOGZlOWIwZTYyNzBlZTk1MDE1NjEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MDI6MDE6NDUgMjAyMSAtMDcwMAoKICAgIFBhcnQgNwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmY0YmQwZTEx
YjIuLjA1NjA0OTU0ODBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA3OiBNaWdyYXRl
IEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBhIGNvbnN0IFZhcmlh
bnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQz
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgYSBuZXcgVmFyaWFudCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgRGlzcGxheUxp
c3QgaXRlbSB0eXBlcywgbmFtZWQgRGlzcGxheUxpc3RJdGVtLiBJdCBhbHNvIG1pZ3JhdGVzCisg
ICAgICAgIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byB0aGlzIG5l
dyBWYXJpYW50LgorCisgICAgICAgIFRoZSBtYWpvciBiZW5lZml0IG9mIHRoaXMgaXMgdGhhdCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKCkgbm8gbG9uZ2VyIGhhcyB0byBoYXZl
IGEgYmlnIHRhYmxlIG9mIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtIHR5cGVzIGluc2lkZSBp
dC4gQWxzbywgd2UgY2FuIGVudGlyZWx5IGRlbGV0ZSB0aGUgZGVjb2RlQW5kQ3JlYXRlKCkgZnVu
Y3Rpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZp
b3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0Ojpjb3B5SW50byk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2FmZUNvcHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5o
OgorCiAyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3Ig
cGFydCA2OiBNaWdyYXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0
byBhIGNvbnN0IFZhcmlhbnQmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCmluZGV4IDVhNzI1MDE0MTU1MC4uOWQ0YjIyOTQwYTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlIDx3dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxOSw2ICs2MjAsMjcgQEAg
Ym9vbCBzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uLCBjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mIHNvdXJjZSkKICAgICB9LCBzb3VyY2UpOwogfQogCitPcHRpb25hbDxEaXNwbGF5TGlzdEl0
ZW0+IHNhZmVDb3B5KEl0ZW1IYW5kbGUgc291cmNlKQoreworICAgIHVzaW5nIFNlcXVlbmNlID0g
YnJpZ2FuZDo6bWFrZV9zZXF1ZW5jZTxicmlnYW5kOjpwdHJkaWZmX3Q8MD4sIFdURjo6dmFyaWFu
dF9zaXplPERpc3BsYXlMaXN0SXRlbT46OnZhbHVlPjsKKworICAgIE9wdGlvbmFsPERpc3BsYXlM
aXN0SXRlbT4gcmVzdWx0OworICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0
byYmIHR5cGUpIHsKKyAgICAgICAgdXNpbmcgSSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRS
ZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0eXBlOworICAgICAgICB1c2luZyBEaXNw
bGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8STo6dmFsdWUsIERp
c3BsYXlMaXN0SXRlbT47CisKKyAgICAgICAgaWYgKHNvdXJjZS50eXBlKCkgIT0gRGlzcGxheUxp
c3RJdGVtVHlwZTo6aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0
byBkaXNwbGF5TGlzdEl0ZW0gPSBzb3VyY2UuZ2V0PERpc3BsYXlMaXN0SXRlbVR5cGU+KCk7Cisg
ICAgICAgIGlmIChpc1ZhbGlkKGRpc3BsYXlMaXN0SXRlbSkpIHsKKyAgICAgICAgICAgIEFTU0VS
VCghcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IERpc3BsYXlMaXN0SXRlbShXVEZNb3Zl
KGRpc3BsYXlMaXN0SXRlbSkpOworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogSXRlbUJ1ZmZlcjo6SXRlbUJ1ZmZlcihJdGVtQnVmZmVySGFuZGxlcyYmIGhhbmRs
ZXMpCiAgICAgOiBtX3JlYWRPbmx5QnVmZmVycyhXVEZNb3ZlKGhhbmRsZXMpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGI5OTE3NTdjMjJkYy4uMzM2
YTIxYTI1NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBA
IC04Myw2ICs4Myw3IEBAIHN0cnVjdCBJdGVtSGFuZGxlIHsKIH07CiAKIGJvb2wgc2FmZUNvcHko
SXRlbUhhbmRsZSBkZXN0aW5hdGlvbiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBzb3VyY2UpOwor
T3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBzYWZlQ29weShJdGVtSGFuZGxlKTsKIAogZW51bSBj
bGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIApAQCAtMTIzLDcg
KzEyNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxJ
dGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9u
KSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VE
X1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBJdGVtVHlwZSkgPSAwOwogfTsKIAogLy8gQW4gSXRlbUJ1ZmZlciBjb250YWlucyBkaXNwbGF5
IGxpc3QgaXRlbSBkYXRhLCBhbmQgY29uc2lzdHMgb2YgYSByZWFkd3JpdGUgSXRlbUJ1ZmZlckhh
bmRsZSAodG8gd2hpY2ggZGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0
b3IuY3BwCmluZGV4IGU3NjY3NzJiZWVhYy4uZWFlYTM0ODE2ZGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCkBAIC04NSw5ICs4NSwxMSBAQCB2b2lkIERpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgICAgICBSRUxFQVNFX0FT
U0VSVChjbGllbnQpOwogICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0
PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOwogICAgICAgICBhdXRvKiBzdGFydE9mRGF0YSA9IG1f
Y3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7Ci0gICAgICAgIGF1dG8gZGVjb2RlZEl0ZW1I
YW5kbGUgPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1U
eXBlLCBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFkZWNv
ZGVkSXRlbUhhbmRsZSkpCi0gICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAg
bV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgIGlmIChhdXRvIGRlY29kZWRJdGVtID0gY2xpZW50
LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSkpIHsKKyAgICAg
ICAgICAgIC8vIFRoaXMgY29weSBvcGVyYXRpb24gaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIGFzIGEgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNTYwLgorICAgICAgICAgICAgbV9pc1ZhbGlkID0gc2FmZUNvcHkoSXRlbUhhbmRsZSB7
IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgZGVjb2RlZEl0ZW0udmFsdWUoKSk7CisgICAgICAg
IH0KIAogICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oaXRlbVR5cGUpOwogICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAq
IHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3Qp
LCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApp
bmRleCA3MDc4MThiMGU3OWQuLmE1Njc5Mzc3OTIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1l
bW9yeURpc3BsYXlMaXN0LmNwcApAQCAtNDEsMTUgKzQxLDEyIEBAIHZvaWQgSW5NZW1vcnlEaXNw
bGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6ZW5jb2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mCiAgICAgc2FmZUNvcHkoeyBsb2NhdGlvbiB9LCBkaXNwbGF5TGlzdEl0ZW0pOwogfQog
Ci1PcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5
TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCitP
cHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3Bs
YXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKQogewogICAgIGNvbnN0IEl0ZW1IYW5kbGUg
ZGF0YUhhbmRsZSB7IGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEpIH07CiAgICAgQVNTRVJUX1VO
VVNFRCh0eXBlLCBkYXRhSGFuZGxlLnR5cGUoKSA9PSB0eXBlKTsKICAgICBBU1NFUlRfVU5VU0VE
KGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVz
KGRhdGFIYW5kbGUudHlwZSgpKSk7Ci0gICAgSXRlbUhhbmRsZSByZXN1bHQgeyBoYW5kbGVMb2Nh
dGlvbiB9OwotICAgIGlmIChkYXRhSGFuZGxlLnNhZmVDb3B5KHJlc3VsdCkpCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc2FmZUNv
cHkoZGF0YUhhbmRsZSk7CiB9CiAKIEluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxh
eUxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKaW5kZXggMWNjMDhh
ZmFiZmYyLi5lN2I4ZjE4ZjQ5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxp
c3QuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
UmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFs
PEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QsIEl0ZW1UeXBlLCB1aW50OF90KikgZmluYWw7CisgICAgICAgIE9wdGlvbmFsPERp
c3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCosIHNpemVfdCwgSXRlbVR5cGUpIGZpbmFsOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDEyZWZhM2YxYjA3NC4uYmQzYzQ0ZTA0YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFy
dCA3OiBNaWdyYXRlIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBh
IGNvbnN0IFZhcmlhbnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjQzMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVBbmRDcmVhdGUp
OiBEZWxldGVkLgorCiAyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6
SXRlcmF0b3IgcGFydCA2OiBNaWdyYXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZyb20gSXRl
bUhhbmRsZSB0byBhIGNvbnN0IFZhcmlhbnQmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
OGQ5NjRmMmJkYTE2Li45M2UxZWE1MTE5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPHd0Zi9CcmlnYW5kLmg+
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC00ODgsMTA2ICs0
ODksMjcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZShEaXNwbGF5TGlzdDo6SXRlbUIKICAgICAgICAgd2FrZVVwQW5kQXBwbHlE
aXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9w
dCktPmFyZ3VtZW50cyk7CiB9CiAKLU9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBX
QVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlw
ZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCi17Ci0gICAgLyogVGhpcyBuZWVkcyB0byBtYXRj
aCAoMSkgaXNJbmxpbmVJdGVtKCkgaW4gRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAsICgyKSBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5OjplbmNvZGVJdGVtKCksCi0gICAgICogYW5kICgzKSBhbGwgdGhl
ICJzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlk
dWFsIGl0ZW0gY2xhc3Nlcy4KLSAgICAgKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiBE
aXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoeS4gKi8KLQotICAgIHN3aXRjaCAodHlwZSkgewotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihkYXRhLCBsZW5n
dGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xp
cFBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBQ
YXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRD
cmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRs
ZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmlu
Z1JlY3RzOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3
Rm9jdXNSaW5nUmVjdHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4
dDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0xpbmVz
Rm9yVGV4dD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbENvbXBvc2l0ZWRSZWN0
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxh
eUxpc3Q6OkZpbGxQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aENvbG9yPihkYXRhLCBs
ZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OkZpbGxSZWN0V2l0aEdyYWRpZW50PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGU6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEsIGxl
bmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQ
dXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OlB1dEltYWdlRGF0YT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTZXRMaW5lRGFzaD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0YXRlOgotICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OlN0cm9rZVBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotI2lmIFVTRShDRykK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotI2VuZGlmCi0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkNsaXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3UGF0dGVybjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotI2Vu
ZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0OgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVy
OgotI2lmIEVOQUJMRShWSURFTykKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFp
bnRGcmFtZUZvck1lZGlhOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlJlc3RvcmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlJvdGF0ZToKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2F2ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U2NhbGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldENUTToK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3Ry
b2tlVGhpY2tuZXNzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VFbGxp
cHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotI2VuZGlmCi0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlN0cm9rZUxpbmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOiB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CitPcHRpb25h
bDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgaXRlbVR5cGUpCit7CisgICAgdXNpbmcgU2Vx
dWVuY2UgPSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0cmRpZmZfdDwwPiwgV1RG
Ojp2YXJpYW50X3NpemU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT46OnZhbHVlPjsKKwor
ICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IHJlc3VsdDsKKyAgICBi
cmlnYW5kOjpmb3JfZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8mJiB0eXBlKSB7CisgICAgICAgIHVz
aW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHR5cGUp
Pjo6dHlwZTo6dHlwZTsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6
dmFyaWFudF9hbHRlcm5hdGl2ZV90PEk6OnZhbHVlLCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJ
dGVtPjsKKworICAgICAgICBpZiAoaXRlbVR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRl
bVR5cGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVNTRVJUKCFEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pOworICAgICAgICBpZiBjb25zdGV4cHIgKCFEaXNwbGF5
TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGRpc3Bs
YXlMaXN0SXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PERpc3BsYXlMaXN0
SXRlbVR5cGU+KGRhdGEsIGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0geyBXVEZNb3ZlKGRpc3BsYXlMaXN0SXRlbS52
YWx1ZSgpKSB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVSZW5kZXJp
bmdSZXNvdXJjZVJlcXVlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNzQ4YzRhMmQzNDU4
Li4zNjA2NGYxZWQxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtOTIsMTkgKzkyLDcgQEAg
cHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAg
IHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5k
bGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCi0gICAgewotICAgICAg
ICBpZiAoYXV0byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8VD4oZGF0
YSwgbGVuZ3RoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlYktpdDIgc2hvdWxkIG5vdCBu
ZWVkIHRvIGtub3cgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhdCB0aGUgaGFuZGxlIGFyZSByZXNl
cnZlZCBmb3IgdGhlIHR5cGUuCi0gICAgICAgICAgICAvLyBOZWVkIHRvIGZpZ3VyZSBvdXQgYSB3
YXkgdG8ga2VlcCB0aGlzIGtub3dsZWRnZSB3aXRoaW4gZGlzcGxheSBsaXN0IGNvZGUgaW4gV2Vi
Q29yZS4KLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0X3Qp
KSBUKFdURk1vdmUoKml0ZW0pKTsKLSAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlv
biB9fTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VO
VVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJyaWRlOwogCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXQoY29uc3QgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKTsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW5pdGlh
bERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmN2YxYjQzZDdhMjQuLjZkZDQyNWU1OThhNiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0
b3IgcGFydCA3OiBNaWdyYXRlIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRs
ZSB0byBhIGNvbnN0IFZhcmlhbnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQzMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorCiAyMDIx
LTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA2OiBN
aWdyYXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBhIGNvbnN0
IFZhcmlhbnQmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYmM3YTg0OWFkNzRlLi41Y2JmZDJkNDQ0YjMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxp
c3RUZXN0cy5jcHAKQEAgLTE3NywxMiArMTc3LDExIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywg
SXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0
aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhh
bmRsZUxvY2F0aW9uKSBmaW5hbAorICAgICAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBF
WFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOwogICAgICAgICAgICAgRVhQRUNU
X0VRKGRhdGFMZW5ndGgsIHNpemVvZihzaXplX3QpKTsKLSAgICAgICAgICAgIG5ldyAoaGFuZGxl
TG9jYXRpb24gKyBzaXplb2YodWludDY0X3QpKSBTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKTsKLSAgICAgICAgICAgIHJldHVybiB7eyBo
YW5kbGVMb2NhdGlvbiB9fTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5TGlzdEl0ZW0oU3Ry
b2tlUGF0aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSkp
OwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1z
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3Bs
YXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCA0MWFjMzllNTM2ZDguLjJiNjU5YjZmN2IyZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nn
L0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIEl0ZW1CdWZm
ZXJJZGVudGlmaWVyIGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIgPSBJdGVtQnVmZmVySWRlbnRpZmll
cjo6Z2VuZXIKIAogY2xhc3MgUmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGlu
Z0NsaWVudCB7CiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VE
X1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUs
IHVpbnQ4X3QqKSBmaW5hbAorICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVT
RURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUgdHlw
ZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6RmlsbFBh
dGgpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428122</attachid>
            <date>2021-05-09 03:12:02 -0700</date>
            <delta_ts>2021-05-09 03:12:02 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-224314-20210509031201.patch</filename>
            <type>text/plain</type>
            <size>21063</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNGJkMGUxMWIyODZi
NTY1MWFlMTQ5M2UwZTBjZDBhNTViZmZkMy4uMzgyMWIyY2QyMThjNjhlN2UxYWJjMDQzNTU4ZmUz
ZjQwMGZiOTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA1LTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA3OiBNaWdyYXRlIEl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBhIGNvbnN0IFZhcmlhbnQmCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgYSBuZXcgVmFyaWFudCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgRGlzcGxheUxpc3QgaXRlbSB0
eXBlcywgbmFtZWQgRGlzcGxheUxpc3RJdGVtLiBJdCBhbHNvIG1pZ3JhdGVzCisgICAgICAgIEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byB0aGlzIG5ldyBWYXJpYW50
LgorCisgICAgICAgIFRoZSBtYWpvciBiZW5lZml0IG9mIHRoaXMgaXMgdGhhdCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKCkgbm8gbG9uZ2VyIGhhcyB0byBoYXZlIGEgYmlnIHRh
YmxlIG9mIGRpc3BsYXkgbGlzdAorICAgICAgICBpdGVtIHR5cGVzIGluc2lkZSBpdC4gQWxzbywg
d2UgY2FuIGVudGlyZWx5IGRlbGV0ZSB0aGUgZGVjb2RlQW5kQ3JlYXRlKCkgZnVuY3Rpb24uCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0
b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpjb3B5
SW50byk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2FmZUNvcHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9y
eURpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbk1lbW9y
eURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oOgorCiAyMDIx
LTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA2OiBN
aWdyYXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBhIGNvbnN0
IFZhcmlhbnQmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEyZWZhM2YxYjA3NGE0MzMyZjY1M2FmYTEyN2UyMDFkNWJm
NTVlMDguLjRhOGJmMmJhMmE4MTVjYWZiZjQ3ZjAzYWNlMDI0MDQ2YTNiOGEwM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlM
aXN0OjpJdGVyYXRvciBwYXJ0IDc6IE1pZ3JhdGUgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgZnJv
bSBJdGVtSGFuZGxlIHRvIGEgY29uc3QgVmFyaWFudCYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDMxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRl
Y29kZUFuZENyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5
IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDY6IE1pZ3JhdGUgSXRlbUJ1ZmZlcldyaXRpbmdD
bGllbnQgZnJvbSBJdGVtSGFuZGxlIHRvIGEgY29uc3QgVmFyaWFudCYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggNWE3MjUwMTQxNTUwMjQ0ZmNmMGU1
YWQ2ZDY1ZjdhNDE0NzY5YWMyMi4uOWQ0YjIyOTQwYTJkNDQ2ZmQ3YmI2MzcwYzhmMDE5ZmVjYmM0
ZGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisjaW5jbHVkZSA8d3RmL0JyaWdh
bmQuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC02MTksNiArNjIwLDI3IEBAIGJvb2wgc2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlv
biwgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBzb3VyY2UpCiAgICAgfSwgc291cmNlKTsKIH0KIAor
T3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBzYWZlQ29weShJdGVtSGFuZGxlIHNvdXJjZSkKK3sK
KyAgICB1c2luZyBTZXF1ZW5jZSA9IGJyaWdhbmQ6Om1ha2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRy
ZGlmZl90PDA+LCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZT47CisK
KyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IHJlc3VsdDsKKyAgICBicmlnYW5kOjpmb3Jf
ZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8mJiB0eXBlKSB7CisgICAgICAgIHVzaW5nIEkgPSB0eXBl
bmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHR5cGUpPjo6dHlwZTo6dHlw
ZTsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRl
cm5hdGl2ZV90PEk6OnZhbHVlLCBEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIGlmIChzb3Vy
Y2UudHlwZSgpICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGF1dG8gZGlzcGxheUxpc3RJdGVtID0gc291cmNlLmdldDxEaXNw
bGF5TGlzdEl0ZW1UeXBlPigpOworICAgICAgICBpZiAoaXNWYWxpZChkaXNwbGF5TGlzdEl0ZW0p
KSB7CisgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBE
aXNwbGF5TGlzdEl0ZW0oV1RGTW92ZShkaXNwbGF5TGlzdEl0ZW0pKTsKKyAgICAgICAgfQorICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEl0ZW1CdWZmZXI6Okl0ZW1CdWZmZXIoSXRl
bUJ1ZmZlckhhbmRsZXMmJiBoYW5kbGVzKQogICAgIDogbV9yZWFkT25seUJ1ZmZlcnMoV1RGTW92
ZShoYW5kbGVzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApp
bmRleCBiOTkxNzU3YzIyZGM3N2UwZDg3YmMzYzVjYjFkMDE5ZmQwN2M0Mzg2Li4zMzZhMjFhMjU0
MTE0NGM2OThjZThkYWFhZjcyZDM0OTg3YjhiNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC04Myw2ICs4Myw3IEBAIHN0cnVjdCBJdGVtSGFuZGxlIHsK
IH07CiAKIGJvb2wgc2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbiwgY29uc3QgRGlzcGxh
eUxpc3RJdGVtJiBzb3VyY2UpOworT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBzYWZlQ29weShJ
dGVtSGFuZGxlKTsKIAogZW51bSBjbGFzcyBEaWRDaGFuZ2VJdGVtQnVmZmVyIDogYm9vbCB7IE5v
LCBZZXMgfTsKIApAQCAtMTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2Rl
SXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUsIHVp
bnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxEaXNwbGF5
TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSkgPSAwOwogfTsKIAogLy8gQW4gSXRlbUJ1
ZmZlciBjb250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLCBhbmQgY29uc2lzdHMgb2YgYSBy
ZWFkd3JpdGUgSXRlbUJ1ZmZlckhhbmRsZSAodG8gd2hpY2ggZGlzcGxheQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCmluZGV4IGU3NjY3NzJiZWVhYzE2NTY2ZDE0YjQ0
MGRkYjI2NmVjN2Q2NjZjYzAuLmVhZWEzNDgxNmRiODQyYjQ3MjZiMDI4MDRmN2FhZjc2YmYyNmQy
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTg1LDkg
Kzg1LDExIEBAIHZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSgp
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudCk7CiAgICAgICAgIGF1dG8gZGF0YUxlbmd0
aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07CiAgICAgICAgIGF1
dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICAg
ICAgYXV0byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+ZGVjb2RlSXRlbShzdGFydE9mRGF0
YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwotICAgICAg
ICBpZiAoVU5MSUtFTFkoIWRlY29kZWRJdGVtSGFuZGxlKSkKLSAgICAgICAgICAgIG1faXNWYWxp
ZCA9IGZhbHNlOworICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8g
ZGVjb2RlZEl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgs
IGl0ZW1UeXBlKSkgeworICAgICAgICAgICAgLy8gVGhpcyBjb3B5IG9wZXJhdGlvbiBpcyB0ZW1w
b3JhcnksIGFuZCB3aWxsIGJlIHJlbW92ZWQgYXMgYSBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCisgICAgICAgICAgICBtX2lzVmFsaWQgPSBz
YWZlQ29weShJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LCBkZWNvZGVkSXRl
bS52YWx1ZSgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1b
MF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7CiAgICAgICAgIG1fY3VycmVudEl0
ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxl
T2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVt
b3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDcwNzgxOGIwZTc5ZDVhMDM4NWMwMmI3YzU5ZTVjMzFh
Njg3NDZiMzEuLjM0MmIxN2JlNzExMmYxOWMyOTFjNjlkYTI1ODM3ZTY4MzFlMDZjYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1l
bW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKQEAgLTQxLDE1ICs0MSwxMiBA
QCB2b2lkIEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGllbnQ6OmVuY29kZUl0ZW1Jbmxp
bmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJgogICAgIHNhZmVDb3B5KHsgbG9jYXRpb24gfSwgZGlz
cGxheUxpc3RJdGVtKTsKIH0KIAotT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVU
VVJOIEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ6OmRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3Qq
IGhhbmRsZUxvY2F0aW9uKQorT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9S
RVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVjb2RlSXRlbShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkKIHsKICAg
ICBjb25zdCBJdGVtSGFuZGxlIGRhdGFIYW5kbGUgeyBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRh
KSB9OwogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgZGF0YUhhbmRsZS50eXBlKCkgPT0gdHlwZSk7
CiAgICAgQVNTRVJUX1VOVVNFRChkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoID49IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhkYXRhSGFuZGxlLnR5cGUoKSkpOwotICAgIEl0ZW1IYW5kbGUg
cmVzdWx0IHsgaGFuZGxlTG9jYXRpb24gfTsKLSAgICBpZiAoZGF0YUhhbmRsZS5zYWZlQ29weShy
ZXN1bHQpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHNhZmVDb3B5KGRhdGFIYW5kbGUpOwogfQogCiBJbk1lbW9yeURpc3BsYXlM
aXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0KCkKQEAgLTYyLDcgKzU5LDYgQEAgSW5NZW1vcnlEaXNw
bGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCiAKIEluTWVtb3J5RGlzcGxheUxpc3Q6On5J
bk1lbW9yeURpc3BsYXlMaXN0KCkKIHsKLSAgICBhdXRvIGVuZCA9IHRoaXMtPmVuZCgpOwogICAg
IGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgewogICAgICAgICBhdXRvIGl0ZW0g
PSBkaXNwbGF5TGlzdEl0ZW0tPml0ZW07CiAgICAgICAgIEFTU0VSVChpdGVtKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9y
eURpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCmluZGV4IDFjYzA4YWZhYmZmMmRhNTdjMWMyZDE4
ZDg5NmZkY2Y5NWRjYWEzZDEuLmU3YjhmMThmNDk0N2JjMzgwYzI1MGJlZmMzNDQ4OTcxNDgyYmNj
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVhZGluZ0NsaWVudCA6IHB1
YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBl
LCB1aW50OF90KikgZmluYWw7CisgICAgICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FS
Tl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5
cGUpIGZpbmFsOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggOGQ5NjRmMmJkYTE2Mzk5ZmZjNTk4NTkwOGIzYmEyMjNlODQ5OGZkMC4uOTNlMWVhNTExOTJh
NTRkZDJmOWFkZTZhYTRhMjRkYjU5OTY0MjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8d3RmL0JyaWdhbmQu
aD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAgLTQ4OCwxMDYg
KzQ4OSwyNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQgogICAgICAgICB3YWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxs
b3B0KS0+YXJndW1lbnRzKTsKIH0KIAotT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+
IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0
eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKLXsKLSAgICAvKiBUaGlzIG5lZWRzIHRvIG1h
dGNoICgxKSBpc0lubGluZUl0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwgKDIpIFJl
bW90ZUltYWdlQnVmZmVyUHJveHk6OmVuY29kZUl0ZW0oKSwKLSAgICAgKiBhbmQgKDMpIGFsbCB0
aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2
aWR1YWwgaXRlbSBjbGFzc2VzLgotICAgICAqIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9m
IERpc3BsYXlMaXN0SXRlbXMuaCBmb3Igd2h5LiAqLwotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxl
bmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
bGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xp
cFBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFu
ZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNS
aW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRy
YXdGb2N1c1JpbmdSZWN0cz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxl
TG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JU
ZXh0OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3TGlu
ZXNGb3JUZXh0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVh
dGU8RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJl
Y3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6RmlsbFBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9j
YXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldExpbmVEYXNoPihkYXRhLCBsZW5ndGgsIGhhbmRs
ZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGU6Ci0g
ICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldFN0YXRlPihkYXRh
LCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6U3Ryb2tlUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENH
KQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGlu
ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhf
REFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0j
ZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZm
ZXI6Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQ
YWludEZyYW1lRm9yTWVkaWE6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6UmVzdG9yZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTY2FsZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RN
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTZXRNaXRlckxpbWl0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRT
dHJva2VUaGlja25lc3M6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVs
bGlwc2U6Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U3Ryb2tlTGluZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRl
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6IHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK09wdGlv
bmFsPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSBpdGVtVHlwZSkKK3sKKyAgICB1c2luZyBT
ZXF1ZW5jZSA9IGJyaWdhbmQ6Om1ha2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+LCBX
VEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+Owor
CisgICAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gcmVzdWx0OworICAg
IGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKKyAgICAgICAg
dXNpbmcgSSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlw
ZSk+Ojp0eXBlOjp0eXBlOworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RG
Ojp2YXJpYW50X2FsdGVybmF0aXZlX3Q8STo6dmFsdWUsIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dEl0ZW0+OworCisgICAgICAgIGlmIChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjpp
dGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIURpc3BsYXlM
aXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIURpc3Bs
YXlMaXN0SXRlbVR5cGU6OmlzSW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKGF1dG8gZGlz
cGxheUxpc3RJdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8RGlzcGxheUxp
c3RJdGVtVHlwZT4oZGF0YSwgbGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghcmVz
dWx0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB7IFdURk1vdmUoZGlzcGxheUxpc3RJdGVt
LnZhbHVlKCkpIH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRl
cmluZ1Jlc291cmNlUmVxdWVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA3NDhjNGEyZDM0
NTgzYTdlYTlkYmE3MTgyNDA0MmIxYmIyNGVmOGVlLi4zNjA2NGYxZWQxNTlkODRkZTJlNzdkY2Q3
NmUxZjk0MjhjMDdhNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTkyLDE5ICs5Miw3IEBA
IHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAg
ICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7CiAKLSAgICBPcHRpb25hbDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgb3ZlcnJpZGU7Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlQW5kQ3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQotICAgIHsKLSAgICAg
ICAgaWYgKGF1dG8gaXRlbSA9IElQQzo6RGVjb2Rlcjo6ZGVjb2RlU2luZ2xlT2JqZWN0PFQ+KGRh
dGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZWJLaXQyIHNob3VsZCBub3Qg
bmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDggYnl0ZXMgYXQgdGhlIGhhbmRsZSBhcmUgcmVz
ZXJ2ZWQgZm9yIHRoZSB0eXBlLgotICAgICAgICAgICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IGEg
d2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0aGluIGRpc3BsYXkgbGlzdCBjb2RlIGluIFdl
YkNvcmUuCi0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2NF90
KSkgVChXVEZNb3ZlKCppdGVtKSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRp
b24gfX07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Cisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBvdmVycmlkZTsKIAogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBuZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGluaXRp
YWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlJiwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjdmMWI0M2Q3YTI0ZThmYTY5NTQ2NGMwYmQ0MmFj
NTg2ODVkOWMwMC4uZjM5ZjFjYmJjODVjZTg1ODgyMzkzYjM0Y2MxNTBkM2IwOThhYTI3MSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0
b3IgcGFydCA3OiBNaWdyYXRlIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IGZyb20gSXRlbUhhbmRs
ZSB0byBhIGNvbnN0IFZhcmlhbnQmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQzMTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorCiAyMDIxLTA1
LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA2OiBNaWdy
YXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZyb20gSXRlbUhhbmRsZSB0byBhIGNvbnN0IFZh
cmlhbnQmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYmM3YTg0OWFkNzRlNGE2NDM1ODgxOTQ3OGZlNDM4MzU3
MWU4NzUyYS4uNWNiZmQyZDQ0NGIzYTg3YzE1OWQwNGFiZDJiMWJlODFjOWY0ODFhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcApAQCAtMTc3LDEyICsxNzcsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVt
QnVmZmVyQ2xpZW50KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25h
bDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxl
TG9jYXRpb24pIGZpbmFsCisgICAgICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFM
ZW5ndGgsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIEVYUEVD
VF9FUSh0eXBlLCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
ZGF0YUxlbmd0aCwgc2l6ZW9mKHNpemVfdCkpOwotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2Nh
dGlvbiArIHNpemVvZih1aW50NjRfdCkpIFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRs
ZUxvY2F0aW9uIH19OworICAgICAgICAgICAgcmV0dXJuIERpc3BsYXlMaXN0SXRlbShTdHJva2VQ
YXRoKG1faXRlbXNbKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBjb25zdCBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxp
c3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNw
bGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDQxYWMzOWU1MzZkODg3NmViNmRmZWJmMjMzYjk2NjM1
YzE0MDg5MDAuLjJiNjU5YjZmN2IyZWQ2ZThlMzE4MDExZDg3OWIwNDU5YTZlYWJjM2UgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRl
c3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNw
bGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBJdGVtQnVmZmVySWRl
bnRpZmllciBnbG9iYWxCdWZmZXJJZGVudGlmaWVyID0gSXRlbUJ1ZmZlcklkZW50aWZpZXI6Omdl
bmVyCiAKIGNsYXNzIFJlYWRpbmdDbGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGll
bnQgewogcHJpdmF0ZToKLSAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlLCB1aW50
OF90KikgZmluYWwKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JF
VFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUpIGZp
bmFsCiAgICAgewogICAgICAgICBFWFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OkZpbGxQYXRoKTsK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>