<?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>224306</bug_id>
          
          <creation_ts>2021-04-07 14:53:26 -0700</creation_ts>
          <short_desc>[GPU Process] Make ImageBuffer calculate its memoryCost() from its size</short_desc>
          <delta_ts>2021-04-13 13:19:29 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222880</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>dino</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748082</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-07 14:53:26 -0700</bug_when>
    <thetext>Currently ImageBuffer asks the ImageBufferBackend to return it. And in the case of the RemoteImageBufferProxy, we have to ensure is have been created in the GPU Process and its IOSurface or ShareableBitmap has been mapped in the Web Process. This is too complicated for something which can be calculated from the backend size and the bytesPerRow of the ImageBufferBackend. Also because the memoryCost of the ImageBuffer can be asked out of the main thread, the following assertion may fire:

ASSERTION FAILED: !m_impl || m_impl-&gt;wasConstructedOnMainThread() == isMainThread()
/Users/mmaxfield/Build/Products/Debug/usr/local/include/wtf/WeakPtr.h(107) : T *WTF::WeakPtr&lt;WebKit::RemoteRenderingBackendProxy&gt;::operator-&gt;() const [T = WebKit::RemoteRenderingBackendProxy, Counter = WTF::EmptyCounter]
1   0x509af3529 WTFCrash
2   0x4f33ab30b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x4f4e976fc WTF::WeakPtr&lt;WebKit::RemoteRenderingBackendProxy, WTF::EmptyCounter&gt;::operator-&gt;() const
4   0x4f4e97831 WebKit::RemoteImageBufferProxy&lt;WebKit::ImageBufferShareableMappedIOSurfaceBackend&gt;::ensureBackendCreated() const
5   0x4f3e109ba WebCore::ConcreteImageBuffer&lt;WebKit::ImageBufferShareableMappedIOSurfaceBackend&gt;::memoryCost() const
6   0x51f0b4358 WebCore::CanvasBase::memoryCost() const
7   0x51cac6f91 void WebCore::JSHTMLCanvasElement::visitChildrenImpl&lt;JSC::SlotVisitor&gt;(JSC::JSCell*, JSC::SlotVisitor&amp;)
8   0x51cac5bbd WebCore::JSHTMLCanvasElement::visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;)
9   0x50ad566b9 JSC::MethodTable::visitChildren(JSC::JSCell*, JSC::SlotVisitor&amp;) const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748083</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-07 14:53:51 -0700</bug_when>
    <thetext>&lt;rdar://75648337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748135</commentid>
    <comment_count>2</comment_count>
      <attachid>425450</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-07 16:30:57 -0700</bug_when>
    <thetext>Created attachment 425450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748162</commentid>
    <comment_count>3</comment_count>
      <attachid>425460</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-07 17:13:33 -0700</bug_when>
    <thetext>Created attachment 425460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748172</commentid>
    <comment_count>4</comment_count>
      <attachid>425465</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-07 17:48:16 -0700</bug_when>
    <thetext>Created attachment 425465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748197</commentid>
    <comment_count>5</comment_count>
      <attachid>425473</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-07 20:38:38 -0700</bug_when>
    <thetext>Created attachment 425473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748202</commentid>
    <comment_count>6</comment_count>
      <attachid>425476</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-07 20:57:04 -0700</bug_when>
    <thetext>Created attachment 425476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748325</commentid>
    <comment_count>7</comment_count>
      <attachid>425476</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-08 09:43:39 -0700</bug_when>
    <thetext>Comment on attachment 425476
Patch

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

&gt; Source/WebCore/platform/graphics/ImageBufferBackend.cpp:40
&gt; -    IntSize backendSize = IntSize(scaledSize);
&gt; -
&gt; -    Checked&lt;unsigned, RecordOverflow&gt; bytesPerRow = 4 * Checked&lt;unsigned, RecordOverflow&gt;(backendSize.width());
&gt; -    if (bytesPerRow.hasOverflowed())
&gt; -        return { };
&gt; -
&gt; -    CheckedSize numBytes = Checked&lt;unsigned, RecordOverflow&gt;(backendSize.height()) * bytesPerRow;
&gt; -    if (numBytes.hasOverflowed())
&gt; -        return { };
&gt; +    return IntSize(scaledSize);

Don&apos;t we need CheckedArithmetic to ensure that scaledSize doesn&apos;t overflow an IntSize? parameters.resolutionScale could be large.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:69
&gt; +    Checked&lt;unsigned, RecordOverflow&gt; bytesPerRow = (Checked&lt;unsigned, RecordOverflow&gt;(backendSize.width()) * 4);
&gt; +    ASSERT(!bytesPerRow.hasOverflowed());

The point of Checked&lt;&gt; is to catch things in release builds.

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:48
&gt; +    Checked&lt;unsigned, RecordOverflow&gt; bytesPerRow = 4 * Checked&lt;unsigned, RecordOverflow&gt;(backendSize.width());

Maybe now, certainly in the future, assuming a pixel is 4 bytes is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748891</commentid>
    <comment_count>8</comment_count>
      <attachid>425476</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-09 15:34:19 -0700</bug_when>
    <thetext>Comment on attachment 425476
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ImageBufferBackend.cpp:40
&gt;&gt; +    return IntSize(scaledSize);
&gt; 
&gt; Don&apos;t we need CheckedArithmetic to ensure that scaledSize doesn&apos;t overflow an IntSize? parameters.resolutionScale could be large.

I think we check this above in 

    if (scaledSize.isEmpty() || !scaledSize.isExpressibleAsIntSize())
        return { };

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:69
&gt;&gt; +    ASSERT(!bytesPerRow.hasOverflowed());
&gt; 
&gt; The point of Checked&lt;&gt; is to catch things in release builds.

Yes you are right. unsafeGet() below will call RecordOverflow::crash() if bytesPerRow.hasOverflowed() is true.

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:48
&gt;&gt; +    Checked&lt;unsigned, RecordOverflow&gt; bytesPerRow = 4 * Checked&lt;unsigned, RecordOverflow&gt;(backendSize.width());
&gt; 
&gt; Maybe now, certainly in the future, assuming a pixel is 4 bytes is wrong.

There are many places in the ImageBuffer code assume a pixel is 4 bytes. I think making bytesPerPixel be color-space dependent needs a lot of changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748892</commentid>
    <comment_count>9</comment_count>
      <attachid>425659</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-09 15:35:06 -0700</bug_when>
    <thetext>Created attachment 425659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749128</commentid>
    <comment_count>10</comment_count>
      <attachid>425715</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-11 17:02:38 -0700</bug_when>
    <thetext>Created attachment 425715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749832</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-13 13:19:27 -0700</bug_when>
    <thetext>Committed r275905 (236469@main): &lt;https://commits.webkit.org/236469@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425715.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425450</attachid>
            <date>2021-04-07 16:30:57 -0700</date>
            <delta_ts>2021-04-07 17:25:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224306-20210407163056.patch</filename>
            <type>text/plain</type>
            <size>27283</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMTA3YjQ0ZDY1YTM2
YjQ1NGEzNmI5NzYxZjJmZmE3NDM4ZmE5MS4uMzhiOTQwYjQ2ZTNkMjFiMGFhNGEyMGU2NTVlYTFl
YzE3YjViODJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTA0LTA3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBJbWFnZUJ1ZmZlciBjYWxjdWxhdGUgaXRzIG1lbW9yeUNvc3QoKSBmcm9tIGl0cyBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIHJvdW5kLXRyaXAgcHJvY2Vzc2VzIHRvIGdldCB0aGUgYmFja2VuZCBtZW1vcnlDb3N0KCks
IHdlIGNhbiAKKyAgICAgICAgY2FsY3VsYXRlIGl0IGZyb20gdGhlIHNpemUgYW5kIHRoZSBieXRl
cyBhbGlnbm1lbnQgb2YgZWFjaCByb3cgaW4gdGhlCisgICAgICAgIGJhY2tlbmQuIFRoZXNlIGFy
ZSBzdGF0aWMgdmFsdWVzIHNvIGluIHRoZSBjYXNlIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHks
CisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW5zdXJlIHRoZSBiYWNrZW5kIGlzIGNyZWF0
ZWQgaW4gR1BVUCBhbmQgaXQgaXMgbWFwcGVkCisgICAgICAgIGluIHRoZSBXZWIgUHJvY2Vzcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5k
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUJ5
dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3Vs
YXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Oklt
YWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1
bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIC0gVGhpcyBpcyB0aGUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGlz
IDQtYnl0ZXMgYWxpZ25lZCByb3dzLgorICAgICAgICAtIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6
ZSgpIHJldHVybnMgdGhlIHNpemUgd2hvc2UgYnl0ZXNQZXJSb3cgZG9lcyBub3QKKyAgICAgICAg
b3ZlcmZsb3cgdW5zaWduZWQgYW5kIHdob3NlIG1lbW9yeUNvc3QgZG9lcyBub3Qgbm90IG92ZXJm
bG93IHNpemVfdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3Vs
YXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpl
eHRlcm5hbE1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
Lmg6CisgICAgICAgIElPU3VyZmFjZUFsaWduUHJvcGVydHkoKSBpcyB1c2VkIHRvIGFsaWduIHRo
ZSBkZWZhdWx0IGJ5dGVzUGVyUm93IHRvIHRoZQorICAgICAgICBwcm9wZXIgSU9TdXJmYWNlIGFs
aWdubWVudC4KKwogMjAyMS0wNC0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciAyNzU1NzE6IGFkZCBkZWNsYXJh
dGlvbiBmb3IgbmV3IG1ldGhvZCAoYW5kIG1ha2UgdGhlIGNvbnN0bmVzcyBtYXRjaCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDI1OWIxOGZlYmZkZjU0YWFkOWNiODQ0ZjJjNTQwMzEwODA2ODgwNzUuLjdiYmRlZTY1
MGM3Y2NkNTU0NjE2NDc5OTA1M2YwYjk2OTEwZTRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMjEtMDQtMDcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEltYWdlQnVmZmVyIGNhbGN1bGF0ZSBpdHMgbWVtb3J5
Q29zdCgpIGZyb20gaXRzIHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29u
ZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToKKyAgICAgICAgKFdlYktpdDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyk6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3Vs
YXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Lmg6CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coKSBpcyB1
c2VkIHRvIGdldCB0aGUgYnl0ZXNQZXJSb3coKQorICAgICAgICBieSBnaXZpbmcgaXQgdGhlIHNj
YWxlZCBiYWNrZW5kIHNpemUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUpOgorICAgICAgICBVc2UgdGhlIG5ldyBuYW1lIG9mIHRoZSBmdW5jdGlvbiBjYWxjdWxh
dGVTYWZlQmFja2VuZFNpemUoKS4KKwogMjAyMS0wNC0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIHNvbWUgcG9zdC1sYW5kaW5nIGNv
bW1lbnRzIGFmdGVyIHIyNzU0OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCAzYTUxMTRiNzMyMGI3YzkwZDky
MDQ5NzZjZTQwMmZmMDA4ZWU1N2IwLi5kMGYwMGVjYzkyYTBlODdlYThmYjkxNzJlNDg5YTc5NmFk
MDFiMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDE2ICsxMTEsMTIgQEAgcHJvdGVjdGVkOgogCiAg
ICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYg
KGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0
dXJuIG1fYmFja2VuZC0+bWVtb3J5Q29zdCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVNZW1vcnlDb3N0KG1fcGFyYW1ldGVycyk7CiAg
ICAgfQogCiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlRXh0
ZXJuYWxNZW1vcnlDb3N0KG1fcGFyYW1ldGVycyk7CiAgICAgfQogCiAgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IgPSBD
b3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggMzc5NGRl
NzdiZTYzYTk5OWEzYjk3MWM3OGJmZGNlMWQ0Y2FhMmIwYi4uMThmYzU3NTYyOGQ0YzNjYWYzMWYx
MGM3NWY0NzFlZGIzY2FmZDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTkgKzMxLDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICA6IG1fcGFyYW1ldGVycyhw
YXJhbWV0ZXJzKQotewotfQotCi1JbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRl
QmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUp
CitJbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IHsg
Y2VpbGYocmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKSwgY2VpbGYocmVzb2x1dGlvblNj
YWxlICogc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IHsgY2Vp
bGYocGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUgKiBwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLndp
ZHRoKCkpLCBjZWlsZihwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSAqIHBhcmFtZXRlcnMubG9n
aWNhbFNpemUuaGVpZ2h0KCkpIH07CiAgICAgaWYgKHNjYWxlZFNpemUuaXNFbXB0eSgpIHx8ICFz
Y2FsZWRTaXplLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJbnRTaXplKHNjYWxlZFNpemUpOworICAgIHJl
dHVybiBJbnRTaXplKHNjYWxlZFNpemUpOworfQogCitJbnRTaXplIEltYWdlQnVmZmVyQmFja2Vu
ZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBi
YWNrZW5kU2l6ZTsKKyAgICAKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4g
Ynl0ZXNQZXJSb3cgPSA0ICogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tl
bmRTaXplLndpZHRoKCkpOwogICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC01NSw2ICs1NywzNSBAQCBJbnRTaXplIEltYWdlQnVmZmVy
QmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZQogICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKIH0KIAordW5zaWduZWQgSW1hZ2VCdWZmZXJC
YWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICBDaGVj
a2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cgPSAoQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLndpZHRoKCkpICogNCk7CisgICAgQVNT
RVJUKCFieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIGJ5dGVzUGVy
Um93LnVuc2FmZUdldCgpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxh
dGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFT
U0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsKKworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93
ID0gY2FsY3VsYXRlQnl0ZXNQZXJSb3cocGFyYW1ldGVycyk7CisKKyAgICBDaGVja2VkU2l6ZSBu
dW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAgICBBU1NFUlQoIW51bUJ5dGVzLmhhc092ZXJmbG93
ZWQoKSk7CisKKyAgICByZXR1cm4gbnVtQnl0ZXMudW5zYWZlR2V0KCk7Cit9CisKK0ltYWdlQnVm
ZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCisgICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKK3sKK30KKwogUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAg
IHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApp
bmRleCAzMWNlOTc3NTdiNWQyZjk4MDBiMTU3NjNjZTE2YmUxYzc4NjlmMTZjLi5hYWI2ZTFmOWIz
YmIyNWE5MzczMTM1NjE5NTQ3ODg1MDY4ZDVmYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3LDE2ICs4Nywx
NyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJh
Y2tlbmQoKSA9IGRlZmF1bHQ7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBj
YWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJhY2tlbmRT
aXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6
ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJh
bWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1v
cnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUV4
dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJikgeyByZXR1cm4gMDsgfQogCiAgICAg
dmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGZsdXNoQ29udGV4dCgpIHsgfQogCiAgICAgdmlydHVhbCBJbnRTaXplIGJhY2tlbmRT
aXplKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKLSAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgp
OyB9Ci0gICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1
cm4gMDsgfQotCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+
IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0g
MDsKIApAQCAtMTM2LDcgKzEzNyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXRUJDT1JF
X0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgdmly
dHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNrZW5kU2l6
ZSgpLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qg
eyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9wYXJhbWV0ZXJzKTsgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5hdGVzKFQgdCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA5ZDUzOGJlZmNkOGUwMzhm
MWExYTk3YTJhNzc4NDEzMGYzMjhjYTQ1Li4zMzZkMWNhNzc5YzViYTY3N2Q2OGYzZTRiMjhjMDcw
OGU1MTlhZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyAr
NDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoYwogewogICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXplIGJhY2tl
bmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFy
YW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuY3BwCmluZGV4IDZjM2I3Yzc0YjQ2ZTEyNmU3OWQ5ZjE2MjIwYjNhMmZhZDll
ZGQ5YTEuLjI3YmNhZDZhNDgxOGFiODVlMjdlMmRhNTc1MTVkNTcxYWQyOTY1MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDkgKzQxLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kKTsKIAotSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNh
bGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlKQorSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNh
ZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIEludFNp
emUgYmFja2VuZFNpemUgPSBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNp
emUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gSW1h
Z2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAg
ICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAt
NTQsNiArNTQsMzAgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1
bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwKICAgICByZXR1cm4gYmFja2Vu
ZFNpemU7CiB9CiAKK3Vuc2lnbmVkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3Vs
YXRlQnl0ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICB1bnNp
Z25lZCBieXRlc1BlclJvdyA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1Bl
clJvdyhwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0eShrSU9T
dXJmYWNlQnl0ZXNQZXJSb3csIGJ5dGVzUGVyUm93KTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisK
KyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRl
cnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNv
cmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgQVNT
RVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIG51bUJ5dGVzLnVu
c2FmZUdldCgpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxj
dWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sK
KyAgICByZXR1cm4gY2FsY3VsYXRlTWVtb3J5Q29zdChwYXJhbWV0ZXJzKTsKK30KKwogUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0
Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CkBAIC02Niw3ICs5
MCw3IEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFj
ZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRT
aXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1l
dGVycy5yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxh
dGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwNiw3ICsxMzAsNiBAQCBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbQogCiBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiB7Ci0KICAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSBtX3N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGlmIChtX25l
ZWRzU2V0dXBDb250ZXh0KSB7CiAgICAgICAgIG1fbmVlZHNTZXR1cENvbnRleHQgPSBmYWxzZTsK
QEAgLTEyNSwxOSArMTQ4LDkgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmJhY2tlbmRTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7CiB9CiAK
LXNpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKLX0KLQotc2l6ZV90IEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbWVtb3J5Q29zdCgpOwotfQotCiB1bnNpZ25lZCBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT5i
eXRlc1BlclJvdygpOworICAgIHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3BhcmFtZXRl
cnMpOwogfQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDQ4NTlkZjZmYzUyNWQ4NWMzMjhjMTQ1ZjA3OTE3ODM1
NjkwOWUyNWQuLjQ5MTUzNzEyMDAxM2QwMTE1NWZiOTg0MmY4ZTA4OGY1MGMyOTkxOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsOCArMzcsMTEgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIEltYWdlQnVm
ZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNr
ZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpOwotCisgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0
IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQZXJSb3co
Y29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29z
dChjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5h
bE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworICAgIAogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKQEAgLTUwLDkgKzUzLDYgQEAgcHVibGljOgogCiAg
ICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHNpemVf
dCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5
Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IGM3MTkzYmNj
YjlmZWIwNjFmYjQ0Y2QyOTVlNmIzYmQ0YjdlM2JkOTEuLjQ1ZGI4OGY2ZTQ0ZDg5NWJmYWMxNzhj
NTkzMjUyZDFhNTRhYmNmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CkBAIC04OSw2ICs4OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIENvbmZpZ3VyYXRpb24gbV9jb25m
aWd1cmF0aW9uOwogICAgIH07CiAKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3Jk
T3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNpemUsIGNv
bnN0IENvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3Jk
T3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYpOwor
CiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQgbWVt
b3J5LgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwogCkBAIC0xNTEsMTAgKzE1NSw2IEBAIHBy
aXZhdGU6CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25m
aWd1cmF0aW9uLCB2b2lkKik7CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKLSAgICBzdGF0
aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShXZWJD
b3JlOjpJbnRTaXplLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKLSAg
ICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVz
UGVyUm93KFdlYkNvcmU6OkludFNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKLSAgICBzdGF0
aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4
ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYpOwotCiAjaWYgVVNFKENHKQogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25zdDsKICAgICBz
dGF0aWMgdm9pZCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAs
IHZvaWQqIHR5cGVsZXNzRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKaW5kZXggZTE5YTlhYmNjNTBhNDJjMTA2MjZiMzBlOWJkZmVkMDdl
MzllMGE5Yi4uNTcwNGYzOTgwMTcwOTExZjE0NmM3ZmM0MzE5OGVkMGYzYjJlM2E4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MywxOSAr
NDMsNjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogCitTaGFyZWFibGVC
aXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpj
b25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2Uo
cGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OworI2VuZGlmCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRp
b247Cit9CisKK0ludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxj
dWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICBJbnRTaXplIGJhY2tlbmRTaXplID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVTYWZl
QmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJm
bG93PiBieXRlc1BlclJvdyA9IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3co
YmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIGlmIChieXRlc1Bl
clJvdy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGVja2Vk
U2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5k
U2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZs
b3dlZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGJhY2tlbmRTaXplOwor
fQorCit1bnNpZ25lZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0
ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFT
U0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0
ZXNQZXJSb3coYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIEFT
U0VSVCghYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIHJldHVybiBieXRlc1Bl
clJvdy51bnNhZmVHZXQoKTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICB1bnNp
Z25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRlcnMpOworCisg
ICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgQVNTRVJUKCFudW1C
eXRlcy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIG51bUJ5dGVzLnVuc2FmZUdldCgp
OworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1l
dGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBi
YWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUs
IHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0g
Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1l
dGVycy5jb2xvclNwYWNlKSB9OwotI2VuZGlmCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CisgICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6
ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkBAIC0xMDMsMTEgKzE0OSw2IEBAIEludFNpemUgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fYml0bWFwLT5zaXplKCk7CiB9CiAKLXVuc2lnbmVkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAotewotICAgIHJldHVybiBtX2JpdG1hcC0+
Ynl0ZXNQZXJSb3coKTsKLX0KLQogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25z
dAogewogICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0
Zm9ybUltYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmgKaW5kZXggNTEyYzc4ZTU1NGI3YzQzMWVhN2FiM2I3ODVlNzRiYWUzMDQ3ZjMzZS4uODQ0
MmQwZTZkMjFkZGE2MzBlZjQwYmQ5NjQwN2QwNTE5NmQ5ZDZiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsMTEgQEAgY2xhc3Mg
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VCdWZmZXJCYWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYp
OworICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShj
b25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVy
Um93KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9y
eUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7CiAKQEAgLTYyLDcgKzY3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB1
bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNhbGN1bGF0ZUJ5
dGVzUGVyUm93KG1fcGFyYW1ldGVycyk7IH0KIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMmI2YmZmMTA0N2Yx
MTcwOTY3MThjZGU5ZGM3MWE0Y2Y5MGJmNWVlZi4uODMxNWRkYzFhYTY3ZTQzZGYzNmE5N2Q4NDYw
NDVlMTQ3NTMyYWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTU1LDEwICs1
NSw5IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0
cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAg
ewotICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJl
c29sdXRpb25TY2FsZSkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
ICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCB9OworICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShw
YXJhbWV0ZXJzKS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHBhcmFtZXRlcnMs
IHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQuY3BwCmluZGV4IDJlMjBlZGE3NzNjYmI3M2MzZDBmYjM3Yjg1YTgxMzM2NDQ3NjYzMzMu
LjQzYmViNTE3MzRhOGEyODFlMDY5ZTE3ZmI3MzljMGQyMmQ2OGMxZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kKTsKIAogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgSW50U2l6ZSBiYWNr
ZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBh
cmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2Fs
Y3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCg==
</data>
<flag name="commit-queue"
          id="445427"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425460</attachid>
            <date>2021-04-07 17:13:33 -0700</date>
            <delta_ts>2021-04-07 17:48:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224306-20210407171332.patch</filename>
            <type>text/plain</type>
            <size>31598</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMTA3YjQ0ZDY1YTM2
YjQ1NGEzNmI5NzYxZjJmZmE3NDM4ZmE5MS4uZjY1YzY2ZWU3MmUwMGUyOTc4Zjc0NDA0MDIwNTBi
MmJkYjY4MWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTA0LTA3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBJbWFnZUJ1ZmZlciBjYWxjdWxhdGUgaXRzIG1lbW9yeUNvc3QoKSBmcm9tIGl0cyBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIHJvdW5kLXRyaXAgcHJvY2Vzc2VzIHRvIGdldCB0aGUgYmFja2VuZCBtZW1vcnlDb3N0KCks
IHdlIGNhbiAKKyAgICAgICAgY2FsY3VsYXRlIGl0IGZyb20gdGhlIHNpemUgYW5kIHRoZSBieXRl
cyBhbGlnbm1lbnQgb2YgZWFjaCByb3cgaW4gdGhlCisgICAgICAgIGJhY2tlbmQuIFRoZXNlIGFy
ZSBzdGF0aWMgdmFsdWVzIHNvIGluIHRoZSBjYXNlIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHks
CisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW5zdXJlIHRoZSBiYWNrZW5kIGlzIGNyZWF0
ZWQgaW4gR1BVUCBhbmQgaXQgaXMgbWFwcGVkCisgICAgICAgIGluIHRoZSBXZWIgUHJvY2Vzcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5k
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUJ5
dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3Vs
YXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Oklt
YWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1
bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIC0gVGhpcyBpcyB0aGUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGlz
IDQtYnl0ZXMgYWxpZ25lZCByb3dzLgorICAgICAgICAtIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6
ZSgpIHJldHVybnMgdGhlIHNpemUgd2hvc2UgYnl0ZXNQZXJSb3cgZG9lcyBub3QKKyAgICAgICAg
b3ZlcmZsb3cgdW5zaWduZWQgYW5kIHdob3NlIG1lbW9yeUNvc3QgZG9lcyBub3Qgbm90IG92ZXJm
bG93IHNpemVfdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kLmg6CisgICAgICAgIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKCkgaXMg
dXNlZCB0byBjYWxjdWxhdGUgdGhlIGJ5dGVzUGVyUm93KCkKKyAgICAgICAgZm9yIENhaXJvIHBv
cnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVt
b3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmg6CisgICAgICAgIElPU3VyZmFjZUFsaWduUHJvcGVydHkoKSBpcyB1c2VkIHRvIGFs
aWduIHRoZSBkZWZhdWx0IGJ5dGVzUGVyUm93IHRvIHRoZQorICAgICAgICBwcm9wZXIgSU9TdXJm
YWNlIGFsaWdubWVudC4KKwogMjAyMS0wNC0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciAyNzU1NzE6IGFkZCBk
ZWNsYXJhdGlvbiBmb3IgbmV3IG1ldGhvZCAoYW5kIG1ha2UgdGhlIGNvbnN0bmVzcyBtYXRjaCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDI1OWIxOGZlYmZkZjU0YWFkOWNiODQ0ZjJjNTQwMzEwODA2ODgwNzUuLjdi
YmRlZTY1MGM3Y2NkNTU0NjE2NDc5OTA1M2YwYjk2OTEwZTRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMjEtMDQtMDcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEltYWdlQnVmZmVyIGNhbGN1bGF0ZSBpdHMg
bWVtb3J5Q29zdCgpIGZyb20gaXRzIHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJv
dyk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmg6CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3co
KSBpcyB1c2VkIHRvIGdldCB0aGUgYnl0ZXNQZXJSb3coKQorICAgICAgICBieSBnaXZpbmcgaXQg
dGhlIHNjYWxlZCBiYWNrZW5kIHNpemUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICBVc2UgdGhlIG5ldyBuYW1lIG9mIHRoZSBmdW5jdGlvbiBj
YWxjdWxhdGVTYWZlQmFja2VuZFNpemUoKS4KKwogMjAyMS0wNC0wNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIHNvbWUgcG9zdC1sYW5k
aW5nIGNvbW1lbnRzIGFmdGVyIHIyNzU0OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCAzYTUxMTRiNzMyMGI3
YzkwZDkyMDQ5NzZjZTQwMmZmMDA4ZWU1N2IwLi5kMGYwMGVjYzkyYTBlODdlYThmYjkxNzJlNDg5
YTc5NmFkMDFiMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDE2ICsxMTEsMTIgQEAgcHJvdGVjdGVk
OgogCiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIG1fYmFja2VuZC0+bWVtb3J5Q29zdCgpOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVNZW1vcnlDb3N0KG1fcGFyYW1ldGVy
cyk7CiAgICAgfQogCiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVh
dGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3Qo
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBCYWNrZW5kVHlwZTo6Y2FsY3Vs
YXRlRXh0ZXJuYWxNZW1vcnlDb3N0KG1fcGFyYW1ldGVycyk7CiAgICAgfQogCiAgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXgg
Mzc5NGRlNzdiZTYzYTk5OWEzYjk3MWM3OGJmZGNlMWQ0Y2FhMmIwYi4uMThmYzU3NTYyOGQ0YzNj
YWYzMWYxMGM3NWY0NzFlZGIzY2FmZDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTkgKzMxLDIx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1
ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICA6IG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQotewotfQotCi1JbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2Fs
Y3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpCitJbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBGbG9hdFNpemUgc2NhbGVkU2l6
ZSA9IHsgY2VpbGYocmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKSwgY2VpbGYocmVzb2x1
dGlvblNjYWxlICogc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9
IHsgY2VpbGYocGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUgKiBwYXJhbWV0ZXJzLmxvZ2ljYWxT
aXplLndpZHRoKCkpLCBjZWlsZihwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSAqIHBhcmFtZXRl
cnMubG9naWNhbFNpemUuaGVpZ2h0KCkpIH07CiAgICAgaWYgKHNjYWxlZFNpemUuaXNFbXB0eSgp
IHx8ICFzY2FsZWRTaXplLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJbnRTaXplKHNjYWxlZFNpemUpOwor
ICAgIHJldHVybiBJbnRTaXplKHNjYWxlZFNpemUpOworfQogCitJbnRTaXplIEltYWdlQnVmZmVy
QmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBiYWNrZW5kU2l6ZTsKKyAgICAKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4gYnl0ZXNQZXJSb3cgPSA0ICogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
KGJhY2tlbmRTaXplLndpZHRoKCkpOwogICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC01NSw2ICs1NywzNSBAQCBJbnRTaXplIEltYWdl
QnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZQogICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKIH0KIAordW5zaWduZWQgSW1hZ2VC
dWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6
ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAg
ICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cgPSAoQ2hlY2tl
ZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLndpZHRoKCkpICogNCk7Cisg
ICAgQVNTRVJUKCFieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIGJ5
dGVzUGVyUm93LnVuc2FmZUdldCgpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpj
YWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwor
ICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsKKworICAgIHVuc2lnbmVkIGJ5dGVz
UGVyUm93ID0gY2FsY3VsYXRlQnl0ZXNQZXJSb3cocGFyYW1ldGVycyk7CisKKyAgICBDaGVja2Vk
U2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5k
U2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAgICBBU1NFUlQoIW51bUJ5dGVzLmhhc092
ZXJmbG93ZWQoKSk7CisKKyAgICByZXR1cm4gbnVtQnl0ZXMudW5zYWZlR2V0KCk7Cit9CisKK0lt
YWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCisgICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKK3sKK30KKwogUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQog
ewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuaAppbmRleCAzMWNlOTc3NTdiNWQyZjk4MDBiMTU3NjNjZTE2YmUxYzc4NjlmMTZjLi5hYWI2
ZTFmOWIzYmIyNWE5MzczMTM1NjE5NTQ3ODg1MDY4ZDVmYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3LDE2
ICs4NywxNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1
ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50
U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
SW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25z
dCBQYXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVfdCBjYWxjdWxh
dGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1
bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJikgeyByZXR1cm4gMDsgfQog
CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpIHsgfQogCiAgICAgdmlydHVhbCBJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKLSAgICB2aXJ0dWFsIHNpemVfdCBt
ZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkuYXJlYSgpLnVuc2Fm
ZUdldCgpOyB9Ci0gICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qg
eyByZXR1cm4gMDsgfQotCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNv
bnN0ID0gMDsKIApAQCAtMTM2LDcgKzEzNyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBX
RUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYpOwogCi0g
ICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNr
ZW5kU2l6ZSgpLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkg
Y29uc3QgeyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9wYXJhbWV0ZXJzKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5hdGVzKFQgdCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kLmNwcAppbmRleCA0N2E0NWRjYzJlODJkZDZkMGNhY2I1MTI2NjA2YWJmNzE5NWMxMDQxLi4w
YzIxN2FiOTlhZGU3NTBjMjgxYTNiMjdiYjU3YTQxYzAxOTllMzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC00MSwxNCAr
NDEsNDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogCitJbnRTaXplIEltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXpl
ID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXpl
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChiYWNrZW5kU2l6ZS53
aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNpemUgfHwgYmFja2VuZFNpemUuaGVpZ2h0KCkgPiBjYWly
b01heEltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBiYWNrZW5k
U2l6ZTsKK30KKwordW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7Cisg
ICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0
ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICByZXR1cm4g
Y2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgYmFja2Vu
ZFNpemUud2lkdGgoKSkKK30KKworc2l6ZV90IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsKKworICAgIHVuc2ln
bmVkIGJ5dGVzUGVyUm93ID0gY2FsY3VsYXRlQnl0ZXNQZXJSb3cocGFyYW1ldGVycyk7CisKKyAg
ICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAgICBBU1NFUlQoIW51bUJ5
dGVzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICByZXR1cm4gbnVtQnl0ZXMudW5zYWZlR2V0KCk7
Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFy
YW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgc3RhdGlj
IGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwogCi0gICAgSW50U2l6ZSBi
YWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUs
IHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKLSAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0
eSgpIHx8IGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWlyb01heEltYWdlU2l6ZSB8fCBiYWNrZW5k
U2l6ZS5oZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXplKQorICAgIEludFNpemUgYmFja2VuZFNp
emUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgaWYgKGJhY2tl
bmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpbnQgc3Ry
aWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwg
YmFja2VuZFNpemUud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQuaAppbmRleCA4NjVjYzY5YjJkNTMzODU0NWYzN2U0MTkzY2I5NGYx
OTgwYmU3M2E0Li4yMDY1OGNlZTAzMTkyMGU1NzUwYjg5MTE3YzI2NTM0ZDJmNmIyZDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKQEAg
LTQwLDEyICs0MCwxOCBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2Vu
ZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbgogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsK
IHB1YmxpYzoKKyAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29u
c3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJv
dyhjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlD
b3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKKwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKIHByaXZhdGU6CiAgICAgSW1hZ2VCdWZmZXJDYWly
b0ltYWdlU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+JiYpOwogCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3BhcmFtZXRlcnMpOyB9CisKICAgICB2b2lk
IHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1
Nj4mIGxvb2tVcFRhYmxlKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcAppbmRleCA5ZDUzOGJlZmNkOGUwMzhmMWExYTk3YTJhNzc4NDEzMGYzMjhjYTQ1
Li4zMzZkMWNhNzc5YzViYTY3N2Q2OGYzZTRiMjhjMDcwOGU1MTlhZTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpj
cmVhdGUoYwogewogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2Vu
ZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUp
OworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFy
YW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDZj
M2I3Yzc0YjQ2ZTEyNmU3OWQ5ZjE2MjIwYjNhMmZhZDllZGQ5YTEuLmMxMjAwYTU0OGEzNzlkNjJl
ZjYxZWVjZGViMWZiNmI2NWQ1NDZjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDkgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKTsKIAotSW50U2l6
ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQorSW50U2l6ZSBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJbWFnZUJ1
ZmZlckNHQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxl
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIApAQCAtNTQsNiArNTQsMzAgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwKICAgICByZXR1
cm4gYmFja2VuZFNpemU7CiB9CiAKK3Vuc2lnbmVkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sK
KyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRl
Qnl0ZXNQZXJSb3cocGFyYW1ldGVycyk7CisgICAgcmV0dXJuIElPU3VyZmFjZUFsaWduUHJvcGVy
dHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCBieXRlc1BlclJvdyk7Cit9CisKK3NpemVfdCBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRl
QmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5
KCkpOworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cgPSBjYWxjdWxhdGVCeXRlc1BlclJvdyhw
YXJhbWV0ZXJzKTsKKworICAgIENoZWNrZWRTaXplIG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93Owor
ICAgIEFTU0VSVCghbnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIHJldHVybiBudW1C
eXRlcy51bnNhZmVHZXQoKTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1lbW9yeUNvc3QocGFyYW1ldGVycyk7Cit9CisK
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwpAQCAt
NjYsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0Nv
bG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgSW50U2l6ZSBi
YWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUs
IHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0g
Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMDYsNyArMTMwLDYg
QEAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW0KIAogR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogewotCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gbV9zdXJmYWNlLT5lbnN1cmVHcmFwaGljc0NvbnRleHQoKTsKICAgICBp
ZiAobV9uZWVkc1NldHVwQ29udGV4dCkgewogICAgICAgICBtX25lZWRzU2V0dXBDb250ZXh0ID0g
ZmFsc2U7CkBAIC0xMjUsMTkgKzE0OCw5IEBAIEludFNpemUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgp
OwogfQogCi1zaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjptZW1vcnlDb3N0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT50b3RhbEJ5dGVzKCk7Ci19Ci0KLXNpemVf
dCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1lbW9yeUNvc3QoKTsKLX0KLQogdW5zaWduZWQgSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3Vy
ZmFjZS0+Ynl0ZXNQZXJSb3coKTsKKyAgICByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9w
YXJhbWV0ZXJzKTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCA0ODU5ZGY2ZmM1MjVkODVjMzI4YzE0NWYw
NzkxNzgzNTY5MDllMjVkLi40OTE1MzcxMjAwMTNkMDExNTVmYjk4NDJmOGUwODhmNTBjMjk5MTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDggKzM3LDExIEBAIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJ
bWFnZUJ1ZmZlckNHQmFja2VuZCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEludFNpemUgY2FsY3Vs
YXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlKTsKLQorICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6
ZShjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVz
UGVyUm93KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1l
bW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRl
RXh0ZXJuYWxNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICAKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRl
KGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01MCw5ICs1Myw2IEBAIHB1Ymxp
YzoKIAogICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAg
ICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHNpemVfdCBleHRlcm5h
bE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKLQogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25z
dCBvdmVycmlkZTsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2Uo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCBj
NzE5M2JjY2I5ZmViMDYxZmI0NGNkMjk1ZTZiM2JkNGI3ZTNiZDkxLi40NWRiODhmNmU0NGQ4OTVi
ZmFjMTc4YzU5MzI1MmQxYTU0YWJjZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaApAQCAtODksNiArODksMTAgQEAgcHVibGljOgogICAgICAgICBDb25maWd1cmF0aW9u
IG1fY29uZmlndXJhdGlvbjsKICAgICB9OwogCisgICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNpemUoV2ViQ29yZTo6SW50U2l6ZSwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJik7CisgICAgc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBjYWxjdWxhdGVCeXRlc1BlclJvdyhXZWJDb3JlOjpJbnRT
aXplLCBjb25zdCBDb25maWd1cmF0aW9uJik7CisgICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PiBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRp
b24mKTsKKwogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxv
Y2VkIG1lbW9yeS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsKIApAQCAtMTUxLDEwICsxNTUs
NiBAQCBwcml2YXRlOgogICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgQ29uZmlndXJhdGlvbiwgdm9pZCopOwogICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOwogCi0g
ICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNp
emUoV2ViQ29yZTo6SW50U2l6ZSwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
Jik7Ci0gICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjYWxjdWxh
dGVCeXRlc1BlclJvdyhXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBDb25maWd1cmF0aW9uJik7Ci0g
ICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjYWxjdWxhdGVCeXRl
c1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKLQogI2lmIFVTRShDRykKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZikgY29uc3Q7
CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNz
Qml0bWFwLCB2b2lkKiB0eXBlbGVzc0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGUxOWE5YWJjYzUwYTQyYzEwNjI2YjMwZTli
ZGZlZDA3ZTM5ZTBhOWIuLjM5MDQxYzUwOGNkYjU5NjA5ZDI4Mjg4OWY1NTFhM2JiMjRkOTE3MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDMsMTkgKzQzLDY1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsKIAorU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6Y29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAg
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xv
clNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkgfTsKKyNlbmRpZgorICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOworfQorCitJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
Cit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cg
PSBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXplLCBjb25m
aWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKKyAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dl
ZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICog
Ynl0ZXNQZXJSb3c7CisgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKK30KKwordW5zaWduZWQgSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBj
YWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXpl
LmlzRW1wdHkoKSk7CisKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0
ZXNQZXJSb3cgPSBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRT
aXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKKyAgICBBU1NFUlQoIWJ5dGVzUGVyUm93
Lmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICByZXR1cm4gYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCk7
Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0
ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgQVNT
RVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpOworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cg
PSBjYWxjdWxhdGVCeXRlc1BlclJvdyhwYXJhbWV0ZXJzKTsKKworICAgIENoZWNrZWRTaXplIG51
bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhl
aWdodCgpKSAqIGJ5dGVzUGVyUm93OworICAgIEFTU0VSVCghbnVtQnl0ZXMuaGFzT3ZlcmZsb3dl
ZCgpKTsKKworICAgIHJldHVybiBudW1CeXRlcy51bnNhZmVHZXQoKTsKK30KKwogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29s
dXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNr
ZW5kU2l6ZShwYXJhbWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24u
Y29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkg
fTsKLSNlbmRpZgotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24o
cGFyYW1ldGVycykpOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtMTAzLDExICsxNDksNiBAQCBJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25zdAogICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgp
OwogfQogCi11bnNpZ25lZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJ5dGVz
UGVyUm93KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iaXRtYXAtPmJ5dGVzUGVyUm93KCk7Ci19
Ci0KIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
Ojpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICAgICByZXR1cm4g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDUxMmM3
OGU1NTRiN2M0MzFlYTdhYjNiNzg1ZTc0YmFlMzA0N2YzM2UuLjg0NDJkMGU2ZDIxZGRhNjMwZWY0
MGJkOTY0MDdkMDUxOTZkOWQ2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDExIEBAIGNsYXNzIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFj
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZCk7CiBwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgV2Vi
Q29yZTo6SW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYp
OworICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0
ZXJzJik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFt
ZXRlcnMmKTsKKwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6
Okhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUpOwogCkBAIC02Miw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbWFnZURhdGEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHVuc2ln
bmVkIGJ5dGVzUGVyUm93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgYnl0ZXNQZXJS
b3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3BhcmFt
ZXRlcnMpOyB9CiAKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDJiNmJmZjEwNDdmMTE3MDk2NzE4Y2RlOWRjNzFh
NGNmOTBiZjVlZWYuLjgzMTVkZGMxYWE2N2U0M2RmMzZhOTdkODQ2MDQ1ZTE0NzUzMmFiNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC01NSwxMCArNTUsOSBAQCBjbGFzcyBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1
ZmZlcjxCYWNrZW5kVAogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKLSAgICAgICAgaWYgKEJh
Y2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKKyAgICAgICAgaWYg
KEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycykuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShwYXJhbWV0ZXJzLCByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZh
Y2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCAy
ZTIwZWRhNzczY2JiNzNjM2QwZmIzN2I4NWE4MTMzNjQ0NzY2MzMzLi40M2JlYjUxNzM0YThhMjgx
ZTA2OWUxN2ZiNzM5YzBkMjJkNjhjMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQx
LDcgKzQxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZCk7CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRp
b25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5k
U2l6ZShwYXJhbWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425465</attachid>
            <date>2021-04-07 17:48:16 -0700</date>
            <delta_ts>2021-04-07 20:38:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224306-20210407174815.patch</filename>
            <type>text/plain</type>
            <size>32569</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMTA3YjQ0ZDY1YTM2
YjQ1NGEzNmI5NzYxZjJmZmE3NDM4ZmE5MS4uZjY1YzY2ZWU3MmUwMGUyOTc4Zjc0NDA0MDIwNTBi
MmJkYjY4MWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTA0LTA3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBJbWFnZUJ1ZmZlciBjYWxjdWxhdGUgaXRzIG1lbW9yeUNvc3QoKSBmcm9tIGl0cyBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIHJvdW5kLXRyaXAgcHJvY2Vzc2VzIHRvIGdldCB0aGUgYmFja2VuZCBtZW1vcnlDb3N0KCks
IHdlIGNhbiAKKyAgICAgICAgY2FsY3VsYXRlIGl0IGZyb20gdGhlIHNpemUgYW5kIHRoZSBieXRl
cyBhbGlnbm1lbnQgb2YgZWFjaCByb3cgaW4gdGhlCisgICAgICAgIGJhY2tlbmQuIFRoZXNlIGFy
ZSBzdGF0aWMgdmFsdWVzIHNvIGluIHRoZSBjYXNlIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHks
CisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW5zdXJlIHRoZSBiYWNrZW5kIGlzIGNyZWF0
ZWQgaW4gR1BVUCBhbmQgaXQgaXMgbWFwcGVkCisgICAgICAgIGluIHRoZSBXZWIgUHJvY2Vzcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5k
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUJ5
dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3Vs
YXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Oklt
YWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1
bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmJ5dGVzUGVyUm93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
QmFja2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIC0gVGhpcyBpcyB0aGUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGlz
IDQtYnl0ZXMgYWxpZ25lZCByb3dzLgorICAgICAgICAtIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6
ZSgpIHJldHVybnMgdGhlIHNpemUgd2hvc2UgYnl0ZXNQZXJSb3cgZG9lcyBub3QKKyAgICAgICAg
b3ZlcmZsb3cgdW5zaWduZWQgYW5kIHdob3NlIG1lbW9yeUNvc3QgZG9lcyBub3Qgbm90IG92ZXJm
bG93IHNpemVfdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kLmg6CisgICAgICAgIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKCkgaXMg
dXNlZCB0byBjYWxjdWxhdGUgdGhlIGJ5dGVzUGVyUm93KCkKKyAgICAgICAgZm9yIENhaXJvIHBv
cnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVt
b3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6bWVtb3J5Q29zdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmg6CisgICAgICAgIElPU3VyZmFjZUFsaWduUHJvcGVydHkoKSBpcyB1c2VkIHRvIGFs
aWduIHRoZSBkZWZhdWx0IGJ5dGVzUGVyUm93IHRvIHRoZQorICAgICAgICBwcm9wZXIgSU9TdXJm
YWNlIGFsaWdubWVudC4KKwogMjAyMS0wNC0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciAyNzU1NzE6IGFkZCBk
ZWNsYXJhdGlvbiBmb3IgbmV3IG1ldGhvZCAoYW5kIG1ha2UgdGhlIGNvbnN0bmVzcyBtYXRjaCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDI1OWIxOGZlYmZkZjU0YWFkOWNiODQ0ZjJjNTQwMzEwODA2ODgwNzUuLjdi
YmRlZTY1MGM3Y2NkNTU0NjE2NDc5OTA1M2YwYjk2OTEwZTRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMjEtMDQtMDcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEltYWdlQnVmZmVyIGNhbGN1bGF0ZSBpdHMg
bWVtb3J5Q29zdCgpIGZyb20gaXRzIHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNDMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJv
dyk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmg6CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3co
KSBpcyB1c2VkIHRvIGdldCB0aGUgYnl0ZXNQZXJSb3coKQorICAgICAgICBieSBnaXZpbmcgaXQg
dGhlIHNjYWxlZCBiYWNrZW5kIHNpemUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICBVc2UgdGhlIG5ldyBuYW1lIG9mIHRoZSBmdW5jdGlvbiBj
YWxjdWxhdGVTYWZlQmFja2VuZFNpemUoKS4KKwogMjAyMS0wNC0wNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzIHNvbWUgcG9zdC1sYW5k
aW5nIGNvbW1lbnRzIGFmdGVyIHIyNzU0OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCAzYTUxMTRiNzMyMGI3
YzkwZDkyMDQ5NzZjZTQwMmZmMDA4ZWU1N2IwLi5kMGYwMGVjYzkyYTBlODdlYThmYjkxNzJlNDg5
YTc5NmFkMDFiMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDE2ICsxMTEsMTIgQEAgcHJvdGVjdGVk
OgogCiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIG1fYmFja2VuZC0+bWVtb3J5Q29zdCgpOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVNZW1vcnlDb3N0KG1fcGFyYW1ldGVy
cyk7CiAgICAgfQogCiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVh
dGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3Qo
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBCYWNrZW5kVHlwZTo6Y2FsY3Vs
YXRlRXh0ZXJuYWxNZW1vcnlDb3N0KG1fcGFyYW1ldGVycyk7CiAgICAgfQogCiAgICAgUmVmUHRy
PE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXgg
Mzc5NGRlNzdiZTYzYTk5OWEzYjk3MWM3OGJmZGNlMWQ0Y2FhMmIwYi4uMThmYzU3NTYyOGQ0YzNj
YWYzMWYxMGM3NWY0NzFlZGIzY2FmZDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMTkgKzMxLDIx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1
ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICA6IG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQotewotfQotCi1JbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2Fs
Y3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUpCitJbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBGbG9hdFNpemUgc2NhbGVkU2l6
ZSA9IHsgY2VpbGYocmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKSwgY2VpbGYocmVzb2x1
dGlvblNjYWxlICogc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9
IHsgY2VpbGYocGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUgKiBwYXJhbWV0ZXJzLmxvZ2ljYWxT
aXplLndpZHRoKCkpLCBjZWlsZihwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSAqIHBhcmFtZXRl
cnMubG9naWNhbFNpemUuaGVpZ2h0KCkpIH07CiAgICAgaWYgKHNjYWxlZFNpemUuaXNFbXB0eSgp
IHx8ICFzY2FsZWRTaXplLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJbnRTaXplKHNjYWxlZFNpemUpOwor
ICAgIHJldHVybiBJbnRTaXplKHNjYWxlZFNpemUpOworfQogCitJbnRTaXplIEltYWdlQnVmZmVy
QmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBiYWNrZW5kU2l6ZTsKKyAgICAKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4gYnl0ZXNQZXJSb3cgPSA0ICogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
KGJhY2tlbmRTaXplLndpZHRoKCkpOwogICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC01NSw2ICs1NywzNSBAQCBJbnRTaXplIEltYWdl
QnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZQogICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKIH0KIAordW5zaWduZWQgSW1hZ2VC
dWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6
ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAg
ICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cgPSAoQ2hlY2tl
ZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLndpZHRoKCkpICogNCk7Cisg
ICAgQVNTRVJUKCFieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIGJ5
dGVzUGVyUm93LnVuc2FmZUdldCgpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJCYWNrZW5kOjpj
YWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwor
ICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsKKworICAgIHVuc2lnbmVkIGJ5dGVz
UGVyUm93ID0gY2FsY3VsYXRlQnl0ZXNQZXJSb3cocGFyYW1ldGVycyk7CisKKyAgICBDaGVja2Vk
U2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5k
U2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAgICBBU1NFUlQoIW51bUJ5dGVzLmhhc092
ZXJmbG93ZWQoKSk7CisKKyAgICByZXR1cm4gbnVtQnl0ZXMudW5zYWZlR2V0KCk7Cit9CisKK0lt
YWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCisgICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKK3sKK30KKwogUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQog
ewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuaAppbmRleCAzMWNlOTc3NTdiNWQyZjk4MDBiMTU3NjNjZTE2YmUxYzc4NjlmMTZjLi5hYWI2
ZTFmOWIzYmIyNWE5MzczMTM1NjE5NTQ3ODg1MDY4ZDVmYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3LDE2
ICs4NywxNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1
ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50
U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
SW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25z
dCBQYXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVfdCBjYWxjdWxh
dGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1
bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJikgeyByZXR1cm4gMDsgfQog
CiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGZsdXNoQ29udGV4dCgpIHsgfQogCiAgICAgdmlydHVhbCBJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKLSAgICB2aXJ0dWFsIHNpemVfdCBt
ZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCkuYXJlYSgpLnVuc2Fm
ZUdldCgpOyB9Ci0gICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qg
eyByZXR1cm4gMDsgfQotCiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRp
dmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNv
bnN0ID0gMDsKIApAQCAtMTM2LDcgKzEzNyw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBX
RUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYpOwogCi0g
ICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNr
ZW5kU2l6ZSgpLndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkg
Y29uc3QgeyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9wYXJhbWV0ZXJzKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIHRvQmFja2VuZENvb3JkaW5hdGVzKFQgdCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kLmNwcAppbmRleCA0N2E0NWRjYzJlODJkZDZkMGNhY2I1MTI2NjA2YWJmNzE5NWMxMDQxLi42
MzQ5YzFlMDk2N2FhY2Q3MjM5ZDM0Y2FmOTIxMWFmZmNjN2IyYmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0zLDcgKzMs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIDx6
ZWNrZUBzZWxmaXNoLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEaXJrIFNjaHVs
emUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUg
KEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDE0ICs0MSw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZCk7CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgaWYgKGJhY2tlbmRTaXplLndpZHRoKCkgPiBjYWlyb01heEltYWdlU2l6ZSB8
fCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSA+IGNhaXJvTWF4SW1hZ2VTaXplKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgcmV0dXJuIGJhY2tlbmRTaXplOworfQorCit1bnNpZ25lZCBJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2Fs
Y3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNp
emUuaXNFbXB0eSgpKTsKKworICAgIHJldHVybiBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0
aChDQUlST19GT1JNQVRfQVJHQjMyLCBiYWNrZW5kU2l6ZS53aWR0aCgpKTsKK30KKworc2l6ZV90
IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0
KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6
ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2Vu
ZFNpemUuaXNFbXB0eSgpKTsKKworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93ID0gY2FsY3VsYXRl
Qnl0ZXNQZXJSb3cocGFyYW1ldGVycyk7CisKKyAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENo
ZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBi
eXRlc1BlclJvdzsKKyAgICBBU1NFUlQoIW51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAg
ICByZXR1cm4gbnVtQnl0ZXMudW5zYWZlR2V0KCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBI
b3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogCiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX3N1
cmZhY2VEYXRhS2V5OwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tl
bmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxl
KTsKLSAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpIHx8IGJhY2tlbmRTaXplLndpZHRoKCkg
PiBjYWlyb01heEltYWdlU2l6ZSB8fCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSA+IGNhaXJvTWF4SW1h
Z2VTaXplKQorICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNp
emUocGFyYW1ldGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpbnQgc3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlkZV9m
b3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgYmFja2VuZFNpemUud2lkdGgoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAppbmRleCA4
NjVjYzY5YjJkNTMzODU0NWYzN2U0MTkzY2I5NGYxOTgwYmU3M2E0Li4wYTM4MjczYTg5ODY0Y2Vl
YTU3NTk4ODIxMjUxYjBjOGY0Y2EyMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZpc2gub3JnPgog
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDAsMTIgKzQwLDE4IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNr
ZW5kIDogcHVibGljIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuCiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQp
OwogcHVibGljOgorICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShj
b25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVy
Um93KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9y
eUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmLCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogcHJpdmF0ZToKICAgICBJbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4mJik7CiAKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fcGFyYW1ldGVycyk7IH0KKwogICAgIHZv
aWQgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwg
MjU2PiYgbG9va1VwVGFibGUpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuY3BwCmluZGV4IDlkNTM4YmVmY2Q4ZTAzOGYxYTFhOTdhMmE3Nzg0MTMwZjMyOGNh
NDUuLjMzNmQxY2E3NzljNWJhNjc3ZDY4ZjNlNGIyOGMwNzA4ZTUxOWFlNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShjCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNr
ZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShw
YXJhbWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
NmMzYjdjNzRiNDZlMTI2ZTc5ZDlmMTYyMjBiM2EyZmFkOWVkZDlhMS4uYzEyMDBhNTQ4YTM3OWQ2
MmVmNjFlZWNkZWIxZmI2YjY1ZDU0NmMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDEsOSArNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQpOwogCi1JbnRT
aXplIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCitJbnRTaXplIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IEltYWdl
QnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2Nh
bGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCkBAIC01NCw2ICs1NCwzMCBAQCBJbnRTaXplIEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLAogICAgIHJl
dHVybiBiYWNrZW5kU2l6ZTsKIH0KIAordW5zaWduZWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
eworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93ID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxh
dGVCeXRlc1BlclJvdyhwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gSU9TdXJmYWNlQWxpZ25Qcm9w
ZXJ0eShrSU9TdXJmYWNlQnl0ZXNQZXJSb3csIGJ5dGVzUGVyUm93KTsKK30KKworc2l6ZV90IElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1w
dHkoKSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93
KHBhcmFtZXRlcnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2ln
bmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7
CisgICAgQVNTRVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIG51
bUJ5dGVzLnVuc2FmZUdldCgpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKK3sKKyAgICByZXR1cm4gY2FsY3VsYXRlTWVtb3J5Q29zdChwYXJhbWV0ZXJzKTsKK30K
KwogUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
Ojpjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CkBA
IC02Niw3ICs5MCw3IEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QKIAogc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNn
Q29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6
ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUg
PSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRT
aXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwNiw3ICsxMzAs
NiBAQCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbQogCiBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiB7Ci0KICAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBtX3N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwogICAg
IGlmIChtX25lZWRzU2V0dXBDb250ZXh0KSB7CiAgICAgICAgIG1fbmVlZHNTZXR1cENvbnRleHQg
PSBmYWxzZTsKQEAgLTEyNSwxOSArMTQ4LDkgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXpl
KCk7CiB9CiAKLXNpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3Qo
KSBjb25zdAotewotICAgIHJldHVybiBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKLX0KLQotc2l6
ZV90IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbWVtb3J5Q29zdCgpOwotfQotCiB1bnNpZ25lZCBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9z
dXJmYWNlLT5ieXRlc1BlclJvdygpOworICAgIHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyht
X3BhcmFtZXRlcnMpOwogfQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDQ4NTlkZjZmYzUyNWQ4NWMzMjhjMTQ1
ZjA3OTE3ODM1NjkwOWUyNWQuLjQ5MTUzNzEyMDAxM2QwMTE1NWZiOTg0MmY4ZTA4OGY1MGMyOTkx
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsOCArMzcsMTEgQEAg
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGlj
IEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgSW50U2l6ZSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUpOwotCisgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRT
aXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0
ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRl
TWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxh
dGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworICAgIAogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKQEAgLTUwLDkgKzUzLDYgQEAgcHVi
bGljOgogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAot
ICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc2l6ZV90IGV4dGVy
bmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFn
ZSgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4
IGM3MTkzYmNjYjlmZWIwNjFmYjQ0Y2QyOTVlNmIzYmQ0YjdlM2JkOTEuLjQ1ZGI4OGY2ZTQ0ZDg5
NWJmYWMxNzhjNTkzMjUyZDFhNTRhYmNmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oCkBAIC04OSw2ICs4OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIENvbmZpZ3VyYXRp
b24gbV9jb25maWd1cmF0aW9uOwogICAgIH07CiAKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplLCBjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6Oklu
dFNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJh
dGlvbiYpOworCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFs
bG9jZWQgbWVtb3J5LgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwogCkBAIC0xNTEsMTAgKzE1
NSw2IEBAIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBDb25maWd1cmF0aW9uLCB2b2lkKik7CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAK
LSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9y
U2l6ZShXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24mKTsKLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1
bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsK
LSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5
dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYpOwotCiAjaWYgVVNFKENHKQogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25z
dDsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxl
c3NCaXRtYXAsIHZvaWQqIHR5cGVsZXNzRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZTE5YTlhYmNjNTBhNDJjMTA2MjZiMzBl
OWJkZmVkMDdlMzllMGE5Yi4uMzkwNDFjNTA4Y2RiNTk2MDlkMjgyODg5ZjU1MWEzYmIyNGQ5MTcy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MywxOSArNDMsNjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogCitT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7Cisg
ICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0Nv
bG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OworI2VuZGlmCisgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb247Cit9CisKK0ludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFy
YW1ldGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRlc1BlclJv
dyA9IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUsIGNv
bmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxv
d2VkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkg
KiBieXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIGJhY2tlbmRTaXplOworfQorCit1bnNpZ25lZCBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9
IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNp
emUuaXNFbXB0eSgpKTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBi
eXRlc1BlclJvdyA9IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2Vu
ZFNpemUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIEFTU0VSVCghYnl0ZXNQZXJS
b3cuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIHJldHVybiBieXRlc1BlclJvdy51bnNhZmVHZXQo
KTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3Vs
YXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNp
emUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBB
U1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclJv
dyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRlcnMpOworCisgICAgQ2hlY2tlZFNpemUg
bnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUu
aGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgQVNTRVJUKCFudW1CeXRlcy5oYXNPdmVyZmxv
d2VkKCkpOworCisgICAgcmV0dXJuIG51bUJ5dGVzLnVuc2FmZUdldCgpOworfQorCiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1h
dCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNh
bGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVz
b2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJh
Y2tlbmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlv
bi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNl
KSB9OwotI2VuZGlmCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlv
bihwYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0xMDMsMTEgKzE0OSw2IEBAIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYml0bWFwLT5zaXpl
KCk7CiB9CiAKLXVuc2lnbmVkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Ynl0
ZXNQZXJSb3coKSBjb25zdAotewotICAgIHJldHVybiBtX2JpdG1hcC0+Ynl0ZXNQZXJSb3coKTsK
LX0KLQogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogICAgIHJldHVy
biBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggNTEy
Yzc4ZTU1NGI3YzQzMWVhN2FiM2I3ODVlNzRiYWUzMDQ3ZjMzZS4uODQ0MmQwZTZkMjFkZGE2MzBl
ZjQwYmQ5NjQwN2QwNTE5NmQ5ZDZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsMTEgQEAgY2xhc3MgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJC
YWMKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBX
ZWJDb3JlOjpJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFt
ZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFy
YW1ldGVycyYpOworCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29y
ZTo6SG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSk7CiAKQEAgLTYyLDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQs
IGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdW5z
aWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBieXRlc1Bl
clJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fcGFy
YW1ldGVycyk7IH0KIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMmI2YmZmMTA0N2YxMTcwOTY3MThjZGU5ZGM3
MWE0Y2Y5MGJmNWVlZi4uODMxNWRkYzFhYTY3ZTQzZGYzNmE5N2Q4NDYwNDVlMTQ3NTMyYWI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTU1LDEwICs1NSw5IEBAIGNsYXNzIFJl
bW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdl
QnVmZmVyPEJhY2tlbmRUCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewotICAgICAgICBpZiAo
QmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSku
aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICAgICAgYXV0byBw
YXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OworICAgICAgICBp
ZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKS5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHBhcmFtZXRlcnMsIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4
IDJlMjBlZGE3NzNjYmI3M2MzZDBmYjM3Yjg1YTgxMzM2NDQ3NjYzMzMuLjQzYmViNTE3MzRhOGEy
ODFlMDY5ZTE3ZmI3MzljMGQyMmQ2OGMxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kKTsKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgSG9zdFdpbmRvdyopCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1
bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tl
bmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425473</attachid>
            <date>2021-04-07 20:38:38 -0700</date>
            <delta_ts>2021-04-07 20:57:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224306-20210407203837.patch</filename>
            <type>text/plain</type>
            <size>40598</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMTA3YjQ0ZDY1YTM2
YjQ1NGEzNmI5NzYxZjJmZmE3NDM4ZmE5MS4uNDAzMjkyYzRkOGE4ZDBkZWVhNDg2OGExNmQwYzQ3
NDU2OWNmZjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTA0LTA3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBJbWFnZUJ1ZmZlciBjYWxjdWxhdGUgaXRzIG1lbW9yeUNvc3QoKSBmcm9tIGl0cyBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIHJvdW5kLXRyaXAgcHJvY2Vzc2VzIHRvIGdldCB0aGUgYmFja2VuZCBtZW1vcnlDb3N0KCks
IHdlIGNhbiAKKyAgICAgICAgY2FsY3VsYXRlIGl0IGZyb20gdGhlIHNpemUgYW5kIHRoZSBieXRl
cyBhbGlnbm1lbnQgb2YgZWFjaCByb3cgaW4gdGhlCisgICAgICAgIGJhY2tlbmQuIFRoZXNlIGFy
ZSBzdGF0aWMgdmFsdWVzIHNvIGluIHRoZSBjYXNlIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHks
CisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW5zdXJlIHRoZSBiYWNrZW5kIGlzIGNyZWF0
ZWQgaW4gR1BVUCBhbmQgaXQgaXMgbWFwcGVkCisgICAgICAgIGluIHRoZSBXZWIgUHJvY2Vzcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5
Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Om1lbW9yeUNvc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpl
eHRlcm5hbE1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIC0g
VGhpcyBpcyB0aGUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGlzIDQtYnl0ZXMg
YWxpZ25lZCByb3dzLgorICAgICAgICAtIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSgpIHJldHVy
bnMgdGhlIHNpemUgd2hvc2UgYnl0ZXNQZXJSb3cgZG9lcyBub3QKKyAgICAgICAgb3ZlcmZsb3cg
dW5zaWduZWQgYW5kIHdob3NlIG1lbW9yeUNvc3QgZG9lcyBub3Qgbm90IG92ZXJmbG93IHNpemVf
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0
ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
Lmg6CisgICAgICAgIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKCkgaXMgdXNlZCB0byBj
YWxjdWxhdGUgdGhlIGJ5dGVzUGVyUm93KCkKKyAgICAgICAgZm9yIENhaXJvIHBvcnQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2FsY3VsYXRlQnl0ZXNQZXJS
b3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
Lmg6CisgICAgICAgIFRoaXMgaXMgdGhlIENHIGNhc2Ugd2hlbiB0aGUgYmFja2VuZCBpcyA0LWJ5
dGVzIGFsaWduZWQgcm93cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
aDoKKyAgICAgICAgVGhpcyBpcyB0aGUgQ0cgYml0bWFwIGNhc2Ugd2hlcmUgdGhlIGJhY2tlbmQg
aXMgNC1ieXRlcyBhbGlnbmVkIHJvd3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVCeXRl
c1BlclJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxj
dWxhdGVCYWNrZW5kU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpleHRlcm5hbE1lbW9yeUNvc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICBJT1N1cmZhY2VBbGlnblByb3BlcnR5KCkg
aXMgdXNlZCB0byBhbGlnbiB0aGUgQ0cgYnl0ZXNQZXJSb3cgdG8gdGhlIHByb3BlcgorICAgICAg
ICBJT1N1cmZhY2UgYWxpZ25tZW50LgorCiAyMDIxLTA0LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIDI3NTU3
MTogYWRkIGRlY2xhcmF0aW9uIGZvciBuZXcgbWV0aG9kIChhbmQgbWFrZSB0aGUgY29uc3RuZXNz
IG1hdGNoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjU5YjE4ZmViZmRmNTRhYWQ5Y2I4NDRmMmM1NDAzMTA4MDY4
ODA3NS4uYjdjZjA0MDI2ODkzNWJiNGVlM2MzOTAzN2Q1YTAzMDBjZTc0ODYwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MiBAQAorMjAyMS0wNC0wNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgSW1hZ2VCdWZmZXIgY2FsY3Vs
YXRlIGl0cyBtZW1vcnlDb3N0KCkgZnJvbSBpdHMgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6Cisg
ICAgICAgIE1ha2UgU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdygpIHB1Ymxp
Yy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToK
KyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxj
dWxhdGVCeXRlc1BlclJvdyk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6Oklt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3Vs
YXRlQnl0ZXNQZXJSb3coKSBpcyB1c2VkIHRvIGdldCB0aGUgYnl0ZXNQZXJSb3coKQorICAgICAg
ICBieSBnaXZpbmcgaXQgdGhlIHNjYWxlZCBiYWNrZW5kIHNpemUuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIFVzZSB0aGUg
bmV3IG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSgpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAg
ICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0
ZU1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJL
aXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICBJbXBsZW1lbnQgdGhlc2Ugc3Rh
dGljIGZ1bmN0aW9ucyBhbmQgbWFrZSB0aGVtIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcgCisgICAg
ICAgIGZ1bmN0aW9ucyBmcm9tIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCBiZWNhdXNlIHRo
aXMgY2xhc3MgaXMgZGVyaXZlZAorICAgICAgICBmcm9tIEltYWdlQnVmZmVyQmFja2VuZC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgVXNl
IHRoZSBuZXcgbmFtZSBvZiB0aGUgZnVuY3Rpb24gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKCku
CisKIDIwMjEtMDQtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkcmVzcyBzb21lIHBvc3QtbGFuZGluZyBjb21tZW50cyBhZnRlciByMjc1NDkx
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKaW5kZXggM2E1MTE0YjczMjBiN2M5MGQ5MjA0OTc2Y2U0MDJmZjAwOGVlNTdi
MC4uZDBmMDBlY2M5MmEwZTg3ZWE4ZmI5MTcyZTQ4OWE3OTZhZDAxYjIyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTExMSwxNiArMTExLDEyIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPm1lbW9y
eUNvc3QoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBCYWNrZW5kVHlwZTo6
Y2FsY3VsYXRlTWVtb3J5Q29zdChtX3BhcmFtZXRlcnMpOwogICAgIH0KIAogICAgIHNpemVfdCBl
eHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGF1
dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJu
IG1fYmFja2VuZC0+ZXh0ZXJuYWxNZW1vcnlDb3N0KCk7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChtX3Bh
cmFtZXRlcnMpOwogICAgIH0KIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29u
c3Qgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDM3OTRkZTc3YmU2M2E5OTlhM2I5NzFjNzhi
ZmRjZTFkNGNhYTJiMGIuLjNkYTljNDUzMWQwMDNmMjcyNjlmMTMyZWU3MDRjZWQ1MzQwZjdjMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDI4ICszMSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCi0gICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKK0ludFNpemUg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewotfQotCi1JbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3Vs
YXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpCi17Ci0gICAgRmxvYXRTaXplIHNjYWxlZFNpemUgPSB7IGNlaWxmKHJlc29sdXRpb25TY2Fs
ZSAqIHNpemUud2lkdGgoKSksIGNlaWxmKHJlc29sdXRpb25TY2FsZSAqIHNpemUuaGVpZ2h0KCkp
IH07CisgICAgRmxvYXRTaXplIHNjYWxlZFNpemUgPSB7IGNlaWxmKHBhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlICogcGFyYW1ldGVycy5sb2dpY2FsU2l6ZS53aWR0aCgpKSwgY2VpbGYocGFyYW1l
dGVycy5yZXNvbHV0aW9uU2NhbGUgKiBwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLmhlaWdodCgpKSB9
OwogICAgIGlmIChzY2FsZWRTaXplLmlzRW1wdHkoKSB8fCAhc2NhbGVkU2l6ZS5pc0V4cHJlc3Np
YmxlQXNJbnRTaXplKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBJbnRTaXplIGJhY2tl
bmRTaXplID0gSW50U2l6ZShzY2FsZWRTaXplKTsKLQotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9IDQgKiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4oYmFja2VuZFNpemUud2lkdGgoKSk7Ci0gICAgaWYgKGJ5dGVzUGVyUm93Lmhhc092
ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIENoZWNrZWRTaXplIG51bUJ5
dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdo
dCgpKSAqIGJ5dGVzUGVyUm93OwotICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIEludFNpemUoc2NhbGVkU2l6ZSk7Cit9CiAK
LSAgICByZXR1cm4gYmFja2VuZFNpemU7CitJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVy
QmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9wYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpCit7CiB9CiAKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMzFjZTk3NzU3YjVkMmY5
ODAwYjE1NzYzY2UxNmJlMWM3ODY5ZjE2Yy4uNWNmODJmZmVkOTRiODhlYjcyMmYwMTgxNGJhZGNj
NDk2NTc4Mjk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NywxNiArODcsMTQgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3Qg
UGFyYW1ldGVycyYpIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQoKSB7
IH0KIAogICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsg
fTsgfQogCi0gICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQg
KiBiYWNrZW5kU2l6ZSgpLmFyZWEoKS51bnNhZmVHZXQoKTsgfQotICAgIHZpcnR1YWwgc2l6ZV90
IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQogICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CiAKQEAgLTEzNiw3ICsxMzQsNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJCYWNr
ZW5kKGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJS
b3coKSBjb25zdCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpOyB9CisgICAgdmly
dHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0ID0gMDsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgVCB0b0JhY2tlbmRDb29yZGluYXRlcyhUIHQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
NDdhNDVkY2MyZTgyZGQ2ZDBjYWNiNTEyNjYwNmFiZjcxOTVjMTA0MS4uZGY5N2I0N2IzN2I4Y2Ux
MGE2OTI5MzMyMjNhMDhiNWJhMzU1MDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcApAQCAtMyw3ICszLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtp
dC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4g
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MSwxNCArNDEsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwog
CitJbnRTaXplIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVT
YWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRT
aXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAg
aWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlm
IChiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNpemUgfHwgYmFja2VuZFNpemUu
aGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBiYWNrZW5kU2l6ZTsKK30KKwordW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRT
aXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsKKyAg
ICByZXR1cm4gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0Iz
MiwgYmFja2VuZFNpemUud2lkdGgoKSk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisK
KyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRl
cnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNv
cmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgQVNT
RVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIG51bUJ5dGVzLnVu
c2FmZUdldCgpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAg
QVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAog
ICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19zdXJmYWNlRGF0YUtleTsKIAotICAg
IEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxv
Z2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7Ci0gICAgaWYgKGJhY2tlbmRT
aXplLmlzRW1wdHkoKSB8fCBiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNpemUg
fHwgYmFja2VuZFNpemUuaGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAg
IGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaW50IHN0cmlkZSA9IGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKENBSVJPX0ZPUk1B
VF9BUkdCMzIsIGJhY2tlbmRTaXplLndpZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKaW5kZXggODY1Y2M2OWIyZDUzMzg1NDVmMzdl
NDE5M2NiOTRmMTk4MGJlNzNhNC4uMGEzODI3M2E4OTg2NGNlZWE1NzU5ODgyMTI1MWIwYzhmNGNh
MjI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5oCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDEyICs0MCwxOCBAQCBj
bGFzcyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbgogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VC
dWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0
aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwor
ICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRl
cnMmKTsKKwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRv
dyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7CiAKIHByaXZhdGU6CiAgICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwogCisgICAg
dW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjYWxjdWxhdGVC
eXRlc1BlclJvdyhtX3BhcmFtZXRlcnMpOyB9CisKICAgICB2b2lkIHBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKSBv
dmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCBjNWMyODQyMWZkYmMw
NzhkMzhkZDRlODAzOGMxZjMzZTJhZjQwNWYyLi5mZWEyZWU1ZWVhNWU4ODE3ODQ5MmJjNjJmZDUy
ZThiMDBmMGIxNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC02MCw2ICs2MCwxNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fY29udGV4dDsKIH07CiAK
K3Vuc2lnbmVkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBj
YWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXpl
LmlzRW1wdHkoKSk7CisKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0
ZXNQZXJSb3cgPSAoQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXpl
LndpZHRoKCkpICogNCk7CisgICAgQVNTRVJUKCFieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkp
OworCisgICAgcmV0dXJuIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpOworfQorCiBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmgKaW5kZXggYjI2YWUwODQzNDdiOWUyMzM0MDQ2MDBjMmVhNGE0YTI4
YjFlMWJhNy4uODQ3ZTE0NTk1NTMzODI4OTNmZjE3NmNhNWJjMTcxZmU4NjkyZGY5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5oCkBAIC0zMyw2ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQgOiBwdWJsaWMgSW1hZ2VC
dWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0
ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYpOworCiAgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlv
biA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJ
bWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggOWQ1MzhiZWZjZDhlMDM4ZjFhMWE5
N2EyYTc3ODQxMzBmMzI4Y2E0NS4uMzJiZTllZGE3NDcwMTE2MmZiYmY5Mjc0ODJmMDU4YzlmYTNk
NDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDExICszOSw0
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6
ZShwYXJhbWV0ZXJzKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gYmFja2VuZFNpemU7CisgICAgCisgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3Zl
cmZsb3c+IGJ5dGVzUGVyUm93ID0gNCAqIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PihiYWNrZW5kU2l6ZS53aWR0aCgpKTsKKyAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dl
ZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICog
Ynl0ZXNQZXJSb3c7CisgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKK30KKworc2l6ZV90IEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgp
KTsKKworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93ID0gY2FsY3VsYXRlQnl0ZXNQZXJSb3cocGFy
YW1ldGVycyk7CisKKyAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAg
ICBBU1NFUlQoIW51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICByZXR1cm4gbnVtQnl0
ZXMudW5zYWZlR2V0KCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0
V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tl
bmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxl
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBh
cmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCA4ZjMzMjNl
N2RjZWM2MzU1YWNiN2Q1Yjk5YzIwNzg3NzE1Yzg2YmE4Li44MDQzZmMzZjc4NWYwYmMyMDUxNjBl
NjBmYzE1YmE5NzRiZTgwMGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAg
LTM2LDYgKzM2LDkgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQgOiBwdWJsaWMg
SW1hZ2VCdWZmZXJDR0JhY2tlbmQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxh
dGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3Qg
Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CisKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01Niw2ICs1OSw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYs
IHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CiAKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fcGFyYW1ldGVycyk7
IH0KKwogICAgIHZvaWQqIG1fZGF0YTsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+
IG1fZGF0YVByb3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1f
Y29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDZjM2I3
Yzc0YjQ2ZTEyNmU3OWQ5ZjE2MjIwYjNhMmZhZDllZGQ5YTEuLmQyYTJkZmU4MTM1NzE4N2Q5NWU5
ODY3NjA4Nzg4NDhmZDg0ZDViZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQxLDkgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKTsKIAotSW50U2l6ZSBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQorSW50U2l6ZSBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJbWFnZUJ1ZmZl
ckNHQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVy
cyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IApAQCAtNTQsNiArNTQsMzAgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwKICAgICByZXR1cm4g
YmFja2VuZFNpemU7CiB9CiAKK3Vuc2lnbmVkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVC
eXRlc1BlclJvdyhwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0
eShrSU9TdXJmYWNlQnl0ZXNQZXJSb3csIGJ5dGVzUGVyUm93KTsKK30KKworc2l6ZV90IEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVC
YWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHko
KSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBh
cmFtZXRlcnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVk
LCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7Cisg
ICAgQVNTRVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIG51bUJ5
dGVzLnVuc2FmZUdldCgpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICByZXR1cm4gY2FsY3VsYXRlTWVtb3J5Q29zdChwYXJhbWV0ZXJzKTsKK30KKwog
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
b250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CkBAIC02
Niw3ICs5MCw3IEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29s
b3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICBJbnRTaXplIGJh
Y2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwg
cGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBj
YWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwNiw3ICsxMzAsNiBA
QCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbQogCiBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiB7Ci0KICAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQgPSBtX3N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGlm
IChtX25lZWRzU2V0dXBDb250ZXh0KSB7CiAgICAgICAgIG1fbmVlZHNTZXR1cENvbnRleHQgPSBm
YWxzZTsKQEAgLTEyNSwxOSArMTQ4LDkgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7
CiB9CiAKLXNpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKLX0KLQotc2l6ZV90
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbWVtb3J5Q29zdCgpOwotfQotCiB1bnNpZ25lZCBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJm
YWNlLT5ieXRlc1BlclJvdygpOworICAgIHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3Bh
cmFtZXRlcnMpOwogfQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDQ4NTlkZjZmYzUyNWQ4NWMzMjhjMTQ1ZjA3
OTE3ODM1NjkwOWUyNWQuLjQ5MTUzNzEyMDAxM2QwMTE1NWZiOTg0MmY4ZTA4OGY1MGMyOTkxOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsOCArMzcsMTEgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIElt
YWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUpOwotCisgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXpl
KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQ
ZXJSb3coY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVt
b3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVF
eHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworICAgIAogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKQEAgLTUwLDkgKzUzLDYgQEAgcHVibGlj
OgogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAg
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc2l6ZV90IGV4dGVybmFs
TWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IGM3
MTkzYmNjYjlmZWIwNjFmYjQ0Y2QyOTVlNmIzYmQ0YjdlM2JkOTEuLjQ1ZGI4OGY2ZTQ0ZDg5NWJm
YWMxNzhjNTkzMjUyZDFhNTRhYmNmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCkBAIC04OSw2ICs4OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIENvbmZpZ3VyYXRpb24g
bV9jb25maWd1cmF0aW9uOwogICAgIH07CiAKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNp
emUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlv
biYpOworCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9j
ZWQgbWVtb3J5LgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwogCkBAIC0xNTEsMTAgKzE1NSw2
IEBAIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBDb25maWd1cmF0aW9uLCB2b2lkKik7CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKLSAg
ICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6
ZShXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24m
KTsKLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0
ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKLSAg
ICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYpOwotCiAjaWYgVVNFKENHKQogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25zdDsK
ICAgICBzdGF0aWMgdm9pZCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NC
aXRtYXAsIHZvaWQqIHR5cGVsZXNzRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZTE5YTlhYmNjNTBhNDJjMTA2MjZiMzBlOWJk
ZmVkMDdlMzllMGE5Yi4uMzkwNDFjNTA4Y2RiNTk2MDlkMjgyODg5ZjU1MWEzYmIyNGQ5MTcyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MywxOSArNDMsNjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogCitTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9y
U3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OworI2VuZGlmCisgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247Cit9CisKK0ludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9
IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUsIGNvbmZp
Z3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2Vk
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENo
ZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBi
eXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgcmV0dXJuIGJhY2tlbmRTaXplOworfQorCit1bnNpZ25lZCBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNh
bGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNpemUu
aXNFbXB0eSgpKTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRl
c1BlclJvdyA9IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNp
emUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIEFTU0VSVCghYnl0ZXNQZXJSb3cu
aGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIHJldHVybiBieXRlc1BlclJvdy51bnNhZmVHZXQoKTsK
K30KKworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRl
TWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUg
YmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NF
UlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9
IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRlcnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVt
Qnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVp
Z2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgQVNTRVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2Vk
KCkpOworCisgICAgcmV0dXJuIG51bUJ5dGVzLnVuc2FmZUdldCgpOworfQorCiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1
bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tl
bmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5j
b2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9
OwotI2VuZGlmCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihw
YXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0xMDMsMTEgKzE0OSw2IEBAIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYml0bWFwLT5zaXplKCk7
CiB9CiAKLXVuc2lnbmVkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Ynl0ZXNQ
ZXJSb3coKSBjb25zdAotewotICAgIHJldHVybiBtX2JpdG1hcC0+Ynl0ZXNQZXJSb3coKTsKLX0K
LQogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogICAgIHJldHVybiBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggNTEyYzc4
ZTU1NGI3YzQzMWVhN2FiM2I3ODVlNzRiYWUzMDQ3ZjMzZS4uODQ0MmQwZTZkMjFkZGE2MzBlZjQw
YmQ5NjQwN2QwNTE5NmQ5ZDZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsMTEgQEAgY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWMK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBXZWJD
b3JlOjpJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7
CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRl
cnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1l
dGVycyYpOworCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6
SG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSk7CiAKQEAgLTYyLDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdW5zaWdu
ZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBieXRlc1BlclJv
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fcGFyYW1l
dGVycyk7IH0KIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMmI2YmZmMTA0N2YxMTcwOTY3MThjZGU5ZGM3MWE0
Y2Y5MGJmNWVlZi4uODMxNWRkYzFhYTY3ZTQzZGYzNmE5N2Q4NDYwNDVlMTQ3NTMyYWI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTU1LDEwICs1NSw5IEBAIGNsYXNzIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVm
ZmVyPEJhY2tlbmRUCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewotICAgICAgICBpZiAoQmFj
a2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICAgICAgYXV0byBwYXJh
bWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OworICAgICAgICBpZiAo
QmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKS5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHBhcmFtZXRlcnMsIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDU3YzdmN2Q1YTI0NTk3
ZDJiNmIyZmYzZWI1MGQ3ZjU2OTc0OTUwYTkuLjI3NGE5Y2UzN2YzYjRmOGE3YjQ1MzdlOTRmMTk0
OWQ1YjZjY2JiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEhBVkUoSU9T
VVJGQUNFKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg+CiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAg
LTM3LDYgKzM4LDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIAor
SW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNh
ZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShw
YXJhbWV0ZXJzKTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
eworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9y
eUNvc3QocGFyYW1ldGVycyk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChwYXJhbWV0ZXJzKTsKK30KKwogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKIHsKICAgICBpZiAoIVdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSkgewpAQCAtNTgsNiArNzQs
MTIgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqKEdyYXBoaWNzQ29udGV4dCopbnVsbHB0
cjsKIH0KIAordW5zaWduZWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpi
eXRlc1BlclJvdygpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gMDsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRl
eCBkNWUwMGU0MjA5OGE0YjM3MDY4MmE0OTdiZTM4OWMwZDM4OTUzY2E4Li4yODc1YjA2YWE1YWVk
MDIyNmNlMzA0MWU1OGJhMGMzMWE1ZDRkZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCwxMCBA
QCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYQogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgorICAg
IHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRl
cnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25z
dCBQYXJhbWV0ZXJzJik7CisKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCiAgICAgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSYmIGhhbmRsZSkKQEAgLTY0LDYgKzY4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gV2ViQ29yZTo6
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAKIHByaXZhdGU6CisgICAgdW5zaWduZWQgYnl0
ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKwogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBtX2hhbmRsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCAyZTIwZWRh
NzczY2JiNzNjM2QwZmIzN2I4NWE4MTMzNjQ0NzY2MzMzLi40M2JlYjUxNzM0YThhMjgxZTA2OWUx
N2ZiNzM5YzBkMjJkNjhjMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQx
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZCk7CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IEhvc3RXaW5kb3cqKQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNr
ZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShw
YXJhbWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAo=
</data>
<flag name="commit-queue"
          id="445442"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425476</attachid>
            <date>2021-04-07 20:57:04 -0700</date>
            <delta_ts>2021-04-09 15:35:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224306-20210407205703.patch</filename>
            <type>text/plain</type>
            <size>40607</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjMTA3YjQ0ZDY1YTM2
YjQ1NGEzNmI5NzYxZjJmZmE3NDM4ZmE5MS4uNDAzMjkyYzRkOGE4ZDBkZWVhNDg2OGExNmQwYzQ3
NDU2OWNmZjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTA0LTA3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBJbWFnZUJ1ZmZlciBjYWxjdWxhdGUgaXRzIG1lbW9yeUNvc3QoKSBmcm9tIGl0cyBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIHJvdW5kLXRyaXAgcHJvY2Vzc2VzIHRvIGdldCB0aGUgYmFja2VuZCBtZW1vcnlDb3N0KCks
IHdlIGNhbiAKKyAgICAgICAgY2FsY3VsYXRlIGl0IGZyb20gdGhlIHNpemUgYW5kIHRoZSBieXRl
cyBhbGlnbm1lbnQgb2YgZWFjaCByb3cgaW4gdGhlCisgICAgICAgIGJhY2tlbmQuIFRoZXNlIGFy
ZSBzdGF0aWMgdmFsdWVzIHNvIGluIHRoZSBjYXNlIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHks
CisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW5zdXJlIHRoZSBiYWNrZW5kIGlzIGNyZWF0
ZWQgaW4gR1BVUCBhbmQgaXQgaXMgbWFwcGVkCisgICAgICAgIGluIHRoZSBXZWIgUHJvY2Vzcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5
Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Om1lbW9yeUNvc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpl
eHRlcm5hbE1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIC0g
VGhpcyBpcyB0aGUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGlzIDQtYnl0ZXMg
YWxpZ25lZCByb3dzLgorICAgICAgICAtIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSgpIHJldHVy
bnMgdGhlIHNpemUgd2hvc2UgYnl0ZXNQZXJSb3cgZG9lcyBub3QKKyAgICAgICAgb3ZlcmZsb3cg
dW5zaWduZWQgYW5kIHdob3NlIG1lbW9yeUNvc3QgZG9lcyBub3Qgbm90IG92ZXJmbG93IHNpemVf
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0
ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
Lmg6CisgICAgICAgIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKCkgaXMgdXNlZCB0byBj
YWxjdWxhdGUgdGhlIGJ5dGVzUGVyUm93KCkKKyAgICAgICAgZm9yIENhaXJvIHBvcnQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2FsY3VsYXRlQnl0ZXNQZXJS
b3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
Lmg6CisgICAgICAgIFRoaXMgaXMgdGhlIENHIGNhc2Ugd2hlbiB0aGUgYmFja2VuZCBpcyA0LWJ5
dGVzIGFsaWduZWQgcm93cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
aDoKKyAgICAgICAgVGhpcyBpcyB0aGUgQ0cgYml0bWFwIGNhc2Ugd2hlcmUgdGhlIGJhY2tlbmQg
aXMgNC1ieXRlcyBhbGlnbmVkIHJvd3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVCeXRl
c1BlclJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxj
dWxhdGVCYWNrZW5kU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpleHRlcm5hbE1lbW9yeUNvc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICBJT1N1cmZhY2VBbGlnblByb3BlcnR5KCkg
aXMgdXNlZCB0byBhbGlnbiB0aGUgQ0cgYnl0ZXNQZXJSb3cgdG8gdGhlIHByb3BlcgorICAgICAg
ICBJT1N1cmZhY2UgYWxpZ25tZW50LgorCiAyMDIxLTA0LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIDI3NTU3
MTogYWRkIGRlY2xhcmF0aW9uIGZvciBuZXcgbWV0aG9kIChhbmQgbWFrZSB0aGUgY29uc3RuZXNz
IG1hdGNoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMjU5YjE4ZmViZmRmNTRhYWQ5Y2I4NDRmMmM1NDAzMTA4MDY4
ODA3NS4uYjdjZjA0MDI2ODkzNWJiNGVlM2MzOTAzN2Q1YTAzMDBjZTc0ODYwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MiBAQAorMjAyMS0wNC0wNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgSW1hZ2VCdWZmZXIgY2FsY3Vs
YXRlIGl0cyBtZW1vcnlDb3N0KCkgZnJvbSBpdHMgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6Cisg
ICAgICAgIE1ha2UgU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdygpIHB1Ymxp
Yy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToK
KyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxj
dWxhdGVCeXRlc1BlclJvdyk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6Oklt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3Vs
YXRlQnl0ZXNQZXJSb3coKSBpcyB1c2VkIHRvIGdldCB0aGUgYnl0ZXNQZXJSb3coKQorICAgICAg
ICBieSBnaXZpbmcgaXQgdGhlIHNjYWxlZCBiYWNrZW5kIHNpemUuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIFVzZSB0aGUg
bmV3IG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSgpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAg
ICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0
ZU1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJL
aXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICBJbXBsZW1lbnQgdGhlc2Ugc3Rh
dGljIGZ1bmN0aW9ucyBhbmQgbWFrZSB0aGVtIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcgCisgICAg
ICAgIGZ1bmN0aW9ucyBmcm9tIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCBiZWNhdXNlIHRo
aXMgY2xhc3MgaXMgZGVyaXZlZAorICAgICAgICBmcm9tIEltYWdlQnVmZmVyQmFja2VuZC4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgVXNl
IHRoZSBuZXcgbmFtZSBvZiB0aGUgZnVuY3Rpb24gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKCku
CisKIDIwMjEtMDQtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkcmVzcyBzb21lIHBvc3QtbGFuZGluZyBjb21tZW50cyBhZnRlciByMjc1NDkx
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKaW5kZXggM2E1MTE0YjczMjBiN2M5MGQ5MjA0OTc2Y2U0MDJmZjAwOGVlNTdi
MC4uZDBmMDBlY2M5MmEwZTg3ZWE4ZmI5MTcyZTQ4OWE3OTZhZDAxYjIyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTExMSwxNiArMTExLDEyIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5z
dXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPm1lbW9y
eUNvc3QoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBCYWNrZW5kVHlwZTo6
Y2FsY3VsYXRlTWVtb3J5Q29zdChtX3BhcmFtZXRlcnMpOwogICAgIH0KIAogICAgIHNpemVfdCBl
eHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKGF1
dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgcmV0dXJu
IG1fYmFja2VuZC0+ZXh0ZXJuYWxNZW1vcnlDb3N0KCk7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChtX3Bh
cmFtZXRlcnMpOwogICAgIH0KIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yID0gQ29weUJhY2tpbmdTdG9yZSkgY29u
c3Qgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDM3OTRkZTc3YmU2M2E5OTlhM2I5NzFjNzhi
ZmRjZTFkNGNhYTJiMGIuLjNkYTljNDUzMWQwMDNmMjcyNjlmMTMyZWU3MDRjZWQ1MzQwZjdjMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDI4ICszMSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCi0gICAgOiBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKK0ludFNpemUg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogewotfQotCi1JbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3Vs
YXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUpCi17Ci0gICAgRmxvYXRTaXplIHNjYWxlZFNpemUgPSB7IGNlaWxmKHJlc29sdXRpb25TY2Fs
ZSAqIHNpemUud2lkdGgoKSksIGNlaWxmKHJlc29sdXRpb25TY2FsZSAqIHNpemUuaGVpZ2h0KCkp
IH07CisgICAgRmxvYXRTaXplIHNjYWxlZFNpemUgPSB7IGNlaWxmKHBhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlICogcGFyYW1ldGVycy5sb2dpY2FsU2l6ZS53aWR0aCgpKSwgY2VpbGYocGFyYW1l
dGVycy5yZXNvbHV0aW9uU2NhbGUgKiBwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLmhlaWdodCgpKSB9
OwogICAgIGlmIChzY2FsZWRTaXplLmlzRW1wdHkoKSB8fCAhc2NhbGVkU2l6ZS5pc0V4cHJlc3Np
YmxlQXNJbnRTaXplKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBJbnRTaXplIGJhY2tl
bmRTaXplID0gSW50U2l6ZShzY2FsZWRTaXplKTsKLQotICAgIENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9IDQgKiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4oYmFja2VuZFNpemUud2lkdGgoKSk7Ci0gICAgaWYgKGJ5dGVzUGVyUm93Lmhhc092
ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIENoZWNrZWRTaXplIG51bUJ5
dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdo
dCgpKSAqIGJ5dGVzUGVyUm93OwotICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIEludFNpemUoc2NhbGVkU2l6ZSk7Cit9CiAK
LSAgICByZXR1cm4gYmFja2VuZFNpemU7CitJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVy
QmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQorICAgIDogbV9wYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpCit7CiB9CiAKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggMzFjZTk3NzU3YjVkMmY5
ODAwYjE1NzYzY2UxNmJlMWM3ODY5ZjE2Yy4uNWNmODJmZmVkOTRiODhlYjcyMmYwMTgxNGJhZGNj
NDk2NTc4Mjk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NywxNiArODcsMTQgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3Qg
UGFyYW1ldGVycyYpIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQoKSB7
IH0KIAogICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsg
fTsgfQogCi0gICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDQg
KiBiYWNrZW5kU2l6ZSgpLmFyZWEoKS51bnNhZmVHZXQoKTsgfQotICAgIHZpcnR1YWwgc2l6ZV90
IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQogICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CiAKQEAgLTEzNiw3ICsxMzQsNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJCYWNr
ZW5kKGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJS
b3coKSBjb25zdCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS53aWR0aCgpOyB9CisgICAgdmly
dHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0ID0gMDsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgVCB0b0JhY2tlbmRDb29yZGluYXRlcyhUIHQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
NDdhNDVkY2MyZTgyZGQ2ZDBjYWNiNTEyNjYwNmFiZjcxOTVjMTA0MS4uZGY5N2I0N2IzN2I4Y2Ux
MGE2OTI5MzMyMjNhMDhiNWJhMzU1MDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcApAQCAtMyw3ICszLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2VsZmlzaC5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtp
dC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4g
THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00MSwxNCArNDEsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwog
CitJbnRTaXplIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVT
YWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRT
aXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAg
aWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlm
IChiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNpemUgfHwgYmFja2VuZFNpemUu
aGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IHJldHVybiBiYWNrZW5kU2l6ZTsKK30KKwordW5zaWduZWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRT
aXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgpKTsKKyAg
ICByZXR1cm4gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0Iz
MiwgYmFja2VuZFNpemUud2lkdGgoKSk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisK
KyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRl
cnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNv
cmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgQVNT
RVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIG51bUJ5dGVzLnVu
c2FmZUdldCgpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAg
QVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAog
ICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19zdXJmYWNlRGF0YUtleTsKIAotICAg
IEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxv
Z2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7Ci0gICAgaWYgKGJhY2tlbmRT
aXplLmlzRW1wdHkoKSB8fCBiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNpemUg
fHwgYmFja2VuZFNpemUuaGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKKyAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAg
IGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaW50IHN0cmlkZSA9IGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKENBSVJPX0ZPUk1B
VF9BUkdCMzIsIGJhY2tlbmRTaXplLndpZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmgKaW5kZXggODY1Y2M2OWIyZDUzMzg1NDVmMzdl
NDE5M2NiOTRmMTk4MGJlNzNhNC4uMGEzODI3M2E4OTg2NGNlZWE1NzU5ODgyMTI1MWIwYzhmNGNh
MjI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5oCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyIDx6ZWNrZUBzZWxmaXNoLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDEyICs0MCwxOCBAQCBj
bGFzcyBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1
ZmZlckNhaXJvU3VyZmFjZUJhY2tlbgogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VC
dWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0
aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwor
ICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRl
cnMmKTsKKwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRv
dyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3Vy
ZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7CiAKIHByaXZhdGU6CiAgICAgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tl
bmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYpOwogCisgICAg
dW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjYWxjdWxhdGVC
eXRlc1BlclJvdyhtX3BhcmFtZXRlcnMpOyB9CisKICAgICB2b2lkIHBsYXRmb3JtVHJhbnNmb3Jt
Q29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKSBv
dmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCBjNWMyODQyMWZkYmMw
NzhkMzhkZDRlODAzOGMxZjMzZTJhZjQwNWYyLi5mZWEyZWU1ZWVhNWU4ODE3ODQ5MmJjNjJmZDUy
ZThiMDBmMGIxNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC02MCw2ICs2MCwxNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fY29udGV4dDsKIH07CiAK
K3Vuc2lnbmVkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBj
YWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXpl
LmlzRW1wdHkoKSk7CisKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0
ZXNQZXJSb3cgPSAoQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXpl
LndpZHRoKCkpICogNCk7CisgICAgQVNTRVJUKCFieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkp
OworCisgICAgcmV0dXJuIGJ5dGVzUGVyUm93LnVuc2FmZUdldCgpOworfQorCiBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmgKaW5kZXggYjI2YWUwODQzNDdiOWUyMzM0MDQ2MDBjMmVhNGE0YTI4
YjFlMWJhNy4uODQ3ZTE0NTk1NTMzODI4OTNmZjE3NmNhNWJjMTcxZmU4NjkyZGY5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5oCkBAIC0zMyw2ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQgOiBwdWJsaWMgSW1hZ2VC
dWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0
ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYpOworCiAgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlv
biA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxJ
bWFnZT4gc2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24pIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKaW5kZXggOWQ1MzhiZWZjZDhlMDM4ZjFhMWE5
N2EyYTc3ODQxMzBmMzI4Y2E0NS4uMzJiZTllZGE3NDcwMTE2MmZiYmY5Mjc0ODJmMDU4YzlmYTNk
NDgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDExICszOSw0
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiAKK0ludFNpemUgSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6
ZShwYXJhbWV0ZXJzKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gYmFja2VuZFNpemU7CisgICAgCisgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3Zl
cmZsb3c+IGJ5dGVzUGVyUm93ID0gNCAqIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PihiYWNrZW5kU2l6ZS53aWR0aCgpKTsKKyAgICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dl
ZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICog
Ynl0ZXNQZXJSb3c7CisgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKK30KKworc2l6ZV90IEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNFbXB0eSgp
KTsKKworICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93ID0gY2FsY3VsYXRlQnl0ZXNQZXJSb3cocGFy
YW1ldGVycyk7CisKKyAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAg
ICBBU1NFUlQoIW51bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICByZXR1cm4gbnVtQnl0
ZXMudW5zYWZlR2V0KCk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0
V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tl
bmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxl
KTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBh
cmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCA4ZjMzMjNl
N2RjZWM2MzU1YWNiN2Q1Yjk5YzIwNzg3NzE1Yzg2YmE4Li44MDQzZmMzZjc4NWYwYmMyMDUxNjBl
NjBmYzE1YmE5NzRiZTgwMGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAg
LTM2LDYgKzM2LDkgQEAgY2xhc3MgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQgOiBwdWJsaWMg
SW1hZ2VCdWZmZXJDR0JhY2tlbmQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxh
dGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3Qg
Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CisKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01Niw2ICs1OSw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYs
IHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4mJik7CiAKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fcGFyYW1ldGVycyk7
IH0KKwogICAgIHZvaWQqIG1fZGF0YTsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+
IG1fZGF0YVByb3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1f
Y29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDZjM2I3
Yzc0YjQ2ZTEyNmU3OWQ5ZjE2MjIwYjNhMmZhZDllZGQ5YTEuLmQyYTJkZmU4MTM1NzE4N2Q5NWU5
ODY3NjA4Nzg4NDhmZDg0ZDViZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQxLDkgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKTsKIAotSW50U2l6ZSBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKQorSW50U2l6ZSBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJbWFnZUJ1ZmZl
ckNHQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVy
cyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IApAQCAtNTQsNiArNTQsMzAgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwKICAgICByZXR1cm4g
YmFja2VuZFNpemU7CiB9CiAKK3Vuc2lnbmVkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVC
eXRlc1BlclJvdyhwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0
eShrSU9TdXJmYWNlQnl0ZXNQZXJSb3csIGJ5dGVzUGVyUm93KTsKK30KKworc2l6ZV90IEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVC
YWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHko
KSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBh
cmFtZXRlcnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVk
LCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7Cisg
ICAgQVNTRVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgcmV0dXJuIG51bUJ5
dGVzLnVuc2FmZUdldCgpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICByZXR1cm4gY2FsY3VsYXRlTWVtb3J5Q29zdChwYXJhbWV0ZXJzKTsKK30KKwog
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
b250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CkBAIC02
Niw3ICs5MCw3IEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29s
b3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKLSAgICBJbnRTaXplIGJh
Y2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwg
cGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBj
YWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwNiw3ICsxMzAsNiBA
QCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbQogCiBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiB7Ci0KICAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQgPSBtX3N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIGlm
IChtX25lZWRzU2V0dXBDb250ZXh0KSB7CiAgICAgICAgIG1fbmVlZHNTZXR1cENvbnRleHQgPSBm
YWxzZTsKQEAgLTEyNSwxOSArMTQ4LDkgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmJhY2tlbmRTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7
CiB9CiAKLXNpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKLX0KLQotc2l6ZV90
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbWVtb3J5Q29zdCgpOwotfQotCiB1bnNpZ25lZCBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJm
YWNlLT5ieXRlc1BlclJvdygpOworICAgIHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3Bh
cmFtZXRlcnMpOwogfQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDQ4NTlkZjZmYzUyNWQ4NWMzMjhjMTQ1ZjA3
OTE3ODM1NjkwOWUyNWQuLjQ5MTUzNzEyMDAxM2QwMTE1NWZiOTg0MmY4ZTA4OGY1MGMyOTkxOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsOCArMzcsMTEgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIDogcHVibGljIElt
YWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUpOwotCisgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXpl
KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQ
ZXJSb3coY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVt
b3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVF
eHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworICAgIAogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKQEAgLTUwLDkgKzUzLDYgQEAgcHVibGlj
OgogCiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAg
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc2l6ZV90IGV4dGVybmFs
TWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IGM3
MTkzYmNjYjlmZWIwNjFmYjQ0Y2QyOTVlNmIzYmQ0YjdlM2JkOTEuLjQ1ZGI4OGY2ZTQ0ZDg5NWJm
YWMxNzhjNTkzMjUyZDFhNTRhYmNmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCkBAIC04OSw2ICs4OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIENvbmZpZ3VyYXRpb24g
bV9jb25maWd1cmF0aW9uOwogICAgIH07CiAKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6ZShXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNp
emUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVzUGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlv
biYpOworCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9j
ZWQgbWVtb3J5LgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24pOwogCkBAIC0xNTEsMTAgKzE1NSw2
IEBAIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBDb25maWd1cmF0aW9uLCB2b2lkKik7CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CiAKLSAg
ICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IG51bUJ5dGVzRm9yU2l6
ZShXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24m
KTsKLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0
ZUJ5dGVzUGVyUm93KFdlYkNvcmU6OkludFNpemUsIGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKLSAg
ICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNhbGN1bGF0ZUJ5dGVz
UGVyUGl4ZWwoY29uc3QgQ29uZmlndXJhdGlvbiYpOwotCiAjaWYgVVNFKENHKQogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25zdDsK
ICAgICBzdGF0aWMgdm9pZCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NC
aXRtYXAsIHZvaWQqIHR5cGVsZXNzRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggZTE5YTlhYmNjNTBhNDJjMTA2MjZiMzBlOWJk
ZmVkMDdlMzllMGE5Yi4uMzkwNDFjNTA4Y2RiNTk2MDlkMjgyODg5ZjU1MWEzYmIyNGQ5MTcyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MywxOSArNDMsNjUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogCitTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9y
U3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OworI2VuZGlmCisgICAgcmV0dXJuIGNvbmZp
Z3VyYXRpb247Cit9CisKK0ludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
K3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9
IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUsIGNvbmZp
Z3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2Vk
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENo
ZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBi
eXRlc1BlclJvdzsKKyAgICBpZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgcmV0dXJuIGJhY2tlbmRTaXplOworfQorCit1bnNpZ25lZCBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNh
bGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIEFTU0VSVCghYmFja2VuZFNpemUu
aXNFbXB0eSgpKTsKKworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRl
c1BlclJvdyA9IFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNp
emUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykpOworICAgIEFTU0VSVCghYnl0ZXNQZXJSb3cu
aGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIHJldHVybiBieXRlc1BlclJvdy51bnNhZmVHZXQoKTsK
K30KKworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRl
TWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUg
YmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NF
UlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdyA9
IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRlcnMpOworCisgICAgQ2hlY2tlZFNpemUgbnVt
Qnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNpemUuaGVp
Z2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgQVNTRVJUKCFudW1CeXRlcy5oYXNPdmVyZmxvd2Vk
KCkpOworCisgICAgcmV0dXJuIG51bUJ5dGVzLnVuc2FmZUdldCgpOworfQorCiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1
bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tl
bmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
IGNvbmZpZ3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5j
b2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9
OwotI2VuZGlmCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihw
YXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0xMDMsMTEgKzE0OSw2IEBAIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYml0bWFwLT5zaXplKCk7
CiB9CiAKLXVuc2lnbmVkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Ynl0ZXNQ
ZXJSb3coKSBjb25zdAotewotICAgIHJldHVybiBtX2JpdG1hcC0+Ynl0ZXNQZXJSb3coKTsKLX0K
LQogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewogICAgIHJldHVybiBO
YXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggNTEyYzc4
ZTU1NGI3YzQzMWVhN2FiM2I3ODVlNzRiYWUzMDQ3ZjMzZS4uODQ0MmQwZTZkMjFkZGE2MzBlZjQw
YmQ5NjQwN2QwNTE5NmQ5ZDZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDMsNiArNDMsMTEgQEAgY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWMK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBXZWJD
b3JlOjpJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7
CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRl
cnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1l
dGVycyYpOworCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6
SG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSk7CiAKQEAgLTYyLDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHV0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkltYWdlRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdW5zaWdu
ZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBieXRlc1BlclJv
dygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KG1fcGFyYW1l
dGVycyk7IH0KIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMmI2YmZmMTA0N2YxMTcwOTY3MThjZGU5ZGM3MWE0
Y2Y5MGJmNWVlZi4uODMxNWRkYzFhYTY3ZTQzZGYzNmE5N2Q4NDYwNDVlMTQ3NTMyYWI3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTU1LDEwICs1NSw5IEBAIGNsYXNzIFJlbW90
ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVm
ZmVyPEJhY2tlbmRUCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewotICAgICAgICBpZiAoQmFj
a2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2FsZSkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICAgICAgYXV0byBwYXJh
bWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OworICAgICAgICBpZiAo
QmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKS5pc0VtcHR5
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHBhcmFtZXRlcnMsIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDU3YzdmN2Q1YTI0NTk3
ZDJiNmIyZmYzZWI1MGQ3ZjU2OTc0OTUwYTkuLjI3NGE5Y2UzN2YzYjRmOGE3YjQ1MzdlOTRmMTk0
OWQ1YjZjY2JiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEhBVkUoSU9T
VVJGQUNFKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg+CiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAg
LTM3LDYgKzM4LDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIAor
SW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNh
ZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShw
YXJhbWV0ZXJzKTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
eworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9y
eUNvc3QocGFyYW1ldGVycyk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChwYXJhbWV0ZXJzKTsKK30KKwogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKIHsKICAgICBpZiAoIVdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSkgewpAQCAtNTgsNiArNzQs
MTIgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqKEdyYXBoaWNzQ29udGV4dCopbnVsbHB0
cjsKIH0KIAordW5zaWduZWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpi
eXRlc1BlclJvdygpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gMDsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBj
b25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRl
eCBkNWUwMGU0MjA5OGE0YjM3MDY4MmE0OTdiZTM4OWMwZDM4OTUzY2E4Li4xNjg2MjU0ZWU5YWNi
YzBhNzVmMzEyYjE2NzUzN2EyZDJhYTBkZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCwxMCBA
QCBjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYQogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgorICAg
IHN0YXRpYyBXZWJDb3JlOjpJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQ
YXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0
IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5
Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CisKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOwogCiAgICAgSW1hZ2VCdWZmZXJTaGFyZWFi
bGVJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSYmIGhhbmRsZSkKQEAgLTY0LDYgKzY4LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0g
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAKIHByaXZhdGU6CisgICAgdW5z
aWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKwogICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBtX2hhbmRsZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRl
eCAyZTIwZWRhNzczY2JiNzNjM2QwZmIzN2I4NWE4MTMzNjQ0NzY2MzMzLi40M2JlYjUxNzM0YThh
MjgxZTA2OWUxN2ZiNzM5YzBkMjJkNjhjMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hh
cmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZCk7CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29s
dXRpb25TY2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNr
ZW5kU2l6ZShwYXJhbWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425659</attachid>
            <date>2021-04-09 15:35:06 -0700</date>
            <delta_ts>2021-04-11 17:02:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224306-20210409153505.patch</filename>
            <type>text/plain</type>
            <size>40368</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAzN2IzNWM1NWU1ZTk3
Mzg5ZDJmMmZjMTUwYzA2NWZiMjY4YWVmZi4uMjFlZWUyMmQxN2IyMTM3NDIwODc1NGMxYTBjYzIx
YzFjZWMzMWE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTA0LTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBJbWFnZUJ1ZmZlciBjYWxjdWxhdGUgaXRzIG1lbW9yeUNvc3QoKSBmcm9tIGl0cyBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIHJvdW5kLXRyaXAgcHJvY2Vzc2VzIHRvIGdldCB0aGUgYmFja2VuZCBtZW1vcnlDb3N0KCks
IHdlIGNhbiAKKyAgICAgICAgY2FsY3VsYXRlIGl0IGZyb20gdGhlIHNpemUgYW5kIHRoZSBieXRl
cyBhbGlnbm1lbnQgb2YgZWFjaCByb3cgaW4gdGhlCisgICAgICAgIGJhY2tlbmQuIFRoZXNlIGFy
ZSBzdGF0aWMgdmFsdWVzIHNvIGluIHRoZSBjYXNlIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHks
CisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW5zdXJlIHRoZSBiYWNrZW5kIGlzIGNyZWF0
ZWQgaW4gR1BVUCBhbmQgaXQgaXMgbWFwcGVkCisgICAgICAgIGluIHRoZSBXZWIgUHJvY2Vzcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5
Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6Om1lbW9yeUNvc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpl
eHRlcm5hbE1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIC0g
VGhpcyBpcyB0aGUgZ2VuZXJhbCBjYXNlIG9mIHRoZSBiYWNrZW5kIHdoaWNoIGlzIDQtYnl0ZXMg
YWxpZ25lZCByb3dzLgorICAgICAgICAtIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSgpIHJldHVy
bnMgdGhlIHNpemUgd2hvc2UgYnl0ZXNQZXJSb3cgZG9lcyBub3QKKyAgICAgICAgb3ZlcmZsb3cg
dW5zaWduZWQgYW5kIHdob3NlIG1lbW9yeUNvc3QgZG9lcyBub3Qgbm90IG92ZXJmbG93IHNpemVf
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fp
cm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0
ZUJ5dGVzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5k
Lmg6CisgICAgICAgIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKCkgaXMgdXNlZCB0byBj
YWxjdWxhdGUgdGhlIGJ5dGVzUGVyUm93KCkKKyAgICAgICAgZm9yIENhaXJvIHBvcnQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2FsY3VsYXRlQnl0ZXNQZXJS
b3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
Lmg6CisgICAgICAgIFRoaXMgaXMgdGhlIENHIGNhc2Ugd2hlbiB0aGUgYmFja2VuZCBpcyA0LWJ5
dGVzIGFsaWduZWQgcm93cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
aDoKKyAgICAgICAgVGhpcyBpcyB0aGUgQ0cgYml0bWFwIGNhc2Ugd2hlcmUgdGhlIGJhY2tlbmQg
aXMgNC1ieXRlcyBhbGlnbmVkIHJvd3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVCeXRl
c1BlclJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxj
dWxhdGVCYWNrZW5kU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6Om1lbW9yeUNvc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpleHRlcm5hbE1lbW9yeUNvc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5oOgorICAgICAgICBJT1N1cmZhY2VBbGlnblByb3BlcnR5KCkg
aXMgdXNlZCB0byBhbGlnbiB0aGUgQ0cgYnl0ZXNQZXJSb3cgdG8gdGhlIHByb3BlcgorICAgICAg
ICBJT1N1cmZhY2UgYWxpZ25tZW50LgorCiAyMDIxLTA0LTA4ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFJlZHVjZSB1c2FnZSBvZiBhdXRvcmVsZWFz
ZSwgZml4IG1pc3Rha2VzIG5vdGljZWQgbmVhcmJ5IGNvZGUgdXNpbmcgYXV0b3JlbGVhc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYzUzMzAwOGZhMzZkOTBkMDMxZDhiY2FmMzMxNjI1OWQ1OGQyMTkwNC4uYzhhMDJl
YTM3MmYyZGQ1OTQ0Y2ZhZGFjNjlkNjliNjYwYjBmNzFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MiBAQAorMjAyMS0wNC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgSW1hZ2VCdWZmZXIgY2FsY3VsYXRlIGl0cyBtZW1v
cnlDb3N0KCkgZnJvbSBpdHMgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI0MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIE1ha2Ug
U2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdygpIHB1YmxpYy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToKKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1Bl
clJvdyk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmg6CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJS
b3coKSBpcyB1c2VkIHRvIGdldCB0aGUgYnl0ZXNQZXJSb3coKQorICAgICAgICBieSBnaXZpbmcg
aXQgdGhlIHNjYWxlZCBiYWNrZW5kIHNpemUuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIFVzZSB0aGUgbmV3IG5hbWUgb2Yg
dGhlIGZ1bmN0aW9uIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZSgpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAgICAoV2ViS2l0OjpJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3Qp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZC5oOgorICAgICAgICBJbXBsZW1lbnQgdGhlc2Ugc3RhdGljIGZ1bmN0aW9u
cyBhbmQgbWFrZSB0aGVtIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcgCisgICAgICAgIGZ1bmN0aW9u
cyBmcm9tIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCBiZWNhdXNlIHRoaXMgY2xhc3MgaXMg
ZGVyaXZlZAorICAgICAgICBmcm9tIEltYWdlQnVmZmVyQmFja2VuZC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgVXNlIHRoZSBuZXcgbmFt
ZSBvZiB0aGUgZnVuY3Rpb24gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKCkuCisKIDIwMjEtMDQt
MDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVk
dWNlIHVzYWdlIG9mIGF1dG9yZWxlYXNlLCBmaXggbWlzdGFrZXMgbm90aWNlZCBuZWFyYnkgY29k
ZSB1c2luZyBhdXRvcmVsZWFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDNhNTExNGI3MzIwYjdjOTBkOTIw
NDk3NmNlNDAyZmYwMDhlZTU3YjAuLmQwZjAwZWNjOTJhMGU4N2VhOGZiOTE3MmU0ODlhNzk2YWQw
MWIyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTEsMTYgKzExMSwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAo
YXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1
cm4gbV9iYWNrZW5kLT5tZW1vcnlDb3N0KCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gQmFja2VuZFR5cGU6OmNhbGN1bGF0ZU1lbW9yeUNvc3QobV9wYXJhbWV0ZXJzKTsKICAg
ICB9CiAKICAgICBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkK
LSAgICAgICAgICAgIHJldHVybiBtX2JhY2tlbmQtPmV4dGVybmFsTWVtb3J5Q29zdCgpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVFeHRl
cm5hbE1lbW9yeUNvc3QobV9wYXJhbWV0ZXJzKTsKICAgICB9CiAKICAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENv
cHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCAzNzk0ZGU3
N2JlNjNhOTk5YTNiOTcxYzc4YmZkY2UxZDRjYWEyYjBiLi4zZGE5YzQ1MzFkMDAzZjI3MjY5ZjEz
MmVlNzA0Y2VkNTM0MGY3YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwyOCArMzEsMTggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFj
a2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotICAgIDogbV9wYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpCitJbnRTaXplIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNp
emUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLX0KLQotSW50U2l6ZSBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlKQotewotICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0geyBj
ZWlsZihyZXNvbHV0aW9uU2NhbGUgKiBzaXplLndpZHRoKCkpLCBjZWlsZihyZXNvbHV0aW9uU2Nh
bGUgKiBzaXplLmhlaWdodCgpKSB9OworICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0geyBjZWls
ZihwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSAqIHBhcmFtZXRlcnMubG9naWNhbFNpemUud2lk
dGgoKSksIGNlaWxmKHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlICogcGFyYW1ldGVycy5sb2dp
Y2FsU2l6ZS5oZWlnaHQoKSkgfTsKICAgICBpZiAoc2NhbGVkU2l6ZS5pc0VtcHR5KCkgfHwgIXNj
YWxlZFNpemUuaXNFeHByZXNzaWJsZUFzSW50U2l6ZSgpKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IEludFNpemUoc2NhbGVkU2l6ZSk7Ci0KLSAgICBD
aGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cgPSA0ICogQ2hlY2tl
ZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLndpZHRoKCkpOwotICAgIGlm
IChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAg
ICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKLSAgICBpZiAobnVtQnl0ZXMu
aGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBJbnRTaXpl
KHNjYWxlZFNpemUpOworfQogCi0gICAgcmV0dXJuIGJhY2tlbmRTaXplOworSW1hZ2VCdWZmZXJC
YWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
KyAgICA6IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQorewogfQogCiBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmlu
ZGV4IDMxY2U5Nzc1N2I1ZDJmOTgwMGIxNTc2M2NlMTZiZTFjNzg2OWYxNmMuLjVjZjgyZmZlZDk0
Yjg4ZWI3MjJmMDE4MTRiYWRjYzQ5NjU3ODI5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcsMTYgKzg3LDE0
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFj
a2VuZCgpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNh
bGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNp
emUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlRXh0ZXJu
YWxNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0
dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZmx1c2hDb250ZXh0KCkgeyB9CiAKICAgICB2aXJ0dWFsIEludFNpemUgYmFja2VuZFNpemUo
KSBjb25zdCB7IHJldHVybiB7IH07IH0KIAotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3Qo
KSBjb25zdCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCk7IH0K
LSAgICB2aXJ0dWFsIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiAw
OyB9Ci0KICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJh
Y2tpbmdTdG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29w
eUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAwOwog
CkBAIC0xMzYsNyArMTM0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQ
T1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICB2aXJ0dWFs
IHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgeyByZXR1cm4gNCAqIGJhY2tlbmRTaXplKCku
d2lkdGgoKTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCA9IDA7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgdG9CYWNrZW5kQ29vcmRpbmF0ZXMo
VCB0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFj
ZUJhY2tlbmQuY3BwCmluZGV4IDQ3YTQ1ZGNjMmU4MmRkNmQwY2FjYjUxMjY2MDZhYmY3MTk1YzEw
NDEuLjFkMDM2MGFkMTFiYzMxZDRjZTVhNjUwMDIzZTAyZmZiMGM0MDI3MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9J
bWFnZVN1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAKQEAgLTMs
NyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIgPHplY2tlQHNlbGZpc2gub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IERpcmsg
U2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1v
YmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsMTQgKzQxLDQ0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ2Fpcm9JbWFn
ZVN1cmZhY2VCYWNrZW5kKTsKIAorSW50U2l6ZSBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBpZiAoYmFja2VuZFNpemUud2lkdGgoKSA+IGNhaXJvTWF4SW1hZ2VT
aXplIHx8IGJhY2tlbmRTaXplLmhlaWdodCgpID4gY2Fpcm9NYXhJbWFnZVNpemUpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICByZXR1cm4gYmFja2VuZFNpemU7Cit9CisKK3Vuc2lnbmVkIElt
YWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUg
PSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRT
aXplLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRo
KENBSVJPX0ZPUk1BVF9BUkdCMzIsIGJhY2tlbmRTaXplLndpZHRoKCkpOworfQorCitzaXplX3Qg
SW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3Qo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXpl
ID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgQVNTRVJUKCFiYWNrZW5k
U2l6ZS5pc0VtcHR5KCkpOworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cgPSBjYWxjdWxhdGVC
eXRlc1BlclJvdyhwYXJhbWV0ZXJzKTsKKworICAgIENoZWNrZWRTaXplIG51bUJ5dGVzID0gQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdodCgpKSAqIGJ5
dGVzUGVyUm93OworICAgIHJldHVybiBudW1CeXRlcy51bnNhZmVHZXQoKTsKK30KKwogc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9k
YXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0g
Y2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5y
ZXNvbHV0aW9uU2NhbGUpOwotICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkgfHwgYmFja2Vu
ZFNpemUud2lkdGgoKSA+IGNhaXJvTWF4SW1hZ2VTaXplIHx8IGJhY2tlbmRTaXplLmhlaWdodCgp
ID4gY2Fpcm9NYXhJbWFnZVNpemUpCisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0
ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGludCBzdHJpZGUgPSBjYWlyb19m
b3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBiYWNrZW5kU2l6ZS53
aWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFj
a2VuZC5oCmluZGV4IDg2NWNjNjliMmQ1MzM4NTQ1ZjM3ZTQxOTNjYjk0ZjE5ODBiZTczYTQuLjBh
MzgyNzNhODk4NjRjZWVhNTc1OTg4MjEyNTFiMGM4ZjRjYTIyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1
cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaApAQCAtMyw3ICszLDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VA
c2VsZmlzaC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1bHplIDxr
cml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlq
aW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAt
MjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MCwxMiArNDAsMTggQEAgY2xhc3MgSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW4K
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VT
dXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6CisgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlU2Fm
ZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgY2Fs
Y3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3Qg
Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CisKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiBwcml2YXRlOgogICAg
IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKIAorICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3cobV9wYXJhbWV0ZXJz
KTsgfQorCiAgICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjph
cnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAKaW5kZXggYzVjMjg0MjFmZGJjMDc4ZDM4ZGQ0ZTgwMzhjMWYzM2UyYWY0
MDVmMi4uZDU1Yzc0ZDdiYjM1ZGEwMWI1MjFjMDE5YWU0YTFkYjQzNGI5ZTI4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmNwcApAQCAtNjAsNiArNjAsMTUgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBtX2NvbnRleHQ7CiB9OwogCit1bnNpZ25lZCBJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFy
YW1ldGVycyk7CisgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpOworCisgICAgQ2hl
Y2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGJ5dGVzUGVyUm93ID0gKENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS53aWR0aCgpKSAqIDQpOworICAgIHJl
dHVybiBieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKK30KKwogUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5oCmluZGV4IGIyNmFlMDg0MzQ3YjllMjMzNDA0NjAwYzJlYTRhNGEyOGIxZTFiYTcuLjg0
N2UxNDU5NTUzMzgyODkzZmYxNzZjYTViYzE3MWZlODY5MmRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuaApAQCAtMzMsNiArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIEltYWdlQnVmZmVyQ0dCYWNrZW5kIDogcHVibGljIEltYWdlQnVmZmVyQmFja2Vu
ZCB7CiBwdWJsaWM6CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNv
bnN0IFBhcmFtZXRlcnMmKTsKKwogICAgIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2
ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2U+IHNpbmtJ
bnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuY3BwCmluZGV4IDlkNTM4YmVmY2Q4ZTAzOGYxYTFhOTdhMmE3Nzg0MTMw
ZjMyOGNhNDUuLjBiMTA2ZjU2OWViN2NhYTg4M2IzZWEwMzQwYmRlM2RmMmJkN2JkM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxMSArMzksMzkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQpOwogCitJbnRTaXplIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpj
YWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sK
KyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVy
cyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGJhY2tl
bmRTaXplOworICAgIAorICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRl
c1BlclJvdyA9IDQgKiBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2VuZFNp
emUud2lkdGgoKSk7CisgICAgaWYgKGJ5dGVzUGVyUm93Lmhhc092ZXJmbG93ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIENoZWNrZWRTaXplIG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93
OworICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICByZXR1cm4gYmFja2VuZFNpemU7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShw
YXJhbWV0ZXJzKTsKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICB1
bnNpZ25lZCBieXRlc1BlclJvdyA9IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KHBhcmFtZXRlcnMpOwor
CisgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgcmV0dXJuIG51
bUJ5dGVzLnVuc2FmZUdldCgpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3Qg
SG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVC
YWNrZW5kU2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25T
Y2FsZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6
ZShwYXJhbWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKaW5kZXggOGYz
MzIzZTdkY2VjNjM1NWFjYjdkNWI5OWMyMDc4NzcxNWM4NmJhOC4uODA0M2ZjM2Y3ODVmMGJjMjA1
MTYwZTYwZmMxNWJhOTc0YmU4MDBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
CkBAIC0zNiw2ICszNiw5IEBAIGNsYXNzIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kIDogcHVi
bGljIEltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZCk7CiBwdWJsaWM6CisgICAgc3RhdGljIEludFNpemUgY2Fs
Y3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgc2l6
ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworCiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpAQCAtNTYsNiArNTksOCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRl
cnMmLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYpOwogCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3BhcmFtZXRl
cnMpOyB9CisKICAgICB2b2lkKiBtX2RhdGE7CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBtX2RhdGFQcm92aWRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA2
YzNiN2M3NGI0NmUxMjZlNzlkOWYxNjIyMGIzYTJmYWQ5ZWRkOWExLi5kZjY2NGIxYjUxMjAwZDc1
YTY5ZDRiNDc4YTA1Y2ViZTJlYzdiNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00MSw5ICs0MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk7CiAKLUludFNp
emUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKK0ludFNpemUgSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gSW1hZ2VC
dWZmZXJDR0JhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRpb25TY2Fs
ZSk7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKQEAgLTU0LDYgKzU0LDI4IEBAIEludFNpemUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsCiAgICAgcmV0
dXJuIGJhY2tlbmRTaXplOwogfQogCit1bnNpZ25lZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7
CisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cgPSBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y2FsY3Vs
YXRlQnl0ZXNQZXJSb3cocGFyYW1ldGVycyk7CisgICAgcmV0dXJuIElPU3VyZmFjZUFsaWduUHJv
cGVydHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCBieXRlc1BlclJvdyk7Cit9CisKK3NpemVfdCBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3Vs
YXRlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0Vt
cHR5KCkpOworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cgPSBjYWxjdWxhdGVCeXRlc1BlclJv
dyhwYXJhbWV0ZXJzKTsKKworICAgIENoZWNrZWRTaXplIG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93
OworICAgIHJldHVybiBudW1CeXRlcy51bnNhZmVHZXQoKTsKK30KKworc2l6ZV90IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0KGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZU1lbW9yeUNvc3Qo
cGFyYW1ldGVycyk7Cit9CisKIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpOwpAQCAtNjYsNyArODgsNyBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0CiAK
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENH
Q29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cp
CiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsKKyAgICBJbnRT
aXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwog
ICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0xMDYsNyArMTI4LDYgQEAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW0KIAogR3JhcGhpY3ND
b250ZXh0JiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogewot
CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gbV9zdXJmYWNlLT5lbnN1cmVHcmFwaGlj
c0NvbnRleHQoKTsKICAgICBpZiAobV9uZWVkc1NldHVwQ29udGV4dCkgewogICAgICAgICBtX25l
ZWRzU2V0dXBDb250ZXh0ID0gZmFsc2U7CkBAIC0xMjUsMTkgKzE0Niw5IEBAIEludFNpemUgSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc3VyZmFjZS0+c2l6ZSgpOwogfQogCi1zaXplX3QgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjptZW1vcnlDb3N0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdXJmYWNlLT50b3RhbEJ5
dGVzKCk7Ci19Ci0KLXNpemVfdCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmV4dGVybmFs
TWVtb3J5Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1lbW9yeUNvc3QoKTsKLX0KLQogdW5z
aWduZWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3VyZmFjZS0+Ynl0ZXNQZXJSb3coKTsKKyAgICByZXR1cm4gY2FsY3Vs
YXRlQnl0ZXNQZXJSb3cobV9wYXJhbWV0ZXJzKTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAppbmRleCA0ODU5ZGY2
ZmM1MjVkODVjMzI4YzE0NWYwNzkxNzgzNTY5MDllMjVkLi40OTE1MzcxMjAwMTNkMDExNTVmYjk4
NDJmOGUwODhmNTBjMjk5MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM3LDggKzM3LDExIEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckNHQmFja2VuZCB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlKTsKLQorICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1
bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3RhdGljIHVuc2ln
bmVkIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMg
c2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRp
YyBzaXplX3QgY2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsK
KyAgICAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhv
c3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CkBAIC01
MCw5ICs1Myw2IEBAIHB1YmxpYzoKIAogICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBv
dmVycmlkZTsKICAgICAKLSAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKLQogICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5
QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNp
bmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuaAppbmRleCBjNzE5M2JjY2I5ZmViMDYxZmI0NGNkMjk1ZTZiM2JkNGI3ZTNiZDkx
Li40NWRiODhmNmU0NGQ4OTViZmFjMTc4YzU5MzI1MmQxYTU0YWJjZjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaApAQCAtODksNiArODksMTAgQEAgcHVibGljOgogICAg
ICAgICBDb25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKICAgICB9OwogCisgICAgc3RhdGlj
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBudW1CeXRlc0ZvclNpemUoV2ViQ29y
ZTo6SW50U2l6ZSwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJik7CisgICAg
c3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjYWxjdWxhdGVCeXRlc1Bl
clJvdyhXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBDb25maWd1cmF0aW9uJik7CisgICAgc3RhdGlj
IENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjYWxjdWxhdGVCeXRlc1BlclBpeGVs
KGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKKwogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRt
YXAgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0aW9uKTsK
IApAQCAtMTUxLDEwICsxNTUsNiBAQCBwcml2YXRlOgogICAgIFNoYXJlYWJsZUJpdG1hcChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgdm9pZCopOwogICAgIFNoYXJlYWJs
ZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbiwgUmVmUHRyPFNo
YXJlZE1lbW9yeT4pOwogCi0gICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJm
bG93PiBudW1CeXRlc0ZvclNpemUoV2ViQ29yZTo6SW50U2l6ZSwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpDb25maWd1cmF0aW9uJik7Ci0gICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PiBjYWxjdWxhdGVCeXRlc1BlclJvdyhXZWJDb3JlOjpJbnRTaXplLCBjb25zdCBD
b25maWd1cmF0aW9uJik7Ci0gICAgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJm
bG93PiBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKGNvbnN0IENvbmZpZ3VyYXRpb24mKTsKLQogI2lm
IFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ0dJbWFnZShDR0RhdGFQ
cm92aWRlclJlZikgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUJpdG1hcENvbnRleHRE
YXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbGVzc0RhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4IGUxOWE5YWJj
YzUwYTQyYzEwNjI2YjMwZTliZGZlZDA3ZTM5ZTBhOWIuLjZmM2VmY2JkZGUwN2FlYWJiYWUxODc2
MDhjNjZmYjZmZDk3NzNiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDMsMTkgKzQzLDYxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kKTsKIAorU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFj
ZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkgfTsKKyNlbmRp
ZgorICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitJbnRTaXplIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0
ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4gYnl0ZXNQZXJSb3cgPSBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93
KGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKKyAgICBpZiAoYnl0ZXNQ
ZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hlY2tl
ZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4oYmFja2Vu
ZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7CisgICAgaWYgKG51bUJ5dGVzLmhhc092ZXJm
bG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBiYWNrZW5kU2l6ZTsK
K30KKwordW5zaWduZWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxh
dGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNp
emUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBB
U1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHkoKSk7CisKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBS
ZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cgPSBTaGFyZWFibGVCaXRtYXA6OmNhbGN1bGF0ZUJ5
dGVzUGVyUm93KGJhY2tlbmRTaXplLCBjb25maWd1cmF0aW9uKHBhcmFtZXRlcnMpKTsKKyAgICBy
ZXR1cm4gYnl0ZXNQZXJSb3cudW5zYWZlR2V0KCk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFj
a2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkp
OworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3cgPSBjYWxjdWxhdGVCeXRlc1BlclJvdyhwYXJh
bWV0ZXJzKTsKKworICAgIENoZWNrZWRTaXplIG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93OworICAg
IHJldHVybiBudW1CeXRlcy51bnNhZmVHZXQoKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdp
bmRvdyopCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShwYXJhbWV0ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7
CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9
IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkgfTsKLSNlbmRpZgot
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2Vu
ZFNpemUsIGNvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRpb24ocGFyYW1ldGVycykp
OwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTAzLDEx
ICsxNDUsNiBAQCBJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6YmFj
a2VuZFNpemUoKSBjb25zdAogICAgIHJldHVybiBtX2JpdG1hcC0+c2l6ZSgpOwogfQogCi11bnNp
Z25lZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9iaXRtYXAtPmJ5dGVzUGVyUm93KCk7Ci19Ci0KIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDUxMmM3OGU1NTRiN2M0MzFl
YTdhYjNiNzg1ZTc0YmFlMzA0N2YzM2UuLjg0NDJkMGU2ZDIxZGRhNjMwZWY0MGJkOTY0MDdkMDUx
OTZkOWQ2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQzLDYgKzQzLDExIEBAIGNsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFjCiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQpOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7
CiBwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6SW50U2l6
ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRp
YyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBQYXJhbWV0ZXJzJik7CisgICAg
c3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKKwog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cq
KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUpOwogCkBAIC02Miw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dEltYWdlRGF0YShX
ZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3Jl
OjpJbWFnZURhdGEmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHVuc2lnbmVkIGJ5dGVzUGVy
Um93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhtX3BhcmFtZXRlcnMpOyB9CiAK
ICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCmluZGV4IDJiNmJmZjEwNDdmMTE3MDk2NzE4Y2RlOWRjNzFhNGNmOTBiZjVlZWYu
LjgzMTVkZGMxYWE2N2U0M2RmMzZhOTdkODQ2MDQ1ZTE0NzUzMmFiNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCkBAIC01NSwxMCArNTUsOSBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5k
VAogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKLSAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpj
YWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFdl
YkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKKyAgICAgICAgaWYgKEJhY2tlbmRUeXBl
OjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycykuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eShwYXJhbWV0ZXJzLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCA1N2M3ZjdkNWEyNDU5N2QyYjZiMmZmM2Vi
NTBkN2Y1Njk3NDk1MGE5Li4yNzRhOWNlMzdmM2I0ZjhhN2I0NTM3ZTk0ZjE5NDlkNWI2Y2NiYjBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNyw2ICszOCwy
MSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiAKK0ludFNpemUgSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNp
emUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7
Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1
bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICByZXR1
cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KHBhcmFt
ZXRlcnMpOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
OjpjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVF
eHRlcm5hbE1lbW9yeUNvc3QocGFyYW1ldGVycyk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpIHsKQEAgLTU4LDYgKzc0LDEyIEBAIEdyYXBo
aWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjb250ZXh0
KCkgY29uc3QKICAgICByZXR1cm4gKihHcmFwaGljc0NvbnRleHQqKW51bGxwdHI7CiB9CiAKK3Vu
c2lnbmVkIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3co
KSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3Vy
ZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggZDVlMDBlNDIw
OThhNGIzNzA2ODJhNDk3YmUzODljMGQzODk1M2NhOC4uMTY4NjI1NGVlOWFjYmMwYTc1ZjMxMmIx
Njc1MzdhMmQyYWEwZGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsMTAgQEAgY2xhc3MgSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkltYWdlQnVmZmVyQmEKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgV2Vi
Q29yZTo6SW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYp
OworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3Qg
UGFyYW1ldGVycyYpOworCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKTsKIAogICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUmJiBoYW5kbGUpCkBAIC02NCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3RleHByIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IFdlYkNvcmU6OlJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkOwogCiBwcml2YXRlOgorICAgIHVuc2lnbmVkIGJ5dGVz
UGVyUm93KCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUg
bV9oYW5kbGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggMmUyMGVkYTc3
M2NiYjczYzNkMGZiMzdiODVhODEzMzY0NDc2NjMzMy4uNDNiZWI1MTczNGE4YTI4MWUwNjllMTdm
YjczOWMwZDIyZDY4YzFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw3ICs0MSw3
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZElPU3VyZmFjZUJhY2tlbmQpOwogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBI
b3N0V2luZG93KikKIHsKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2Vu
ZFNpemUocGFyYW1ldGVycy5sb2dpY2FsU2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUp
OworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFy
YW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425715</attachid>
            <date>2021-04-11 17:02:38 -0700</date>
            <delta_ts>2021-04-13 13:19:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224306-20210411170237.patch</filename>
            <type>text/plain</type>
            <size>40081</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1NmZiYTVhZTQ5YmQ4
MjNmN2JjZDBiNWU4MGNkMmU2NDRmNTQ5NS4uNjQ0NGExNGZlZWI0ZmM2MDg1OGFjNzZjOWVmMWI3
MTMzZGQ4MWI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTA0LTExICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TWFrZSBJbWFnZUJ1ZmZlciBjYWxjdWxhdGUgaXRzIG1lbW9yeUNvc3QoKSBmcm9tIGl0cyBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQzMDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFk
IG9mIHJvdW5kLXRyaXAgcHJvY2Vzc2VzIHRvIGdldCB0aGUgYmFja2VuZCBtZW1vcnlDb3N0KCks
IHdlIGNhbiAKKyAgICAgICAgY2FsY3VsYXRlIGl0IGZyb20gdGhlIHNpemUgYW5kIHRoZSBieXRl
cyBhbGlnbm1lbnQgb2YgZWFjaCByb3cgaW4gdGhlCisgICAgICAgIGJhY2tlbmQuIFRoZXNlIGFy
ZSBzdGF0aWMgdmFsdWVzIHNvIGluIHRoZSBjYXNlIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHks
CisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW5zdXJlIHRoZSBiYWNrZW5kIGlzIGNyZWF0
ZWQgaW4gR1BVUCBhbmQgaXQgaXMgbWFwcGVkCisgICAgICAgIGluIHRoZSBXZWIgUHJvY2Vzcy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tl
bmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVFeHRlcm5hbE1l
bW9yeUNvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjptZW1vcnlD
b3N0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZDo6ZXh0ZXJuYWxNZW1vcnlDb3N0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQmFja2VuZDo6Ynl0ZXNQZXJSb3cgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAtIFRoaXMgaXMgdGhlIGdlbmVyYWwgY2FzZSBvZiB0aGUgYmFja2VuZCB3aGljaCBpcyA0LWJ5
dGVzIGFsaWduZWQgcm93cy4KKyAgICAgICAgLSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoKSBy
ZXR1cm5zIHRoZSBzaXplIHdob3NlIGJ5dGVzUGVyUm93IGRvZXMgbm90CisgICAgICAgIG92ZXJm
bG93IHVuc2lnbmVkIGFuZCB3aG9zZSBtZW1vcnlDb3N0IGRvZXMgbm90IG5vdCBvdmVyZmxvdyBz
aXplX3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpjYWxj
dWxhdGVCeXRlc1BlclJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpieXRlc1BlclJv
dyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgY2Fpcm9fZm9ybWF0X3N0cmlkZV9m
b3Jfd2lkdGgoKSBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYnl0ZXNQZXJSb3coKQorICAgICAg
ICBmb3IgQ2Fpcm8gcG9ydC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaDoKKyAgICAgICAgVGhpcyBpcyB0aGUgQ0cgY2FzZSB3
aGVuIHRoZSBiYWNrZW5kIGlzIDQtYnl0ZXMgYWxpZ25lZCByb3dzLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNr
ZW5kU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgVGhpcyBpcyB0aGUg
Q0cgYml0bWFwIGNhc2Ugd2hlcmUgdGhlIGJhY2tlbmQgaXMgNC1ieXRlcyBhbGlnbmVkIHJvd3Mu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVF
eHRlcm5hbE1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjptZW1vcnlDb3N0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6ZXh0ZXJuYWxNZW1vcnlDb3N0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgSU9T
dXJmYWNlQWxpZ25Qcm9wZXJ0eSgpIGlzIHVzZWQgdG8gYWxpZ24gdGhlIENHIGJ5dGVzUGVyUm93
IHRvIHRoZSBwcm9wZXIKKyAgICAgICAgSU9TdXJmYWNlIGFsaWdubWVudC4KKwogMjAyMS0wNC0x
MSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWRkIGEg
bWlzc2luZyBudWxsIGNoZWNrIHRvIHNsaWRlciB0aHVtYiBmb2N1cyByZW5kZXJpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMThjOWZkZTM2ZTA5MTNiNjllZWY4N2VmMDI3N2IzNTJjZWNiMWFkNS4uZWI0ODY5NGQx
YjBkMTQ3ODk3YTk3NzY1YmFmZGVjMDZiOTI3NGQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBA
QAorMjAyMS0wNC0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgSW1hZ2VCdWZmZXIgY2FsY3VsYXRlIGl0cyBtZW1vcnlD
b3N0KCkgZnJvbSBpdHMgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI0MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIE1ha2UgU2hh
cmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdygpIHB1YmxpYy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKToKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJv
dyk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaDoKKyAgICAgICAgU2hhcmVh
YmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJvdygpIGlzIHVzZWQgdG8gZ2V0IHRoZSBieXRl
c1BlclJvdygpCisgICAgICAgIGJ5IGdpdmluZyBpdCB0aGUgc2NhbGVkIGJhY2tlbmQgc2l6ZS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgVXNlIHRoZSBuZXcgbmFtZSBvZiB0aGUgZnVuY3Rpb24gY2FsY3VsYXRlU2FmZUJh
Y2tlbmRTaXplKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNr
ZW5kU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0
KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5k
OjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgIElt
cGxlbWVudCB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFuZCBtYWtlIHRoZW0gY2FsbCB0aGUgY29y
cmVzcG9uZGluZyAKKyAgICAgICAgZnVuY3Rpb25zIGZyb20gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kIGJlY2F1c2UgdGhpcyBjbGFzcyBpcyBkZXJpdmVkCisgICAgICAgIGZyb20gSW1hZ2VC
dWZmZXJCYWNrZW5kLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUpOgorICAgICAgICBVc2UgdGhlIG5ldyBuYW1lIG9mIHRoZSBmdW5jdGlvbiBjYWxjdWxhdGVT
YWZlQmFja2VuZFNpemUoKS4KKwogMjAyMS0wNC0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgV2ViS2l0VGVzdFJ1bm5lciBwcmVmZXJlbmNlIHJl
c2V0IHRvIGJlIG1vcmUgbGlrZSBEUlQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCAzYTUxMTRiNzMyMGI3Yzkw
ZDkyMDQ5NzZjZTQwMmZmMDA4ZWU1N2IwLi5kMGYwMGVjYzkyYTBlODdlYThmYjkxNzJlNDg5YTc5
NmFkMDFiMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExLDE2ICsxMTEsMTIgQEAgcHJvdGVjdGVkOgog
CiAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
aWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAg
cmV0dXJuIG1fYmFja2VuZC0+bWVtb3J5Q29zdCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVNZW1vcnlDb3N0KG1fcGFyYW1ldGVycyk7
CiAgICAgfQogCiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRl
CiAgICAgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5leHRlcm5hbE1lbW9yeUNvc3QoKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBCYWNrZW5kVHlwZTo6Y2FsY3VsYXRl
RXh0ZXJuYWxNZW1vcnlDb3N0KG1fcGFyYW1ldGVycyk7CiAgICAgfQogCiAgICAgUmVmUHRyPE5h
dGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Ig
PSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggMzc5
NGRlNzdiZTYzYTk5OWEzYjk3MWM3OGJmZGNlMWQ0Y2FhMmIwYi4uMmU2NjY1MGY5NmFmMjczODMy
N2VhOTIyMWU5NDM2NDYzOTJiOWEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMjggKzMxLDI1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZl
ckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKLSAgICA6IG1fcGFyYW1ldGVy
cyhwYXJhbWV0ZXJzKQorSW50U2l6ZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tl
bmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci19Ci0KLUludFNpemUgSW1h
Z2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKLXsKLSAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9
IHsgY2VpbGYocmVzb2x1dGlvblNjYWxlICogc2l6ZS53aWR0aCgpKSwgY2VpbGYocmVzb2x1dGlv
blNjYWxlICogc2l6ZS5oZWlnaHQoKSkgfTsKKyAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IHsg
Y2VpbGYocGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUgKiBwYXJhbWV0ZXJzLmxvZ2ljYWxTaXpl
LndpZHRoKCkpLCBjZWlsZihwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSAqIHBhcmFtZXRlcnMu
bG9naWNhbFNpemUuaGVpZ2h0KCkpIH07CiAgICAgaWYgKHNjYWxlZFNpemUuaXNFbXB0eSgpIHx8
ICFzY2FsZWRTaXplLmlzRXhwcmVzc2libGVBc0ludFNpemUoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBJbnRTaXplKHNjYWxlZFNpemUpOwotCi0g
ICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGJ5dGVzUGVyUm93ID0gNCAqIENo
ZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS53aWR0aCgpKTsKLSAg
ICBpZiAoYnl0ZXNQZXJSb3cuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4geyB9Owor
ICAgIHJldHVybiBJbnRTaXplKHNjYWxlZFNpemUpOworfQogCitzaXplX3QgSW1hZ2VCdWZmZXJC
YWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB1
bnNpZ25lZCBieXRlc1BlclJvdykKK3sKKyAgICBBU1NFUlQoIWJhY2tlbmRTaXplLmlzRW1wdHko
KSk7CiAgICAgQ2hlY2tlZFNpemUgbnVtQnl0ZXMgPSBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4oYmFja2VuZFNpemUuaGVpZ2h0KCkpICogYnl0ZXNQZXJSb3c7Ci0gICAgaWYgKG51
bUJ5dGVzLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4g
bnVtQnl0ZXMudW5zYWZlR2V0KCk7Cit9CiAKLSAgICByZXR1cm4gYmFja2VuZFNpemU7CitJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQorICAgIDogbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCit7CiB9CiAKIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmgKaW5kZXggMzFjZTk3NzU3YjVkMmY5ODAwYjE1NzYzY2UxNmJlMWM3ODY5ZjE2Yy4uZGNl
NGI3YTFkYjkxMWMxMzQ2NjAzOGQxMzc3NGEzOWZhOTNhYWIxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Nywx
NiArODcsMTUgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VC
dWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElu
dFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVC
YWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB1
bnNpZ25lZCBieXRlc1BlclJvdyk7CisgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5h
bE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1
YWwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaENvbnRleHQoKSB7IH0KIAogICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgp
IGNvbnN0IHsgcmV0dXJuIDQgKiBiYWNrZW5kU2l6ZSgpLmFyZWEoKS51bnNhZmVHZXQoKTsgfQot
ICAgIHZpcnR1YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KLQogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5
SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CiAK
QEAgLTEzNiw3ICsxMzUsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBP
UlQgSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIHZpcnR1YWwg
dW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCB7IHJldHVybiA0ICogYmFja2VuZFNpemUoKS53
aWR0aCgpOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0ID0gMDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCB0b0JhY2tlbmRDb29yZGluYXRlcyhU
IHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNl
QmFja2VuZC5jcHAKaW5kZXggNDdhNDVkY2MyZTgyZGQ2ZDBjYWNiNTEyNjYwNmFiZjcxOTVjMTA0
MS4uMTdiNzk3M2JhMTQ1NjhlYWU5OGY0MTkzY2FiYWViMjQ0YzE1NGRhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kLmNwcApAQCAtMyw3
ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
ciA8emVja2VAc2VsZmlzaC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBT
Y2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9i
aWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxNCArNDEsMzggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJDYWlyb0ltYWdl
U3VyZmFjZUJhY2tlbmQpOwogCitJbnRTaXplIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VC
YWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUo
cGFyYW1ldGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGlmIChiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFnZVNp
emUgfHwgYmFja2VuZFNpemUuaGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBiYWNrZW5kU2l6ZTsKK30KKwordW5zaWduZWQgSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNv
bnN0IEludFNpemUmIGJhY2tlbmRTaXplKQoreworICAgIEFTU0VSVCghYmFja2VuZFNpemUuaXNF
bXB0eSgpKTsKKyAgICByZXR1cm4gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9f
Rk9STUFUX0FSR0IzMiwgYmFja2VuZFNpemUud2lkdGgoKSk7Cit9CisKK3NpemVfdCBJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxjdWxhdGVCeXRlc1BlclJv
dyhiYWNrZW5kU2l6ZSkpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDYWlyb0lt
YWdlU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7
CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKIAogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19zdXJmYWNlRGF0YUtleTsK
IAotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0
ZXJzLmxvZ2ljYWxTaXplLCBwYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZSk7Ci0gICAgaWYgKGJh
Y2tlbmRTaXplLmlzRW1wdHkoKSB8fCBiYWNrZW5kU2l6ZS53aWR0aCgpID4gY2Fpcm9NYXhJbWFn
ZVNpemUgfHwgYmFja2VuZFNpemUuaGVpZ2h0KCkgPiBjYWlyb01heEltYWdlU2l6ZSkKKyAgICBJ
bnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMp
OworICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgaW50IHN0cmlkZSA9IGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKENBSVJP
X0ZPUk1BVF9BUkdCMzIsIGJhY2tlbmRTaXplLndpZHRoKCkpOwpAQCAtNzcsNiArMTAxLDEyIEBA
IEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZChjb25zdCBQCiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogfQogCit1
bnNpZ25lZCBJbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3co
KSBjb25zdAoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6
ZShtX3BhcmFtZXRlcnMpOworICAgIHJldHVybiBjYWxjdWxhdGVCeXRlc1BlclJvdyhiYWNrZW5k
U2l6ZSk7Cit9CisKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQ6OnBs
YXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4m
IGxvb2tVcFRhYmxlKQogewogICAgIHVuc2lnbmVkIGNoYXIqIGRhdGFTcmMgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJm
YWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQuaAppbmRleCA4NjVjYzY5YjJkNTMzODU0
NWYzN2U0MTkzY2I5NGYxOTgwYmU3M2E0Li5iZGU5OWUzNGY2MGFhMzQ2MzRjYjJiNjI4MDc1Mzhm
ZWI2NDQ5N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZh
Y2VCYWNrZW5kLmgKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIgPHplY2tlQHNlbGZpc2gub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsMTIgKzQwLDE4
IEBAIGNsYXNzIEltYWdlQnVmZmVyQ2Fpcm9JbWFnZVN1cmZhY2VCYWNrZW5kIDogcHVibGljIElt
YWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJ
bWFnZUJ1ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW1hZ2VCdWZmZXJDYWlyb0ltYWdlU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgorICAg
IHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJz
Jik7CisgICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplKTsKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3Qo
Y29uc3QgUGFyYW1ldGVycyYpOworCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBj
b25zdCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNhaXJvSW1hZ2VTdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKIAogcHJpdmF0ZToKICAgICBJbWFnZUJ1ZmZlckNhaXJvSW1h
Z2VTdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4mJik7CiAKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlOworCiAg
ICAgdm9pZCBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1aW50
OF90LCAyNTY+JiBsb29rVXBUYWJsZSkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2Vu
ZC5jcHAKaW5kZXggYzVjMjg0MjFmZGJjMDc4ZDM4ZGQ0ZTgwMzhjMWYzM2UyYWY0MDVmMi4uYzRh
MzkyMWY0NmQ0M2Q3MjkxNGVmNTdiM2E2NzI4MjcwY2RjMDA2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNr
ZW5kLmNwcApAQCAtNjAsNiArNjAsMTMgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBtX2NvbnRleHQ7CiB9OwogCit1bnNpZ25lZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
Y2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUpCit7CisgICAg
QVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpOworICAgIENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9IChDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4oYmFja2VuZFNpemUud2lkdGgoKSkgKiA0KTsKKyAgICByZXR1cm4gYnl0ZXNQZXJSb3cu
dW5zYWZlR2V0KCk7Cit9CisKIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAppbmRleCBiMjZh
ZTA4NDM0N2I5ZTIzMzQwNDYwMGMyZWE0YTRhMjhiMWUxYmE3Li41NDc0Njg2MGRlZDdlNDBhNDE0
MjNkOWM2YTBhY2VlNGQ5YzMyODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKQEAgLTMzLDYgKzMz
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1
ZmZlckNHQmFja2VuZCA6IHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmQgewogcHVibGljOgorICAg
IHN0YXRpYyB1bnNpZ25lZCBjYWxjdWxhdGVCeXRlc1BlclJvdyhjb25zdCBJbnRTaXplJiBiYWNr
ZW5kU2l6ZSk7CisKICAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0
aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdl
KFByZXNlcnZlUmVzb2x1dGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcAppbmRleCA5ZDUzOGJlZmNkOGUwMzhmMWExYTk3YTJhNzc4NDEzMGYzMjhjYTQ1
Li4xZTRkODI0OTEyMzI0Nzg0YTg0MGRlZjUwOGJhZmIxOWMyMTFlYjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMTEgKzM5LDM0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kKTsKIAorSW50U2l6ZSBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRl
U2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgSW50
U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAg
IGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBiYWNrZW5kU2l6ZTsK
KyAgICAKKyAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gYnl0ZXNQZXJSb3cg
PSA0ICogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tlbmRTaXplLndpZHRo
KCkpOworICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBDaGVja2VkU2l6ZSBudW1CeXRlcyA9IENoZWNrZWQ8dW5zaWduZWQsIFJl
Y29yZE92ZXJmbG93PihiYWNrZW5kU2l6ZS5oZWlnaHQoKSkgKiBieXRlc1BlclJvdzsKKyAgICBp
ZiAobnVtQnl0ZXMuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
cmV0dXJuIGJhY2tlbmRTaXplOworfQorCitzaXplX3QgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sK
KyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVy
cyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChi
YWNrZW5kU2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUpKTsKK30KKwogc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JT
cGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQogewogICAgIEFTU0VSVChw
YXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKLSAgICBJbnRT
aXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1ldGVycy5sb2dpY2Fs
U2l6ZSwgcGFyYW1ldGVycy5yZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNpemUgYmFja2VuZFNp
emUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tl
bmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwOSw2ICsx
MzIsMTIgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6YmFja2VuZFNpemUo
KSBjb25zdAogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0
V2lkdGgoY2dDb250ZXh0KSksIHN0YXRpY19jYXN0PGludD4oQ0dCaXRtYXBDb250ZXh0R2V0SGVp
Z2h0KGNnQ29udGV4dCkpIH07CiB9CiAKK3Vuc2lnbmVkIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpieXRlc1BlclJvdygpIGNvbnN0Cit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNh
bGN1bGF0ZUJhY2tlbmRTaXplKG1fcGFyYW1ldGVycyk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZUJ5
dGVzUGVyUm93KGJhY2tlbmRTaXplKTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAppbmRleCA4ZjMzMjNlN2RjZWM2MzU1YWNiN2Q1Yjk5YzIw
Nzg3NzE1Yzg2YmE4Li43OTBkMzQyODc4ZmMwMzdkNDU1MThmYTI5YTZjZDZlY2NkNjM4YTQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKQEAgLTM2LDYgKzM2LDkgQEAgY2xhc3Mg
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDR0JhY2tlbmQg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQp
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKTsK
IHB1YmxpYzoKKyAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29u
c3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChj
b25zdCBQYXJhbWV0ZXJzJik7CisKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFj
ZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3Qg
SG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7CkBAIC01Niw2ICs1OSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHZvaWQqIGRhdGEsIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4mJiwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4m
Jik7CiAKKyAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IG92ZXJyaWRlOworCiAgICAg
dm9pZCogbV9kYXRhOwogICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gbV9kYXRhUHJv
dmlkZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNmMzYjdjNzRiNDZlMTI2
ZTc5ZDlmMTYyMjBiM2EyZmFkOWVkZDlhMS4uOGRmZWNiOTAzMTY4ZTcyYmY4MWJiODA0NzBhYWJi
MWI3OWM0Njg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEs
OSArNDEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQpOwogCi1JbnRTaXplIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUpCitJbnRTaXplIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IEltYWdlQnVmZmVyQ0dCYWNrZW5k
OjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCByZXNvbHV0aW9uU2NhbGUpOworICAgIEludFNp
emUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKICAgICBp
ZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC01NCw2
ICs1NCwyMyBAQCBJbnRTaXplIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRl
QmFja2VuZFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLAogICAgIHJldHVybiBiYWNrZW5kU2l6
ZTsKIH0KIAordW5zaWduZWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjYWxjdWxhdGVC
eXRlc1BlclJvdyhjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSkKK3sKKyAgICB1bnNpZ25lZCBi
eXRlc1BlclJvdyA9IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhi
YWNrZW5kU2l6ZSk7CisgICAgcmV0dXJuIElPU3VyZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFj
ZUJ5dGVzUGVyUm93LCBieXRlc1BlclJvdyk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKK3sKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUo
cGFyYW1ldGVycyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlTWVt
b3J5Q29zdChiYWNrZW5kU2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUpKTsK
K30KKworc2l6ZV90IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlRXh0ZXJu
YWxNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgcmV0dXJu
IGNhbGN1bGF0ZU1lbW9yeUNvc3QocGFyYW1ldGVycyk7Cit9CisKIFJldGFpblB0cjxDR0NvbG9y
U3BhY2VSZWY+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwpAQCAtNjYsNyArODMsNyBAQCBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRl
eHRDb2xvclNwYWNlKGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1
bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tl
bmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMDYsNyArMTIzLDYgQEAgSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW0KIAogR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNvbnRleHQoKSBjb25zdAogewotCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gbV9z
dXJmYWNlLT5lbnN1cmVHcmFwaGljc0NvbnRleHQoKTsKICAgICBpZiAobV9uZWVkc1NldHVwQ29u
dGV4dCkgewogICAgICAgICBtX25lZWRzU2V0dXBDb250ZXh0ID0gZmFsc2U7CkBAIC0xMjUsMTYg
KzE0MSw2IEBAIEludFNpemUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpiYWNrZW5kU2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOwogfQogCi1zaXplX3QgSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjptZW1vcnlDb3N0KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zdXJmYWNlLT50b3RhbEJ5dGVzKCk7Ci19Ci0KLXNpemVfdCBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1l
bW9yeUNvc3QoKTsKLX0KLQogdW5zaWduZWQgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpi
eXRlc1BlclJvdygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3VyZmFjZS0+Ynl0ZXNQZXJSb3co
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKaW5kZXggNDg1OWRmNmZjNTI1ZDg1
YzMyOGMxNDVmMDc5MTc4MzU2OTA5ZTI1ZC4uYjlkMTU2OTA0MTFjODg4ZjllMDBhNjM5ODZiNTU2
NWExMjg5M2QzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw4ICsz
NywxMSBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQg
OiBwdWJsaWMgSW1hZ2VCdWZmZXJDR0JhY2tlbmQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQpOwogcHVibGljOgotICAgIHN0YXRpYyBJbnRT
aXplIGNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSk7Ci0KKyAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZl
QmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxj
dWxhdGVCeXRlc1BlclJvdyhjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSk7CisgICAgc3RhdGlj
IHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBzdGF0
aWMgc2l6ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7
CisgICAgCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBI
b3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyop
OwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
PiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwpAQCAt
NTAsOSArNTMsNiBAQCBwdWJsaWM6CiAKICAgICBJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgCi0gICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29w
eUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBz
aW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlQml0bWFwLmgKaW5kZXggYzcxOTNiY2NiOWZlYjA2MWZiNDRjZDI5NWU2YjNiZDRiN2UzYmQ5
MS4uNDVkYjg4ZjZlNDRkODk1YmZhYzE3OGM1OTMyNTJkMWE1NGFiY2Y2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTg5LDYgKzg5LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgQ29uZmlndXJhdGlvbiBtX2NvbmZpZ3VyYXRpb247CiAgICAgfTsKIAorICAgIHN0YXRp
YyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gbnVtQnl0ZXNGb3JTaXplKFdlYkNv
cmU6OkludFNpemUsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYpOworICAg
IHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2FsY3VsYXRlQnl0ZXNQ
ZXJSb3coV2ViQ29yZTo6SW50U2l6ZSwgY29uc3QgQ29uZmlndXJhdGlvbiYpOworICAgIHN0YXRp
YyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2FsY3VsYXRlQnl0ZXNQZXJQaXhl
bChjb25zdCBDb25maWd1cmF0aW9uJik7CisKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0
bWFwIHRoYXQgdXNlcyBtYWxsb2NlZCBtZW1vcnkuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29uZmlndXJhdGlvbik7
CiAKQEAgLTE1MSwxMCArMTU1LDYgQEAgcHJpdmF0ZToKICAgICBTaGFyZWFibGVCaXRtYXAoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIHZvaWQqKTsKICAgICBTaGFyZWFi
bGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvbmZpZ3VyYXRpb24sIFJlZlB0cjxT
aGFyZWRNZW1vcnk+KTsKIAotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4gbnVtQnl0ZXNGb3JTaXplKFdlYkNvcmU6OkludFNpemUsIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbiYpOwotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNv
cmRPdmVyZmxvdz4gY2FsY3VsYXRlQnl0ZXNQZXJSb3coV2ViQ29yZTo6SW50U2l6ZSwgY29uc3Qg
Q29uZmlndXJhdGlvbiYpOwotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4gY2FsY3VsYXRlQnl0ZXNQZXJQaXhlbChjb25zdCBDb25maWd1cmF0aW9uJik7Ci0KICNp
ZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNHSW1hZ2UoQ0dEYXRh
UHJvdmlkZXJSZWYpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VCaXRtYXBDb250ZXh0
RGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBlMTlhOWFi
Y2M1MGE0MmMxMDYyNmIzMGU5YmRmZWQwN2UzOWUwYTliLi4xNjJkMDNiZDQ4N2U0MGMxMWU5ODli
Mzk5ZWMyODI4OWY1OTE5YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDE5ICs0Myw1NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZCk7CiAKK1NoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKK3sKKyAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb25maWd1cmF0aW9uLmNvbG9yU3Bh
Y2UgPSB7IGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpIH07CisjZW5k
aWYKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworSW50U2l6ZSBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxh
dGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3Zl
cmZsb3c+IGJ5dGVzUGVyUm93ID0gU2hhcmVhYmxlQml0bWFwOjpjYWxjdWxhdGVCeXRlc1BlclJv
dyhiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbihwYXJhbWV0ZXJzKSk7CisgICAgaWYgKGJ5dGVz
UGVyUm93Lmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIENoZWNr
ZWRTaXplIG51bUJ5dGVzID0gQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+KGJhY2tl
bmRTaXplLmhlaWdodCgpKSAqIGJ5dGVzUGVyUm93OworICAgIGlmIChudW1CeXRlcy5oYXNPdmVy
Zmxvd2VkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gYmFja2VuZFNpemU7
Cit9CisKK3Vuc2lnbmVkIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3Vs
YXRlQnl0ZXNQZXJSb3coY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSW50U2l6
ZSYgYmFja2VuZFNpemUpCit7CisgICAgQVNTRVJUKCFiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpOwor
ICAgIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBieXRlc1BlclJvdyA9IFNoYXJl
YWJsZUJpdG1hcDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUsIGNvbmZpZ3VyYXRp
b24ocGFyYW1ldGVycykpOworICAgIHJldHVybiBieXRlc1BlclJvdy51bnNhZmVHZXQoKTsKK30K
Kworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlTWVt
b3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxj
dWxhdGVCeXRlc1BlclJvdyhwYXJhbWV0ZXJzLCBiYWNrZW5kU2l6ZSkpOworfQorCiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1h
dCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCi0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNh
bGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVz
b2x1dGlvblNjYWxlKTsKKyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJh
Y2tlbmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlv
bi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNl
KSB9OwotI2VuZGlmCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShiYWNrZW5kU2l6ZSwgY29uZmlndXJhdGlv
bihwYXJhbWV0ZXJzKSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRl
eCA1MTJjNzhlNTU0YjdjNDMxZWE3YWIzYjc4NWU3NGJhZTMwNDdmMzNlLi41ZDFmNGM5OWE0NTI4
OTJlYjUxMWM2N2UwZjllY2EzMGEyZDNjNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0MywxMSBAQCBjbGFzcyBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1
ZmZlckJhYwogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQpOwogcHVibGljOgorICAgIHN0YXRpYyBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJik7CisgICAgc3Rh
dGljIFdlYkNvcmU6OkludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFt
ZXRlcnMmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3Qg
UGFyYW1ldGVycyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplKTsKKyAgICBz
dGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOworCiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyop
OwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMmI2YmZmMTA0N2YxMTcwOTY3
MThjZGU5ZGM3MWE0Y2Y5MGJmNWVlZi4uODMxNWRkYzFhYTY3ZTQzZGYzNmE5N2Q4NDYwNDVlMTQ3
NTMyYWI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTU1LDEwICs1NSw5IEBA
IGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewotICAg
ICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKHNpemUsIHJlc29sdXRp
b25TY2FsZSkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9Owor
ICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0
ZXJzKS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KHBhcmFtZXRlcnMsIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDU3
YzdmN2Q1YTI0NTk3ZDJiNmIyZmYzZWI1MGQ3ZjU2OTc0OTUwYTkuLjdhMGY4OTFkNjIxMjBlZGVj
MmM1ZjdhYmQ4NzJlYTZiNjVjODRmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAog
I2lmIEhBVkUoSU9TVVJGQUNFKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRD
Ry5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg+CiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKQEAgLTM3LDYgKzM4LDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VC
YWNrZW5kKTsKIAorSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6
OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQor
eworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVC
YWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKK30KKworc2l6ZV90IEltYWdlQnVmZmVyU2hhcmVhYmxl
SU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNh
bGN1bGF0ZU1lbW9yeUNvc3QocGFyYW1ldGVycyk7Cit9CisKK3NpemVfdCBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChwYXJhbWV0ZXJzKTsKK30K
Kwogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZD4g
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSkKIHsKICAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSkgewpA
QCAtNTgsNiArNzQsMTIgQEAgR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlP
U3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogICAgIHJldHVybiAqKEdyYXBoaWNzQ29u
dGV4dCopbnVsbHB0cjsKIH0KIAordW5zaWduZWQgSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0Cit7CisgICAgSW50U2l6ZSBiYWNrZW5kU2l6
ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKG1fcGFyYW1ldGVycyk7CisgICAgcmV0dXJuIEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUp
OworfQorCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZh
Y2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGQ1ZTAwZTQyMDk4
YTRiMzcwNjgyYTQ5N2JlMzg5YzBkMzg5NTNjYTguLjE2ODYyNTRlZTlhY2JjMGE3NWYzMTJiMTY3
NTM3YTJkMmFhMGRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDEwIEBAIGNsYXNzIEltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhCiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZCk7CiBwdWJsaWM6CisgICAgc3RhdGljIFdlYkNv
cmU6OkludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsK
KyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYp
OworICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0KGNvbnN0IFBh
cmFtZXRlcnMmKTsKKwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFy
ZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSk7CiAKICAgICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlJiYgaGFuZGxlKQpAQCAtNjQsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsKIAogcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBieXRlc1Bl
clJvdygpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIG1f
aGFuZGxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IDJlMjBlZGE3NzNj
YmI3M2MzZDBmYjM3Yjg1YTgxMzM2NDQ3NjYzMzMuLjQzYmViNTE3MzRhOGEyODFlMDY5ZTE3ZmI3
MzljMGQyMmQ2OGMxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNyArNDEsNyBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kKTsKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9z
dFdpbmRvdyopCiB7Ci0gICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRT
aXplKHBhcmFtZXRlcnMubG9naWNhbFNpemUsIHBhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlKTsK
KyAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFt
ZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>