<?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>235600</bug_id>
          
          <creation_ts>2022-01-25 10:43:56 -0800</creation_ts>
          <short_desc>Capturing WebGL canvas through peer connection shows the image flipped</short_desc>
          <delta_ts>2022-02-11 13:32:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Other</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=230613</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235708</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235765</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>
          
          <blocked>232727</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1833779</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-25 10:43:56 -0800</bug_when>
    <thetext>Capturing WebGL canvas through peer connection shows the image flipped</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833851</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-25 14:04:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/88043325&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834117</commentid>
    <comment_count>2</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-26 09:11:43 -0800</bug_when>
    <thetext>https://youennf.github.io/webrtc-tests/src/content/capture/canvas-pc/ &lt;-- shows the bug

Note:
The newer version of this fails to show anything:
https://webrtc.github.io/samples/src/content/capture/canvas-pc/ &lt;-- does not show stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834118</commentid>
    <comment_count>3</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-26 09:14:52 -0800</bug_when>
    <thetext>Youenn Fablet  7:12 PM
canvas-pc is using legacy APIs that we do not support and it messes up the script. https://github.com/webrtc/samples/pull/1511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834159</commentid>
    <comment_count>4</comment_count>
      <attachid>450036</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-26 10:29:51 -0800</bug_when>
    <thetext>Created attachment 450036
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834190</commentid>
    <comment_count>5</comment_count>
      <attachid>450043</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-26 11:26:54 -0800</bug_when>
    <thetext>Created attachment 450043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834287</commentid>
    <comment_count>6</comment_count>
      <attachid>450043</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-01-26 14:03:18 -0800</bug_when>
    <thetext>Comment on attachment 450043
Patch

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

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm:556
&gt; +    // TODO: When this is moved to GraphicsContextGLCocoa, set m_mediaSampleRotationSession = nullptr.

s/TODO/FIXME/

&gt; LayoutTests/webrtc/canvas-to-peer-connection.html:80
&gt; +// FIXME: Tthis should be filled when 2D context supports HTMLCanvasElement.captureStream().

Typo: Tthis</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834434</commentid>
    <comment_count>7</comment_count>
      <attachid>450107</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-27 00:18:16 -0800</bug_when>
    <thetext>Created attachment 450107
Simpler version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834443</commentid>
    <comment_count>8</comment_count>
      <attachid>450112</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-27 00:43:44 -0800</bug_when>
    <thetext>Created attachment 450112
Simpler version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834456</commentid>
    <comment_count>9</comment_count>
      <attachid>450112</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-27 01:19:31 -0800</bug_when>
    <thetext>Comment on attachment 450112
Simpler version

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

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm:791
&gt; +    return MediaSampleAVFObjC::createImageSample(WTFMove(mediaSamplePixelBuffer), MediaSampleAVFObjC::VideoRotation::None, false);

When canvas is in GPUProcess, aren&apos;t we going the RemoteGraphicsContextGLProxyCocoa::paintCompositedResultsToMediaSample code path?
It seems that RemoteGraphicsContextGLCocoa::prepareForDisplay should somehow do the flip if needed to remove the need for RemoteGraphicsContextGLProxyCocoa::paintCompositedResultsToMediaSample to make the sample as upsidedown+flipped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834482</commentid>
    <comment_count>10</comment_count>
      <attachid>450124</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-27 04:16:55 -0800</bug_when>
    <thetext>Created attachment 450124
For debugging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834496</commentid>
    <comment_count>11</comment_count>
      <attachid>450129</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-27 05:53:18 -0800</bug_when>
    <thetext>Created attachment 450129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834900</commentid>
    <comment_count>12</comment_count>
      <attachid>450227</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-28 05:11:48 -0800</bug_when>
    <thetext>Created attachment 450227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834905</commentid>
    <comment_count>13</comment_count>
      <attachid>450229</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-28 06:28:58 -0800</bug_when>
    <thetext>Created attachment 450229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835278</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-29 03:50:55 -0800</bug_when>
    <thetext>Committed r288789 (246566@main): &lt;https://commits.webkit.org/246566@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450229.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450036</attachid>
            <date>2022-01-26 10:29:51 -0800</date>
            <delta_ts>2022-01-26 11:52:47 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-235600-20220126202949.patch</filename>
            <type>text/plain</type>
            <size>42988</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uNmJhN2FkN2NiOWY2MTQ2MWE2MDc3YjM2ZmE4NTQ5
NDA1MWMyZWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAxLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJnbC1pbnZlcnQtd2VicnRjCisKKyAgICAg
ICAgVGVzdDogd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRtbAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnN0b3JlU2Ft
cGxlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90YXRpb25TZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjpz
ZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpzZXRSb3RhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpzZXRJbmNvbWluZ0J1ZmZlclNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2V0SW5jb21p
bmdCdWZmZXJQaXhlbEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpyb3RhdGVkU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUOjpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6Y3JlYXRlUmVzdWx0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90
YXRpb25TZXNzaW9uVlQ6OnJvdGF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVJvdGF0aW9uU2Vzc2lvblZUOjpidWZmZXJQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
Um90YXRpb25TZXNzaW9uVlQ6OmluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6CisKIDIwMjItMDEtMjYgIEFudG9pbmUgUXVp
bnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVsXSBNb3VzZSBpbnRlcmFj
dGlvbiBmb3IgPG1vZGVsPiBpcyBmbGlwcGVkIGluIHRoZSB5LWF4aXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTVm
YzRlNGI1MmYwYTRhYWM3MzY2NTVjMDYyMzA0M2JlY2MyNjVmMS4uYzk4YzY5ZWY5ZTAyMTdiOGVi
YWUwOGY1NTIyOTJhYWVjYmExM2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0w
MS0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENh
cHR1cmluZyBXZWJHTCBjYW52YXMgdGhyb3VnaCBwZWVyIGNvbm5lY3Rpb24gc2hvd3MgdGhlIGlt
YWdlIGZsaXBwZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNTYwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODgwNDMzMjU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2ViZ2wtaW52ZXJ0LXdlYnJ0
YworCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpT
b3VyY2VQcm94eTo6cm90YXRlUGl4ZWxCdWZmZXIpOgorCiAyMDIyLTAxLTI2ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gTW91c2UgaW50ZXJh
Y3Rpb24gZm9yIDxtb2RlbD4gaXMgZmxpcHBlZCBpbiB0aGUgeS1heGlzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCA1NjNhZjE5MjRkOWFmMzU5
ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhLi45ZDRlNDFiNGExNmFhMjExYjNiOGEyNDk1N2M4YTkz
YTUxNDZiM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2ltcG9y
dCAiUHJvY2Vzc0lkZW50aXR5LmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQg
IlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgi
CkBAIC0zODUsMTMgKzM4NiwxMSBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFj
a01ldGFkYXRhKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9pbWFnZVJv
dGF0aW9uU2Vzc2lvbgotICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNm
b3JtKCkKLSAgICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFs
dWUoKSAhPSBmaW5hbFRyYW5zZm9ybQotICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9u
LT5zaXplKCkgIT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNp
emUsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7Ci0K
LSAgICBtX3NpemUgPSBleHBhbmRlZEludFNpemUobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90
YXRlZFNpemUoKSk7CisgICAgaWYgKCFtX2ltYWdlUm90YXRpb25TZXNzaW9uKQorICAgICAgICBt
X2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
PihJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMsIEltYWdl
Um90YXRpb25TZXNzaW9uVlQ6OlVzZUJ1ZmZlclBvb2w6Olllcyk7CisgICAgbV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbi0+c2V0Um90YXRpb24oZmluYWxUcmFuc2Zvcm0pOworICAgIG1faW1hZ2VSb3Rh
dGlvblNlc3Npb24tPnNldEluY29taW5nQnVmZmVyU2l6ZShzaXplKTsKKyAgICBtX3NpemUgPSBt
X2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGVkU2l6ZShzaXplKTsKIH0KIAogYm9vbCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzdG9yZVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1w
bGVCdWZmZXIpCkBAIC00MDYsNyArNDA1LDcgQEAgYm9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
dG9yZVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCiAgICAgYXV0
byBpdGVyID0gbV9zYW1wbGVEYXRhLnByZXNlbnRhdGlvbk9yZGVyKCkuZmluZFNhbXBsZVdpdGhQ
cmVzZW50YXRpb25UaW1lKHByZXNlbnRhdGlvblRpbWUpOwogCiAgICAgaWYgKG1faW1hZ2VSb3Rh
dGlvblNlc3Npb24pCi0gICAgICAgIHBpeGVsQnVmZmVyID0gbV9pbWFnZVJvdGF0aW9uU2Vzc2lv
bi0+cm90YXRlKHBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBtX2lt
YWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUocGl4ZWxCdWZmZXIuZ2V0KCksIFByb2Nlc3NJZGVu
dGl0eSB7IH0pOwogCiAgICAgQ0dJbWFnZVJlZiByYXdJbWFnZSA9IG51bGxwdHI7CiAgICAgaWYg
KG5vRXJyICE9IFZUQ3JlYXRlQ0dJbWFnZUZyb21DVlBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdl
dCgpLCBudWxscHRyLCAmcmF3SW1hZ2UpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBh
MDhkYTBmNGYxMGU0YzNlNGE5YTcxZWU4ZjUzMjVmYTY2ZTA5MWZmLi43NmZhNGM3NjJkNzZiNWYw
OTM4ODk1NDE2ZjU1YTlkZDM0OWEwMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4
LDYgKzU4LDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVRleHRUcmFjay5oIgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJQ
cm9jZXNzSWRlbnRpdHkuaCIKICNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgpAQCAtMjI1MSwxMyArMjI1MiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbigpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbgotICAgICAgICAmJiBtX2lt
YWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKQotICAgICAgICAmJiBtX2ltYWdlUm90YXRp
b25TZXNzaW9uLT50cmFuc2Zvcm0oKS52YWx1ZSgpID09IGZpbmFsVHJhbnNmb3JtCi0gICAgICAg
ICYmIG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSA9PSBuYXR1cmFsU2l6ZSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1h
Z2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXpl
LCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOworICAg
IGlmICghbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKKyAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vz
c2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
OjpVc2VCdWZmZXJQb29sOjpZZXMpOworICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNldFJv
dGF0aW9uKGZpbmFsVHJhbnNmb3JtKTsKKyAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zZXRJ
bmNvbWluZ0J1ZmZlclNpemUoZXhwYW5kZWRJbnRTaXplKG5hdHVyYWxTaXplKSk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBSZWZULCB0eXBlbmFtZSBQYXNzUmVmVD4KQEAgLTI1NDksNyArMjU0
Nyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFz
dFBpeGVsQnVmZmVyKCkKICAgICB9CiAKICAgICBpZiAobV9sYXN0UGl4ZWxCdWZmZXIgJiYgbV9p
bWFnZVJvdGF0aW9uU2Vzc2lvbikKLSAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdl
Um90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgICAg
ICBtX2xhc3RQaXhlbEJ1ZmZlciA9IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZShtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSwgUHJvY2Vzc0lkZW50aXR5IHsgfSk7CiAKICAgICBtX2xhc3RJ
bWFnZSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLmgKaW5kZXggYzlmYmUwYmEwNWEyYmMyMzU3MDBhNmU2Yzk5NjRlZmRiYzFiNjEzNy4uYzU2
ZTY5NTM1ZTcwOTdmZGQyNWQyZmNlMzAyZTEwNjhlNzZjNmUzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaApAQCAtMzAsMjAgKzMwLDI2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5oIgogI2luY2x1ZGUgIklPU3VyZmFjZS5oIgogCi0jaWYgRU5BQkxFKFZJREVP
KQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwot
fQotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2NvcGVkSGlnaFBlcmZv
cm1hbmNlR1BVUmVxdWVzdC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
I2luY2x1ZGUgPG1lbW9yeT4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFByb2Nlc3NJZGVudGl0eTsKIAorI2lmIEVOQUJMRShWSURFTykKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMQ1ZDb2NvYTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNz
IEltYWdlUm90YXRpb25TZXNzaW9uVlQ7CisjZW5kaWYKKwogY2xhc3MgV0VCQ09SRV9FWFBPUlQg
R3JhcGhpY3NDb250ZXh0R0xDb2NvYSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTEFOR0xFIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0
ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgUHJvY2Vzc0lkZW50aXR5
JiYgcmVzb3VyY2VPd25lcik7CkBAIC05MCw2ICs5Niw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgYm9vbCBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVjb25maWd1cmF0aW9u
IHsgZmFsc2UgfTsKICAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IG1faGlnaFBl
cmZvcm1hbmNlR1BVUmVxdWVzdDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+IG1fbWVkaWFTYW1wbGVS
b3RhdGlvblNlc3Npb247CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0
R0xDVkNvY29hOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDcxMjlm
MjI0YzI2NDBhZTQ5ZjdjOTMyZTA3Yzk0NTJmOTM0NjA0Y2QuLjIzMzlkMDMxNTM1N2Q2MjQzNTVk
Y2U5MmVhYmRkNzM1ODMxY2IxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpA
QCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKKyNpbXBvcnQgIkltYWdlUm90YXRpb25TZXNzaW9u
VlQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlByb2Nlc3NJZGVudGl0eS5oIgog
I2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCkBAIC01NCw2ICs1NSw3IEBACiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2VuZGlmCiAK
QEAgLTU1MSw2ICs1NTMsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTENvY29hOjp1cGRhdGVD
b250ZXh0T25EaXNwbGF5UmVjb25maWd1cmF0aW9uKCkKIAogYm9vbCBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogeworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisgICAgLy8gVE9ETzogV2hlbiB0aGlzIGlzIG1vdmVkIHRvIEdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EsIHNldCBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNzaW9uID0gbnVsbHB0ci4K
KyNlbmRpZgorCiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1w
dHkoKSk7CiAgICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgYmFja2J1ZmZlciBub3cgYmVmb3JlIGFs
bG9jYXRpbmcgYSBuZXcgb25lIGluIG9yZGVyIHRvIHNsaWdodGx5IHJlZHVjZSBtZW1vcnkgcHJl
c3N1cmUuCiAgICAgaWYgKG1fZGlzcGxheUJ1ZmZlckJhY2tpbmcpIHsKQEAgLTc3NSwxMSArNzgx
LDE4IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBtX3N3YXBDaGFpbi5t
YXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNW
UGl4ZWxCdWZmZXIoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICgh
cGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBNZWRpYVNh
bXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgTWVk
aWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKKyAgICBp
ZiAoIW1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb24pIHsKKyAgICAgICAgbV9tZWRpYVNhbXBs
ZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8sICBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUOjpVc2VCdWZmZXJQb29sOjpObyk7CisgICAgICAgIG1fbWVkaWFTYW1wbGVS
b3RhdGlvblNlc3Npb24tPnNldFJvdGF0aW9uKEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0
aW9uUHJvcGVydGllcyB7IHRydWUsIGZhbHNlLCAxODAgfSk7CisgICAgfQorICAgIC8vIEN1cnJl
bnRseSBub3QgYWxsIFdlYktpdCBNZWRpYVNhbXBsZSBjb2RlcGF0aHMgc3VwcG9ydCBmbGlwcGVk
IHNhbXBsZXMsIHNvIHdlIG5lZWQgdG8gcm90YXRlIGFuZCBmbGlwIGhlcmUuCisgICAgYXV0byBz
YW1wbGVQaXhlbEJ1ZmZlciA9IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb24tPnJvdGF0ZShw
aXhlbEJ1ZmZlci0+Z2V0KCksIG1fcmVzb3VyY2VPd25lcik7CisgICAgLy8gSWYgd2Ugc29tZXRp
bWUgY2hhbmdlIHRoaXMgdG8gbm8tY29weSwgcmVtZW1iZXIgdG8gc2V0IHRoZSBkaXNwbGF5IGJ1
ZmZlciB0byBub3QgYmUgcmV1c2VkLgorICAgIEFTU0VSVChzYW1wbGVQaXhlbEJ1ZmZlciAhPSAq
cGl4ZWxCdWZmZXIpOworICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdl
U2FtcGxlKFdURk1vdmUoc2FtcGxlUGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZp
ZGVvUm90YXRpb246Ok5vbmUsIGZhbHNlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCmluZGV4IDFlOWM3MzI4
ZGRjNzU2YmM0NmUyOGYxYTVlYTRhZjU0M2M0YWE2YmYuLjFhNjhkYTJiZDljZjM4Mjc1OTY0YTFi
NTI3YWQ1OTI2MDNhZTQ4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC0xNjEsNiArMTYxLDcgQEAgcHVibGljOgogI2Vu
ZGlmIC8vIEhBVkUoSU9TVVJGQUNFX0FDQ0VMRVJBVE9SKQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShJT1N1cmZhY2VS
ZWYsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOwogCiAgICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFj
ZVRvUHJvcGVydGllcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5kZXggYWMwODcxZmZiYTU5NmNkM2Q0NzRkMTUxZjc5
NDY0Mjg2ODFjOWJlMy4uNmEyMTJmM2FmYjVlYjdiMWY1NjdiOTY0ZmQ5MjcyNTM3ZjdiY2I3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQpAQCAtNDk0LDEzICs0OTQsMTkgQEAgdm9pZCBJT1N1cmZhY2U6OmNvbnZlcnRUb0Zv
cm1hdChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGYKICNl
bmRpZiAvLyBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKIAogdm9pZCBJT1N1cmZhY2U6OnNl
dE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikK
K3sKKyAgICBzZXRPd25lcnNoaXBJZGVudGl0eShtX3N1cmZhY2UuZ2V0KCksIHJlc291cmNlT3du
ZXIpOworfQorCit2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkoSU9TdXJmYWNl
UmVmIHN1cmZhY2UsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikKIHsKICNp
ZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJTSElQX0lERU5USVRZKSAmJiBIQVZFKFRBU0tfSURF
TlRJVFlfVE9LRU4pCiAgICAgQVNTRVJUKHJlc291cmNlT3duZXIpOworICAgIEFTU0VSVChzdXJm
YWNlKTsKICAgICB0YXNrX2lkX3Rva2VuX3Qgb3duZXJUYXNrSWRUb2tlbiA9IHJlc291cmNlT3du
ZXIudGFza0lkVG9rZW4oKTsKLSAgICBhdXRvIHJlc3VsdCA9IElPU3VyZmFjZVNldE93bmVyc2hp
cElkZW50aXR5KG1fc3VyZmFjZS5nZXQoKSwgb3duZXJUYXNrSWRUb2tlbiwga0lPU3VyZmFjZU1l
bW9yeUxlZGdlclRhZ0dyYXBoaWNzLCAwKTsKKyAgICBhdXRvIHJlc3VsdCA9IElPU3VyZmFjZVNl
dE93bmVyc2hpcElkZW50aXR5KHN1cmZhY2UsIG93bmVyVGFza0lkVG9rZW4sIGtJT1N1cmZhY2VN
ZW1vcnlMZWRnZXJUYWdHcmFwaGljcywgMCk7CiAgICAgaWYgKHJlc3VsdCAhPSBrSU9SZXR1cm5T
dWNjZXNzKQotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJT1N1cmZhY2UsICJJT1N1cmZhY2U6
OnNldE93bmVyc2hpcElkZW50aXR5OiBGYWlsZWQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIElPU3Vy
ZmFjZSAlcCwgdGFzayBpZCB0b2tlbjogJWQsIGVycm9yOiAlZCIsIG1fc3VyZmFjZS5nZXQoKSwg
KGludClvd25lclRhc2tJZFRva2VuLCByZXN1bHQpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihJT1N1cmZhY2UsICJJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5OiBGYWlsZWQgdG8g
Y2xhaW0gb3duZXJzaGlwIG9mIElPU3VyZmFjZSAlcCwgdGFzayBpZCB0b2tlbjogJWQsIGVycm9y
OiAlZCIsIHN1cmZhY2UsIChpbnQpb3duZXJUYXNrSWRUb2tlbiwgcmVzdWx0KTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHJlc291cmNlT3duZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaAppbmRleCAyZTVmMTk2NThh
MzViZjU4ZjJjZDRlMGZhNzRiOWQ1YTJiYWYyZGNmLi5mNGM1YjUxMzdlMzgwY2YzODgyY2UwZmNi
Yjc2MTk1ZGVmMDA1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9DVlV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0NWVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAgdXNpbmcgQ1ZQaXhlbEJ1ZmZl
clBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiB1c2luZyBDVlBpeGVsQnVm
ZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBQcm9jZXNzSWRlbnRpdHk7CiAKIC8vIENyZWF0ZXMgQ1ZQaXhlbEJ1ZmZlclBvb2wgdGhhdCBj
cmVhdGVzIENWUGl4ZWxCdWZmZXJzIGJhY2tlZCBieSBJT1N1cmZhY2VzLgogLy8gVGhlc2UgYnVm
ZmVycyBjYW4gYmUgZm9yIGV4YW1wbGUgc2VudCB0aHJvdWdoIElQQy4KQEAgLTQ1LDQgKzQ2LDgg
QEAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+LCBD
VlJldHVybj4gY3JlYXRlQ1ZQaXhlbEJ1ZmYKIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiwgQ1ZSZXR1cm4+IGNyZWF0ZUNWUGl4ZWxCdWZmZXIoSU9T
dXJmYWNlUmVmKTsKIAogUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dDb2xvclNw
YWNlRm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKKworLy8gU2hvdWxkIGJlIGNh
bGxlZCB3aXRoIG5vbi1lbXB0eSBQcm9jZXNzSWRlbnRpdHkuCitXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCBj
b25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQppbmRleCAzMjZmMDQzMmI0ODYyMjE5NjJj
NzVlZmM2ZGUwMWVkOGFkYzllNjY3Li4xNGY2MmIwNDA3M2M3ODc0MDQ5YTZmZWZlODEzOTMzYTY0
ZmM0MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9D
VlV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9D
VlV0aWxpdGllcy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIK
IAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCisjaW1wb3J0ICJJT1N1cmZhY2UuaCIKICNpbXBv
cnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgog
I2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKQEAgLTEzMiw0ICsxMzMsMTEgQEAgUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihD
VlBpeGVsQnVmZmVyUmVmIGIKICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKIH0KIAor
dm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJl
ZiBwaXhlbEJ1ZmZlciwgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiBvd25lcikKK3sKKyAgICBhdXRv
IHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKHBpeGVsQnVmZmVyKTsKKyAgICBB
U1NFUlQoc3VyZmFjZSk7CisgICAgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0eShzdXJm
YWNlLCBvd25lcik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAppbmRleCBiZGVkY2Nm
NzBhODViMWU3Mjg3MDA4NDg5NjY1Zjk5NTVhNDRmZjA5Li45YzYxNmI1Y2MwYTAzNmE3YzU5ZmQy
Mzk1OTcxYWM5NmRlNThlYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCkBAIC0zNSw5ICsz
NSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVy
UG9vbFJlZjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTYW1wbGU7CitjbGFz
cyBQcm9jZXNzSWRlbnRpdHk7CiAKIGNsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEltYWdlUm90YXRpb25TZXNzaW9uVlQpOwogcHVibGljOgogICAgIHN0cnVjdCBSb3RhdGlvblBy
b3BlcnRpZXMgewogICAgICAgICBib29sIGZsaXBYIHsgZmFsc2UgfTsKQEAgLTQ3LDMzICs0OSwz
OCBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuICFm
bGlwWCAmJiAhZmxpcFkgJiYgIWFuZ2xlOyB9CiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgSXND
R0ltYWdlQ29tcGF0aWJsZSB7CisgICAgZW51bSBjbGFzcyBJc0NHSW1hZ2VDb21wYXRpYmxlIDog
Ym9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMsCisgICAgfTsKKyAgICBlbnVtIGNsYXNz
IFVzZUJ1ZmZlclBvb2wgOiBib29sIHsKICAgICAgICAgTm8sCiAgICAgICAgIFllcywKICAgICB9
OwogCi0gICAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVChBZmZpbmVUcmFuc2Zvcm0mJiwgRmxvYXRT
aXplLCBJc0NHSW1hZ2VDb21wYXRpYmxlKTsKLSAgICBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUKGNv
bnN0IFJvdGF0aW9uUHJvcGVydGllcyYsIEZsb2F0U2l6ZSwgSXNDR0ltYWdlQ29tcGF0aWJsZSk7
Ci0gICAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUKElzQ0dJbWFnZUNvbXBhdGlibGUsIFVzZUJ1ZmZl
clBvb2wpOwogCi0gICAgY29uc3Qgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+JiB0cmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQotICAgIGNvbnN0IFJvdGF0aW9u
UHJvcGVydGllcyYgcm90YXRpb25Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9yb3RhdGlv
blByb3BlcnRpZXM7IH0KLSAgICBjb25zdCBGbG9hdFNpemUmIHNpemUoKSB7IHJldHVybiBtX3Np
emU7IH0KLSAgICBjb25zdCBGbG9hdFNpemUmIHJvdGF0ZWRTaXplKCkgeyByZXR1cm4gbV9yb3Rh
dGVkU2l6ZTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Um90YXRpb24oUm90YXRpb25Q
cm9wZXJ0aWVzJiYpOworICAgIHZvaWQgc2V0Um90YXRpb24oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CisgICAgdm9pZCBzZXRJbmNvbWluZ0J1ZmZlclNpemUoY29uc3QgSW50U2l6ZSYpOworICAg
IHZvaWQgc2V0SW5jb21pbmdCdWZmZXJQaXhlbEZvcm1hdChPU1R5cGUpOwogCi0gICAgUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShDVlBpeGVsQnVmZmVyUmVmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlKE1lZGlhU2FtcGxl
JiwgY29uc3QgUm90YXRpb25Qcm9wZXJ0aWVzJiwgSXNDR0ltYWdlQ29tcGF0aWJsZSk7CisgICAg
SW50U2l6ZSByb3RhdGVkU2l6ZShjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgCisgICAgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHJvdGF0ZShDVlBpeGVsQnVmZmVyUmVmLCBjb25zdCBQ
cm9jZXNzSWRlbnRpdHkmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gcm90YXRlKE1lZGlhU2FtcGxlJiwgY29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYs
IEZsb2F0U2l6ZSwgSXNDR0ltYWdlQ29tcGF0aWJsZSk7CisgICAgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IGNyZWF0ZVJlc3VsdEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmLCBjb25zdCBQcm9j
ZXNzSWRlbnRpdHkmKTsKKyAgICBWVEltYWdlUm90YXRpb25TZXNzaW9uUmVmIHJvdGF0aW9uU2Vz
c2lvbigpOworICAgIENWUGl4ZWxCdWZmZXJQb29sUmVmIGJ1ZmZlclBvb2woKTsKIAorICAgIGNv
bnN0IElzQ0dJbWFnZUNvbXBhdGlibGUgbV9pc0NHSW1hZ2VDb21wYXRpYmxlOworICAgIGNvbnN0
IFVzZUJ1ZmZlclBvb2wgbV91c2VCdWZmZXJQb29sOwogICAgIFJvdGF0aW9uUHJvcGVydGllcyBt
X3JvdGF0aW9uUHJvcGVydGllczsKLSAgICBGbG9hdFNpemUgbV9zaXplOwotICAgIHN0ZDo6b3B0
aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKLSAgICBPU1R5cGUgbV9waXhlbEZv
cm1hdDsKLSAgICBJc0NHSW1hZ2VDb21wYXRpYmxlIG1faXNDR0ltYWdlQ29tcGF0aWJsZTsKLSAg
ICBGbG9hdFNpemUgbV9yb3RhdGVkU2l6ZTsKICAgICBSZXRhaW5QdHI8VlRJbWFnZVJvdGF0aW9u
U2Vzc2lvblJlZj4gbV9yb3RhdGlvblNlc3Npb247CisgICAgSW50U2l6ZSBtX2luY29taW5nQnVm
ZmVyU2l6ZTsKKyAgICBPU1R5cGUgbV9waXhlbEZvcm1hdCB7IDAgfTsKICAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IG1fcm90YXRpb25Qb29sOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25W
VC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25T
ZXNzaW9uVlQubW0KaW5kZXggMDI0YjkzY2Q4MDk1MjUyYTc4ZDIzY2QxNGM4Zjc4NDI1NGNiMzA0
ZS4uZjNkMzIyNGY3ZjhlMmI4MzI1NDliZmRlMmIyMjRkYzI1ZjJmYzYyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25W
VC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0
aW9uU2Vzc2lvblZULm1tCkBAIC0yNyw4ICsyNywxMCBAQAogI2ltcG9ydCAiSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oIgogCiAjaW1wb3J0ICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbXBvcnQgIkNW
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZS5o
IgorI2ltcG9ydCAiUHJvY2Vzc0lkZW50aXR5LmgiCiAKICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRM
aW5rLmgiCiAjaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5oIgpAQCAtNTksOTIgKzYxLDE1
MyBAQCBzdGF0aWMgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzIHRy
YW5zZm9ybVRvUm90YXRpb25Qcm9wZXJ0aWVzKAogICAgIHJldHVybiByb3RhdGlvbjsKIH0KIAot
SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVChBZmZpbmVUcmFu
c2Zvcm0mJiB0cmFuc2Zvcm0sIEZsb2F0U2l6ZSBzaXplLCBJc0NHSW1hZ2VDb21wYXRpYmxlIGlz
Q0dJbWFnZUNvbXBhdGlibGUpCi0gICAgOiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUKHRyYW5zZm9y
bVRvUm90YXRpb25Qcm9wZXJ0aWVzKHRyYW5zZm9ybSksIHNpemUsIGlzQ0dJbWFnZUNvbXBhdGli
bGUpCitJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUKElzQ0dJ
bWFnZUNvbXBhdGlibGUgaXNDR0ltYWdlQ29tcGF0aWJsZSwgVXNlQnVmZmVyUG9vbCB1c2VCdWZm
ZXJQb29sKQorICAgIDogbV9pc0NHSW1hZ2VDb21wYXRpYmxlKGlzQ0dJbWFnZUNvbXBhdGlibGUp
CisgICAgLCBtX3VzZUJ1ZmZlclBvb2wodXNlQnVmZmVyUG9vbCkKIHsKLSAgICBtX3RyYW5zZm9y
bSA9IFdURk1vdmUodHJhbnNmb3JtKTsKIH0KIAotSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SW1h
Z2VSb3RhdGlvblNlc3Npb25WVChjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmIHJvdGF0aW9uLCBG
bG9hdFNpemUgc2l6ZSwgSXNDR0ltYWdlQ29tcGF0aWJsZSBpc0NHSW1hZ2VDb21wYXRpYmxlKQor
dm9pZCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpzZXRSb3RhdGlvbihjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHJvdGF0aW9uKQogewotICAgIGluaXRpYWxpemUocm90YXRpb24sIHNpemUsIGlzQ0dJ
bWFnZUNvbXBhdGlibGUpOworICAgIHNldFJvdGF0aW9uKHRyYW5zZm9ybVRvUm90YXRpb25Qcm9w
ZXJ0aWVzKHJvdGF0aW9uKSk7CiB9CiAKLXZvaWQgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6aW5p
dGlhbGl6ZShjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmIHJvdGF0aW9uLCBGbG9hdFNpemUgc2l6
ZSwgSXNDR0ltYWdlQ29tcGF0aWJsZSBpc0NHSW1hZ2VDb21wYXRpYmxlKQordm9pZCBJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUOjpzZXRSb3RhdGlvbihSb3RhdGlvblByb3BlcnRpZXMmJiByb3RhdGlv
bikKIHsKLSAgICBtX3JvdGF0aW9uUHJvcGVydGllcyA9IHJvdGF0aW9uOwotICAgIG1fc2l6ZSA9
IHNpemU7Ci0gICAgbV9pc0NHSW1hZ2VDb21wYXRpYmxlID0gaXNDR0ltYWdlQ29tcGF0aWJsZTsK
KyAgICBpZiAobV9yb3RhdGlvblByb3BlcnRpZXMgPT0gcm90YXRpb24pCisgICAgICAgIHJldHVy
bjsKKyAgICBtX3JvdGF0aW9uUHJvcGVydGllcyA9IFdURk1vdmUocm90YXRpb24pOworICAgIG1f
cm90YXRpb25TZXNzaW9uID0gbnVsbHB0cjsKK30KIAotICAgIGlmIChtX3JvdGF0aW9uUHJvcGVy
dGllcy5hbmdsZSA9PSA5MCB8fCBtX3JvdGF0aW9uUHJvcGVydGllcy5hbmdsZSA9PSAyNzApCi0g
ICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7Cit2b2lkIEltYWdlUm90YXRpb25T
ZXNzaW9uVlQ6OnNldEluY29taW5nQnVmZmVyU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorewor
ICAgIGlmIChtX2luY29taW5nQnVmZmVyU2l6ZSA9PSBzaXplKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9pbmNvbWluZ0J1ZmZlclNpemUgPSBzaXplOworICAgIG1fcm90YXRpb25Qb29sID0gbnVs
bHB0cjsKK30KIAotICAgIG1fcm90YXRlZFNpemUgPSBleHBhbmRlZEludFNpemUoc2l6ZSk7Cit2
b2lkIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnNldEluY29taW5nQnVmZmVyUGl4ZWxGb3JtYXQo
T1NUeXBlIHBpeGVsRm9ybWF0KQoreworICAgIGlmIChtX3BpeGVsRm9ybWF0ID09IHBpeGVsRm9y
bWF0KQorICAgICAgICByZXR1cm47CisgICAgbV9waXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0Owor
ICAgIG1fcm90YXRpb25Qb29sID0gbnVsbHB0cjsKK30KIAotICAgIFZUSW1hZ2VSb3RhdGlvblNl
c3Npb25SZWYgcmF3Um90YXRpb25TZXNzaW9uID0gbnVsbHB0cjsKLSAgICBWVEltYWdlUm90YXRp
b25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm90YXRpb25Qcm9wZXJ0aWVz
LmFuZ2xlLCAmcmF3Um90YXRpb25TZXNzaW9uKTsKLSAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IGFk
b3B0Q0YocmF3Um90YXRpb25TZXNzaW9uKTsKLSAgICBWVEltYWdlUm90YXRpb25TZXNzaW9uU2V0
UHJvcGVydHkobV9yb3RhdGlvblNlc3Npb24uZ2V0KCksIGtWVEltYWdlUm90YXRpb25Qcm9wZXJ0
eUtleV9FbmFibGVIaWdoU3BlZWRUcmFuc2Zlciwga0NGQm9vbGVhblRydWUpOworSW50U2l6ZSBJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGVkU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSBj
b25zdAoreworICAgIEludFNpemUgcmVzdWx0ID0gc2l6ZTsKKyAgICBpZiAobV9yb3RhdGlvblBy
b3BlcnRpZXMuYW5nbGUgPT0gOTAgfHwgbV9yb3RhdGlvblByb3BlcnRpZXMuYW5nbGUgPT0gMjcw
KQorICAgICAgICByZXR1cm4gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CiAKLSAgICBpZiAobV9yb3RhdGlvblByb3BlcnRpZXMuZmxpcFkpCi0gICAgICAgIFZU
SW1hZ2VSb3RhdGlvblNlc3Npb25TZXRQcm9wZXJ0eShtX3JvdGF0aW9uU2Vzc2lvbi5nZXQoKSwg
a1ZUSW1hZ2VSb3RhdGlvblByb3BlcnR5S2V5X0ZsaXBWZXJ0aWNhbE9yaWVudGF0aW9uLCBrQ0ZC
b29sZWFuVHJ1ZSk7Ci0gICAgaWYgKG1fcm90YXRpb25Qcm9wZXJ0aWVzLmZsaXBYKQotICAgICAg
ICBWVEltYWdlUm90YXRpb25TZXNzaW9uU2V0UHJvcGVydHkobV9yb3RhdGlvblNlc3Npb24uZ2V0
KCksIGtWVEltYWdlUm90YXRpb25Qcm9wZXJ0eUtleV9GbGlwSG9yaXpvbnRhbE9yaWVudGF0aW9u
LCBrQ0ZCb29sZWFuVHJ1ZSk7CitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVDo6cm90YXRlKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIsIGNvbnN0
IFByb2Nlc3NJZGVudGl0eSYgb3duZXIpCit7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IHJlc3VsdCA9IGNyZWF0ZVJlc3VsdEJ1ZmZlcihwaXhlbEJ1ZmZlciwgb3duZXIpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHNlc3Npb24g
PSByb3RhdGlvblNlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGF1dG8gc3RhdHVzID0gVlRJbWFnZVJvdGF0aW9uU2Vzc2lvblRyYW5zZmVy
SW1hZ2Uoc2Vzc2lvbiwgcGl4ZWxCdWZmZXIsIHJlc3VsdC5nZXQoKSk7CisgICAgaWYgKHN0YXR1
cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJU
QywgIkltYWdlUm90YXRpb25TZXNzaW9uVlQgZmFpbGVkIHJvdGF0aW5nIGJ1ZmZlciB3aXRoIGVy
cm9yICVkIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUOjpyb3RhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgY29uc3QgUHJvY2Vzc0lk
ZW50aXR5JiBvd25lcikKK3sKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q1ZQ
aXhlbEJ1ZmZlclJlZj4oUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHNhbXBsZS5w
bGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcikpOworICAgIEFTU0VSVChwaXhl
bEJ1ZmZlcik7CisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIHJvdGF0ZShwaXhlbEJ1ZmZlciwgb3duZXIpOwogfQogCi1SZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlKENWUGl4ZWxC
dWZmZXJSZWYgcGl4ZWxCdWZmZXIpCisKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFn
ZVJvdGF0aW9uU2Vzc2lvblZUOjpjcmVhdGVSZXN1bHRCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBw
aXhlbEJ1ZmZlciwgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiBvd25lcikKIHsKKyAgICBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcmVzdWx0QnVmZmVyOwogICAgIGF1dG8gcGl4ZWxGb3JtYXQg
PSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKLSAgICBpZiAo
cGl4ZWxGb3JtYXQgIT0gbV9waXhlbEZvcm1hdCB8fCAhbV9yb3RhdGlvblBvb2wpIHsKLSAgICAg
ICAgbV9waXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0OwotICAgICAgICBhdXRvIHBpeGVsQXR0cmli
dXRlcyA9IEB7Ci0gICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZl
cldpZHRoS2V5OiBAKG1fcm90YXRlZFNpemUud2lkdGgoKSksCi0gICAgICAgICAgICAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlckhlaWdodEtleTogQChtX3JvdGF0ZWRTaXplLmhl
aWdodCgpKSwKLSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVy
UGl4ZWxGb3JtYXRUeXBlS2V5OiBAKG1fcGl4ZWxGb3JtYXQpLAorICAgIEludFNpemUgaW5jb21p
bmdTaXplIHsgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZm
ZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVy
KSkgfTsKKyAgICBhdXRvIHNpemUgPSByb3RhdGVkU2l6ZShpbmNvbWluZ1NpemUpOworICAgIGlm
IChtX3VzZUJ1ZmZlclBvb2wgPT0gVXNlQnVmZmVyUG9vbDo6Tm8pIHsKKyAgICAgICAgYXV0byBh
dHRyaWJ1dGVzID0gQHsKICAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyQ0dJbWFnZUNvbXBhdGliaWxpdHlLZXk6IChtX2lzQ0dJbWFnZUNvbXBhdGlibGUgPT0g
SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzID8gQFlFUyA6IEBOTyksCiAgICAgICAgICAgICAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcklPU3VyZmFjZVByb3BlcnRpZXNLZXkgOiBA
eyB9CiAgICAgICAgIH07Ci0KLSAgICAgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgcmF3UG9vbCA9
IG51bGxwdHI7Ci0gICAgICAgIGlmIChhdXRvIGVyciA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
cGl4ZWxBdHRyaWJ1dGVzLCAmcmF3UG9vbCk7IGVyciAhPSBub0VycikgewotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmYWlsZWQg
Y3JlYXRpbmcgYnVmZmVyIHBvb2wgd2l0aCBlcnJvciAlZCIsIGVycik7CisgICAgICAgIENWUGl4
ZWxCdWZmZXJSZWYgcmF3UmVzdWx0QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgYXV0byBzdGF0
dXMgPSBDVlBpeGVsQnVmZmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSwgcGl4ZWxGb3JtYXQsIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
YXR0cmlidXRlcywgJnJhd1Jlc3VsdEJ1ZmZlcik7CisgICAgICAgIGlmIChzdGF0dXMgIT0ga0NW
UmV0dXJuU3VjY2VzcyB8fCAhcmF3UmVzdWx0QnVmZmVyKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihXZWJSVEMsICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZhaWxlZCBjcmVhdGlu
ZyBidWZmZXIgd2l0aCBlcnJvciAlZCIsIHN0YXR1cyk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotCi0gICAgICAgIG1fcm90YXRpb25Qb29sID0gYWRvcHRDRihyYXdQ
b29sKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcmVzdWx0Owot
ICAgIENWUGl4ZWxCdWZmZXJSZWYgcmF3Um90YXRlZEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgYXV0
byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcm90YXRpb25Qb29sLmdldCgpLCAmcmF3Um90YXRlZEJ1ZmZlcik7Ci0gICAg
aWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzIHx8ICFyYXdSb3RhdGVkQnVmZmVyKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkltYWdlUm90YXRpb25TZXNzaW9uVlQg
ZmFpbGVkIGNyZWF0aW5nIGJ1ZmZlciBmcm9tIHBvb2wgd2l0aCBlcnJvciAlZCIsIHN0YXR1cyk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXN1bHRCdWZmZXIgPSBhZG9wdENG
KHJhd1Jlc3VsdEJ1ZmZlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2V0SW5jb21pbmdCdWZm
ZXJTaXplKGluY29taW5nU2l6ZSk7CisgICAgICAgIHNldEluY29taW5nQnVmZmVyUGl4ZWxGb3Jt
YXQocGl4ZWxGb3JtYXQpOworICAgICAgICBhdXRvIHBvb2wgPSBidWZmZXJQb29sKCk7CisgICAg
ICAgIGlmICghcG9vbCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBDVlBp
eGVsQnVmZmVyUmVmIHJhd1Jlc3VsdEJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGF1dG8gc3Rh
dHVzID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVhdGVQaXhlbEJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBwb29sLCAmcmF3UmVzdWx0QnVmZmVyKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBrQ1ZS
ZXR1cm5TdWNjZXNzIHx8ICFyYXdSZXN1bHRCdWZmZXIpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFdlYlJUQywgIkltYWdlUm90YXRpb25TZXNzaW9uVlQgZmFpbGVkIGNyZWF0aW5n
IGJ1ZmZlciBmcm9tIHBvb2wgd2l0aCBlcnJvciAlZCIsIHN0YXR1cyk7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICByZXN1bHRCdWZmZXIgPSBhZG9wdENG
KHJhd1Jlc3VsdEJ1ZmZlcik7CiAgICAgfQotICAgIHJlc3VsdCA9IGFkb3B0Q0YocmF3Um90YXRl
ZEJ1ZmZlcik7CisgICAgaWYgKG93bmVyKQorICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZv
ckNWUGl4ZWxCdWZmZXIocmVzdWx0QnVmZmVyLmdldCgpLCBvd25lcik7CisgICAgcmV0dXJuIHJl
c3VsdEJ1ZmZlcjsKK30KIAotICAgIHN0YXR1cyA9IFZUSW1hZ2VSb3RhdGlvblNlc3Npb25UcmFu
c2ZlckltYWdlKG1fcm90YXRpb25TZXNzaW9uLmdldCgpLCBwaXhlbEJ1ZmZlciwgcmF3Um90YXRl
ZEJ1ZmZlcik7Ci0gICAgaWYgKHN0YXR1cyAhPSBub0VycikgewotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihXZWJSVEMsICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZhaWxlZCByb3RhdGluZyBi
dWZmZXIgd2l0aCBlcnJvciAlZCIsIHN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwor
VlRJbWFnZVJvdGF0aW9uU2Vzc2lvblJlZiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlv
blNlc3Npb24oKQoreworICAgIGlmICghbV9yb3RhdGlvblNlc3Npb24pIHsKKyAgICAgICAgVlRJ
bWFnZVJvdGF0aW9uU2Vzc2lvblJlZiByYXdSb3RhdGlvblNlc3Npb24gPSBudWxscHRyOworICAg
ICAgICBhdXRvIHN0YXR1cyA9IFZUSW1hZ2VSb3RhdGlvblNlc3Npb25DcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbV9yb3RhdGlvblByb3BlcnRpZXMuYW5nbGUsICZyYXdSb3RhdGlvblNlc3Np
b24pOworICAgICAgICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MgfHwgIXJhd1JvdGF0
aW9uU2Vzc2lvbikgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiSW1h
Z2VSb3RhdGlvblNlc3Npb25WVCBmYWlsZWQgY3JlYXRpbmcgcm90YXRpb24gc2Vzc2lvbiB3aXRo
IGVycm9yICVkIiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9CisgICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gYWRvcHRDRihyYXdSb3RhdGlvblNlc3Np
b24pOworICAgICAgICBWVEltYWdlUm90YXRpb25TZXNzaW9uU2V0UHJvcGVydHkobV9yb3RhdGlv
blNlc3Npb24uZ2V0KCksIGtWVEltYWdlUm90YXRpb25Qcm9wZXJ0eUtleV9FbmFibGVIaWdoU3Bl
ZWRUcmFuc2Zlciwga0NGQm9vbGVhblRydWUpOworICAgICAgICBpZiAobV9yb3RhdGlvblByb3Bl
cnRpZXMuZmxpcFkpCisgICAgICAgICAgICBWVEltYWdlUm90YXRpb25TZXNzaW9uU2V0UHJvcGVy
dHkobV9yb3RhdGlvblNlc3Npb24uZ2V0KCksIGtWVEltYWdlUm90YXRpb25Qcm9wZXJ0eUtleV9G
bGlwVmVydGljYWxPcmllbnRhdGlvbiwga0NGQm9vbGVhblRydWUpOworICAgICAgICBpZiAobV9y
b3RhdGlvblByb3BlcnRpZXMuZmxpcFgpCisgICAgICAgICAgICBWVEltYWdlUm90YXRpb25TZXNz
aW9uU2V0UHJvcGVydHkobV9yb3RhdGlvblNlc3Npb24uZ2V0KCksIGtWVEltYWdlUm90YXRpb25Q
cm9wZXJ0eUtleV9GbGlwSG9yaXpvbnRhbE9yaWVudGF0aW9uLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAg
ICAgfQorICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi5nZXQoKTsKIAotICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLVJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpyb3RhdGUoTWVkaWFTYW1wbGUmIHNhbXBsZSwgY29uc3QgUm90YXRpb25Qcm9wZXJ0
aWVzJiByb3RhdGlvbiwgSXNDR0ltYWdlQ29tcGF0aWJsZSBjZ0ltYWdlQ29tcGF0aWJsZSkKK0NW
UGl4ZWxCdWZmZXJQb29sUmVmIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OmJ1ZmZlclBvb2woKQog
ewotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihQ
QUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2FtcGxlLnBsYXRmb3JtU2FtcGxlKCku
c2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0gICAgQVNTRVJUKHBpeGVsQnVmZmVyKTsKLSAgICBp
ZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIG1fcGl4ZWxG
b3JtYXQgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKTsKLSAg
ICBJbnRTaXplIHNpemUgeyAoaW50KUNWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlciks
IChpbnQpQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgfTsKLSAgICBpZiAocm90
YXRpb24gIT0gbV9yb3RhdGlvblByb3BlcnRpZXMgfHwgbV9zaXplICE9IHNpemUpCi0gICAgICAg
IGluaXRpYWxpemUocm90YXRpb24sIHNpemUsIGNnSW1hZ2VDb21wYXRpYmxlKTsKKyAgICBpZiAo
IW1fcm90YXRpb25Qb29sKSB7CisgICAgICAgIGF1dG8gc2l6ZSA9IHJvdGF0ZWRTaXplKG1faW5j
b21pbmdCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBwb29sQXR0cmlidXRlcyA9IEB7CisgICAg
ICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlcldpZHRoS2V5OiBAKHNp
emUud2lkdGgoKSksCisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1
ZmZlckhlaWdodEtleTogQChzaXplLmhlaWdodCgpKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBO
U1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKG1fcGl4ZWxGb3Jt
YXQpLAorICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJDR0lt
YWdlQ29tcGF0aWJpbGl0eUtleTogKG1faXNDR0ltYWdlQ29tcGF0aWJsZSA9PSBJc0NHSW1hZ2VD
b21wYXRpYmxlOjpZZXMgPyBAWUVTIDogQE5PKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0
cmluZyAqKWtDVlBpeGVsQnVmZmVySU9TdXJmYWNlUHJvcGVydGllc0tleSA6IEB7IH0KKyAgICAg
ICAgfTsKIAotICAgIHJldHVybiByb3RhdGUocGl4ZWxCdWZmZXIpOworICAgICAgICBDVlBpeGVs
QnVmZmVyUG9vbFJlZiByYXdQb29sID0gbnVsbHB0cjsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBD
VlBpeGVsQnVmZmVyUG9vbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXBvb2xBdHRyaWJ1dGVzLCAmcmF3UG9vbCk7CisgICAgICAg
IGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcyB8fCAhcmF3UG9vbCkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmYWls
ZWQgY3JlYXRpbmcgYnVmZmVyIHBvb2wgd2l0aCBlcnJvciAlZCIsIHN0YXR1cyk7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBtX3JvdGF0aW9uUG9vbCA9
IGFkb3B0Q0YocmF3UG9vbCk7CisgICAgfQorICAgIHJldHVybiBtX3JvdGF0aW9uUG9vbC5nZXQo
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2EuaAppbmRleCBiZjdlZjMyYTUzZGNhMTFhNjVmOGFjODZlMTlkNTRmZThlNTgyM2EzLi4wZWRi
ZjFjZDEwY2ZiMzRlYmEzOGI0YmJhYmU1YmQ1NGEyNjg2MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaApAQCAtNTIsMTAgKzUyLDYgQEAgcHJp
dmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPiBtX3Bp
eGVsQnVmZmVyQ29uZm9ybWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUPiBtX3JvdGF0aW9uU2Vzc2lvbjsKLSAgICB3ZWJydGM6OlZpZGVvUm90YXRpb24gbV9j
dXJyZW50Um90YXRpb25TZXNzaW9uQW5nbGUgeyB3ZWJydGM6OmtWaWRlb1JvdGF0aW9uXzAgfTsK
LSAgICBzaXplX3QgbV9yb3RhdGVkV2lkdGggeyAwIH07Ci0gICAgc2l6ZV90IG1fcm90YXRlZEhl
aWdodCB7IDAgfTsKLSAgICBPU1R5cGUgbV9yb3RhdGVkRm9ybWF0OwogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgc2l6ZV90IG1fbnVtYmVyT2ZGcmFtZXMgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggMzg0ODVm
YmMxOTU2MTRiYjE2MDEyZjRmY2JiMzViOWQ2ZDllMmIwMS4uMDkwMTQwMjJmYjFiNTNkNDQyZDA4
NWQzMDdhNmIyZGIwNGZkNzExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtMzMsNyArMzMsOSBAQAogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTWVkaWFTYW1wbGUuaCIKICNpbXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1YuaCIKKyNpbXBvcnQgIlByb2Nlc3NJZGVudGl0eS5oIgogI2ltcG9ydCAiUmVhbHRpbWVWaWRl
b1V0aWxpdGllcy5oIgorCiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNp
bXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGlu
ay5oIgpAQCAtNzAsMjEgKzcyLDEwIEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAgQVNT
RVJUKHJvdGF0aW9uKTsKICAgICBpZiAoIXJvdGF0aW9uKQogICAgICAgICByZXR1cm4gcGl4ZWxC
dWZmZXI7Ci0KLSAgICBhdXRvIHBpeGVsV2lkdGggPSBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4
ZWxCdWZmZXIpOwotICAgIGF1dG8gcGl4ZWxIZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0
KHBpeGVsQnVmZmVyKTsKLSAgICBpZiAoIW1fcm90YXRpb25TZXNzaW9uIHx8IHJvdGF0aW9uICE9
IG1fY3VycmVudFJvdGF0aW9uU2Vzc2lvbkFuZ2xlIHx8IHBpeGVsV2lkdGggIT0gbV9yb3RhdGVk
V2lkdGggfHwgcGl4ZWxIZWlnaHQgIT0gbV9yb3RhdGVkSGVpZ2h0KSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lORk8oV2ViUlRDLCAiUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJv
dGF0ZVBpeGVsQnVmZmVyIGNyZWF0aW5nIHJvdGF0aW9uIHNlc3Npb24gZm9yIHJvdGF0aW9uICV1
Iiwgcm90YXRpb25Ub0FuZ2xlKHJvdGF0aW9uKSk7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm07Ci0gICAgICAgIHRyYW5zZm9ybS5yb3RhdGUocm90YXRpb25Ub0FuZ2xlKHJvdGF0
aW9uKSk7Ci0gICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUPihXVEZNb3ZlKHRyYW5zZm9ybSksIEZsb2F0U2l6ZSB7IHN0YXRpY19jYXN0
PGZsb2F0PihwaXhlbFdpZHRoKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBpeGVsSGVpZ2h0KSB9LCBJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7Ci0KLSAgICAg
ICAgbV9jdXJyZW50Um90YXRpb25TZXNzaW9uQW5nbGUgPSByb3RhdGlvbjsKLSAgICAgICAgbV9y
b3RhdGVkV2lkdGggPSBwaXhlbFdpZHRoOwotICAgICAgICBtX3JvdGF0ZWRIZWlnaHQgPSBwaXhl
bEhlaWdodDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0ZShw
aXhlbEJ1ZmZlcik7CisgICAgaWYgKCFtX3JvdGF0aW9uU2Vzc2lvbikKKyAgICAgICAgbV9yb3Rh
dGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KEltYWdlUm90
YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vLCBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpVc2VCdWZmZXJQb29sOjpZZXMpOworICAgIG1fcm90YXRpb25TZXNzaW9uLT5zZXRS
b3RhdGlvbihJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblByb3BlcnRpZXMgeyBmYWxz
ZSwgZmFsc2UsIHJvdGF0aW9uVG9BbmdsZShyb3RhdGlvbikgfSk7CisgICAgcmV0dXJuIG1fcm90
YXRpb25TZXNzaW9uLT5yb3RhdGUocGl4ZWxCdWZmZXIsIFByb2Nlc3NJZGVudGl0eSB7IH0pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IGJkYWY5OGQxMGRkMzU4YmRkN2JmNzkzM2FiZDE0ODY1MDdjY2VkODYuLjhjNjY4NGJiMjky
NWYwYTE5ZGUwZjIzZGYzYmQzOGVhNjllODJhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCkBAIC0xOTQsOSArMTk0LDYgQEAgcHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiByb3RhdGVQaXhlbEJ1ZmZlcihNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgIHsK
LSAgICAgICAgaWYgKCFtX3JvdGF0aW9uU2Vzc2lvbikKLSAgICAgICAgICAgIG1fcm90YXRpb25T
ZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPigpOwotCiAgICAgICAg
IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllcyByb3RhdGlvbjsKICAg
ICAgICAgc3dpdGNoIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpKSB7CiAgICAgICAgIGNhc2UgTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmU6CkBAIC0yMTMsNyArMjEwLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByb3RhdGlvbi5hbmdsZSA9IDI3MDsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHNh
bXBsZSwgcm90YXRpb24sIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGli
bGU6Ok5vKTsKKyAgICAgICAgaWYgKCFtX3JvdGF0aW9uU2Vzc2lvbikKKyAgICAgICAgICAgIG1f
cm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihJbWFn
ZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyxJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpVc2VCdWZmZXJQb29sOjpZZXMpOworICAgICAgICBtX3JvdGF0aW9uU2Vzc2lv
bi0+c2V0Um90YXRpb24oV1RGTW92ZShyb3RhdGlvbikpOworICAgICAgICByZXR1cm4gbV9yb3Rh
dGlvblNlc3Npb24tPnJvdGF0ZShzYW1wbGUsIFByb2Nlc3NJZGVudGl0eSB7IH0pOwogICAgIH0K
IAogICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBX
ZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1lQ291
bnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYzE5NGU1ZjJmZWVhMjRiNmM4OTllMmE2ZDY5YTI4Mzk3MTcwM2JmMi4uZGUy
Mzc1OTM3OWYxNTE3ZjZiZjA2ZmRmMTkwN2E2N2U3NDZjOTg0MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIyLTAxLTI2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2FwdHVyaW5nIFdlYkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBz
aG93cyB0aGUgaW1hZ2UgZmxpcHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1NjAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJnbC1p
bnZlcnQtd2VicnRjCisKKyAgICAgICAgKiB3ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvcm91dGluZXMuanM6CisKIDIwMjItMDEt
MjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRh
dGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdCBzdWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZTJiMzkyNWRmNmUyNmI4OGU0ZTBiZWFkZTAxOGM0ODNiMjQxOTlhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRtbApA
QCAtMCwwICsxLDEwNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxkaXYgaWQ9ImRlYnVnZSI+PC9k
aXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIHdpdGgy
RENvbnRleHQoc3ViY2FzZSwgY2FudmFzLCBwYXR0ZXJuTnVtYmVyKSB7CisgICAgZHJhd0NhbnZh
c1Rlc3RQYXR0ZXJuMkQoY2FudmFzLCBwYXR0ZXJuTnVtYmVyKTsKK30KKworZnVuY3Rpb24gd2l0
aFdlYkdMKHN1YmNhc2UsIGNhbnZhcywgcGF0dGVybk51bWJlcikgeworICAgIGRyYXdDYW52YXNU
ZXN0UGF0dGVybldlYkdMKGNhbnZhcywgcGF0dGVybk51bWJlcik7Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIGNyZWF0ZUxvY2FsUGVlckNvbm5lY3Rpb25TdHJlYW0oc3RyZWFtKSB7CisgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVj
dGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgY29uc29sZS5sb2coImRk
dSIpOworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdLCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4g
eworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50LnRyYWNrIGluc3RhbmNl
b2YgTWVkaWFTdHJlYW1UcmFjayk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHJhY2tF
dmVudC5yZWNlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVyKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHRyYWNrRXZlbnQuc3RyZWFtcyksICJBcnJheS5p
c0FycmF5KCkgc2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoT2JqZWN0LmlzRnJvemVuKHRyYWNrRXZlbnQuc3RyZWFtcyksICJPYmplY3QuaXNGcm96ZW4o
KSBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZl
bnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgLy9z
ZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7
Cit9CisKK2NvbnN0IHdpZHRoID0gNTAwOworY29uc3QgaGVpZ2h0ID0gNTAwOworCitmdW5jdGlv
biBjYWxsT25jZShmdW5jKSB7CisgICAgY29uc29sZS5sb2coIm9rIik7CisgICAgcmV0dXJuIG5l
dyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUo
ZnVuYygpKSwgNTAwKTsKKyAgICB9KTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdENhbnZhc1Rv
UGVlckNvbm5lY3Rpb24odCwgc3ViY2FzZSkgeworICAgIGNvbnN0IGRlYnVnZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkZWJ1Z2UiKTsKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKKyAgICBj
YW52YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgIGRlYnVnZS5hcHBlbmRDaGlsZChjYW52YXMpOwor
ICAgIC8vdC5hZGRfY2xlYW51cChhc3luYyAoKSA9PiBkZWJ1Z2UucmVtb3ZlQ2hpbGQoY2FudmFz
KSk7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBjcmVhdGVMb2NhbFBlZXJDb25uZWN0
aW9uU3RyZWFtKGNhbnZhcy5jYXB0dXJlU3RyZWFtKCkpOworICAgIC8vdC5hZGRfY2xlYW51cChh
c3luYyAoKSA9PiBjbG9zZUNvbm5lY3Rpb25zKCkpOworICAgIGNvbnN0IHZpZGVvID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKTsKKyAgICB2aWRlby5hdXRvcGxheSA9IHRydWU7Cisg
ICAgdmlkZW8uY29udHJvbHMgPSBmYWxzZTsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQodmlkZW8p
OworICAgIC8vdC5hZGRfY2xlYW51cChhc3luYyAoKSA9PiBkZWJ1Z2UucmVtb3ZlQ2hpbGQodmlk
ZW8pKTsKKyAgICBjb25zb2xlLmxvZygiZ290IHN0cmVhbSIgKyBsb2NhbFN0cmVhbSkKKyAgICB2
aWRlby5zcmNPYmplY3QgPSBsb2NhbFN0cmVhbTsKKyAgICBjb25zdCBvbmNsaWNrID0gbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB3aW5kb3cub25jbGljayA9ICgp
ID0+IHsgY29uc29sZS5sb2coInBsYXkiKTsgcmVzb2x2ZSh2aWRlby5wbGF5KCkpOyB9OworICAg
IH0pOworICAgIGxldCBpID0gMDsKKworICAgIC8vc2V0SW50ZXJ2YWwoKCkgPT4ge3N1YmNhc2Uu
ZnVuYyhzdWJjYXNlLCBjYW52YXMsICsraSk7fSwgMTAwKTsKKyAgICAvL2F3YWl0IGNhbGxPbmNl
KCgpID0+IHN1YmNhc2UuZnVuYyhzdWJjYXNlLCBjYW52YXMsIDApKTsKKyAgICAvL2F3YWl0IGNh
bGxPbmNlKCgpID0+IHN1YmNhc2UuZnVuYyhzdWJjYXNlLCBjYW52YXMsIDApKTsKKyAgICBhd2Fp
dCBjYWxsT25jZSgoKSA9PiBzdWJjYXNlLmZ1bmMoc3ViY2FzZSwgY2FudmFzLCAxKSk7CisgICAg
Ly9hd2FpdCBvbmNsaWNrOworICAgIGF3YWl0IHdhaXRGb3JWaWRlb1NpemUodmlkZW8sIGNhbnZh
cy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgY29uc29sZS5sb2coIndhaXRmb3J2aWRlbyIg
KyB2aWRlby52aWRlb0hlaWdodCk7CisgICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZh
c1Rlc3RQYXR0ZXJuKHZpZGVvLCAxLCAiYmFzZSBjYXNlIik7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDA7ICsraSkgeworICAgICAgICBzdWJjYXNlLmZ1bmMoc3ViY2FzZSwgY2FudmFzLCBp
KTsKKyAgICAgICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rlc3RQYXR0ZXJuKHZp
ZGVvLCBpLCBgaXRlcmF0aW9uOiAke2l9YCk7CisgICAgfQorfQorCitjb25zdCBzdWJjYXNlcyA9
IFtdOworLy9zdWJjYXNlcy5wdXNoKHtmdW5jOiB3aXRoMkRDb250ZXh0fSk7CitzdWJjYXNlcy5w
dXNoKHtmdW5jOiB3aXRoV2ViR0x9KTsKKworZnVuY3Rpb24gdGVzdERlc2NyaXB0aW9uKHN1YmNh
c2UpIHsKKyAgICBsZXQgZGVzYyA9ICJmdW5jOiAiICsgc3ViY2FzZS5mdW5jLm5hbWU7CisgICAg
Zm9yIChjb25zdCBrIGluIHN1YmNhc2UpIHsKKyAgICAgICAgaWYgKGsgPT09ICJmdW5jIikKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkZXNjICs9IGAsICR7a306ICR7c3ViY2FzZVtr
XX1gOworICAgIH0KKyAgICByZXR1cm4gZGVzYzsKK30KKworZnVuY3Rpb24gY3JlYXRlQ2FudmFz
VG9QZWVyQ29ubmVjdGlvblRlc3RzKHNsaWNlLCBzbGljZXMpIHsKKyAgICBjb25zdCBzbGljZVNp
emUgPSBNYXRoLmZsb29yKHN1YmNhc2VzLmxlbmd0aCAvIHNsaWNlcyk7CisgICAgY29uc3QgZmly
c3QgPSBzbGljZVNpemUgKiBzbGljZTsKKyAgICBmb3IgKGNvbnN0IHN1YmNhc2Ugb2Ygc3ViY2Fz
ZXMuc2xpY2UoZmlyc3QsIGZpcnN0ICsgc2xpY2VTaXplKSkKKyAgICAgICAgcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geyBhd2FpdCB0ZXN0Q2FudmFzVG9QZWVyQ29ubmVjdGlvbih0LCBzdWJjYXNl
KTsgfSwgdGVzdERlc2NyaXB0aW9uKHN1YmNhc2UpKTsKK30KK2NyZWF0ZUNhbnZhc1RvUGVlckNv
bm5lY3Rpb25UZXN0cygwLCAxKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzIGIvTGF5b3V0
VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCmluZGV4IDJjZmY2OWU2NTFiOTQxN2I1ZTE5OThiYmQ1
Njc5MjE5YTU3ZjJjZTEuLjQwNTY4YzYzYTAwZWQ4YTdkZDY2NDdjZWRjODA4ZjZmN2QxNjM2MWEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcworKysgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvcm91dGluZXMuanMKQEAgLTM1NSwzICszNTUsODkgQEAgZnVuY3Rpb24gYXNz
ZXJ0SW1hZ2VEYXRhQ29udGFpbnNNb2NrQ2FtZXJhSW1hZ2UoaW1hZ2VEYXRhLCBhbmdsZSwgZGVz
YykKICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChpbWFn
ZURhdGEsIGN5YW5Qb2ludCksIGN5YW4sIGVyciwgImN5YW4gcmVjdCBub3QgZm91bmQgIiArIGRl
c2MpOwogICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGlt
YWdlRGF0YSwgbGlnaHRHcmVlblBvaW50KSwgbGlnaHRHcmVlbiwgZXJyLCAibGlnaHQgZ3JlZW4g
cmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwogfQorCitmdW5jdGlvbiBkcmF3Q2FudmFzVGVzdFBh
dHRlcm5XZWJHTChjYW52YXMsIHBhdHRlcm5OdW1iZXIpCit7CisgICAgcGF0dGVybk51bWJlciA9
IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBjb25zdCB3aGl0ZSA9IFsgMjU1LCAyNTUsIDI1NSwg
MjU1IF07CisgICAgY29uc3QgeWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CisgICAgY29u
c3QgY3lhbiA9IFsgMCwgMjU1LCAyNTUsIDI1NSBdOworICAgIGNvbnN0IGxpZ2h0R3JlZW4gPSBb
IDAsIDEyOCwgMCwgMjU1IF07CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2Vi
Z2wiLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSk7
CisgICAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6ZSA9IFsg
Y2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBbCisgICAg
ICAgIFswLjAsIDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwgMS4wXSwK
KyAgICAgICAgWzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwgMC41LCAw
LjVdLAorICAgIF07CisgICAgY29uc3QgYm94Q29sb3JzID0gWworICAgICAgICB3aGl0ZSwKKyAg
ICAgICAgeWVsbG93LAorICAgICAgICBjeWFuLAorICAgICAgICBsaWdodEdyZWVuLAorICAgIF07
CisgICAgZm9yIChsZXQgbiA9IDA7IG4gPCA0OyArK24pIHsKKyAgICAgICAgY29uc3QgaSA9IChu
ICsgcGF0dGVybk51bWJlcikgJSBib3hlcy5sZW5ndGg7CisgICAgICAgIGNvbnN0IGNvbG9yID0g
Ym94Q29sb3JzW2ldOworICAgICAgICBjb25zdCBib3ggPSBib3hlc1tuXTsKKyAgICAgICAgZ2wu
c2Npc3Nvcihib3hbMF0gKiBib3hTaXplWzBdLCBib3hbMV0gKiBib3hTaXplWzFdLCBib3hbMl0g
KiBib3hTaXplWzBdLCBib3hbM10gKiBib3hTaXplWzFdKTsKKyAgICAgICAgZ2wuY2xlYXJDb2xv
cihjb2xvclswXSAvIDI1NS4sIGNvbG9yWzFdIC8gMjU1LCBjb2xvclsyXSAvIDI1NS4sIGNvbG9y
WzNdIC8gMjU1Lik7CisgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworICAg
IH0KK30KKworZnVuY3Rpb24gYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rlc3RQYXR0
ZXJuKGltYWdlU291cmNlLCBwYXR0ZXJuTnVtYmVyLCBkZXNjKQoreworICAgIHBhdHRlcm5OdW1i
ZXIgPSBwYXR0ZXJuTnVtYmVyIHx8IDA7CisgICAgZGVzYyA9IGRlc2MgfHwgIiI7CisgICAgY29u
c3QgdmVyaWZ5V2lkdGggPSAzMDA7CisgICAgY29uc3QgZXJyID0gNDsKKyAgICBsZXQgaW1hZ2VT
b3VyY2VTaXplOworICAgIGxldCBpbWFnZVNvdXJjZUhlaWdodDsKKyAgICBpZiAoaW1hZ2VTb3Vy
Y2UgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KQorICAgICAgICBpbWFnZVNvdXJjZVNpemUg
PSBbaW1hZ2VTb3VyY2UudmlkZW9XaWR0aCwgaW1hZ2VTb3VyY2UudmlkZW9IZWlnaHRdOworICAg
IGVsc2UKKyAgICAgICAgaW1hZ2VTb3VyY2VTaXplID0gW2ltYWdlU291cmNlLndpZHRoLCBpbWFn
ZVNvdXJjZS5oZWlnaHRdOworCisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7CisgICAgY29uc3QgZGVidWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRlYnVnZSIpOworICAgIGlmIChkZWJ1Z2UpCisgICAgICAgIGRlYnVnZS5hcHBlbmRDaGls
ZChjYW52YXMpOworCisgICAgY2FudmFzLndpZHRoID0gdmVyaWZ5V2lkdGg7CisgICAgY2FudmFz
LmhlaWdodCA9ICh2ZXJpZnlXaWR0aCAvIGltYWdlU291cmNlU2l6ZVswXSkgKiBpbWFnZVNvdXJj
ZVNpemVbMV07CisgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAg
Y3R4LmRyYXdJbWFnZShpbWFnZVNvdXJjZSwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVp
Z2h0KTsKKyAgICBjb25zdCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZh
cy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICBjb25zdCB3aGl0ZSA9IFsgMjU1LCAyNTUs
IDI1NSwgMjU1IF07CisgICAgY29uc3Qgd2hpdGVQb2ludCA9IFsgMC4xLCAwLjEgXTsKKyAgICBj
b25zdCB5ZWxsb3cgPSBbIDI1NSwgMjU1LCAwLCAyNTUgXTsKKyAgICBjb25zdCB5ZWxsb3dQb2lu
dCA9IFsgMC45LCAwLjEgXTsKKyAgICBjb25zdCBjeWFuID0gWyAwLCAyNTUsIDI1NSwgMjU1IF07
CisgICAgY29uc3QgY3lhblBvaW50ID0gWyAwLjksIDAuOSBdOworICAgIGNvbnN0IGxpZ2h0R3Jl
ZW4gPSBbIDAsIDEyOCwgMCwgMjU1IF07CisgICAgY29uc3QgbGlnaHRHcmVlblBvaW50ID0gWyAw
LjEsIDAuOSBdOworICAgIGNvbnN0IHBvaW50Q29sb3JzID0gWworICAgICAgICB3aGl0ZSwKKyAg
ICAgICAgeWVsbG93LAorICAgICAgICBjeWFuLAorICAgICAgICBsaWdodEdyZWVuLAorICAgIF07
CisgICAgY29uc3QgcG9pbnRzID0gWworICAgICAgICB3aGl0ZVBvaW50LAorICAgICAgICB5ZWxs
b3dQb2ludCwKKyAgICAgICAgY3lhblBvaW50LAorICAgICAgICBsaWdodEdyZWVuUG9pbnQsCisg
ICAgXTsKKyAgICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBsZXQgaSA9
IChuICsgcGF0dGVybk51bWJlcikgJSBwb2ludHMubGVuZ3RoOworICAgICAgICBsZXQgY29sb3Ig
PSBwb2ludENvbG9yc1tpXTsKKyAgICAgICAgbGV0IHBvaW50ID0gcG9pbnRzW25dOworICAgICAg
ICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEs
IHBvaW50KSwgY29sb3IsIGVyciwgYHJlY3QgJHtjb2xvci5qb2luKCIsIil9IGF0ICR7cG9pbnQu
am9pbigiLCIpfSBub3QgZm91bmQgJHtkZXNjfWApOworICAgIH0KKyAgICBpZiAoZGVidWdlKQor
ICAgICAgICBkZWJ1Z2UucmVtb3ZlQ2hpbGQoY2FudmFzKTsKK30KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="476324"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450043</attachid>
            <date>2022-01-26 11:26:54 -0800</date>
            <delta_ts>2022-01-27 00:18:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235600-20220126212651.patch</filename>
            <type>text/plain</type>
            <size>44887</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uNzM4ZmY4NmE0YjA0NmVjNmJhNTU2MzU1MWIyOWM0
MGY3NzE3NjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAxLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaXJyb3IgYW5kIHJvdGF0ZSBXZWJHTCBtZWRp
YSBzdHJlYW0gaW1hZ2UgYXQgdGhlIHNvdXJjZS4gVGhlIFdlYlJUQworICAgICAgICBjYW5ub3Qg
bWlycm9yIGR1cmluZyBlbmNvZGluZy4KKworICAgICAgICBTaW1wbGlmeSBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUIGJ5IHJlbW92aW5nIHN0YXRlIGFjY2Vzc29ycy4KKyAgICAgICAgSW5zdGVhZCwg
cHJvdmlkZSBjb25zaXN0ZW50IHN0YXRlIHNldHRlcnMgdGhhdCByZXNldCB0aGUgc3RhdGUuCisg
ICAgICAgIENsaWVudCBhbHdheXMganVzdCBjYWxscyB0aGUgc3RhdGUgc2V0dGVycyB3aGVuIHRo
ZXkgb2JzZXJ2ZSBuZXcKKyAgICAgICAgc3RhdGUsIGFuZCBsZXQgdGhlIGNsYXNzIHJlc2V0IHRo
ZSBpbnRlcm5hbCBzdGF0ZS4KKworICAgICAgICBBZGQgcG9zc2libGl0eSBmb3IgSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVCB0byBjcmVhdGUgQ1ZQaXhlbEJ1ZmZlcnMKKyAgICAgICAgd2l0aG91dCBD
VlBpeGVsQnVmZmVyUG9vbC4gSXQgaXMgbm90IHlldCBrbm93biBob3cgd2VsbAorICAgICAgICB0
aGUgcG9vbCBiZWhhdmVzIFdSVCBtZW1vcnkgYXR0cmlidXRpb24uCisKKyAgICAgICAgQWRkIG1l
bW9yeSBhdHRyaWJ1dGlvbiBhcmd1bWVudHMgZm9yIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJv
dGF0ZSgpLAorICAgICAgICBzaW5jZSBpdCBjcmVhdGVzIG5ldyBidWZmZXJzLgorCisgICAgICAg
IFRlc3Q6IHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkVHJhY2tNZXRh
ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzdG9yZVNhbXBs
ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2V0
T3duZXJzaGlwSWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OkltYWdlUm90YXRpb25TZXNzaW9uVlQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2V0Um90YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2V0SW5jb21pbmdCdWZmZXJTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnNldEluY29taW5n
QnVmZmVyUGl4ZWxGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Np
b25WVDo6cm90YXRlZFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlv
blNlc3Npb25WVDo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNz
aW9uVlQ6OmNyZWF0ZVJlc3VsdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUOjpyb3RhdGlvblNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6YnVmZmVyUG9vbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUOjppbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIpOgorCiAyMDIyLTAxLTI2ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gTW91c2UgaW50ZXJhY3Rp
b24gZm9yIDxtb2RlbD4gaXMgZmxpcHBlZCBpbiB0aGUgeS1heGlzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1ZmM0
ZTRiNTJmMGE0YWFjNzM2NjU1YzA2MjMwNDNiZWNjMjY1ZjEuLjg0MjNkYmU0Y2IwYTk1NjFjNDNi
ZWM2ZGQyNzZhNjUzY2YxMDgzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDEt
MjYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDYXB0
dXJpbmcgV2ViR0wgY2FudmFzIHRocm91Z2ggcGVlciBjb25uZWN0aW9uIHNob3dzIHRoZSBpbWFn
ZSBmbGlwcGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU2MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MDQzMzI1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5IGFmdGVyIEltYWdlUm90YXRpb25TZXNzaW9uVlQKKyAgICAgICAgQVBJ
IHJlZmFjdG9yLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpTb3VyY2VQcm94eTo6cm90YXRlUGl4ZWxCdWZmZXIpOgorCiAyMDIyLTAxLTI2ICBB
bnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gTW91
c2UgaW50ZXJhY3Rpb24gZm9yIDxtb2RlbD4gaXMgZmxpcHBlZCBpbiB0aGUgeS1heGlzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCA1NjNhZjE5
MjRkOWFmMzU5ZTkzMGVmNjRiYWUzMjNmYzA0MWRlODdhLi45ZDRlNDFiNGExNmFhMjExYjNiOGEy
NDk1N2M4YTkzYTUxNDZiM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5o
IgorI2ltcG9ydCAiUHJvY2Vzc0lkZW50aXR5LmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIK
ICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZURlY29tcHJlc3Npb25T
ZXNzaW9uLmgiCkBAIC0zODUsMTMgKzM4NiwxMSBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6
OnJlYWRUcmFja01ldGFkYXRhKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgh
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbgotICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lv
bi0+dHJhbnNmb3JtKCkKLSAgICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNm
b3JtKCkudmFsdWUoKSAhPSBmaW5hbFRyYW5zZm9ybQotICAgICAgICB8fCBtX2ltYWdlUm90YXRp
b25TZXNzaW9uLT5zaXplKCkgIT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lv
biA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5z
Zm9ybSksIHNpemUsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6
Olllcyk7Ci0KLSAgICBtX3NpemUgPSBleHBhbmRlZEludFNpemUobV9pbWFnZVJvdGF0aW9uU2Vz
c2lvbi0+cm90YXRlZFNpemUoKSk7CisgICAgaWYgKCFtX2ltYWdlUm90YXRpb25TZXNzaW9uKQor
ICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUPihJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZ
ZXMsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlVzZUJ1ZmZlclBvb2w6Olllcyk7CisgICAgbV9p
bWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2V0Um90YXRpb24oZmluYWxUcmFuc2Zvcm0pOworICAgIG1f
aW1hZ2VSb3RhdGlvblNlc3Npb24tPnNldEluY29taW5nQnVmZmVyU2l6ZShzaXplKTsKKyAgICBt
X3NpemUgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGVkU2l6ZShzaXplKTsKIH0KIAog
Ym9vbCBJbWFnZURlY29kZXJBVkZPYmpDOjpzdG9yZVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZl
clJlZiBzYW1wbGVCdWZmZXIpCkBAIC00MDYsNyArNDA1LDcgQEAgYm9vbCBJbWFnZURlY29kZXJB
VkZPYmpDOjpzdG9yZVNhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIp
CiAgICAgYXV0byBpdGVyID0gbV9zYW1wbGVEYXRhLnByZXNlbnRhdGlvbk9yZGVyKCkuZmluZFNh
bXBsZVdpdGhQcmVzZW50YXRpb25UaW1lKHByZXNlbnRhdGlvblRpbWUpOwogCiAgICAgaWYgKG1f
aW1hZ2VSb3RhdGlvblNlc3Npb24pCi0gICAgICAgIHBpeGVsQnVmZmVyID0gbV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICAgICAgcGl4ZWxCdWZm
ZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUocGl4ZWxCdWZmZXIuZ2V0KCksIFBy
b2Nlc3NJZGVudGl0eSB7IH0pOwogCiAgICAgQ0dJbWFnZVJlZiByYXdJbWFnZSA9IG51bGxwdHI7
CiAgICAgaWYgKG5vRXJyICE9IFZUQ3JlYXRlQ0dJbWFnZUZyb21DVlBpeGVsQnVmZmVyKHBpeGVs
QnVmZmVyLmdldCgpLCBudWxscHRyLCAmcmF3SW1hZ2UpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCBhMDhkYTBmNGYxMGU0YzNlNGE5YTcxZWU4ZjUzMjVmYTY2ZTA5MWZmLi43NmZhNGM3
NjJkNzZiNWYwOTM4ODk1NDE2ZjU1YTlkZDM0OWEwMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTU4LDYgKzU4LDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVRleHRUcmFjay5oIgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisj
aW1wb3J0ICJQcm9jZXNzSWRlbnRpdHkuaCIKICNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0Lmgi
CiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERp
c2FsbG93ZWRTY29wZS5oIgpAQCAtMjI1MSwxMyArMjI1MiwxMCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbigpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbgotICAgICAg
ICAmJiBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKQotICAgICAgICAmJiBtX2lt
YWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKS52YWx1ZSgpID09IGZpbmFsVHJhbnNmb3Jt
Ci0gICAgICAgICYmIG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSA9PSBuYXR1cmFsU2l6
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5h
dHVyYWxTaXplLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZ
ZXMpOworICAgIGlmICghbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKKyAgICAgICAgbV9pbWFnZVJv
dGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzLCBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpVc2VCdWZmZXJQb29sOjpZZXMpOworICAgIG1faW1hZ2VSb3RhdGlvblNlc3Np
b24tPnNldFJvdGF0aW9uKGZpbmFsVHJhbnNmb3JtKTsKKyAgICBtX2ltYWdlUm90YXRpb25TZXNz
aW9uLT5zZXRJbmNvbWluZ0J1ZmZlclNpemUoZXhwYW5kZWRJbnRTaXplKG5hdHVyYWxTaXplKSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBSZWZULCB0eXBlbmFtZSBQYXNzUmVmVD4KQEAgLTI1
NDksNyArMjU0Nyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKICAgICB9CiAKICAgICBpZiAobV9sYXN0UGl4ZWxCdWZm
ZXIgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKLSAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIg
PSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkp
OworICAgICAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJv
dGF0ZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgUHJvY2Vzc0lkZW50aXR5IHsgfSk7CiAKICAg
ICBtX2xhc3RJbWFnZSA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTENvY29hLmgKaW5kZXggYzlmYmUwYmEwNWEyYmMyMzU3MDBhNmU2Yzk5NjRlZmRiYzFi
NjEzNy4uYzU2ZTY5NTM1ZTcwOTdmZGQyNWQyZmNlMzAyZTEwNjhlNzZjNmUzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAtMzAsMjAgKzMwLDI2IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oIgogI2luY2x1ZGUgIklPU3VyZmFjZS5oIgogCi0jaWYgRU5B
QkxFKFZJREVPKQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xD
VkNvY29hOwotfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2NvcGVk
SGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorI2luY2x1ZGUgPG1lbW9yeT4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFByb2Nlc3NJZGVudGl0eTsKIAorI2lmIEVOQUJMRShWSURFTykKK2NsYXNzIEdy
YXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK2NsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQ7CisjZW5kaWYKKwogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xDb2NvYSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRH
TEFOR0xFIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29j
b2E+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgUHJvY2Vz
c0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcik7CkBAIC05MCw2ICs5Niw5IEBAIHByb3RlY3RlZDoK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVjb25m
aWd1cmF0aW9uIHsgZmFsc2UgfTsKICAgICBTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
IG1faGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+IG1fbWVk
aWFTYW1wbGVSb3RhdGlvblNlc3Npb247CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgR3JhcGhp
Y3NDb250ZXh0R0xDVkNvY29hOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmlu
ZGV4IDcxMjlmMjI0YzI2NDBhZTQ5ZjdjOTMyZTA3Yzk0NTJmOTM0NjA0Y2QuLmQxYTQ2NDRiMWFk
MzRjMmIzY2U0NTYyOTZlMzNmMGNhNDRiNmRhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5tbQpAQCAtNTQsNiArNTQsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorI2luY2x1ZGUgIkltYWdlUm90YXRpb25TZXNzaW9uVlQuaCIKICNpbmNsdWRlICJNZWRp
YVNhbXBsZUFWRk9iakMuaCIKICNlbmRpZgogCkBAIC01NTEsNiArNTUyLDEwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6dXBkYXRlQ29udGV4dE9uRGlzcGxheVJlY29uZmlndXJhdGlv
bigpCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZmZXJC
YWNraW5nKCkKIHsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIC8vIFRPRE86IFdoZW4g
dGhpcyBpcyBtb3ZlZCB0byBHcmFwaGljc0NvbnRleHRHTENvY29hLCBzZXQgbV9tZWRpYVNhbXBs
ZVJvdGF0aW9uU2Vzc2lvbiA9IG51bGxwdHIuCisjZW5kaWYKKwogICAgIEFTU0VSVCghZ2V0SW50
ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwogICAgIC8vIFJlc2V0IHRoZSBjdXJy
ZW50IGJhY2tidWZmZXIgbm93IGJlZm9yZSBhbGxvY2F0aW5nIGEgbmV3IG9uZSBpbiBvcmRlciB0
byBzbGlnaHRseSByZWR1Y2UgbWVtb3J5IHByZXNzdXJlLgogICAgIGlmIChtX2Rpc3BsYXlCdWZm
ZXJCYWNraW5nKSB7CkBAIC03NzUsMTEgKzc4MCwxOCBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoZGlzcGxheUJ1ZmZlci5zdXJmYWNl
LT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOwogICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVhdGVDVlBpeGVsQnVmZmVyKGRpc3BsYXlCdWZmZXIuc3Vy
ZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBs
ZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIE1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlv
bjo6VXBzaWRlRG93biwgdHJ1ZSk7CisgICAgaWYgKCFtX21lZGlhU2FtcGxlUm90YXRpb25TZXNz
aW9uKSB7CisgICAgICAgIG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVl
PEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFn
ZUNvbXBhdGlibGU6Ok5vLCAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6VXNlQnVmZmVyUG9vbDo6
Tm8pOworICAgICAgICBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNzaW9uLT5zZXRSb3RhdGlvbihJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblByb3BlcnRpZXMgeyB0cnVlLCBmYWxzZSwg
MTgwIH0pOworICAgIH0KKyAgICAvLyBDdXJyZW50bHkgbm90IGFsbCBXZWJLaXQgTWVkaWFTYW1w
bGUgY29kZXBhdGhzIHN1cHBvcnQgZmxpcHBlZCBzYW1wbGVzLCBzbyB3ZSBuZWVkIHRvIHJvdGF0
ZSBhbmQgZmxpcCBoZXJlLgorICAgIGF1dG8gc2FtcGxlUGl4ZWxCdWZmZXIgPSBtX21lZGlhU2Ft
cGxlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUocGl4ZWxCdWZmZXItPmdldCgpLCBtX3Jlc291cmNl
T3duZXIpOworICAgIC8vIElmIHdlIHNvbWV0aW1lIGNoYW5nZSB0aGlzIHRvIG5vLWNvcHksIHJl
bWVtYmVyIHRvIHNldCB0aGUgZGlzcGxheSBidWZmZXIgdG8gbm90IGJlIHJldXNlZC4KKyAgICBB
U1NFUlQoc2FtcGxlUGl4ZWxCdWZmZXIgIT0gKnBpeGVsQnVmZmVyKTsKKyAgICByZXR1cm4gTWVk
aWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKHNhbXBsZVBpeGVsQnVm
ZmVyKSwgTWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxzZSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UuaAppbmRleCAxZTljNzMyOGRkYzc1NmJjNDZlMjhmMWE1ZWE0YWY1NDNjNGFh
NmJmLi4xYTY4ZGEyYmQ5Y2YzODI3NTk2NGExYjUyN2FkNTkyNjAzYWU0OGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAt
MTYxLDYgKzE2MSw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRV9BQ0NFTEVS
QVRPUikKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHkoY29u
c3QgUHJvY2Vzc0lkZW50aXR5Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
T3duZXJzaGlwSWRlbnRpdHkoSU9TdXJmYWNlUmVmLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsK
IAogICAgIHZvaWQgbWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlcnRpZXMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4
IGFjMDg3MWZmYmE1OTZjZDNkNDc0ZDE1MWY3OTQ2NDI4NjgxYzliZTMuLjhjYzE2ZmRlYTA1MzE5
NDQxZjdhZTEyNGYzMjU3N2FkMzU2ZmZlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTQ5NCwxNCArNDk0LDIxIEBA
IHZvaWQgSU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4mJiBpblN1cmZhY2UsIEZvcm1hdCBmCiAjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0VfQUNDRUxF
UkFUT1IpCiAKIHZvaWQgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBQcm9j
ZXNzSWRlbnRpdHkmIHJlc291cmNlT3duZXIpCit7CisgICAgc2V0T3duZXJzaGlwSWRlbnRpdHko
bV9zdXJmYWNlLmdldCgpLCByZXNvdXJjZU93bmVyKTsKK30KKwordm9pZCBJT1N1cmZhY2U6OnNl
dE93bmVyc2hpcElkZW50aXR5KElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBQcm9jZXNzSWRl
bnRpdHkmIHJlc291cmNlT3duZXIpCiB7CiAjaWYgSEFWRShJT1NVUkZBQ0VfU0VUX09XTkVSU0hJ
UF9JREVOVElUWSkgJiYgSEFWRShUQVNLX0lERU5USVRZX1RPS0VOKQogICAgIEFTU0VSVChyZXNv
dXJjZU93bmVyKTsKKyAgICBBU1NFUlQoc3VyZmFjZSk7CiAgICAgdGFza19pZF90b2tlbl90IG93
bmVyVGFza0lkVG9rZW4gPSByZXNvdXJjZU93bmVyLnRhc2tJZFRva2VuKCk7Ci0gICAgYXV0byBy
ZXN1bHQgPSBJT1N1cmZhY2VTZXRPd25lcnNoaXBJZGVudGl0eShtX3N1cmZhY2UuZ2V0KCksIG93
bmVyVGFza0lkVG9rZW4sIGtJT1N1cmZhY2VNZW1vcnlMZWRnZXJUYWdHcmFwaGljcywgMCk7Cisg
ICAgYXV0byByZXN1bHQgPSBJT1N1cmZhY2VTZXRPd25lcnNoaXBJZGVudGl0eShzdXJmYWNlLCBv
d25lclRhc2tJZFRva2VuLCBrSU9TdXJmYWNlTWVtb3J5TGVkZ2VyVGFnR3JhcGhpY3MsIDApOwog
ICAgIGlmIChyZXN1bHQgIT0ga0lPUmV0dXJuU3VjY2VzcykKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoSU9TdXJmYWNlLCAiSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0eTogRmFpbGVk
IHRvIGNsYWltIG93bmVyc2hpcCBvZiBJT1N1cmZhY2UgJXAsIHRhc2sgaWQgdG9rZW46ICVkLCBl
cnJvcjogJWQiLCBtX3N1cmZhY2UuZ2V0KCksIChpbnQpb3duZXJUYXNrSWRUb2tlbiwgcmVzdWx0
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoSU9TdXJmYWNlLCAiSU9TdXJmYWNlOjpzZXRP
d25lcnNoaXBJZGVudGl0eTogRmFpbGVkIHRvIGNsYWltIG93bmVyc2hpcCBvZiBJT1N1cmZhY2Ug
JXAsIHRhc2sgaWQgdG9rZW46ICVkLCBlcnJvcjogJWQiLCBzdXJmYWNlLCAoaW50KW93bmVyVGFz
a0lkVG9rZW4sIHJlc3VsdCk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdXJmYWNlKTsKICAg
ICBVTlVTRURfUEFSQU0ocmVzb3VyY2VPd25lcik7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oCmluZGV4IDJlNWYxOTY1
OGEzNWJmNThmMmNkNGUwZmE3NGI5ZDVhMmJhZjJkY2YuLmY0YzViNTEzN2UzODBjZjM4ODJjZTBm
Y2JiNzYxOTVkZWYwMDVhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0NWVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaApAQCAtMzUsNiArMzUsNyBAQCB1c2luZyBDVlBpeGVsQnVm
ZmVyUG9vbFJlZiA9IHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKjsKIHVzaW5nIENWUGl4ZWxC
dWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFByb2Nlc3NJZGVudGl0eTsKIAogLy8gQ3JlYXRlcyBDVlBpeGVsQnVmZmVyUG9vbCB0aGF0
IGNyZWF0ZXMgQ1ZQaXhlbEJ1ZmZlcnMgYmFja2VkIGJ5IElPU3VyZmFjZXMuCiAvLyBUaGVzZSBi
dWZmZXJzIGNhbiBiZSBmb3IgZXhhbXBsZSBzZW50IHRocm91Z2ggSVBDLgpAQCAtNDUsNCArNDYs
OCBAQCBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4s
IENWUmV0dXJuPiBjcmVhdGVDVlBpeGVsQnVmZgogV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8UmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+LCBDVlJldHVybj4gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihJ
T1N1cmZhY2VSZWYpOwogCiBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjcmVhdGVDR0NvbG9y
U3BhY2VGb3JDVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOworCisvLyBTaG91bGQgYmUg
Y2FsbGVkIHdpdGggbm9uLWVtcHR5IFByb2Nlc3NJZGVudGl0eS4KK1dFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0T3duZXJzaGlwSWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYs
IGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tCmluZGV4IDMyNmYwNDMyYjQ4NjIyMTk2
MmM3NWVmYzZkZTAxZWQ4YWRjOWU2NjcuLjE0ZjYyYjA0MDczYzc4NzQwNDlhNmZlZmU4MTM5MzNh
NjRmYzQzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0NWVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0NWVXRpbGl0aWVzLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJDVlV0aWxpdGllcy5o
IgogCiAjaW1wb3J0ICJDb2xvclNwYWNlQ0cuaCIKKyNpbXBvcnQgIklPU3VyZmFjZS5oIgogI2lt
cG9ydCA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+
CiAjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgpAQCAtMTMyLDQgKzEzMywxMSBAQCBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjcmVhdGVDR0NvbG9yU3BhY2VGb3JDVlBpeGVsQnVmZmVy
KENWUGl4ZWxCdWZmZXJSZWYgYgogICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwogfQog
Cit2b2lkIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVy
UmVmIHBpeGVsQnVmZmVyLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmIG93bmVyKQoreworICAgIGF1
dG8gc3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UocGl4ZWxCdWZmZXIpOworICAg
IEFTU0VSVChzdXJmYWNlKTsKKyAgICBJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5KHN1
cmZhY2UsIG93bmVyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCmluZGV4IGJkZWRj
Y2Y3MGE4NWIxZTcyODcwMDg0ODk2NjVmOTk1NWE0NGZmMDkuLjljNjE2YjVjYzBhMDM2YTdjNTlm
ZDIzOTU5NzFhYzk2ZGU1OGViODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKQEAgLTM1LDkg
KzM1LDExIEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZm
ZXJQb29sUmVmOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVNhbXBsZTsKK2Ns
YXNzIFByb2Nlc3NJZGVudGl0eTsKIAogY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW1hZ2VSb3RhdGlvblNlc3Npb25WVCk7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJvdGF0aW9u
UHJvcGVydGllcyB7CiAgICAgICAgIGJvb2wgZmxpcFggeyBmYWxzZSB9OwpAQCAtNDcsMzMgKzQ5
LDM4IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgeyByZXR1cm4g
IWZsaXBYICYmICFmbGlwWSAmJiAhYW5nbGU7IH0KICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBJ
c0NHSW1hZ2VDb21wYXRpYmxlIHsKKyAgICBlbnVtIGNsYXNzIElzQ0dJbWFnZUNvbXBhdGlibGUg
OiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcywKKyAgICB9OworICAgIGVudW0gY2xh
c3MgVXNlQnVmZmVyUG9vbCA6IGJvb2wgewogICAgICAgICBObywKICAgICAgICAgWWVzLAogICAg
IH07CiAKLSAgICBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUKEFmZmluZVRyYW5zZm9ybSYmLCBGbG9h
dFNpemUsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwotICAgIEltYWdlUm90YXRpb25TZXNzaW9uVlQo
Y29uc3QgUm90YXRpb25Qcm9wZXJ0aWVzJiwgRmxvYXRTaXplLCBJc0NHSW1hZ2VDb21wYXRpYmxl
KTsKLSAgICBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVf
RVhQT1JUIEltYWdlUm90YXRpb25TZXNzaW9uVlQoSXNDR0ltYWdlQ29tcGF0aWJsZSwgVXNlQnVm
ZmVyUG9vbCk7CiAKLSAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4mIHRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgUm90YXRp
b25Qcm9wZXJ0aWVzJiByb3RhdGlvblByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3JvdGF0
aW9uUHJvcGVydGllczsgfQotICAgIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSgpIHsgcmV0dXJuIG1f
c2l6ZTsgfQotICAgIGNvbnN0IEZsb2F0U2l6ZSYgcm90YXRlZFNpemUoKSB7IHJldHVybiBtX3Jv
dGF0ZWRTaXplOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSb3RhdGlvbihSb3RhdGlv
blByb3BlcnRpZXMmJik7CisgICAgdm9pZCBzZXRSb3RhdGlvbihjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKTsKKyAgICB2b2lkIHNldEluY29taW5nQnVmZmVyU2l6ZShjb25zdCBJbnRTaXplJik7Cisg
ICAgdm9pZCBzZXRJbmNvbWluZ0J1ZmZlclBpeGVsRm9ybWF0KE9TVHlwZSk7CiAKLSAgICBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlKENWUGl4ZWxCdWZmZXJSZWYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByb3RhdGUoTWVkaWFTYW1w
bGUmLCBjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBJc0NHSW1hZ2VDb21wYXRpYmxlKTsKKyAg
ICBJbnRTaXplIHJvdGF0ZWRTaXplKGNvbnN0IEludFNpemUmKSBjb25zdDsKKyAgICAKKyAgICBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcm90YXRlKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0
IFByb2Nlc3NJZGVudGl0eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiByb3RhdGUoTWVkaWFTYW1wbGUmLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgUm90YXRpb25Qcm9wZXJ0aWVz
JiwgRmxvYXRTaXplLCBJc0NHSW1hZ2VDb21wYXRpYmxlKTsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gY3JlYXRlUmVzdWx0QnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYsIGNvbnN0IFBy
b2Nlc3NJZGVudGl0eSYpOworICAgIFZUSW1hZ2VSb3RhdGlvblNlc3Npb25SZWYgcm90YXRpb25T
ZXNzaW9uKCk7CisgICAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgYnVmZmVyUG9vbCgpOwogCisgICAg
Y29uc3QgSXNDR0ltYWdlQ29tcGF0aWJsZSBtX2lzQ0dJbWFnZUNvbXBhdGlibGU7CisgICAgY29u
c3QgVXNlQnVmZmVyUG9vbCBtX3VzZUJ1ZmZlclBvb2w7CiAgICAgUm90YXRpb25Qcm9wZXJ0aWVz
IG1fcm90YXRpb25Qcm9wZXJ0aWVzOwotICAgIEZsb2F0U2l6ZSBtX3NpemU7Ci0gICAgc3RkOjpv
cHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwotICAgIE9TVHlwZSBtX3BpeGVs
Rm9ybWF0OwotICAgIElzQ0dJbWFnZUNvbXBhdGlibGUgbV9pc0NHSW1hZ2VDb21wYXRpYmxlOwot
ICAgIEZsb2F0U2l6ZSBtX3JvdGF0ZWRTaXplOwogICAgIFJldGFpblB0cjxWVEltYWdlUm90YXRp
b25TZXNzaW9uUmVmPiBtX3JvdGF0aW9uU2Vzc2lvbjsKKyAgICBJbnRTaXplIG1faW5jb21pbmdC
dWZmZXJTaXplOworICAgIE9TVHlwZSBtX3BpeGVsRm9ybWF0IHsgMCB9OwogICAgIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gbV9yb3RhdGlvblBvb2w7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lv
blZULm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5tbQppbmRleCAwMjRiOTNjZDgwOTUyNTJhNzhkMjNjZDE0YzhmNzg0MjU0Y2Iz
MDRlLi5mM2QzMjI0ZjdmOGUyYjgzMjU0OWJmZGUyYjIyNGRjMjVmMmZjNjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lv
blZULm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90
YXRpb25TZXNzaW9uVlQubW0KQEAgLTI3LDggKzI3LDEwIEBACiAjaW1wb3J0ICJJbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmgiCiAKICNpbXBvcnQgIkFmZmluZVRyYW5zZm9ybS5oIgorI2ltcG9ydCAi
Q1ZVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxl
LmgiCisjaW1wb3J0ICJQcm9jZXNzSWRlbnRpdHkuaCIKIAogI2ltcG9ydCAiQ29yZVZpZGVvU29m
dExpbmsuaCIKICNpbXBvcnQgIlZpZGVvVG9vbGJveFNvZnRMaW5rLmgiCkBAIC01OSw5MiArNjEs
MTUzIEBAIHN0YXRpYyBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblByb3BlcnRpZXMg
dHJhbnNmb3JtVG9Sb3RhdGlvblByb3BlcnRpZXMoCiAgICAgcmV0dXJuIHJvdGF0aW9uOwogfQog
Ci1JbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUKEFmZmluZVRy
YW5zZm9ybSYmIHRyYW5zZm9ybSwgRmxvYXRTaXplIHNpemUsIElzQ0dJbWFnZUNvbXBhdGlibGUg
aXNDR0ltYWdlQ29tcGF0aWJsZSkKLSAgICA6IEltYWdlUm90YXRpb25TZXNzaW9uVlQodHJhbnNm
b3JtVG9Sb3RhdGlvblByb3BlcnRpZXModHJhbnNmb3JtKSwgc2l6ZSwgaXNDR0ltYWdlQ29tcGF0
aWJsZSkKK0ltYWdlUm90YXRpb25TZXNzaW9uVlQ6OkltYWdlUm90YXRpb25TZXNzaW9uVlQoSXND
R0ltYWdlQ29tcGF0aWJsZSBpc0NHSW1hZ2VDb21wYXRpYmxlLCBVc2VCdWZmZXJQb29sIHVzZUJ1
ZmZlclBvb2wpCisgICAgOiBtX2lzQ0dJbWFnZUNvbXBhdGlibGUoaXNDR0ltYWdlQ29tcGF0aWJs
ZSkKKyAgICAsIG1fdXNlQnVmZmVyUG9vbCh1c2VCdWZmZXJQb29sKQogewotICAgIG1fdHJhbnNm
b3JtID0gV1RGTW92ZSh0cmFuc2Zvcm0pOwogfQogCi1JbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUKGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24s
IEZsb2F0U2l6ZSBzaXplLCBJc0NHSW1hZ2VDb21wYXRpYmxlIGlzQ0dJbWFnZUNvbXBhdGlibGUp
Cit2b2lkIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnNldFJvdGF0aW9uKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcm90YXRpb24pCiB7Ci0gICAgaW5pdGlhbGl6ZShyb3RhdGlvbiwgc2l6ZSwgaXND
R0ltYWdlQ29tcGF0aWJsZSk7CisgICAgc2V0Um90YXRpb24odHJhbnNmb3JtVG9Sb3RhdGlvblBy
b3BlcnRpZXMocm90YXRpb24pKTsKIH0KIAotdm9pZCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpp
bml0aWFsaXplKGNvbnN0IFJvdGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24sIEZsb2F0U2l6ZSBz
aXplLCBJc0NHSW1hZ2VDb21wYXRpYmxlIGlzQ0dJbWFnZUNvbXBhdGlibGUpCit2b2lkIEltYWdl
Um90YXRpb25TZXNzaW9uVlQ6OnNldFJvdGF0aW9uKFJvdGF0aW9uUHJvcGVydGllcyYmIHJvdGF0
aW9uKQogewotICAgIG1fcm90YXRpb25Qcm9wZXJ0aWVzID0gcm90YXRpb247Ci0gICAgbV9zaXpl
ID0gc2l6ZTsKLSAgICBtX2lzQ0dJbWFnZUNvbXBhdGlibGUgPSBpc0NHSW1hZ2VDb21wYXRpYmxl
OworICAgIGlmIChtX3JvdGF0aW9uUHJvcGVydGllcyA9PSByb3RhdGlvbikKKyAgICAgICAgcmV0
dXJuOworICAgIG1fcm90YXRpb25Qcm9wZXJ0aWVzID0gV1RGTW92ZShyb3RhdGlvbik7CisgICAg
bV9yb3RhdGlvblNlc3Npb24gPSBudWxscHRyOworfQogCi0gICAgaWYgKG1fcm90YXRpb25Qcm9w
ZXJ0aWVzLmFuZ2xlID09IDkwIHx8IG1fcm90YXRpb25Qcm9wZXJ0aWVzLmFuZ2xlID09IDI3MCkK
LSAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKK3ZvaWQgSW1hZ2VSb3RhdGlv
blNlc3Npb25WVDo6c2V0SW5jb21pbmdCdWZmZXJTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7
CisgICAgaWYgKG1faW5jb21pbmdCdWZmZXJTaXplID09IHNpemUpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2luY29taW5nQnVmZmVyU2l6ZSA9IHNpemU7CisgICAgbV9yb3RhdGlvblBvb2wgPSBu
dWxscHRyOworfQogCi0gICAgbV9yb3RhdGVkU2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShzaXplKTsK
K3ZvaWQgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2V0SW5jb21pbmdCdWZmZXJQaXhlbEZvcm1h
dChPU1R5cGUgcGl4ZWxGb3JtYXQpCit7CisgICAgaWYgKG1fcGl4ZWxGb3JtYXQgPT0gcGl4ZWxG
b3JtYXQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BpeGVsRm9ybWF0ID0gcGl4ZWxGb3JtYXQ7
CisgICAgbV9yb3RhdGlvblBvb2wgPSBudWxscHRyOworfQogCi0gICAgVlRJbWFnZVJvdGF0aW9u
U2Vzc2lvblJlZiByYXdSb3RhdGlvblNlc3Npb24gPSBudWxscHRyOwotICAgIFZUSW1hZ2VSb3Rh
dGlvblNlc3Npb25DcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yb3RhdGlvblByb3BlcnRp
ZXMuYW5nbGUsICZyYXdSb3RhdGlvblNlc3Npb24pOwotICAgIG1fcm90YXRpb25TZXNzaW9uID0g
YWRvcHRDRihyYXdSb3RhdGlvblNlc3Npb24pOwotICAgIFZUSW1hZ2VSb3RhdGlvblNlc3Npb25T
ZXRQcm9wZXJ0eShtX3JvdGF0aW9uU2Vzc2lvbi5nZXQoKSwga1ZUSW1hZ2VSb3RhdGlvblByb3Bl
cnR5S2V5X0VuYWJsZUhpZ2hTcGVlZFRyYW5zZmVyLCBrQ0ZCb29sZWFuVHJ1ZSk7CitJbnRTaXpl
IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZWRTaXplKGNvbnN0IEludFNpemUmIHNpemUp
IGNvbnN0Cit7CisgICAgSW50U2l6ZSByZXN1bHQgPSBzaXplOworICAgIGlmIChtX3JvdGF0aW9u
UHJvcGVydGllcy5hbmdsZSA9PSA5MCB8fCBtX3JvdGF0aW9uUHJvcGVydGllcy5hbmdsZSA9PSAy
NzApCisgICAgICAgIHJldHVybiBzaXplLnRyYW5zcG9zZWRTaXplKCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KIAotICAgIGlmIChtX3JvdGF0aW9uUHJvcGVydGllcy5mbGlwWSkKLSAgICAgICAg
VlRJbWFnZVJvdGF0aW9uU2Vzc2lvblNldFByb3BlcnR5KG1fcm90YXRpb25TZXNzaW9uLmdldCgp
LCBrVlRJbWFnZVJvdGF0aW9uUHJvcGVydHlLZXlfRmxpcFZlcnRpY2FsT3JpZW50YXRpb24sIGtD
RkJvb2xlYW5UcnVlKTsKLSAgICBpZiAobV9yb3RhdGlvblByb3BlcnRpZXMuZmxpcFgpCi0gICAg
ICAgIFZUSW1hZ2VSb3RhdGlvblNlc3Npb25TZXRQcm9wZXJ0eShtX3JvdGF0aW9uU2Vzc2lvbi5n
ZXQoKSwga1ZUSW1hZ2VSb3RhdGlvblByb3BlcnR5S2V5X0ZsaXBIb3Jpem9udGFsT3JpZW50YXRp
b24sIGtDRkJvb2xlYW5UcnVlKTsKK1JldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29u
c3QgUHJvY2Vzc0lkZW50aXR5JiBvd25lcikKK3sKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gcmVzdWx0ID0gY3JlYXRlUmVzdWx0QnVmZmVyKHBpeGVsQnVmZmVyLCBvd25lcik7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gc2Vzc2lv
biA9IHJvdGF0aW9uU2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgYXV0byBzdGF0dXMgPSBWVEltYWdlUm90YXRpb25TZXNzaW9uVHJhbnNm
ZXJJbWFnZShzZXNzaW9uLCBwaXhlbEJ1ZmZlciwgcmVzdWx0LmdldCgpKTsKKyAgICBpZiAoc3Rh
dHVzICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2Vi
UlRDLCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmYWlsZWQgcm90YXRpbmcgYnVmZmVyIHdpdGgg
ZXJyb3IgJWQiLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlUm90
YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBjb25zdCBQcm9jZXNz
SWRlbnRpdHkmIG93bmVyKQoreworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxD
VlBpeGVsQnVmZmVyUmVmPihQQUw6OkNNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoc2FtcGxl
LnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7CisgICAgQVNTRVJUKHBp
eGVsQnVmZmVyKTsKKyAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gcm90YXRlKHBpeGVsQnVmZmVyLCBvd25lcik7CiB9CiAKLVJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGUoQ1ZQaXhl
bEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKKworUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IElt
YWdlUm90YXRpb25TZXNzaW9uVlQ6OmNyZWF0ZVJlc3VsdEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmIG93bmVyKQogeworICAgIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiByZXN1bHRCdWZmZXI7CiAgICAgYXV0byBwaXhlbEZvcm1h
dCA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwotICAgIGlm
IChwaXhlbEZvcm1hdCAhPSBtX3BpeGVsRm9ybWF0IHx8ICFtX3JvdGF0aW9uUG9vbCkgewotICAg
ICAgICBtX3BpeGVsRm9ybWF0ID0gcGl4ZWxGb3JtYXQ7Ci0gICAgICAgIGF1dG8gcGl4ZWxBdHRy
aWJ1dGVzID0gQHsKLSAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVm
ZmVyV2lkdGhLZXk6IEAobV9yb3RhdGVkU2l6ZS53aWR0aCgpKSwKLSAgICAgICAgICAgIChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySGVpZ2h0S2V5OiBAKG1fcm90YXRlZFNpemUu
aGVpZ2h0KCkpLAotICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAobV9waXhlbEZvcm1hdCksCisgICAgSW50U2l6ZSBpbmNv
bWluZ1NpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1
ZmZlcikpLCBzdGF0aWNfY2FzdDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZm
ZXIpKSB9OworICAgIGF1dG8gc2l6ZSA9IHJvdGF0ZWRTaXplKGluY29taW5nU2l6ZSk7CisgICAg
aWYgKG1fdXNlQnVmZmVyUG9vbCA9PSBVc2VCdWZmZXJQb29sOjpObykgeworICAgICAgICBhdXRv
IGF0dHJpYnV0ZXMgPSBAewogICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4
ZWxCdWZmZXJDR0ltYWdlQ29tcGF0aWJpbGl0eUtleTogKG1faXNDR0ltYWdlQ29tcGF0aWJsZSA9
PSBJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMgPyBAWUVTIDogQE5PKSwKICAgICAgICAgICAgIChf
X2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVySU9TdXJmYWNlUHJvcGVydGllc0tleSA6
IEB7IH0KICAgICAgICAgfTsKLQotICAgICAgICBDVlBpeGVsQnVmZmVyUG9vbFJlZiByYXdQb29s
ID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKGF1dG8gZXJyID0gQ1ZQaXhlbEJ1ZmZlclBvb2xDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilwaXhlbEF0dHJpYnV0ZXMsICZyYXdQb29sKTsgZXJyICE9IG5vRXJyKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZhaWxl
ZCBjcmVhdGluZyBidWZmZXIgcG9vbCB3aXRoIGVycm9yICVkIiwgZXJyKTsKKyAgICAgICAgQ1ZQ
aXhlbEJ1ZmZlclJlZiByYXdSZXN1bHRCdWZmZXIgPSBudWxscHRyOworICAgICAgICBhdXRvIHN0
YXR1cyA9IENWUGl4ZWxCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpLCBwaXhlbEZvcm1hdCwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJl
ZilhdHRyaWJ1dGVzLCAmcmF3UmVzdWx0QnVmZmVyKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBr
Q1ZSZXR1cm5TdWNjZXNzIHx8ICFyYXdSZXN1bHRCdWZmZXIpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFdlYlJUQywgIkltYWdlUm90YXRpb25TZXNzaW9uVlQgZmFpbGVkIGNyZWF0
aW5nIGJ1ZmZlciB3aXRoIGVycm9yICVkIiwgc3RhdHVzKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0KLSAgICAgICAgbV9yb3RhdGlvblBvb2wgPSBhZG9wdENGKHJh
d1Bvb2wpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiByZXN1bHQ7
Ci0gICAgQ1ZQaXhlbEJ1ZmZlclJlZiByYXdSb3RhdGVkQnVmZmVyID0gbnVsbHB0cjsKLSAgICBh
dXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlUGl4ZWxCdWZmZXIoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbV9yb3RhdGlvblBvb2wuZ2V0KCksICZyYXdSb3RhdGVkQnVmZmVyKTsKLSAg
ICBpZiAoc3RhdHVzICE9IGtDVlJldHVyblN1Y2Nlc3MgfHwgIXJhd1JvdGF0ZWRCdWZmZXIpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiSW1hZ2VSb3RhdGlvblNlc3Npb25W
VCBmYWlsZWQgY3JlYXRpbmcgYnVmZmVyIGZyb20gcG9vbCB3aXRoIGVycm9yICVkIiwgc3RhdHVz
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJlc3VsdEJ1ZmZlciA9IGFkb3B0
Q0YocmF3UmVzdWx0QnVmZmVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZXRJbmNvbWluZ0J1
ZmZlclNpemUoaW5jb21pbmdTaXplKTsKKyAgICAgICAgc2V0SW5jb21pbmdCdWZmZXJQaXhlbEZv
cm1hdChwaXhlbEZvcm1hdCk7CisgICAgICAgIGF1dG8gcG9vbCA9IGJ1ZmZlclBvb2woKTsKKyAg
ICAgICAgaWYgKCFwb29sKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIENW
UGl4ZWxCdWZmZXJSZWYgcmF3UmVzdWx0QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgYXV0byBz
dGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBvb2wsICZyYXdSZXN1bHRCdWZmZXIpOworICAgICAgICBpZiAoc3RhdHVzICE9IGtD
VlJldHVyblN1Y2Nlc3MgfHwgIXJhd1Jlc3VsdEJ1ZmZlcikgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoV2ViUlRDLCAiSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmYWlsZWQgY3JlYXRp
bmcgYnVmZmVyIGZyb20gcG9vbCB3aXRoIGVycm9yICVkIiwgc3RhdHVzKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJlc3VsdEJ1ZmZlciA9IGFkb3B0
Q0YocmF3UmVzdWx0QnVmZmVyKTsKICAgICB9Ci0gICAgcmVzdWx0ID0gYWRvcHRDRihyYXdSb3Rh
dGVkQnVmZmVyKTsKKyAgICBpZiAob3duZXIpCisgICAgICAgIHNldE93bmVyc2hpcElkZW50aXR5
Rm9yQ1ZQaXhlbEJ1ZmZlcihyZXN1bHRCdWZmZXIuZ2V0KCksIG93bmVyKTsKKyAgICByZXR1cm4g
cmVzdWx0QnVmZmVyOworfQogCi0gICAgc3RhdHVzID0gVlRJbWFnZVJvdGF0aW9uU2Vzc2lvblRy
YW5zZmVySW1hZ2UobV9yb3RhdGlvblNlc3Npb24uZ2V0KCksIHBpeGVsQnVmZmVyLCByYXdSb3Rh
dGVkQnVmZmVyKTsKLSAgICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFdlYlJUQywgIkltYWdlUm90YXRpb25TZXNzaW9uVlQgZmFpbGVkIHJvdGF0aW5n
IGJ1ZmZlciB3aXRoIGVycm9yICVkIiwgc3RhdHVzKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CitWVEltYWdlUm90YXRpb25TZXNzaW9uUmVmIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJvdGF0
aW9uU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX3JvdGF0aW9uU2Vzc2lvbikgeworICAgICAgICBW
VEltYWdlUm90YXRpb25TZXNzaW9uUmVmIHJhd1JvdGF0aW9uU2Vzc2lvbiA9IG51bGxwdHI7Cisg
ICAgICAgIGF1dG8gc3RhdHVzID0gVlRJbWFnZVJvdGF0aW9uU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtX3JvdGF0aW9uUHJvcGVydGllcy5hbmdsZSwgJnJhd1JvdGF0aW9uU2Vz
c2lvbik7CisgICAgICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcyB8fCAhcmF3Um90
YXRpb25TZXNzaW9uKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZhaWxlZCBjcmVhdGluZyByb3RhdGlvbiBzZXNzaW9uIHdp
dGggZXJyb3IgJWQiLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBhZG9wdENGKHJhd1JvdGF0aW9uU2Vz
c2lvbik7CisgICAgICAgIFZUSW1hZ2VSb3RhdGlvblNlc3Npb25TZXRQcm9wZXJ0eShtX3JvdGF0
aW9uU2Vzc2lvbi5nZXQoKSwga1ZUSW1hZ2VSb3RhdGlvblByb3BlcnR5S2V5X0VuYWJsZUhpZ2hT
cGVlZFRyYW5zZmVyLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgICAgIGlmIChtX3JvdGF0aW9uUHJv
cGVydGllcy5mbGlwWSkKKyAgICAgICAgICAgIFZUSW1hZ2VSb3RhdGlvblNlc3Npb25TZXRQcm9w
ZXJ0eShtX3JvdGF0aW9uU2Vzc2lvbi5nZXQoKSwga1ZUSW1hZ2VSb3RhdGlvblByb3BlcnR5S2V5
X0ZsaXBWZXJ0aWNhbE9yaWVudGF0aW9uLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgICAgIGlmICht
X3JvdGF0aW9uUHJvcGVydGllcy5mbGlwWCkKKyAgICAgICAgICAgIFZUSW1hZ2VSb3RhdGlvblNl
c3Npb25TZXRQcm9wZXJ0eShtX3JvdGF0aW9uU2Vzc2lvbi5nZXQoKSwga1ZUSW1hZ2VSb3RhdGlv
blByb3BlcnR5S2V5X0ZsaXBIb3Jpem9udGFsT3JpZW50YXRpb24sIGtDRkJvb2xlYW5UcnVlKTsK
ICAgICB9CisgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLmdldCgpOwogCi0gICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlUm90YXRpb25T
ZXNzaW9uVlQ6OnJvdGF0ZShNZWRpYVNhbXBsZSYgc2FtcGxlLCBjb25zdCBSb3RhdGlvblByb3Bl
cnRpZXMmIHJvdGF0aW9uLCBJc0NHSW1hZ2VDb21wYXRpYmxlIGNnSW1hZ2VDb21wYXRpYmxlKQor
Q1ZQaXhlbEJ1ZmZlclBvb2xSZWYgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6YnVmZmVyUG9vbCgp
CiB7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+
KFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihzYW1wbGUucGxhdGZvcm1TYW1wbGUo
KS5zYW1wbGUuY21TYW1wbGVCdWZmZXIpKTsKLSAgICBBU1NFUlQocGl4ZWxCdWZmZXIpOwotICAg
IGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgbV9waXhl
bEZvcm1hdCA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpOwot
ICAgIEludFNpemUgc2l6ZSB7IChpbnQpQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVy
KSwgKGludClDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9OwotICAgIGlmIChy
b3RhdGlvbiAhPSBtX3JvdGF0aW9uUHJvcGVydGllcyB8fCBtX3NpemUgIT0gc2l6ZSkKLSAgICAg
ICAgaW5pdGlhbGl6ZShyb3RhdGlvbiwgc2l6ZSwgY2dJbWFnZUNvbXBhdGlibGUpOworICAgIGlm
ICghbV9yb3RhdGlvblBvb2wpIHsKKyAgICAgICAgYXV0byBzaXplID0gcm90YXRlZFNpemUobV9p
bmNvbWluZ0J1ZmZlclNpemUpOworICAgICAgICBhdXRvIHBvb2xBdHRyaWJ1dGVzID0gQHsKKyAg
ICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyV2lkdGhLZXk6IEAo
c2l6ZS53aWR0aCgpKSwKKyAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVySGVpZ2h0S2V5OiBAKHNpemUuaGVpZ2h0KCkpLAorICAgICAgICAgICAgKF9fYnJpZGdl
IE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAobV9waXhlbEZv
cm1hdCksCisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlckNH
SW1hZ2VDb21wYXRpYmlsaXR5S2V5OiAobV9pc0NHSW1hZ2VDb21wYXRpYmxlID09IElzQ0dJbWFn
ZUNvbXBhdGlibGU6OlllcyA/IEBZRVMgOiBATk8pLAorICAgICAgICAgICAgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NWUGl4ZWxCdWZmZXJJT1N1cmZhY2VQcm9wZXJ0aWVzS2V5IDogQHsgfQorICAg
ICAgICB9OwogCi0gICAgcmV0dXJuIHJvdGF0ZShwaXhlbEJ1ZmZlcik7CisgICAgICAgIENWUGl4
ZWxCdWZmZXJQb29sUmVmIHJhd1Bvb2wgPSBudWxscHRyOworICAgICAgICBhdXRvIHN0YXR1cyA9
IENWUGl4ZWxCdWZmZXJQb29sQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcG9vbEF0dHJpYnV0ZXMsICZyYXdQb29sKTsKKyAgICAg
ICAgaWYgKHN0YXR1cyAhPSBrQ1ZSZXR1cm5TdWNjZXNzIHx8ICFyYXdQb29sKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZh
aWxlZCBjcmVhdGluZyBidWZmZXIgcG9vbCB3aXRoIGVycm9yICVkIiwgc3RhdHVzKTsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIG1fcm90YXRpb25Qb29s
ID0gYWRvcHRDRihyYXdQb29sKTsKKyAgICB9CisgICAgcmV0dXJuIG1fcm90YXRpb25Qb29sLmdl
dCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5oCmluZGV4IGJmN2VmMzJhNTNkY2ExMWE2NWY4YWM4NmUxOWQ1NGZlOGU1ODIzYTMuLjBl
ZGJmMWNkMTBjZmIzNGViYTM4YjRiYmFiZTViZDU0YTI2ODYyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5oCkBAIC01MiwxMCArNTIsNiBAQCBw
cml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+IG1f
cGl4ZWxCdWZmZXJDb25mb3JtZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25T
ZXNzaW9uVlQ+IG1fcm90YXRpb25TZXNzaW9uOwotICAgIHdlYnJ0Yzo6VmlkZW9Sb3RhdGlvbiBt
X2N1cnJlbnRSb3RhdGlvblNlc3Npb25BbmdsZSB7IHdlYnJ0Yzo6a1ZpZGVvUm90YXRpb25fMCB9
OwotICAgIHNpemVfdCBtX3JvdGF0ZWRXaWR0aCB7IDAgfTsKLSAgICBzaXplX3QgbV9yb3RhdGVk
SGVpZ2h0IHsgMCB9OwotICAgIE9TVHlwZSBtX3JvdGF0ZWRGb3JtYXQ7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBzaXplX3QgbV9udW1iZXJPZkZyYW1lcyB7IDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCAzODQ4
NWZiYzE5NTYxNGJiMTYwMTJmNGZjYmIzNWI5ZDZkOWUyYjAxLi4wOTAxNDAyMmZiMWI1M2Q0NDJk
MDg1ZDMwN2E2YjJkYjA0ZmQ3MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC0zMyw3ICszMyw5IEBACiAjaW1wb3J0ICJMb2dnaW5n
LmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5oIgorI2ltcG9ydCAiUHJvY2Vzc0lkZW50aXR5LmgiCiAjaW1wb3J0ICJSZWFsdGltZVZp
ZGVvVXRpbGl0aWVzLmgiCisKICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgog
I2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKICNpbXBvcnQgIlZpZGVvVG9vbGJveFNvZnRM
aW5rLmgiCkBAIC03MCwyMSArNzIsMTAgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcigKICAgICBB
U1NFUlQocm90YXRpb24pOwogICAgIGlmICghcm90YXRpb24pCiAgICAgICAgIHJldHVybiBwaXhl
bEJ1ZmZlcjsKLQotICAgIGF1dG8gcGl4ZWxXaWR0aCA9IENWUGl4ZWxCdWZmZXJHZXRXaWR0aChw
aXhlbEJ1ZmZlcik7Ci0gICAgYXV0byBwaXhlbEhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWln
aHQocGl4ZWxCdWZmZXIpOwotICAgIGlmICghbV9yb3RhdGlvblNlc3Npb24gfHwgcm90YXRpb24g
IT0gbV9jdXJyZW50Um90YXRpb25TZXNzaW9uQW5nbGUgfHwgcGl4ZWxXaWR0aCAhPSBtX3JvdGF0
ZWRXaWR0aCB8fCBwaXhlbEhlaWdodCAhPSBtX3JvdGF0ZWRIZWlnaHQpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSU5GTyhXZWJSVEMsICJSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6
cm90YXRlUGl4ZWxCdWZmZXIgY3JlYXRpbmcgcm90YXRpb24gc2Vzc2lvbiBmb3Igcm90YXRpb24g
JXUiLCByb3RhdGlvblRvQW5nbGUocm90YXRpb24pKTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybTsKLSAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZShyb3RhdGlvblRvQW5nbGUocm90
YXRpb24pKTsKLSAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90
YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUodHJhbnNmb3JtKSwgRmxvYXRTaXplIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHBpeGVsV2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxIZWlnaHQpIH0s
IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKLQotICAg
ICAgICBtX2N1cnJlbnRSb3RhdGlvblNlc3Npb25BbmdsZSA9IHJvdGF0aW9uOwotICAgICAgICBt
X3JvdGF0ZWRXaWR0aCA9IHBpeGVsV2lkdGg7Ci0gICAgICAgIG1fcm90YXRlZEhlaWdodCA9IHBp
eGVsSGVpZ2h0OwotICAgIH0KLQotICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRl
KHBpeGVsQnVmZmVyKTsKKyAgICBpZiAoIW1fcm90YXRpb25TZXNzaW9uKQorICAgICAgICBtX3Jv
dGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8sIEltYWdlUm90YXRpb25T
ZXNzaW9uVlQ6OlVzZUJ1ZmZlclBvb2w6Olllcyk7CisgICAgbV9yb3RhdGlvblNlc3Npb24tPnNl
dFJvdGF0aW9uKEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllcyB7IGZh
bHNlLCBmYWxzZSwgcm90YXRpb25Ub0FuZ2xlKHJvdGF0aW9uKSB9KTsKKyAgICByZXR1cm4gbV9y
b3RhdGlvblNlc3Npb24tPnJvdGF0ZShwaXhlbEJ1ZmZlciwgUHJvY2Vzc0lkZW50aXR5IHsgfSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAK
aW5kZXggYmRhZjk4ZDEwZGQzNThiZGQ3YmY3OTMzYWJkMTQ4NjUwN2NjZWQ4Ni4uNmFiMWNmYmFm
NWU1M2MxY2RlOWVjMWJjMWJmYzY1MTA5N2RmMjg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5jcHAKQEAgLTE5NCw5ICsxOTQsNiBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IHJvdGF0ZVBpeGVsQnVmZmVyKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAg
ewotICAgICAgICBpZiAoIW1fcm90YXRpb25TZXNzaW9uKQotICAgICAgICAgICAgbV9yb3RhdGlv
blNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KCk7Ci0KICAgICAg
ICAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzIHJvdGF0aW9uOwog
ICAgICAgICBzd2l0Y2ggKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkpIHsKICAgICAgICAgY2FzZSBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZToKQEAgLTIxMyw3ICsyMTAsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJvdGF0aW9uLmFuZ2xlID0gMjcwOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5yb3RhdGUo
c2FtcGxlLCByb3RhdGlvbiwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0
aWJsZTo6Tm8pOworICAgICAgICBpZiAoIW1fcm90YXRpb25TZXNzaW9uKQorICAgICAgICAgICAg
bV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KElt
YWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vLCBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUOjpVc2VCdWZmZXJQb29sOjpZZXMpOworICAgICAgICBtX3JvdGF0aW9uU2Vz
c2lvbi0+c2V0Um90YXRpb24oV1RGTW92ZShyb3RhdGlvbikpOworICAgICAgICByZXR1cm4gbV9y
b3RhdGlvblNlc3Npb24tPnJvdGF0ZShzYW1wbGUsIFByb2Nlc3NJZGVudGl0eSB7IH0pOwogICAg
IH0KIAogICAgIHZvaWQgc3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25z
dCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IGZyYW1l
Q291bnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzE5NGU1ZjJmZWVhMjRiNmM4OTllMmE2ZDY5YTI4Mzk3MTcwM2JmMi4u
ZGUyMzc1OTM3OWYxNTE3ZjZiZjA2ZmRmMTkwN2E2N2U3NDZjOTg0MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIyLTAxLTI2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQ2FwdHVyaW5nIFdlYkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlv
biBzaG93cyB0aGUgaW1hZ2UgZmxpcHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMy
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJn
bC1pbnZlcnQtd2VicnRjCisKKyAgICAgICAgKiB3ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVj
dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvcm91dGluZXMuanM6CisKIDIwMjIt
MDEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBV
cGRhdGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdCBzdWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTMxN2M3ZGExYzRlOTZhMzZjOWYyZTBiYzkxNDQ2MGNlY2Yz
YjBkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVl
ci1jb25uZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBkcmF3OiB3
aXRoV2ViR0wKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVy
LWNvbm5lY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25u
ZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUyMTJjZmY1OTMyOTRiY2Q3ZGQwMWExZWU1ZjQzMTBj
NmRjMmUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8t
cGVlci1jb25uZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw5NyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxkaXYgaWQ9ImRlYnVnZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisidXNlIHN0cmlj
dCI7CisKK2Z1bmN0aW9uIHdpdGgyRENvbnRleHQoc3ViY2FzZSwgY2FudmFzLCBwYXR0ZXJuTnVt
YmVyKQoreworICAgIGRyYXdDYW52YXNUZXN0UGF0dGVybjJEKGNhbnZhcywgcGF0dGVybk51bWJl
cik7Cit9CisKK2Z1bmN0aW9uIHdpdGhXZWJHTChzdWJjYXNlLCBjYW52YXMsIHBhdHRlcm5OdW1i
ZXIpCit7CisgICAgZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0woY2FudmFzLCBwYXR0ZXJuTnVt
YmVyKTsKK30KKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlTG9jYWxQZWVyQ29ubmVjdGlvblN0cmVh
bShzdHJlYW0pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+
IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAg
ICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAg
ICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50LnRyYWNrIGluc3RhbmNlb2YgTWVkaWFT
dHJlYW1UcmFjayk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHJhY2tFdmVudC5yZWNl
aXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShBcnJheS5pc0FycmF5KHRyYWNrRXZlbnQuc3RyZWFtcyksICJBcnJheS5pc0FycmF5KCkg
c2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0
LmlzRnJvemVuKHRyYWNrRXZlbnQuc3RyZWFtcyksICJPYmplY3QuaXNGcm96ZW4oKSBzaG91bGQg
cmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFt
c1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rp
b24gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChy
ZXNvbHZlKSA9PiB7CisgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soKG5v
dywgbWV0YWRhdGEpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUobm93LCBtZXRhZGF0YSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworfQorCitjb25zdCB3aWR0aCA9IDUwMDsKK2NvbnN0IGhlaWdo
dCA9IDUwMDsKKworYXN5bmMgZnVuY3Rpb24gdGVzdENhbnZhc1RvUGVlckNvbm5lY3Rpb24odCwg
c3ViY2FzZSkKK3sKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVidWdlIik7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu
dmFzIik7CisgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IGhl
aWdodDsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICB0LmFkZF9jbGVhbnVw
KGFzeW5jICgpID0+IGRlYnVnZS5yZW1vdmVDaGlsZChjYW52YXMpKTsKKyAgICBjb25zdCBsb2Nh
bFN0cmVhbSA9IGF3YWl0IGNyZWF0ZUxvY2FsUGVlckNvbm5lY3Rpb25TdHJlYW0oY2FudmFzLmNh
cHR1cmVTdHJlYW0oKSk7CisgICAgdC5hZGRfY2xlYW51cChhc3luYyAoKSA9PiBjbG9zZUNvbm5l
Y3Rpb25zKCkpOworICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlk
ZW8iKTsKKyAgICB2aWRlby5hdXRvcGxheSA9IHRydWU7CisgICAgdmlkZW8uY29udHJvbHMgPSBm
YWxzZTsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQodmlkZW8pOworICAgIHQuYWRkX2NsZWFudXAo
YXN5bmMgKCkgPT4gZGVidWdlLnJlbW92ZUNoaWxkKHZpZGVvKSk7CisgICAgdmlkZW8uc3JjT2Jq
ZWN0ID0gbG9jYWxTdHJlYW07CisgICAgYXdhaXQgd2FpdEZvcigzMDApOworICAgIHN1YmNhc2Uu
ZHJhdyhzdWJjYXNlLCBjYW52YXMsIDEpOworICAgIGNvbnN0IHZpZGVvRnJhbWVQcm9taXNlID0g
d2FpdEZvclZpZGVvRnJhbWUodmlkZW8pOworICAgIGF3YWl0IHdhaXRGb3JWaWRlb1NpemUodmlk
ZW8sIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgYXdhaXQgdmlkZW9GcmFtZVBy
b21pc2U7CisgICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rlc3RQYXR0ZXJuKHZp
ZGVvLCAxLCAiYmFzZSBjYXNlIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7
CisgICAgICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIGkpOworICAgICAgICBhd2Fp
dCB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbyk7CisgICAgICAgIGFzc2VydEltYWdlU291cmNlQ29u
dGFpbnNDYW52YXNUZXN0UGF0dGVybih2aWRlbywgaSwgYGl0ZXJhdGlvbjogJHtpfWApOworICAg
IH0KK30KKworY29uc3Qgc3ViY2FzZXMgPSBbXTsKKy8vIEZJWE1FOiBUdGhpcyBzaG91bGQgYmUg
ZmlsbGVkIHdoZW4gMkQgY29udGV4dCBzdXBwb3J0cyBIVE1MQ2FudmFzRWxlbWVudC5jYXB0dXJl
U3RyZWFtKCkuCisvLyBzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoMkRDb250ZXh0fSk7CitzdWJj
YXNlcy5wdXNoKHtkcmF3OiB3aXRoV2ViR0x9KTsKKworZnVuY3Rpb24gdGVzdERlc2NyaXB0aW9u
KHN1YmNhc2UpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoc3ViY2FzZSkubWFwKChrKSA9PiBg
JHtrfTogJHt0eXBlb2Ygc3ViY2FzZVtrXSA9PT0gImZ1bmN0aW9uIiA/IHN1YmNhc2Vba10ubmFt
ZSA6IHN1YmNhc2Vba119YCkuam9pbigiLCIpOworfQorCitmdW5jdGlvbiBjcmVhdGVDYW52YXNU
b1BlZXJDb25uZWN0aW9uVGVzdHMoc2xpY2UsIHNsaWNlcykgeworICAgIGNvbnN0IHNsaWNlU2l6
ZSA9IE1hdGguZmxvb3Ioc3ViY2FzZXMubGVuZ3RoIC8gc2xpY2VzKTsKKyAgICBjb25zdCBmaXJz
dCA9IHNsaWNlU2l6ZSAqIHNsaWNlOworICAgIGZvciAoY29uc3Qgc3ViY2FzZSBvZiBzdWJjYXNl
cy5zbGljZShmaXJzdCwgZmlyc3QgKyBzbGljZVNpemUpKQorICAgICAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7IGF3YWl0IHRlc3RDYW52YXNUb1BlZXJDb25uZWN0aW9uKHQsIHN1YmNhc2Up
OyB9LCB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkpOworfQorY3JlYXRlQ2FudmFzVG9QZWVyQ29u
bmVjdGlvblRlc3RzKDAsIDEpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggMmNmZjY5ZTY1MWI5NDE3YjVlMTk5OGJiZDU2
NzkyMTlhNTdmMmNlMS4uZWQzNThiMGQ0MWVhNGQxYzFiMmMzZTk0MjA4YzU4NTg2YWRmMjk5OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMjk4LDYgKzI5OCwxMyBAQCBmdW5jdGlvbiBzZXRI
MjY0SGlnaENvZGVjKHNkcCkKICAgICB9KS5qb2luKCdcclxuJyk7CiB9CiAKK2NvbnN0IHRlc3RD
b2xvcnMgPSB7CisgICAgd2hpdGU6IFsgMjU1LCAyNTUsIDI1NSwgMjU1IF0sCisgICAgeWVsbG93
OiBbIDI1NSwgMjU1LCAwLCAyNTUgXSwKKyAgICBjeWFuOiBbIDAsIDI1NSwgMjU1LCAyNTUgXSwK
KyAgICBsaWdodEdyZWVuOiBbIDAsIDEyOCwgMCwgMjU1IF0sCit9OworCiAvLyBTZXRzIHRoZSBj
YW1lcmEgaW1hZ2Ugb3JpZW50YXRpb24gaWYgcnVubmluZyBvbiB0ZXN0IHJ1bm5lci4KIC8vIGFu
Z2xlOiBvcmllbnRhdGlvbiBhbmdsZSBvZiB0aGUgY2FtZXJhIGltYWdlIGluIGRlZ3JlZXMKIGZ1
bmN0aW9uIHNldE1vY2tDYW1lcmFJbWFnZU9yaWVudGF0aW9uKGFuZ2xlLCB2aWRlb1NpemUpIHsK
QEAgLTM0MCwxOCArMzQ3LDgyIEBAIGZ1bmN0aW9uIGFzc2VydEltYWdlRGF0YUNvbnRhaW5zTW9j
a0NhbWVyYUltYWdlKGltYWdlRGF0YSwgYW5nbGUsIGRlc2MpCiAgICAgICAgIHJldHVybiBuOwog
ICAgIH0KIAotICAgIGNvbnN0IHdoaXRlID0gWyAyNTUsIDI1NSwgMjU1LCAyNTUgXTsKICAgICBj
b25zdCB3aGl0ZVBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjA0LCAwLjcgXSk7Ci0gICAgY29uc3Qg
eWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CiAgICAgY29uc3QgeWVsbG93UG9pbnQgPSBy
b3RhdGVQb2ludChbIDAuMDgsIDAuNyBdKTsKLSAgICBjb25zdCBjeWFuID0gWyAwLCAyNTUsIDI1
NSwgMjU1IF07CiAgICAgY29uc3QgY3lhblBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjEyLCAwLjcg
XSk7Ci0gICAgY29uc3QgbGlnaHRHcmVlbiA9IFsgMCwgMTI4LCAwLCAyNTUgXTsKICAgICBjb25z
dCBsaWdodEdyZWVuUG9pbnQgPSByb3RhdGVQb2ludChbIDAuMTYsIDAuNyBdKTsKIAogICAgIGxl
dCBlcnIgPSAxMTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHdoaXRlUG9pbnQpLCB3aGl0ZSwgZXJyLCAid2hpdGUgcmVjdCBub3Qg
Zm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdl
RGF0YVBpeGVsKGltYWdlRGF0YSwgeWVsbG93UG9pbnQpLCB5ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIGN5YW4sIGVyciwgImN5YW4g
cmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxz
KGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgbGlnaHRHcmVlblBvaW50KSwgbGlnaHRHcmVl
biwgZXJyLCAibGlnaHQgZ3JlZW4gcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOworICAgIGFzc2Vy
dF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgd2hpdGVQ
b2ludCksIHRlc3RDb2xvcnMud2hpdGUsIGVyciwgIndoaXRlIHJlY3Qgbm90IGZvdW5kICIgKyBk
ZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChp
bWFnZURhdGEsIHllbGxvd1BvaW50KSwgdGVzdENvbG9ycy55ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIHRlc3RDb2xvcnMuY3lhbiwg
ZXJyLCAiY3lhbiByZWN0IG5vdCBmb3VuZCAiICsgZGVzYyk7CisgICAgYXNzZXJ0X2FycmF5X2Fw
cHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBsaWdodEdyZWVuUG9pbnQp
LCB0ZXN0Q29sb3JzLmxpZ2h0R3JlZW4sIGVyciwgImxpZ2h0IGdyZWVuIHJlY3Qgbm90IGZvdW5k
ICIgKyBkZXNjKTsKK30KKworLy8gRHJhd3MgYSBjYW52YXMgdGVzdCBwYXR0ZXJuIHdpdGggV2Vi
R0wuCisvLyBDYW4gYmUgY2hlY2tlZCB3aXRoIGBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2Fu
dmFzVGVzdFBhdHRlcm4oKWAuCisvLyBQYXR0ZXJuIGlzIGZvdXIgY29sb3JzLCBpdCBjYW4gZGV0
ZWN0IGZsaXBzIGFuZCByb3RhdGlvbnMuCisvLyBgcGF0dGVybk51bWJlcmAgY2FuIGJlIHVzZWQg
aW4gdG8gdGVzdCBtdWx0aXBsZSBzdWJzZXF1ZW50IGZyYW1lcyAocGFzcyBpbiBmcmFtZSBudW1i
ZXIpLgorLy8gUGF0dGVybiBpcyBmb3VyIGJveGVzIHdpdGggY29sb3IgY3ljbGVkIGJhc2VkIG9u
IHBhdHRlcm5OdW1iZXIgJSA0LgorZnVuY3Rpb24gZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0wo
Y2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIHBhdHRlcm5OdW1iZXIgPSBwYXR0ZXJuTnVt
YmVyIHx8IDA7CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wiLCB7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSk7CisgICAgZ2wu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6ZSA9IFsgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBbCisgICAgICAgIFswLjAs
IDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwgMS4wXSwKKyAgICAgICAg
WzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwgMC41LCAwLjVdLAorICAg
IF07CisgICAgY29uc3QgYm94Q29sb3JzID0gT2JqZWN0LnZhbHVlcyh0ZXN0Q29sb3JzKTsKKyAg
ICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBjb25zdCBpID0gKG4gKyBw
YXR0ZXJuTnVtYmVyKSAlIGJveGVzLmxlbmd0aDsKKyAgICAgICAgY29uc3QgY29sb3IgPSBib3hD
b2xvcnNbaV07CisgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW25dOworICAgICAgICBnbC5zY2lz
c29yKGJveFswXSAqIGJveFNpemVbMF0sIGJveFsxXSAqIGJveFNpemVbMV0sIGJveFsyXSAqIGJv
eFNpemVbMF0sIGJveFszXSAqIGJveFNpemVbMV0pOworICAgICAgICBnbC5jbGVhckNvbG9yKGNv
bG9yWzBdIC8gMjU1LiwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LiwgY29sb3JbM10g
LyAyNTUuKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQog
fQorCitmdW5jdGlvbiBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2FudmFzVGVzdFBhdHRlcm4o
aW1hZ2VTb3VyY2UsIHBhdHRlcm5OdW1iZXIsIGRlc2MpCit7CisgICAgcGF0dGVybk51bWJlciA9
IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBkZXNjID0gZGVzYyB8fCAiIjsKKyAgICBjb25zdCB2
ZXJpZnlXaWR0aCA9IDMwMDsKKyAgICBjb25zdCBlcnIgPSA0OworICAgIGxldCBpbWFnZVNvdXJj
ZVNpemU7CisgICAgbGV0IGltYWdlU291cmNlSGVpZ2h0OworICAgIGlmIChpbWFnZVNvdXJjZSBp
bnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpCisgICAgICAgIGltYWdlU291cmNlU2l6ZSA9IFtp
bWFnZVNvdXJjZS52aWRlb1dpZHRoLCBpbWFnZVNvdXJjZS52aWRlb0hlaWdodF07CisgICAgZWxz
ZQorICAgICAgICBpbWFnZVNvdXJjZVNpemUgPSBbaW1hZ2VTb3VyY2Uud2lkdGgsIGltYWdlU291
cmNlLmhlaWdodF07CisKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVidWdlIik7CisgICAgaWYgKGRlYnVnZSkKKyAgICAgICAgZGVidWdlLmFwcGVuZENoaWxkKGNh
bnZhcyk7CisKKyAgICBjYW52YXMud2lkdGggPSB2ZXJpZnlXaWR0aDsKKyAgICBjYW52YXMuaGVp
Z2h0ID0gKHZlcmlmeVdpZHRoIC8gaW1hZ2VTb3VyY2VTaXplWzBdKSAqIGltYWdlU291cmNlU2l6
ZVsxXTsKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjdHgu
ZHJhd0ltYWdlKGltYWdlU291cmNlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworICAgIGNvbnN0IGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjb25zdCBwb2ludENvbG9ycyA9IE9iamVjdC52YWx1
ZXModGVzdENvbG9ycyk7CisgICAgY29uc3QgcG9pbnRzID0gWworICAgICAgICBbIDAuMSwgMC4x
IF0sCisgICAgICAgIFsgMC45LCAwLjEgXSwKKyAgICAgICAgWyAwLjksIDAuOSBdLAorICAgICAg
ICBbIDAuMSwgMC45IF0sCisgICAgXTsKKyAgICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikg
eworICAgICAgICBsZXQgaSA9IChuICsgcGF0dGVybk51bWJlcikgJSBwb2ludHMubGVuZ3RoOwor
ICAgICAgICBsZXQgY29sb3IgPSBwb2ludENvbG9yc1tpXTsKKyAgICAgICAgbGV0IHBvaW50ID0g
cG9pbnRzW25dOworICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURh
dGFQaXhlbChpbWFnZURhdGEsIHBvaW50KSwgY29sb3IsIGVyciwgYHJlY3QgJHtjb2xvci5qb2lu
KCIsIil9IGF0ICR7cG9pbnQuam9pbigiLCIpfSBub3QgZm91bmQgJHtkZXNjfWApOworICAgIH0K
KyAgICBpZiAoZGVidWdlKQorICAgICAgICBkZWJ1Z2UucmVtb3ZlQ2hpbGQoY2FudmFzKTsKK30K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450107</attachid>
            <date>2022-01-27 00:18:16 -0800</date>
            <delta_ts>2022-01-27 00:43:38 -0800</delta_ts>
            <desc>Simpler version</desc>
            <filename>bug-235600-20220127101814.patch</filename>
            <type>text/plain</type>
            <size>20923</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uMTY1OTdkNWNmZTc5NDhkZTZhMjU5YjAyYTgxZjEw
YmU0NWZiNDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTI3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaXJyb3IgYW5kIHJvdGF0ZSB0aGUgV2ViR0wg
aW1hZ2UgYXQgdGhlIHNvdXJjZSBzaW5jZSBXZWJSVEMKKyAgICAgICAgZG9lcyBub3Qgc3VwcG9y
dCBtaXJyb3JpbmcuCisKKyAgICAgICAgVGVzdDogd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5l
Y3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
Q1ZVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1
ZmZlcik6CisKIDIwMjItMDEtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW01vZGVsXSBNb3VzZSBpbnRlcmFjdGlvbiBmb3IgPG1vZGVsPiBpcyBmbGlw
cGVkIGluIHRoZSB5LWF4aXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCBjOWZi
ZTBiYTA1YTJiYzIzNTcwMGE2ZTZjOTk2NGVmZGJjMWI2MTM3Li5jNTZlNjk1MzVlNzA5N2ZkZDI1
ZDJmY2UzMDJlMTA2OGU3NmM2ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC0zMCwyMCArMzAsMjYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCiAj
aW5jbHVkZSAiSU9TdXJmYWNlLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7Ci19Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSA8bWVtb3J5
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJvY2Vzc0lkZW50aXR5
OwogCisjaWYgRU5BQkxFKFZJREVPKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRH
TENvY29hIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVy
KTsKQEAgLTkwLDYgKzk2LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBi
b29sIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24geyBmYWxzZSB9OwogICAg
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0OworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lvbjsK
ICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggNzEyOWYyMjRjMjY0MGFlNDlmN2M5
MzJlMDdjOTQ1MmY5MzQ2MDRjZC4uMzJhMTQzNjA4ZjU5MDMxNTE2YzU5MTdjZWFlN2ZmZDAzOWZk
NGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC01NCw2ICs1NCw3IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2VuZGlm
CiAKQEAgLTc3NSwxMSArNzc2LDE5IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAh
PSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBtX3N3YXBDaGFpbi5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisgICAgLy8gRGlzcGxh
eSBzdXJmYWNlIGlzIG5vdCBtYXJrZWQgaW4gdXNlIHNpbmNlIHdlIHdpbGwgbWlycm9yIGFuZCBy
b3RhdGUgaXQgZXhwbGljaXRseS4KICAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhl
bEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxl
QVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNh
bXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOworICAgIC8vIE1p
cnJvciBhbmQgcm90YXRlIHRoZSBwaXhlbCBidWZmZXIgZXhwbGljaXRseSwgYXMgV2ViUlRDIGVu
Y29kZXJzIGNhbm5vdCBtaXJyb3IuCisgICAgaWYgKCFtX21lZGlhU2FtcGxlUm90YXRpb25TZXNz
aW9uKQorICAgICAgICBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUPihJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblBy
b3BlcnRpZXMgeyB0cnVlLCBmYWxzZSwgMTgwIH0sIGdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKKyAg
ICBhdXRvIG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIgPSBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNz
aW9uLT5yb3RhdGUocGl4ZWxCdWZmZXItPmdldCgpKTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlUGl4
ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChtX3Jlc291cmNlT3du
ZXIpCisgICAgICAgIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihtZWRpYVNh
bXBsZVBpeGVsQnVmZmVyLmdldCgpLCBtX3Jlc291cmNlT3duZXIpOworICAgIHJldHVybiBNZWRp
YVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUobWVkaWFTYW1wbGVQaXhl
bEJ1ZmZlciksIE1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2Up
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLmgKaW5kZXggMWU5YzczMjhkZGM3NTZiYzQ2ZTI4ZjFhNWVhNGFmNTQz
YzRhYTZiZi4uMWE2OGRhMmJkOWNmMzgyNzU5NjRhMWI1MjdhZDU5MjYwM2FlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgK
QEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0VfQUND
RUxFUkFUT1IpCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5
KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldE93bmVyc2hpcElkZW50aXR5KElPU3VyZmFjZVJlZiwgY29uc3QgUHJvY2Vzc0lkZW50aXR5
Jik7CiAKICAgICB2b2lkIG1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpp
bmRleCBhYzA4NzFmZmJhNTk2Y2QzZDQ3NGQxNTFmNzk0NjQyODY4MWM5YmUzLi44Y2MxNmZkZWEw
NTMxOTQ0MWY3YWUxMjRmMzI1NzdhZDM1NmZmZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC00OTQsMTQgKzQ5NCwy
MSBAQCB2b2lkIElPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZgogI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFX0FD
Q0VMRVJBVE9SKQogCiB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3Qg
UHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQoreworICAgIHNldE93bmVyc2hpcElkZW50
aXR5KG1fc3VyZmFjZS5nZXQoKSwgcmVzb3VyY2VPd25lcik7Cit9CisKK3ZvaWQgSU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgUHJvY2Vz
c0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogewogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05F
UlNISVBfSURFTlRJVFkpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICBBU1NFUlQo
cmVzb3VyY2VPd25lcik7CisgICAgQVNTRVJUKHN1cmZhY2UpOwogICAgIHRhc2tfaWRfdG9rZW5f
dCBvd25lclRhc2tJZFRva2VuID0gcmVzb3VyY2VPd25lci50YXNrSWRUb2tlbigpOwotICAgIGF1
dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlwSWRlbnRpdHkobV9zdXJmYWNlLmdldCgp
LCBvd25lclRhc2tJZFRva2VuLCBrSU9TdXJmYWNlTWVtb3J5TGVkZ2VyVGFnR3JhcGhpY3MsIDAp
OworICAgIGF1dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlwSWRlbnRpdHkoc3VyZmFj
ZSwgb3duZXJUYXNrSWRUb2tlbiwga0lPU3VyZmFjZU1lbW9yeUxlZGdlclRhZ0dyYXBoaWNzLCAw
KTsKICAgICBpZiAocmVzdWx0ICE9IGtJT1JldHVyblN1Y2Nlc3MpCi0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKElPU3VyZmFjZSwgIklPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHk6IEZh
aWxlZCB0byBjbGFpbSBvd25lcnNoaXAgb2YgSU9TdXJmYWNlICVwLCB0YXNrIGlkIHRva2VuOiAl
ZCwgZXJyb3I6ICVkIiwgbV9zdXJmYWNlLmdldCgpLCAoaW50KW93bmVyVGFza0lkVG9rZW4sIHJl
c3VsdCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElPU3VyZmFjZSwgIklPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHk6IEZhaWxlZCB0byBjbGFpbSBvd25lcnNoaXAgb2YgSU9TdXJm
YWNlICVwLCB0YXNrIGlkIHRva2VuOiAlZCwgZXJyb3I6ICVkIiwgc3VyZmFjZSwgKGludClvd25l
clRhc2tJZFRva2VuLCByZXN1bHQpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3VyZmFjZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlT3duZXIpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaAppbmRleCAyZTVm
MTk2NThhMzViZjU4ZjJjZDRlMGZhNzRiOWQ1YTJiYWYyZGNmLi5mNGM1YjUxMzdlMzgwY2YzODgy
Y2UwZmNiYjc2MTk1ZGVmMDA1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAgdXNpbmcgQ1ZQaXhl
bEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiB1c2luZyBDVlBp
eGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBQcm9jZXNzSWRlbnRpdHk7CiAKIC8vIENyZWF0ZXMgQ1ZQaXhlbEJ1ZmZlclBvb2wg
dGhhdCBjcmVhdGVzIENWUGl4ZWxCdWZmZXJzIGJhY2tlZCBieSBJT1N1cmZhY2VzLgogLy8gVGhl
c2UgYnVmZmVycyBjYW4gYmUgZm9yIGV4YW1wbGUgc2VudCB0aHJvdWdoIElQQy4KQEAgLTQ1LDQg
KzQ2LDggQEAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+LCBDVlJldHVybj4gY3JlYXRlQ1ZQaXhlbEJ1ZmYKIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVk
PFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiwgQ1ZSZXR1cm4+IGNyZWF0ZUNWUGl4ZWxCdWZm
ZXIoSU9TdXJmYWNlUmVmKTsKIAogUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dD
b2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKKworLy8gU2hvdWxk
IGJlIGNhbGxlZCB3aXRoIG5vbi1lbXB0eSBQcm9jZXNzSWRlbnRpdHkuCitXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVy
UmVmLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQppbmRleCAzMjZmMDQzMmI0ODYy
MjE5NjJjNzVlZmM2ZGUwMWVkOGFkYzllNjY3Li4xNGY2MmIwNDA3M2M3ODc0MDQ5YTZmZWZlODEz
OTMzYTY0ZmM0MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9DVlV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9DVlV0aWxpdGllcy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ1ZVdGlsaXRp
ZXMuaCIKIAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCisjaW1wb3J0ICJJT1N1cmZhY2UuaCIK
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHND
Ri5oPgogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKQEAgLTEzMiw0ICsxMzMsMTEgQEAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1
ZmZlcihDVlBpeGVsQnVmZmVyUmVmIGIKICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
IH0KIAordm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiBvd25lcikKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKHBpeGVsQnVmZmVyKTsK
KyAgICBBU1NFUlQoc3VyZmFjZSk7CisgICAgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0
eShzdXJmYWNlLCBvd25lcik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMTk0ZTVmMmZlZWEyNGI2Yzg5OWUy
YTZkNjlhMjgzOTcxNzAzYmYyLi44Y2E4ZjU4NjMwM2QzODQ0YmI5N2NlMGYyZTJlNGE4M2U1ZmE0
NDkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDEtMjcgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDYXB0dXJpbmcgV2ViR0wgY2FudmFzIHRo
cm91Z2ggcGVlciBjb25uZWN0aW9uIHNob3dzIHRoZSBpbWFnZSBmbGlwcGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2MDAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg4MDQzMzI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Qgc2VuZGluZyBXZWJHTCBpbWFnZSB0aHJvdWdoIGEgcGVlciBj
b25uZWN0aW9uIHRvIGEgbG9jYWwgdmlkZW8KKyAgICAgICAgYW5kIGFzc2VydCB0aGF0IHRoZSBp
bWFnZSBpcyBhcyBkcmF3bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiB3ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9u
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9yb3V0aW5lcy5qczoKKyAgICAgICAgKiB3
ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sOgorCisyMDIyLTAxLTI2ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdlYkdMIGNh
bnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJnbC1pbnZlcnQtd2VicnRjCisKKyAgICAgICAgKiB3
ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJydGMvcm91dGluZXMuanM6CisKIDIwMjItMDEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdCBz
dWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGli
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggODE3YWFlZDU1MWYxZDg4OWZhYjgwY2ZmOWVmZThmNmFmODg4NDAzNi4uOGZh
NTYwOWM5ZjFlMTk2YjQ0YWU5ZGUwYmQ4MGEwYzE4NDMyNWY3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk0LDYgKzc5NCw3IEBAIHdlYmtpdC5v
cmcvYi8yMzE4MTEgd2ViYXVkaW8vc3VzcGVuZC1jb250ZXh0LXdoaWxlLWludGVycnVwdGVkLmh0
bWwgWyBUaW1lb3V0IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZm
YyBbIFBhc3MgXQogZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtcnZmYy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBGYWlsdXJlIF0K
K3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1l
LWNhbGxiYWNrLXdlYnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZv
cmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmct
eHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTMxN2M3ZGExYzRlOTZhMzZjOWYyZTBiYzkxNDQ2MGNlY2YzYjBkOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBkcmF3OiB3aXRoV2ViR0wKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGFmN2M5NDUyYmJlNGJlYzhlZTVhMTUwODdiNDU3MGZmYWRhMGE1MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0
bWwKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVidWdlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIHdpdGgyRENvbnRleHQoc3ViY2FzZSwgY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKQoreworICAgIGRyYXdDYW52YXNUZXN0UGF0dGVybjJEKGNhbnZhcywg
cGF0dGVybk51bWJlcik7Cit9CisKK2Z1bmN0aW9uIHdpdGhXZWJHTChzdWJjYXNlLCBjYW52YXMs
IHBhdHRlcm5OdW1iZXIpCit7CisgICAgZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0woY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKTsKK30KKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlTG9jYWxQZWVyQ29u
bmVjdGlvblN0cmVhbShzdHJlYW0pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlv
bikgPT4geworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdLCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikg
PT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50LnRyYWNrIGluc3Rh
bmNlb2YgTWVkaWFTdHJlYW1UcmFjayk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHJh
Y2tFdmVudC5yZWNlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVyKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHRyYWNrRXZlbnQuc3RyZWFtcyksICJBcnJh
eS5pc0FycmF5KCkgc2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUoT2JqZWN0LmlzRnJvemVuKHRyYWNrRXZlbnQuc3RyZWFtcyksICJPYmplY3QuaXNGcm96
ZW4oKSBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNr
RXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pCit7CisgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2soKG5vdywgbWV0YWRhdGEpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUobm93LCBt
ZXRhZGF0YSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitjb25zdCB3aWR0aCA9IDUwMDsK
K2NvbnN0IGhlaWdodCA9IDUwMDsKKworYXN5bmMgZnVuY3Rpb24gdGVzdENhbnZhc1RvUGVlckNv
bm5lY3Rpb24odCwgc3ViY2FzZSkKK3sKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGVidWdlIik7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgICAgY2FudmFz
LmhlaWdodCA9IGhlaWdodDsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICB0
LmFkZF9jbGVhbnVwKGFzeW5jICgpID0+IGRlYnVnZS5yZW1vdmVDaGlsZChjYW52YXMpKTsKKyAg
ICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IGNyZWF0ZUxvY2FsUGVlckNvbm5lY3Rpb25TdHJl
YW0oY2FudmFzLmNhcHR1cmVTdHJlYW0oKSk7CisgICAgdC5hZGRfY2xlYW51cChhc3luYyAoKSA9
PiBjbG9zZUNvbm5lY3Rpb25zKCkpOworICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidmlkZW8iKTsKKyAgICB2aWRlby5hdXRvcGxheSA9IHRydWU7CisgICAgdmlkZW8u
Y29udHJvbHMgPSBmYWxzZTsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQodmlkZW8pOworICAgIHQu
YWRkX2NsZWFudXAoYXN5bmMgKCkgPT4gZGVidWdlLnJlbW92ZUNoaWxkKHZpZGVvKSk7CisgICAg
dmlkZW8uc3JjT2JqZWN0ID0gbG9jYWxTdHJlYW07CisgICAgYXdhaXQgd2FpdEZvcigzMDApOwor
ICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIDEpOworICAgIGNvbnN0IHZpZGVvRnJh
bWVQcm9taXNlID0gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pOworICAgIGF3YWl0IHdhaXRGb3JW
aWRlb1NpemUodmlkZW8sIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgYXdhaXQg
dmlkZW9GcmFtZVByb21pc2U7CisgICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rl
c3RQYXR0ZXJuKHZpZGVvLCAxLCAiYmFzZSBjYXNlIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDsgKytpKSB7CisgICAgICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIGkpOwor
ICAgICAgICBhd2FpdCB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbyk7CisgICAgICAgIGFzc2VydElt
YWdlU291cmNlQ29udGFpbnNDYW52YXNUZXN0UGF0dGVybih2aWRlbywgaSwgYGl0ZXJhdGlvbjog
JHtpfWApOworICAgIH0KK30KKworY29uc3Qgc3ViY2FzZXMgPSBbXTsKKy8vIEZJWE1FOiBUdGhp
cyBzaG91bGQgYmUgZmlsbGVkIHdoZW4gMkQgY29udGV4dCBzdXBwb3J0cyBIVE1MQ2FudmFzRWxl
bWVudC5jYXB0dXJlU3RyZWFtKCkuCisvLyBzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoMkRDb250
ZXh0fSk7CitzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoV2ViR0x9KTsKKworZnVuY3Rpb24gdGVz
dERlc2NyaXB0aW9uKHN1YmNhc2UpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoc3ViY2FzZSku
bWFwKChrKSA9PiBgJHtrfTogJHt0eXBlb2Ygc3ViY2FzZVtrXSA9PT0gImZ1bmN0aW9uIiA/IHN1
YmNhc2Vba10ubmFtZSA6IHN1YmNhc2Vba119YCkuam9pbigiLCIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNUb1BlZXJDb25uZWN0aW9uVGVzdHMoc2xpY2UsIHNsaWNlcykgeworICAgIGNv
bnN0IHNsaWNlU2l6ZSA9IE1hdGguZmxvb3Ioc3ViY2FzZXMubGVuZ3RoIC8gc2xpY2VzKTsKKyAg
ICBjb25zdCBmaXJzdCA9IHNsaWNlU2l6ZSAqIHNsaWNlOworICAgIGZvciAoY29uc3Qgc3ViY2Fz
ZSBvZiBzdWJjYXNlcy5zbGljZShmaXJzdCwgZmlyc3QgKyBzbGljZVNpemUpKQorICAgICAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7IGF3YWl0IHRlc3RDYW52YXNUb1BlZXJDb25uZWN0aW9u
KHQsIHN1YmNhc2UpOyB9LCB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkpOworfQorY3JlYXRlQ2Fu
dmFzVG9QZWVyQ29ubmVjdGlvblRlc3RzKDAsIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggMmNmZjY5ZTY1MWI5NDE3YjVlMTk5OGJiZDU2
NzkyMTlhNTdmMmNlMS4uZWQzNThiMGQ0MWVhNGQxYzFiMmMzZTk0MjA4YzU4NTg2YWRmMjk5OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMjk4LDYgKzI5OCwxMyBAQCBmdW5jdGlvbiBzZXRI
MjY0SGlnaENvZGVjKHNkcCkKICAgICB9KS5qb2luKCdcclxuJyk7CiB9CiAKK2NvbnN0IHRlc3RD
b2xvcnMgPSB7CisgICAgd2hpdGU6IFsgMjU1LCAyNTUsIDI1NSwgMjU1IF0sCisgICAgeWVsbG93
OiBbIDI1NSwgMjU1LCAwLCAyNTUgXSwKKyAgICBjeWFuOiBbIDAsIDI1NSwgMjU1LCAyNTUgXSwK
KyAgICBsaWdodEdyZWVuOiBbIDAsIDEyOCwgMCwgMjU1IF0sCit9OworCiAvLyBTZXRzIHRoZSBj
YW1lcmEgaW1hZ2Ugb3JpZW50YXRpb24gaWYgcnVubmluZyBvbiB0ZXN0IHJ1bm5lci4KIC8vIGFu
Z2xlOiBvcmllbnRhdGlvbiBhbmdsZSBvZiB0aGUgY2FtZXJhIGltYWdlIGluIGRlZ3JlZXMKIGZ1
bmN0aW9uIHNldE1vY2tDYW1lcmFJbWFnZU9yaWVudGF0aW9uKGFuZ2xlLCB2aWRlb1NpemUpIHsK
QEAgLTM0MCwxOCArMzQ3LDgyIEBAIGZ1bmN0aW9uIGFzc2VydEltYWdlRGF0YUNvbnRhaW5zTW9j
a0NhbWVyYUltYWdlKGltYWdlRGF0YSwgYW5nbGUsIGRlc2MpCiAgICAgICAgIHJldHVybiBuOwog
ICAgIH0KIAotICAgIGNvbnN0IHdoaXRlID0gWyAyNTUsIDI1NSwgMjU1LCAyNTUgXTsKICAgICBj
b25zdCB3aGl0ZVBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjA0LCAwLjcgXSk7Ci0gICAgY29uc3Qg
eWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CiAgICAgY29uc3QgeWVsbG93UG9pbnQgPSBy
b3RhdGVQb2ludChbIDAuMDgsIDAuNyBdKTsKLSAgICBjb25zdCBjeWFuID0gWyAwLCAyNTUsIDI1
NSwgMjU1IF07CiAgICAgY29uc3QgY3lhblBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjEyLCAwLjcg
XSk7Ci0gICAgY29uc3QgbGlnaHRHcmVlbiA9IFsgMCwgMTI4LCAwLCAyNTUgXTsKICAgICBjb25z
dCBsaWdodEdyZWVuUG9pbnQgPSByb3RhdGVQb2ludChbIDAuMTYsIDAuNyBdKTsKIAogICAgIGxl
dCBlcnIgPSAxMTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHdoaXRlUG9pbnQpLCB3aGl0ZSwgZXJyLCAid2hpdGUgcmVjdCBub3Qg
Zm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdl
RGF0YVBpeGVsKGltYWdlRGF0YSwgeWVsbG93UG9pbnQpLCB5ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIGN5YW4sIGVyciwgImN5YW4g
cmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxz
KGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgbGlnaHRHcmVlblBvaW50KSwgbGlnaHRHcmVl
biwgZXJyLCAibGlnaHQgZ3JlZW4gcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOworICAgIGFzc2Vy
dF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgd2hpdGVQ
b2ludCksIHRlc3RDb2xvcnMud2hpdGUsIGVyciwgIndoaXRlIHJlY3Qgbm90IGZvdW5kICIgKyBk
ZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChp
bWFnZURhdGEsIHllbGxvd1BvaW50KSwgdGVzdENvbG9ycy55ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIHRlc3RDb2xvcnMuY3lhbiwg
ZXJyLCAiY3lhbiByZWN0IG5vdCBmb3VuZCAiICsgZGVzYyk7CisgICAgYXNzZXJ0X2FycmF5X2Fw
cHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBsaWdodEdyZWVuUG9pbnQp
LCB0ZXN0Q29sb3JzLmxpZ2h0R3JlZW4sIGVyciwgImxpZ2h0IGdyZWVuIHJlY3Qgbm90IGZvdW5k
ICIgKyBkZXNjKTsKK30KKworLy8gRHJhd3MgYSBjYW52YXMgdGVzdCBwYXR0ZXJuIHdpdGggV2Vi
R0wuCisvLyBDYW4gYmUgY2hlY2tlZCB3aXRoIGBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2Fu
dmFzVGVzdFBhdHRlcm4oKWAuCisvLyBQYXR0ZXJuIGlzIGZvdXIgY29sb3JzLCBpdCBjYW4gZGV0
ZWN0IGZsaXBzIGFuZCByb3RhdGlvbnMuCisvLyBgcGF0dGVybk51bWJlcmAgY2FuIGJlIHVzZWQg
aW4gdG8gdGVzdCBtdWx0aXBsZSBzdWJzZXF1ZW50IGZyYW1lcyAocGFzcyBpbiBmcmFtZSBudW1i
ZXIpLgorLy8gUGF0dGVybiBpcyBmb3VyIGJveGVzIHdpdGggY29sb3IgY3ljbGVkIGJhc2VkIG9u
IHBhdHRlcm5OdW1iZXIgJSA0LgorZnVuY3Rpb24gZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0wo
Y2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIHBhdHRlcm5OdW1iZXIgPSBwYXR0ZXJuTnVt
YmVyIHx8IDA7CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wiLCB7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSk7CisgICAgZ2wu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6ZSA9IFsgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBbCisgICAgICAgIFswLjAs
IDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwgMS4wXSwKKyAgICAgICAg
WzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwgMC41LCAwLjVdLAorICAg
IF07CisgICAgY29uc3QgYm94Q29sb3JzID0gT2JqZWN0LnZhbHVlcyh0ZXN0Q29sb3JzKTsKKyAg
ICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBjb25zdCBpID0gKG4gKyBw
YXR0ZXJuTnVtYmVyKSAlIGJveGVzLmxlbmd0aDsKKyAgICAgICAgY29uc3QgY29sb3IgPSBib3hD
b2xvcnNbaV07CisgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW25dOworICAgICAgICBnbC5zY2lz
c29yKGJveFswXSAqIGJveFNpemVbMF0sIGJveFsxXSAqIGJveFNpemVbMV0sIGJveFsyXSAqIGJv
eFNpemVbMF0sIGJveFszXSAqIGJveFNpemVbMV0pOworICAgICAgICBnbC5jbGVhckNvbG9yKGNv
bG9yWzBdIC8gMjU1LiwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LiwgY29sb3JbM10g
LyAyNTUuKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQog
fQorCitmdW5jdGlvbiBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2FudmFzVGVzdFBhdHRlcm4o
aW1hZ2VTb3VyY2UsIHBhdHRlcm5OdW1iZXIsIGRlc2MpCit7CisgICAgcGF0dGVybk51bWJlciA9
IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBkZXNjID0gZGVzYyB8fCAiIjsKKyAgICBjb25zdCB2
ZXJpZnlXaWR0aCA9IDMwMDsKKyAgICBjb25zdCBlcnIgPSA0OworICAgIGxldCBpbWFnZVNvdXJj
ZVNpemU7CisgICAgbGV0IGltYWdlU291cmNlSGVpZ2h0OworICAgIGlmIChpbWFnZVNvdXJjZSBp
bnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpCisgICAgICAgIGltYWdlU291cmNlU2l6ZSA9IFtp
bWFnZVNvdXJjZS52aWRlb1dpZHRoLCBpbWFnZVNvdXJjZS52aWRlb0hlaWdodF07CisgICAgZWxz
ZQorICAgICAgICBpbWFnZVNvdXJjZVNpemUgPSBbaW1hZ2VTb3VyY2Uud2lkdGgsIGltYWdlU291
cmNlLmhlaWdodF07CisKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJjYW52YXMiKTsKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZGVidWdlIik7CisgICAgaWYgKGRlYnVnZSkKKyAgICAgICAgZGVidWdlLmFwcGVuZENoaWxkKGNh
bnZhcyk7CisKKyAgICBjYW52YXMud2lkdGggPSB2ZXJpZnlXaWR0aDsKKyAgICBjYW52YXMuaGVp
Z2h0ID0gKHZlcmlmeVdpZHRoIC8gaW1hZ2VTb3VyY2VTaXplWzBdKSAqIGltYWdlU291cmNlU2l6
ZVsxXTsKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjdHgu
ZHJhd0ltYWdlKGltYWdlU291cmNlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworICAgIGNvbnN0IGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjb25zdCBwb2ludENvbG9ycyA9IE9iamVjdC52YWx1
ZXModGVzdENvbG9ycyk7CisgICAgY29uc3QgcG9pbnRzID0gWworICAgICAgICBbIDAuMSwgMC4x
IF0sCisgICAgICAgIFsgMC45LCAwLjEgXSwKKyAgICAgICAgWyAwLjksIDAuOSBdLAorICAgICAg
ICBbIDAuMSwgMC45IF0sCisgICAgXTsKKyAgICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikg
eworICAgICAgICBsZXQgaSA9IChuICsgcGF0dGVybk51bWJlcikgJSBwb2ludHMubGVuZ3RoOwor
ICAgICAgICBsZXQgY29sb3IgPSBwb2ludENvbG9yc1tpXTsKKyAgICAgICAgbGV0IHBvaW50ID0g
cG9pbnRzW25dOworICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURh
dGFQaXhlbChpbWFnZURhdGEsIHBvaW50KSwgY29sb3IsIGVyciwgYHJlY3QgJHtjb2xvci5qb2lu
KCIsIil9IGF0ICR7cG9pbnQuam9pbigiLCIpfSBub3QgZm91bmQgJHtkZXNjfWApOworICAgIH0K
KyAgICBpZiAoZGVidWdlKQorICAgICAgICBkZWJ1Z2UucmVtb3ZlQ2hpbGQoY2FudmFzKTsKK30K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJy
dGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJl
cGxhY2UtdHJhY2suaHRtbAppbmRleCBhNjJhZWQ3OTFkYjg5YWUxODYxNzNiMGI3OTc5ZDMxMjA0
OWI0N2ZjLi5mOTA0ZGM4MmY0YzJkMzIyYzFhMDRkNDNjYzhmNWUxOTRkOWU3NWY2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKQEAgLTExLDcgKzExLDYg
QEAKIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CiAgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9w
bGF5PSIiPjwvdmlkZW8+CiAgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0MCIg
aGVpZ2h0PSI0ODAiPjwvY2FudmFzPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpz
Ij48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInZpZGVvIik7CiBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFz
Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450112</attachid>
            <date>2022-01-27 00:43:44 -0800</date>
            <delta_ts>2022-01-27 05:53:07 -0800</delta_ts>
            <desc>Simpler version</desc>
            <filename>bug-235600-20220127104342.patch</filename>
            <type>text/plain</type>
            <size>20924</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uMTY1OTdkNWNmZTc5NDhkZTZhMjU5YjAyYTgxZjEw
YmU0NWZiNDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTI3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaXJyb3IgYW5kIHJvdGF0ZSB0aGUgV2ViR0wg
aW1hZ2UgYXQgdGhlIHNvdXJjZSBzaW5jZSBXZWJSVEMKKyAgICAgICAgZG9lcyBub3Qgc3VwcG9y
dCBtaXJyb3JpbmcuCisKKyAgICAgICAgVGVzdDogd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5l
Y3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
Q1ZVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1
ZmZlcik6CisKIDIwMjItMDEtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW01vZGVsXSBNb3VzZSBpbnRlcmFjdGlvbiBmb3IgPG1vZGVsPiBpcyBmbGlw
cGVkIGluIHRoZSB5LWF4aXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCBjOWZi
ZTBiYTA1YTJiYzIzNTcwMGE2ZTZjOTk2NGVmZGJjMWI2MTM3Li5jNTZlNjk1MzVlNzA5N2ZkZDI1
ZDJmY2UzMDJlMTA2OGU3NmM2ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC0zMCwyMCArMzAsMjYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCiAj
aW5jbHVkZSAiSU9TdXJmYWNlLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7Ci19Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSA8bWVtb3J5
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJvY2Vzc0lkZW50aXR5
OwogCisjaWYgRU5BQkxFKFZJREVPKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRH
TENvY29hIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVy
KTsKQEAgLTkwLDYgKzk2LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBi
b29sIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24geyBmYWxzZSB9OwogICAg
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0OworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lvbjsK
ICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggNzEyOWYyMjRjMjY0MGFlNDlmN2M5
MzJlMDdjOTQ1MmY5MzQ2MDRjZC4uMzJhMTQzNjA4ZjU5MDMxNTE2YzU5MTdjZWFlN2ZmZDAzOWZk
NGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC01NCw2ICs1NCw3IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2VuZGlm
CiAKQEAgLTc3NSwxMSArNzc2LDE5IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAh
PSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBtX3N3YXBDaGFpbi5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisgICAgLy8gRGlzcGxh
eSBzdXJmYWNlIGlzIG5vdCBtYXJrZWQgaW4gdXNlIHNpbmNlIHdlIHdpbGwgbWlycm9yIGFuZCBy
b3RhdGUgaXQgZXhwbGljaXRseS4KICAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhl
bEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxl
QVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNh
bXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOworICAgIC8vIE1p
cnJvciBhbmQgcm90YXRlIHRoZSBwaXhlbCBidWZmZXIgZXhwbGljaXRseSwgYXMgV2ViUlRDIGVu
Y29kZXJzIGNhbm5vdCBtaXJyb3IuCisgICAgaWYgKCFtX21lZGlhU2FtcGxlUm90YXRpb25TZXNz
aW9uKQorICAgICAgICBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUPihJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblBy
b3BlcnRpZXMgeyB0cnVlLCBmYWxzZSwgMTgwIH0sIGdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKKyAg
ICBhdXRvIG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIgPSBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNz
aW9uLT5yb3RhdGUocGl4ZWxCdWZmZXItPmdldCgpKTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlUGl4
ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChtX3Jlc291cmNlT3du
ZXIpCisgICAgICAgIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihtZWRpYVNh
bXBsZVBpeGVsQnVmZmVyLmdldCgpLCBtX3Jlc291cmNlT3duZXIpOworICAgIHJldHVybiBNZWRp
YVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUobWVkaWFTYW1wbGVQaXhl
bEJ1ZmZlciksIE1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2Up
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLmgKaW5kZXggMWU5YzczMjhkZGM3NTZiYzQ2ZTI4ZjFhNWVhNGFmNTQz
YzRhYTZiZi4uMWE2OGRhMmJkOWNmMzgyNzU5NjRhMWI1MjdhZDU5MjYwM2FlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgK
QEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0VfQUND
RUxFUkFUT1IpCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5
KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldE93bmVyc2hpcElkZW50aXR5KElPU3VyZmFjZVJlZiwgY29uc3QgUHJvY2Vzc0lkZW50aXR5
Jik7CiAKICAgICB2b2lkIG1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpp
bmRleCBhYzA4NzFmZmJhNTk2Y2QzZDQ3NGQxNTFmNzk0NjQyODY4MWM5YmUzLi44Y2MxNmZkZWEw
NTMxOTQ0MWY3YWUxMjRmMzI1NzdhZDM1NmZmZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC00OTQsMTQgKzQ5NCwy
MSBAQCB2b2lkIElPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZgogI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFX0FD
Q0VMRVJBVE9SKQogCiB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3Qg
UHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQoreworICAgIHNldE93bmVyc2hpcElkZW50
aXR5KG1fc3VyZmFjZS5nZXQoKSwgcmVzb3VyY2VPd25lcik7Cit9CisKK3ZvaWQgSU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgUHJvY2Vz
c0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogewogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05F
UlNISVBfSURFTlRJVFkpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICBBU1NFUlQo
cmVzb3VyY2VPd25lcik7CisgICAgQVNTRVJUKHN1cmZhY2UpOwogICAgIHRhc2tfaWRfdG9rZW5f
dCBvd25lclRhc2tJZFRva2VuID0gcmVzb3VyY2VPd25lci50YXNrSWRUb2tlbigpOwotICAgIGF1
dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlwSWRlbnRpdHkobV9zdXJmYWNlLmdldCgp
LCBvd25lclRhc2tJZFRva2VuLCBrSU9TdXJmYWNlTWVtb3J5TGVkZ2VyVGFnR3JhcGhpY3MsIDAp
OworICAgIGF1dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlwSWRlbnRpdHkoc3VyZmFj
ZSwgb3duZXJUYXNrSWRUb2tlbiwga0lPU3VyZmFjZU1lbW9yeUxlZGdlclRhZ0dyYXBoaWNzLCAw
KTsKICAgICBpZiAocmVzdWx0ICE9IGtJT1JldHVyblN1Y2Nlc3MpCi0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKElPU3VyZmFjZSwgIklPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHk6IEZh
aWxlZCB0byBjbGFpbSBvd25lcnNoaXAgb2YgSU9TdXJmYWNlICVwLCB0YXNrIGlkIHRva2VuOiAl
ZCwgZXJyb3I6ICVkIiwgbV9zdXJmYWNlLmdldCgpLCAoaW50KW93bmVyVGFza0lkVG9rZW4sIHJl
c3VsdCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElPU3VyZmFjZSwgIklPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHk6IEZhaWxlZCB0byBjbGFpbSBvd25lcnNoaXAgb2YgSU9TdXJm
YWNlICVwLCB0YXNrIGlkIHRva2VuOiAlZCwgZXJyb3I6ICVkIiwgc3VyZmFjZSwgKGludClvd25l
clRhc2tJZFRva2VuLCByZXN1bHQpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3VyZmFjZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlT3duZXIpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaAppbmRleCAyZTVm
MTk2NThhMzViZjU4ZjJjZDRlMGZhNzRiOWQ1YTJiYWYyZGNmLi5mNGM1YjUxMzdlMzgwY2YzODgy
Y2UwZmNiYjc2MTk1ZGVmMDA1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAgdXNpbmcgQ1ZQaXhl
bEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiB1c2luZyBDVlBp
eGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBQcm9jZXNzSWRlbnRpdHk7CiAKIC8vIENyZWF0ZXMgQ1ZQaXhlbEJ1ZmZlclBvb2wg
dGhhdCBjcmVhdGVzIENWUGl4ZWxCdWZmZXJzIGJhY2tlZCBieSBJT1N1cmZhY2VzLgogLy8gVGhl
c2UgYnVmZmVycyBjYW4gYmUgZm9yIGV4YW1wbGUgc2VudCB0aHJvdWdoIElQQy4KQEAgLTQ1LDQg
KzQ2LDggQEAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+LCBDVlJldHVybj4gY3JlYXRlQ1ZQaXhlbEJ1ZmYKIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVk
PFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiwgQ1ZSZXR1cm4+IGNyZWF0ZUNWUGl4ZWxCdWZm
ZXIoSU9TdXJmYWNlUmVmKTsKIAogUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dD
b2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKKworLy8gU2hvdWxk
IGJlIGNhbGxlZCB3aXRoIG5vbi1lbXB0eSBQcm9jZXNzSWRlbnRpdHkuCitXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVy
UmVmLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQppbmRleCAzMjZmMDQzMmI0ODYy
MjE5NjJjNzVlZmM2ZGUwMWVkOGFkYzllNjY3Li4xNGY2MmIwNDA3M2M3ODc0MDQ5YTZmZWZlODEz
OTMzYTY0ZmM0MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9DVlV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9DVlV0aWxpdGllcy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ1ZVdGlsaXRp
ZXMuaCIKIAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCisjaW1wb3J0ICJJT1N1cmZhY2UuaCIK
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHND
Ri5oPgogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKQEAgLTEzMiw0ICsxMzMsMTEgQEAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1
ZmZlcihDVlBpeGVsQnVmZmVyUmVmIGIKICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
IH0KIAordm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiBvd25lcikKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKHBpeGVsQnVmZmVyKTsK
KyAgICBBU1NFUlQoc3VyZmFjZSk7CisgICAgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0
eShzdXJmYWNlLCBvd25lcik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMTk0ZTVmMmZlZWEyNGI2Yzg5OWUy
YTZkNjlhMjgzOTcxNzAzYmYyLi44Y2E4ZjU4NjMwM2QzODQ0YmI5N2NlMGYyZTJlNGE4M2U1ZmE0
NDkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDEtMjcgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDYXB0dXJpbmcgV2ViR0wgY2FudmFzIHRo
cm91Z2ggcGVlciBjb25uZWN0aW9uIHNob3dzIHRoZSBpbWFnZSBmbGlwcGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2MDAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg4MDQzMzI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Qgc2VuZGluZyBXZWJHTCBpbWFnZSB0aHJvdWdoIGEgcGVlciBj
b25uZWN0aW9uIHRvIGEgbG9jYWwgdmlkZW8KKyAgICAgICAgYW5kIGFzc2VydCB0aGF0IHRoZSBp
bWFnZSBpcyBhcyBkcmF3bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiB3ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9u
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9yb3V0aW5lcy5qczoKKyAgICAgICAgKiB3
ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sOgorCisyMDIyLTAxLTI2ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdlYkdMIGNh
bnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJnbC1pbnZlcnQtd2VicnRjCisKKyAgICAgICAgKiB3
ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJydGMvcm91dGluZXMuanM6CisKIDIwMjItMDEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdCBz
dWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGli
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggODE3YWFlZDU1MWYxZDg4OWZhYjgwY2ZmOWVmZThmNmFmODg4NDAzNi4uOGZh
NTYwOWM5ZjFlMTk2YjQ0YWU5ZGUwYmQ4MGEwYzE4NDMyNWY3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk0LDYgKzc5NCw3IEBAIHdlYmtpdC5v
cmcvYi8yMzE4MTEgd2ViYXVkaW8vc3VzcGVuZC1jb250ZXh0LXdoaWxlLWludGVycnVwdGVkLmh0
bWwgWyBUaW1lb3V0IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZm
YyBbIFBhc3MgXQogZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtcnZmYy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBGYWlsdXJlIF0K
K3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1l
LWNhbGxiYWNrLXdlYnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZv
cmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmct
eHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTMxN2M3ZGExYzRlOTZhMzZjOWYyZTBiYzkxNDQ2MGNlY2YzYjBkOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBkcmF3OiB3aXRoV2ViR0wKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGFmN2M5NDUyYmJlNGJlYzhlZTVhMTUwODdiNDU3MGZmYWRhMGE1MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0
bWwKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVidWdlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIHdpdGgyRENvbnRleHQoc3ViY2FzZSwgY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKQoreworICAgIGRyYXdDYW52YXNUZXN0UGF0dGVybjJEKGNhbnZhcywg
cGF0dGVybk51bWJlcik7Cit9CisKK2Z1bmN0aW9uIHdpdGhXZWJHTChzdWJjYXNlLCBjYW52YXMs
IHBhdHRlcm5OdW1iZXIpCit7CisgICAgZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0woY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKTsKK30KKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlTG9jYWxQZWVyQ29u
bmVjdGlvblN0cmVhbShzdHJlYW0pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlv
bikgPT4geworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdLCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikg
PT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50LnRyYWNrIGluc3Rh
bmNlb2YgTWVkaWFTdHJlYW1UcmFjayk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHJh
Y2tFdmVudC5yZWNlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVyKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHRyYWNrRXZlbnQuc3RyZWFtcyksICJBcnJh
eS5pc0FycmF5KCkgc2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUoT2JqZWN0LmlzRnJvemVuKHRyYWNrRXZlbnQuc3RyZWFtcyksICJPYmplY3QuaXNGcm96
ZW4oKSBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNr
RXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pCit7CisgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2soKG5vdywgbWV0YWRhdGEpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUobm93LCBt
ZXRhZGF0YSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitjb25zdCB3aWR0aCA9IDUwMDsK
K2NvbnN0IGhlaWdodCA9IDUwMDsKKworYXN5bmMgZnVuY3Rpb24gdGVzdENhbnZhc1RvUGVlckNv
bm5lY3Rpb24odCwgc3ViY2FzZSkKK3sKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGVidWdlIik7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgICAgY2FudmFz
LmhlaWdodCA9IGhlaWdodDsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICB0
LmFkZF9jbGVhbnVwKGFzeW5jICgpID0+IGRlYnVnZS5yZW1vdmVDaGlsZChjYW52YXMpKTsKKyAg
ICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IGNyZWF0ZUxvY2FsUGVlckNvbm5lY3Rpb25TdHJl
YW0oY2FudmFzLmNhcHR1cmVTdHJlYW0oKSk7CisgICAgdC5hZGRfY2xlYW51cChhc3luYyAoKSA9
PiBjbG9zZUNvbm5lY3Rpb25zKCkpOworICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidmlkZW8iKTsKKyAgICB2aWRlby5hdXRvcGxheSA9IHRydWU7CisgICAgdmlkZW8u
Y29udHJvbHMgPSBmYWxzZTsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQodmlkZW8pOworICAgIHQu
YWRkX2NsZWFudXAoYXN5bmMgKCkgPT4gZGVidWdlLnJlbW92ZUNoaWxkKHZpZGVvKSk7CisgICAg
dmlkZW8uc3JjT2JqZWN0ID0gbG9jYWxTdHJlYW07CisgICAgYXdhaXQgd2FpdEZvcigzMDApOwor
ICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIDEpOworICAgIGNvbnN0IHZpZGVvRnJh
bWVQcm9taXNlID0gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pOworICAgIGF3YWl0IHdhaXRGb3JW
aWRlb1NpemUodmlkZW8sIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgYXdhaXQg
dmlkZW9GcmFtZVByb21pc2U7CisgICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rl
c3RQYXR0ZXJuKHZpZGVvLCAxLCAiYmFzZSBjYXNlIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDsgKytpKSB7CisgICAgICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIGkpOwor
ICAgICAgICBhd2FpdCB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbyk7CisgICAgICAgIGFzc2VydElt
YWdlU291cmNlQ29udGFpbnNDYW52YXNUZXN0UGF0dGVybih2aWRlbywgaSwgYGl0ZXJhdGlvbjog
JHtpfWApOworICAgIH0KK30KKworY29uc3Qgc3ViY2FzZXMgPSBbXTsKKy8vIEZJWE1FOiBUdGhp
cyBzaG91bGQgYmUgZmlsbGVkIHdoZW4gMkQgY29udGV4dCBzdXBwb3J0cyBIVE1MQ2FudmFzRWxl
bWVudC5jYXB0dXJlU3RyZWFtKCkuCisvLyBzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoMkRDb250
ZXh0fSk7CitzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoV2ViR0x9KTsKKworZnVuY3Rpb24gdGVz
dERlc2NyaXB0aW9uKHN1YmNhc2UpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoc3ViY2FzZSku
bWFwKChrKSA9PiBgJHtrfTogJHt0eXBlb2Ygc3ViY2FzZVtrXSA9PT0gImZ1bmN0aW9uIiA/IHN1
YmNhc2Vba10ubmFtZSA6IHN1YmNhc2Vba119YCkuam9pbigiLCIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNUb1BlZXJDb25uZWN0aW9uVGVzdHMoc2xpY2UsIHNsaWNlcykgeworICAgIGNv
bnN0IHNsaWNlU2l6ZSA9IE1hdGguZmxvb3Ioc3ViY2FzZXMubGVuZ3RoIC8gc2xpY2VzKTsKKyAg
ICBjb25zdCBmaXJzdCA9IHNsaWNlU2l6ZSAqIHNsaWNlOworICAgIGZvciAoY29uc3Qgc3ViY2Fz
ZSBvZiBzdWJjYXNlcy5zbGljZShmaXJzdCwgZmlyc3QgKyBzbGljZVNpemUpKQorICAgICAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7IGF3YWl0IHRlc3RDYW52YXNUb1BlZXJDb25uZWN0aW9u
KHQsIHN1YmNhc2UpOyB9LCB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkpOworfQorY3JlYXRlQ2Fu
dmFzVG9QZWVyQ29ubmVjdGlvblRlc3RzKDAsIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggMmNmZjY5ZTY1MWI5NDE3YjVlMTk5OGJiZDU2
NzkyMTlhNTdmMmNlMS4uMGYzOWFjY2JjOGI5OTY1OTQ5MDFhODMxYTQxNzI4ZGI3ZGUyZjZmYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMjk4LDYgKzI5OCwxMyBAQCBmdW5jdGlvbiBzZXRI
MjY0SGlnaENvZGVjKHNkcCkKICAgICB9KS5qb2luKCdcclxuJyk7CiB9CiAKK2NvbnN0IHRlc3RD
b2xvcnMgPSB7CisgICAgd2hpdGU6IFsgMjU1LCAyNTUsIDI1NSwgMjU1IF0sCisgICAgeWVsbG93
OiBbIDI1NSwgMjU1LCAwLCAyNTUgXSwKKyAgICBjeWFuOiBbIDAsIDI1NSwgMjU1LCAyNTUgXSwK
KyAgICBsaWdodEdyZWVuOiBbIDAsIDEyOCwgMCwgMjU1IF0sCit9OworCiAvLyBTZXRzIHRoZSBj
YW1lcmEgaW1hZ2Ugb3JpZW50YXRpb24gaWYgcnVubmluZyBvbiB0ZXN0IHJ1bm5lci4KIC8vIGFu
Z2xlOiBvcmllbnRhdGlvbiBhbmdsZSBvZiB0aGUgY2FtZXJhIGltYWdlIGluIGRlZ3JlZXMKIGZ1
bmN0aW9uIHNldE1vY2tDYW1lcmFJbWFnZU9yaWVudGF0aW9uKGFuZ2xlLCB2aWRlb1NpemUpIHsK
QEAgLTM0MCwxOCArMzQ3LDgyIEBAIGZ1bmN0aW9uIGFzc2VydEltYWdlRGF0YUNvbnRhaW5zTW9j
a0NhbWVyYUltYWdlKGltYWdlRGF0YSwgYW5nbGUsIGRlc2MpCiAgICAgICAgIHJldHVybiBuOwog
ICAgIH0KIAotICAgIGNvbnN0IHdoaXRlID0gWyAyNTUsIDI1NSwgMjU1LCAyNTUgXTsKICAgICBj
b25zdCB3aGl0ZVBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjA0LCAwLjcgXSk7Ci0gICAgY29uc3Qg
eWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CiAgICAgY29uc3QgeWVsbG93UG9pbnQgPSBy
b3RhdGVQb2ludChbIDAuMDgsIDAuNyBdKTsKLSAgICBjb25zdCBjeWFuID0gWyAwLCAyNTUsIDI1
NSwgMjU1IF07CiAgICAgY29uc3QgY3lhblBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjEyLCAwLjcg
XSk7Ci0gICAgY29uc3QgbGlnaHRHcmVlbiA9IFsgMCwgMTI4LCAwLCAyNTUgXTsKICAgICBjb25z
dCBsaWdodEdyZWVuUG9pbnQgPSByb3RhdGVQb2ludChbIDAuMTYsIDAuNyBdKTsKIAogICAgIGxl
dCBlcnIgPSAxMTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHdoaXRlUG9pbnQpLCB3aGl0ZSwgZXJyLCAid2hpdGUgcmVjdCBub3Qg
Zm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdl
RGF0YVBpeGVsKGltYWdlRGF0YSwgeWVsbG93UG9pbnQpLCB5ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIGN5YW4sIGVyciwgImN5YW4g
cmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxz
KGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgbGlnaHRHcmVlblBvaW50KSwgbGlnaHRHcmVl
biwgZXJyLCAibGlnaHQgZ3JlZW4gcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOworICAgIGFzc2Vy
dF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgd2hpdGVQ
b2ludCksIHRlc3RDb2xvcnMud2hpdGUsIGVyciwgIndoaXRlIHJlY3Qgbm90IGZvdW5kICIgKyBk
ZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChp
bWFnZURhdGEsIHllbGxvd1BvaW50KSwgdGVzdENvbG9ycy55ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIHRlc3RDb2xvcnMuY3lhbiwg
ZXJyLCAiY3lhbiByZWN0IG5vdCBmb3VuZCAiICsgZGVzYyk7CisgICAgYXNzZXJ0X2FycmF5X2Fw
cHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBsaWdodEdyZWVuUG9pbnQp
LCB0ZXN0Q29sb3JzLmxpZ2h0R3JlZW4sIGVyciwgImxpZ2h0IGdyZWVuIHJlY3Qgbm90IGZvdW5k
ICIgKyBkZXNjKTsKK30KKworLy8gRHJhd3MgYSBjYW52YXMgdGVzdCBwYXR0ZXJuIHdpdGggV2Vi
R0wuCisvLyBDYW4gYmUgY2hlY2tlZCB3aXRoIGBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2Fu
dmFzVGVzdFBhdHRlcm4oKWAuCisvLyBQYXR0ZXJuIGlzIGZvdXIgY29sb3JzLCBpdCBjYW4gZGV0
ZWN0IGZsaXBzIGFuZCByb3RhdGlvbnMuCisvLyBgcGF0dGVybk51bWJlcmAgY2FuIGJlIHVzZWQg
aW4gdG8gdGVzdCBtdWx0aXBsZSBzdWJzZXF1ZW50IGZyYW1lcyAocGFzcyBpbiBmcmFtZSBudW1i
ZXIpLgorLy8gUGF0dGVybiBpcyBmb3VyIGJveGVzIHdpdGggY29sb3IgY3ljbGVkIGJhc2VkIG9u
IHBhdHRlcm5OdW1iZXIgJSA0LgorZnVuY3Rpb24gZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0wo
Y2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIHBhdHRlcm5OdW1iZXIgPSBwYXR0ZXJuTnVt
YmVyIHx8IDA7CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wiLCB7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSk7CisgICAgZ2wu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6ZSA9IFsgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBbCisgICAgICAgIFswLjAs
IDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwgMS4wXSwKKyAgICAgICAg
WzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwgMC41LCAwLjVdLAorICAg
IF07CisgICAgY29uc3QgYm94Q29sb3JzID0gT2JqZWN0LnZhbHVlcyh0ZXN0Q29sb3JzKTsKKyAg
ICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBjb25zdCBpID0gKG4gKyBw
YXR0ZXJuTnVtYmVyKSAlIGJveGVzLmxlbmd0aDsKKyAgICAgICAgY29uc3QgY29sb3IgPSBib3hD
b2xvcnNbaV07CisgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW25dOworICAgICAgICBnbC5zY2lz
c29yKGJveFswXSAqIGJveFNpemVbMF0sIGJveFsxXSAqIGJveFNpemVbMV0sIGJveFsyXSAqIGJv
eFNpemVbMF0sIGJveFszXSAqIGJveFNpemVbMV0pOworICAgICAgICBnbC5jbGVhckNvbG9yKGNv
bG9yWzBdIC8gMjU1LiwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LiwgY29sb3JbM10g
LyAyNTUuKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQog
fQorCitmdW5jdGlvbiBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2FudmFzVGVzdFBhdHRlcm4o
aW1hZ2VTb3VyY2UsIHBhdHRlcm5OdW1iZXIsIGRlc2MpCit7CisgICAgcGF0dGVybk51bWJlciA9
IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBkZXNjID0gZGVzYyB8fCAiIjsKKyAgICBjb25zdCB2
ZXJpZnlXaWR0aCA9IDMwMDsKKyAgICBjb25zdCBlcnIgPSAxMDsKKyAgICBsZXQgaW1hZ2VTb3Vy
Y2VTaXplOworICAgIGxldCBpbWFnZVNvdXJjZUhlaWdodDsKKyAgICBpZiAoaW1hZ2VTb3VyY2Ug
aW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KQorICAgICAgICBpbWFnZVNvdXJjZVNpemUgPSBb
aW1hZ2VTb3VyY2UudmlkZW9XaWR0aCwgaW1hZ2VTb3VyY2UudmlkZW9IZWlnaHRdOworICAgIGVs
c2UKKyAgICAgICAgaW1hZ2VTb3VyY2VTaXplID0gW2ltYWdlU291cmNlLndpZHRoLCBpbWFnZVNv
dXJjZS5oZWlnaHRdOworCisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7CisgICAgY29uc3QgZGVidWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRlYnVnZSIpOworICAgIGlmIChkZWJ1Z2UpCisgICAgICAgIGRlYnVnZS5hcHBlbmRDaGlsZChj
YW52YXMpOworCisgICAgY2FudmFzLndpZHRoID0gdmVyaWZ5V2lkdGg7CisgICAgY2FudmFzLmhl
aWdodCA9ICh2ZXJpZnlXaWR0aCAvIGltYWdlU291cmNlU2l6ZVswXSkgKiBpbWFnZVNvdXJjZVNp
emVbMV07CisgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgY3R4
LmRyYXdJbWFnZShpbWFnZVNvdXJjZSwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0
KTsKKyAgICBjb25zdCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53
aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgY29uc3QgcG9pbnRDb2xvcnMgPSBPYmplY3QudmFs
dWVzKHRlc3RDb2xvcnMpOworICAgIGNvbnN0IHBvaW50cyA9IFsKKyAgICAgICAgWyAwLjEsIDAu
MSBdLAorICAgICAgICBbIDAuOSwgMC4xIF0sCisgICAgICAgIFsgMC45LCAwLjkgXSwKKyAgICAg
ICAgWyAwLjEsIDAuOSBdLAorICAgIF07CisgICAgZm9yIChsZXQgbiA9IDA7IG4gPCA0OyArK24p
IHsKKyAgICAgICAgbGV0IGkgPSAobiArIHBhdHRlcm5OdW1iZXIpICUgcG9pbnRzLmxlbmd0aDsK
KyAgICAgICAgbGV0IGNvbG9yID0gcG9pbnRDb2xvcnNbaV07CisgICAgICAgIGxldCBwb2ludCA9
IHBvaW50c1tuXTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoZ2V0SW1hZ2VE
YXRhUGl4ZWwoaW1hZ2VEYXRhLCBwb2ludCksIGNvbG9yLCBlcnIsIGByZWN0ICR7Y29sb3Iuam9p
bigiLCIpfSBhdCAke3BvaW50LmpvaW4oIiwiKX0gbm90IGZvdW5kICR7ZGVzY31gKTsKKyAgICB9
CisgICAgaWYgKGRlYnVnZSkKKyAgICAgICAgZGVidWdlLnJlbW92ZUNoaWxkKGNhbnZhcyk7Cit9
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
cnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1y
ZXBsYWNlLXRyYWNrLmh0bWwKaW5kZXggYTYyYWVkNzkxZGI4OWFlMTg2MTczYjBiNzk3OWQzMTIw
NDliNDdmYy4uZjkwNGRjODJmNGMyZDMyMmMxYTA0ZDQzY2M4ZjVlMTk0ZDllNzVmNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sCkBAIC0xMSw3ICsxMSw2
IEBACiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgogICAgICAgICA8dmlkZW8gaWQ9InZpZGVvIiBhdXRv
cGxheT0iIj48L3ZpZGVvPgogICAgICAgICA8Y2FudmFzIGlkPSJjYW52YXMiIHdpZHRoPSI2NDAi
IGhlaWdodD0iNDgwIj48L2NhbnZhcz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5q
cyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ2aWRlbyIpOwogY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZh
cyIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450124</attachid>
            <date>2022-01-27 04:16:55 -0800</date>
            <delta_ts>2022-01-27 05:53:11 -0800</delta_ts>
            <desc>For debugging</desc>
            <filename>bug-235600-20220127141653.patch</filename>
            <type>text/plain</type>
            <size>21224</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uMTY1OTdkNWNmZTc5NDhkZTZhMjU5YjAyYTgxZjEw
YmU0NWZiNDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTI3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaXJyb3IgYW5kIHJvdGF0ZSB0aGUgV2ViR0wg
aW1hZ2UgYXQgdGhlIHNvdXJjZSBzaW5jZSBXZWJSVEMKKyAgICAgICAgZG9lcyBub3Qgc3VwcG9y
dCBtaXJyb3JpbmcuCisKKyAgICAgICAgVGVzdDogd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5l
Y3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
Q1ZVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1
ZmZlcik6CisKIDIwMjItMDEtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW01vZGVsXSBNb3VzZSBpbnRlcmFjdGlvbiBmb3IgPG1vZGVsPiBpcyBmbGlw
cGVkIGluIHRoZSB5LWF4aXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCBjOWZi
ZTBiYTA1YTJiYzIzNTcwMGE2ZTZjOTk2NGVmZGJjMWI2MTM3Li5jNTZlNjk1MzVlNzA5N2ZkZDI1
ZDJmY2UzMDJlMTA2OGU3NmM2ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC0zMCwyMCArMzAsMjYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCiAj
aW5jbHVkZSAiSU9TdXJmYWNlLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7Ci19Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSA8bWVtb3J5
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJvY2Vzc0lkZW50aXR5
OwogCisjaWYgRU5BQkxFKFZJREVPKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRH
TENvY29hIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVy
KTsKQEAgLTkwLDYgKzk2LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBi
b29sIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24geyBmYWxzZSB9OwogICAg
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0OworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lvbjsK
ICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggNzEyOWYyMjRjMjY0MGFlNDlmN2M5
MzJlMDdjOTQ1MmY5MzQ2MDRjZC4uNTI4MzM0ZmQ3YTQxZjRjMTQ2NDZkYjlkMjVkMGRhNTE0YmIx
NmYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC01NCw5ICs1NCwxMyBA
QAogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkltYWdlUm90
YXRpb25TZXNzaW9uVlQuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNlbmRp
ZgogCisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCisKIFdURl9XRUFLX0xJTktfRk9S
Q0VfSU1QT1JUKEVHTF9Jbml0aWFsaXplKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzc1
LDExICs3NzksMjIgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTENvY29h
OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c2l6ZSgpICE9IGdldEludGVy
bmFsRnJhbWVidWZmZXJTaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIG1fc3dh
cENoYWluLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKKyAgICAvLyBEaXNwbGF5IHN1cmZhY2Ug
aXMgbm90IG1hcmtlZCBpbiB1c2Ugc2luY2Ugd2Ugd2lsbCBtaXJyb3IgYW5kIHJvdGF0ZSBpdCBl
eHBsaWNpdGx5LgogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVhdGVDVlBpeGVsQnVmZmVyKGRp
c3BsYXlCdWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpj
cmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7CisgICAgLy8gTWlycm9yIGFuZCBy
b3RhdGUgdGhlIHBpeGVsIGJ1ZmZlciBleHBsaWNpdGx5LCBhcyBXZWJSVEMgZW5jb2RlcnMgY2Fu
bm90IG1pcnJvci4KKyAgICBpZiAoIW1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb24pCisgICAg
ICAgIG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRp
b25TZXNzaW9uVlQ+KEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllcyB7
IHRydWUsIGZhbHNlLCAxODAgfSwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAgIGF1dG8gbWVk
aWFTYW1wbGVQaXhlbEJ1ZmZlciA9IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb24tPnJvdGF0
ZShwaXhlbEJ1ZmZlci0+Z2V0KCkpOworICAgIGlmICghbWVkaWFTYW1wbGVQaXhlbEJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKG1fcmVzb3VyY2VPd25lcikKKyAgICAg
ICAgc2V0T3duZXJzaGlwSWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKG1lZGlhU2FtcGxlUGl4ZWxC
dWZmZXIuZ2V0KCksIG1fcmVzb3VyY2VPd25lcik7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9y
U3BhY2UgPSBkeW5hbWljX2NmX2Nhc3Q8Q0dDb2xvclNwYWNlUmVmPihDVkJ1ZmZlckdldEF0dGFj
aG1lbnQobWVkaWFTYW1wbGVQaXhlbEJ1ZmZlci5nZXQoKSwga0NWSW1hZ2VCdWZmZXJDR0NvbG9y
U3BhY2VLZXksIG51bGxwdHIpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2xvclNwYWNlKTsKKwor
ICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUo
bWVkaWFTYW1wbGVQaXhlbEJ1ZmZlciksIE1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgZmFsc2UpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKaW5kZXggMWU5YzczMjhkZGM3NTZiYzQ2
ZTI4ZjFhNWVhNGFmNTQzYzRhYTZiZi4uMWE2OGRhMmJkOWNmMzgyNzU5NjRhMWI1MjdhZDU5MjYw
M2FlNDhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gSEFW
RShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93
bmVyc2hpcElkZW50aXR5KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5KElPU3VyZmFjZVJlZiwgY29uc3Qg
UHJvY2Vzc0lkZW50aXR5Jik7CiAKICAgICB2b2lkIG1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0
aWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbQppbmRleCBhYzA4NzFmZmJhNTk2Y2QzZDQ3NGQxNTFmNzk0NjQyODY4MWM5
YmUzLi44Y2MxNmZkZWEwNTMxOTQ0MWY3YWUxMjRmMzI1NzdhZDM1NmZmZWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBA
IC00OTQsMTQgKzQ5NCwyMSBAQCB2b2lkIElPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6
dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZgogI2VuZGlmIC8vIEhB
VkUoSU9TVVJGQUNFX0FDQ0VMRVJBVE9SKQogCiB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlw
SWRlbnRpdHkoY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQoreworICAgIHNl
dE93bmVyc2hpcElkZW50aXR5KG1fc3VyZmFjZS5nZXQoKSwgcmVzb3VyY2VPd25lcik7Cit9CisK
K3ZvaWQgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0eShJT1N1cmZhY2VSZWYgc3VyZmFj
ZSwgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogewogI2lmIEhBVkUoSU9T
VVJGQUNFX1NFVF9PV05FUlNISVBfSURFTlRJVFkpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tF
TikKICAgICBBU1NFUlQocmVzb3VyY2VPd25lcik7CisgICAgQVNTRVJUKHN1cmZhY2UpOwogICAg
IHRhc2tfaWRfdG9rZW5fdCBvd25lclRhc2tJZFRva2VuID0gcmVzb3VyY2VPd25lci50YXNrSWRU
b2tlbigpOwotICAgIGF1dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlwSWRlbnRpdHko
bV9zdXJmYWNlLmdldCgpLCBvd25lclRhc2tJZFRva2VuLCBrSU9TdXJmYWNlTWVtb3J5TGVkZ2Vy
VGFnR3JhcGhpY3MsIDApOworICAgIGF1dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlw
SWRlbnRpdHkoc3VyZmFjZSwgb3duZXJUYXNrSWRUb2tlbiwga0lPU3VyZmFjZU1lbW9yeUxlZGdl
clRhZ0dyYXBoaWNzLCAwKTsKICAgICBpZiAocmVzdWx0ICE9IGtJT1JldHVyblN1Y2Nlc3MpCi0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElPU3VyZmFjZSwgIklPU3VyZmFjZTo6c2V0T3duZXJz
aGlwSWRlbnRpdHk6IEZhaWxlZCB0byBjbGFpbSBvd25lcnNoaXAgb2YgSU9TdXJmYWNlICVwLCB0
YXNrIGlkIHRva2VuOiAlZCwgZXJyb3I6ICVkIiwgbV9zdXJmYWNlLmdldCgpLCAoaW50KW93bmVy
VGFza0lkVG9rZW4sIHJlc3VsdCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElPU3VyZmFj
ZSwgIklPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHk6IEZhaWxlZCB0byBjbGFpbSBvd25l
cnNoaXAgb2YgSU9TdXJmYWNlICVwLCB0YXNrIGlkIHRva2VuOiAlZCwgZXJyb3I6ICVkIiwgc3Vy
ZmFjZSwgKGludClvd25lclRhc2tJZFRva2VuLCByZXN1bHQpOwogI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oc3VyZmFjZSk7CiAgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlT3duZXIpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRp
ZXMuaAppbmRleCAyZTVmMTk2NThhMzViZjU4ZjJjZDRlMGZhNzRiOWQ1YTJiYWYyZGNmLi5mNGM1
YjUxMzdlMzgwY2YzODgyY2UwZmNiYjc2MTk1ZGVmMDA1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcg
QEAgdXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9v
bCo7CiB1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQcm9jZXNzSWRlbnRpdHk7CiAKIC8vIENyZWF0ZXMgQ1ZQ
aXhlbEJ1ZmZlclBvb2wgdGhhdCBjcmVhdGVzIENWUGl4ZWxCdWZmZXJzIGJhY2tlZCBieSBJT1N1
cmZhY2VzLgogLy8gVGhlc2UgYnVmZmVycyBjYW4gYmUgZm9yIGV4YW1wbGUgc2VudCB0aHJvdWdo
IElQQy4KQEAgLTQ1LDQgKzQ2LDggQEAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8UmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+LCBDVlJldHVybj4gY3JlYXRlQ1ZQaXhlbEJ1ZmYKIFdFQkNPUkVf
RVhQT1JUIEV4cGVjdGVkPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiwgQ1ZSZXR1cm4+IGNy
ZWF0ZUNWUGl4ZWxCdWZmZXIoSU9TdXJmYWNlUmVmKTsKIAogUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gY3JlYXRlQ0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVm
KTsKKworLy8gU2hvdWxkIGJlIGNhbGxlZCB3aXRoIG5vbi1lbXB0eSBQcm9jZXNzSWRlbnRpdHku
CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZl
cihDVlBpeGVsQnVmZmVyUmVmLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQppbmRl
eCAzMjZmMDQzMmI0ODYyMjE5NjJjNzVlZmM2ZGUwMWVkOGFkYzllNjY3Li4xNGY2MmIwNDA3M2M3
ODc0MDQ5YTZmZWZlODEzOTMzYTY0ZmM0MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2lt
cG9ydCAiQ1ZVdGlsaXRpZXMuaCIKIAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCisjaW1wb3J0
ICJJT1N1cmZhY2UuaCIKICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKQEAgLTEz
Miw0ICsxMzMsMTEgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dDb2xvclNw
YWNlRm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmIGIKICAgICByZXR1cm4gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKIH0KIAordm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxC
dWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgUHJvY2Vzc0lkZW50aXR5
JiBvd25lcikKK3sKKyAgICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNl
KHBpeGVsQnVmZmVyKTsKKyAgICBBU1NFUlQoc3VyZmFjZSk7CisgICAgSU9TdXJmYWNlOjpzZXRP
d25lcnNoaXBJZGVudGl0eShzdXJmYWNlLCBvd25lcik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMTk0ZTVm
MmZlZWEyNGI2Yzg5OWUyYTZkNjlhMjgzOTcxNzAzYmYyLi44Y2E4ZjU4NjMwM2QzODQ0YmI5N2Nl
MGYyZTJlNGE4M2U1ZmE0NDkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDEtMjcgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDYXB0dXJpbmcg
V2ViR0wgY2FudmFzIHRocm91Z2ggcGVlciBjb25uZWN0aW9uIHNob3dzIHRoZSBpbWFnZSBmbGlw
cGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2
MDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4MDQzMzI1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgc2VuZGluZyBXZWJHTCBpbWFnZSB0
aHJvdWdoIGEgcGVlciBjb25uZWN0aW9uIHRvIGEgbG9jYWwgdmlkZW8KKyAgICAgICAgYW5kIGFz
c2VydCB0aGF0IHRoZSBpbWFnZSBpcyBhcyBkcmF3bi4KKworICAgICAgICAqIHBsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiB3ZWJydGMvY2FudmFzLXRvLXBlZXItY29u
bmVjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9jYW52YXMtdG8t
cGVlci1jb25uZWN0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9yb3V0aW5lcy5q
czoKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sOgorCisyMDIyLTAx
LTI2ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2Fw
dHVyaW5nIFdlYkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1h
Z2UgZmxpcHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NjAwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJnbC1pbnZlcnQtd2VicnRj
CisKKyAgICAgICAgKiB3ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJydGMvcm91dGluZXMuanM6CisKIDIwMjItMDEtMjUgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViR0wgY29u
Zm9ybWFuY2UgdGVzdCBzdWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODE3YWFlZDU1MWYxZDg4OWZhYjgwY2ZmOWVmZThm
NmFmODg4NDAzNi4uOGZhNTYwOWM5ZjFlMTk2YjQ0YWU5ZGUwYmQ4MGEwYzE4NDMyNWY3ZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk0LDYgKzc5
NCw3IEBAIHdlYmtpdC5vcmcvYi8yMzE4MTEgd2ViYXVkaW8vc3VzcGVuZC1jb250ZXh0LXdoaWxl
LWludGVycnVwdGVkLmh0bWwgWyBUaW1lb3V0IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdmlkZW8tcnZmYyBbIFBhc3MgXQogZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEt
cnZmYy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0
bWwgWyBGYWlsdXJlIF0KK3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgWyBG
YWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1
ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLXdlYnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFt
ZS1jYWxsYmFjay1iZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1j
YWxsYmFjay1kdXJpbmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTMxN2M3ZGExYzRlOTZhMzZjOWYyZTBiYzkxNDQ2MGNlY2YzYjBk
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1j
b25uZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBkcmF3OiB3aXRo
V2ViR0wKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNv
bm5lY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFmN2M5NDUyYmJlNGJlYzhlZTVhMTUwODdiNDU3MGZmYWRh
MGE1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVl
ci1jb25uZWN0aW9uLmh0bWwKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYyA9InJv
dXRpbmVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVidWdlIj48
L2Rpdj4KKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIHdpdGgyRENvbnRleHQo
c3ViY2FzZSwgY2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIGRyYXdDYW52YXNUZXN0UGF0
dGVybjJEKGNhbnZhcywgcGF0dGVybk51bWJlcik7Cit9CisKK2Z1bmN0aW9uIHdpdGhXZWJHTChz
dWJjYXNlLCBjYW52YXMsIHBhdHRlcm5OdW1iZXIpCit7CisgICAgZHJhd0NhbnZhc1Rlc3RQYXR0
ZXJuV2ViR0woY2FudmFzLCBwYXR0ZXJuTnVtYmVyKTsKK30KKworYXN5bmMgZnVuY3Rpb24gY3Jl
YXRlTG9jYWxQZWVyQ29ubmVjdGlvblN0cmVhbShzdHJlYW0pCit7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMo
KGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRy
YWNrKHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vj
b25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNr
ID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2
ZW50LnRyYWNrIGluc3RhbmNlb2YgTWVkaWFTdHJlYW1UcmFjayk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X3RydWUodHJhY2tFdmVudC5yZWNlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVy
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHRyYWNrRXZlbnQu
c3RyZWFtcyksICJBcnJheS5pc0FycmF5KCkgc2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0LmlzRnJvemVuKHRyYWNrRXZlbnQuc3RyZWFtcyks
ICJPYmplY3QuaXNGcm96ZW4oKSBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAg
ICB9KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pCit7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgIHZpZGVvLnJl
cXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soKG5vdywgbWV0YWRhdGEpID0+IHsKKyAgICAgICAgICAg
IHJlc29sdmUobm93LCBtZXRhZGF0YSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitjb25z
dCB3aWR0aCA9IDUwMDsKK2NvbnN0IGhlaWdodCA9IDUwMDsKKworYXN5bmMgZnVuY3Rpb24gdGVz
dENhbnZhc1RvUGVlckNvbm5lY3Rpb24odCwgc3ViY2FzZSkKK3sKKyAgICBjb25zdCBkZWJ1Z2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVidWdlIik7CisgICAgY29uc3QgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gd2lk
dGg7CisgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQo
Y2FudmFzKTsKKyAgICB0LmFkZF9jbGVhbnVwKGFzeW5jICgpID0+IGRlYnVnZS5yZW1vdmVDaGls
ZChjYW52YXMpKTsKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IGNyZWF0ZUxvY2FsUGVl
ckNvbm5lY3Rpb25TdHJlYW0oY2FudmFzLmNhcHR1cmVTdHJlYW0oKSk7CisgICAgdC5hZGRfY2xl
YW51cChhc3luYyAoKSA9PiBjbG9zZUNvbm5lY3Rpb25zKCkpOworICAgIGNvbnN0IHZpZGVvID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKTsKKyAgICB2aWRlby5hdXRvcGxheSA9IHRy
dWU7CisgICAgdmlkZW8uY29udHJvbHMgPSBmYWxzZTsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQo
dmlkZW8pOworICAgIHQuYWRkX2NsZWFudXAoYXN5bmMgKCkgPT4gZGVidWdlLnJlbW92ZUNoaWxk
KHZpZGVvKSk7CisgICAgdmlkZW8uc3JjT2JqZWN0ID0gbG9jYWxTdHJlYW07CisgICAgYXdhaXQg
d2FpdEZvcigzMDApOworICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIDEpOworICAg
IGNvbnN0IHZpZGVvRnJhbWVQcm9taXNlID0gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pOworICAg
IGF3YWl0IHdhaXRGb3JWaWRlb1NpemUodmlkZW8sIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdo
dCk7CisgICAgYXdhaXQgdmlkZW9GcmFtZVByb21pc2U7CisgICAgYXNzZXJ0SW1hZ2VTb3VyY2VD
b250YWluc0NhbnZhc1Rlc3RQYXR0ZXJuKHZpZGVvLCAxLCAiYmFzZSBjYXNlIik7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNl
LCBjYW52YXMsIGkpOworICAgICAgICBhd2FpdCB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbyk7Cisg
ICAgICAgIGFzc2VydEltYWdlU291cmNlQ29udGFpbnNDYW52YXNUZXN0UGF0dGVybih2aWRlbywg
aSwgYGl0ZXJhdGlvbjogJHtpfWApOworICAgIH0KK30KKworY29uc3Qgc3ViY2FzZXMgPSBbXTsK
Ky8vIEZJWE1FOiBUdGhpcyBzaG91bGQgYmUgZmlsbGVkIHdoZW4gMkQgY29udGV4dCBzdXBwb3J0
cyBIVE1MQ2FudmFzRWxlbWVudC5jYXB0dXJlU3RyZWFtKCkuCisvLyBzdWJjYXNlcy5wdXNoKHtk
cmF3OiB3aXRoMkRDb250ZXh0fSk7CitzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoV2ViR0x9KTsK
KworZnVuY3Rpb24gdGVzdERlc2NyaXB0aW9uKHN1YmNhc2UpIHsKKyAgICByZXR1cm4gT2JqZWN0
LmtleXMoc3ViY2FzZSkubWFwKChrKSA9PiBgJHtrfTogJHt0eXBlb2Ygc3ViY2FzZVtrXSA9PT0g
ImZ1bmN0aW9uIiA/IHN1YmNhc2Vba10ubmFtZSA6IHN1YmNhc2Vba119YCkuam9pbigiLCIpOwor
fQorCitmdW5jdGlvbiBjcmVhdGVDYW52YXNUb1BlZXJDb25uZWN0aW9uVGVzdHMoc2xpY2UsIHNs
aWNlcykgeworICAgIGNvbnN0IHNsaWNlU2l6ZSA9IE1hdGguZmxvb3Ioc3ViY2FzZXMubGVuZ3Ro
IC8gc2xpY2VzKTsKKyAgICBjb25zdCBmaXJzdCA9IHNsaWNlU2l6ZSAqIHNsaWNlOworICAgIGZv
ciAoY29uc3Qgc3ViY2FzZSBvZiBzdWJjYXNlcy5zbGljZShmaXJzdCwgZmlyc3QgKyBzbGljZVNp
emUpKQorICAgICAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7IGF3YWl0IHRlc3RDYW52YXNU
b1BlZXJDb25uZWN0aW9uKHQsIHN1YmNhc2UpOyB9LCB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkp
OworfQorY3JlYXRlQ2FudmFzVG9QZWVyQ29ubmVjdGlvblRlc3RzKDAsIDEpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGlu
ZXMuanMgYi9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggMmNmZjY5ZTY1MWI5
NDE3YjVlMTk5OGJiZDU2NzkyMTlhNTdmMmNlMS4uMGYzOWFjY2JjOGI5OTY1OTQ5MDFhODMxYTQx
NzI4ZGI3ZGUyZjZmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpz
CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMjk4LDYgKzI5OCwxMyBA
QCBmdW5jdGlvbiBzZXRIMjY0SGlnaENvZGVjKHNkcCkKICAgICB9KS5qb2luKCdcclxuJyk7CiB9
CiAKK2NvbnN0IHRlc3RDb2xvcnMgPSB7CisgICAgd2hpdGU6IFsgMjU1LCAyNTUsIDI1NSwgMjU1
IF0sCisgICAgeWVsbG93OiBbIDI1NSwgMjU1LCAwLCAyNTUgXSwKKyAgICBjeWFuOiBbIDAsIDI1
NSwgMjU1LCAyNTUgXSwKKyAgICBsaWdodEdyZWVuOiBbIDAsIDEyOCwgMCwgMjU1IF0sCit9Owor
CiAvLyBTZXRzIHRoZSBjYW1lcmEgaW1hZ2Ugb3JpZW50YXRpb24gaWYgcnVubmluZyBvbiB0ZXN0
IHJ1bm5lci4KIC8vIGFuZ2xlOiBvcmllbnRhdGlvbiBhbmdsZSBvZiB0aGUgY2FtZXJhIGltYWdl
IGluIGRlZ3JlZXMKIGZ1bmN0aW9uIHNldE1vY2tDYW1lcmFJbWFnZU9yaWVudGF0aW9uKGFuZ2xl
LCB2aWRlb1NpemUpIHsKQEAgLTM0MCwxOCArMzQ3LDgyIEBAIGZ1bmN0aW9uIGFzc2VydEltYWdl
RGF0YUNvbnRhaW5zTW9ja0NhbWVyYUltYWdlKGltYWdlRGF0YSwgYW5nbGUsIGRlc2MpCiAgICAg
ICAgIHJldHVybiBuOwogICAgIH0KIAotICAgIGNvbnN0IHdoaXRlID0gWyAyNTUsIDI1NSwgMjU1
LCAyNTUgXTsKICAgICBjb25zdCB3aGl0ZVBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjA0LCAwLjcg
XSk7Ci0gICAgY29uc3QgeWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CiAgICAgY29uc3Qg
eWVsbG93UG9pbnQgPSByb3RhdGVQb2ludChbIDAuMDgsIDAuNyBdKTsKLSAgICBjb25zdCBjeWFu
ID0gWyAwLCAyNTUsIDI1NSwgMjU1IF07CiAgICAgY29uc3QgY3lhblBvaW50ID0gcm90YXRlUG9p
bnQoWyAwLjEyLCAwLjcgXSk7Ci0gICAgY29uc3QgbGlnaHRHcmVlbiA9IFsgMCwgMTI4LCAwLCAy
NTUgXTsKICAgICBjb25zdCBsaWdodEdyZWVuUG9pbnQgPSByb3RhdGVQb2ludChbIDAuMTYsIDAu
NyBdKTsKIAogICAgIGxldCBlcnIgPSAxMTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFs
cyhnZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIHdoaXRlUG9pbnQpLCB3aGl0ZSwgZXJyLCAi
d2hpdGUgcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hf
ZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgeWVsbG93UG9pbnQpLCB5ZWxsb3cs
IGVyciwgInllbGxvdyByZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKLSAgICBhc3NlcnRfYXJyYXlf
YXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIGN5
YW4sIGVyciwgImN5YW4gcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJh
eV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgbGlnaHRHcmVlblBv
aW50KSwgbGlnaHRHcmVlbiwgZXJyLCAibGlnaHQgZ3JlZW4gcmVjdCBub3QgZm91bmQgIiArIGRl
c2MpOworICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGlt
YWdlRGF0YSwgd2hpdGVQb2ludCksIHRlc3RDb2xvcnMud2hpdGUsIGVyciwgIndoaXRlIHJlY3Qg
bm90IGZvdW5kICIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJ
bWFnZURhdGFQaXhlbChpbWFnZURhdGEsIHllbGxvd1BvaW50KSwgdGVzdENvbG9ycy55ZWxsb3cs
IGVyciwgInllbGxvdyByZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlf
YXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIHRl
c3RDb2xvcnMuY3lhbiwgZXJyLCAiY3lhbiByZWN0IG5vdCBmb3VuZCAiICsgZGVzYyk7CisgICAg
YXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBs
aWdodEdyZWVuUG9pbnQpLCB0ZXN0Q29sb3JzLmxpZ2h0R3JlZW4sIGVyciwgImxpZ2h0IGdyZWVu
IHJlY3Qgbm90IGZvdW5kICIgKyBkZXNjKTsKK30KKworLy8gRHJhd3MgYSBjYW52YXMgdGVzdCBw
YXR0ZXJuIHdpdGggV2ViR0wuCisvLyBDYW4gYmUgY2hlY2tlZCB3aXRoIGBhc3NlcnRJbWFnZVNv
dXJjZUNvbnRhaW5zQ2FudmFzVGVzdFBhdHRlcm4oKWAuCisvLyBQYXR0ZXJuIGlzIGZvdXIgY29s
b3JzLCBpdCBjYW4gZGV0ZWN0IGZsaXBzIGFuZCByb3RhdGlvbnMuCisvLyBgcGF0dGVybk51bWJl
cmAgY2FuIGJlIHVzZWQgaW4gdG8gdGVzdCBtdWx0aXBsZSBzdWJzZXF1ZW50IGZyYW1lcyAocGFz
cyBpbiBmcmFtZSBudW1iZXIpLgorLy8gUGF0dGVybiBpcyBmb3VyIGJveGVzIHdpdGggY29sb3Ig
Y3ljbGVkIGJhc2VkIG9uIHBhdHRlcm5OdW1iZXIgJSA0LgorZnVuY3Rpb24gZHJhd0NhbnZhc1Rl
c3RQYXR0ZXJuV2ViR0woY2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIHBhdHRlcm5OdW1i
ZXIgPSBwYXR0ZXJuTnVtYmVyIHx8IDA7CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4
dCgid2ViZ2wiLCB7IGRlcHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFs
c2UgfSk7CisgICAgZ2wuZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6
ZSA9IFsgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBb
CisgICAgICAgIFswLjAsIDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwg
MS4wXSwKKyAgICAgICAgWzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwg
MC41LCAwLjVdLAorICAgIF07CisgICAgY29uc3QgYm94Q29sb3JzID0gT2JqZWN0LnZhbHVlcyh0
ZXN0Q29sb3JzKTsKKyAgICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBj
b25zdCBpID0gKG4gKyBwYXR0ZXJuTnVtYmVyKSAlIGJveGVzLmxlbmd0aDsKKyAgICAgICAgY29u
c3QgY29sb3IgPSBib3hDb2xvcnNbaV07CisgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW25dOwor
ICAgICAgICBnbC5zY2lzc29yKGJveFswXSAqIGJveFNpemVbMF0sIGJveFsxXSAqIGJveFNpemVb
MV0sIGJveFsyXSAqIGJveFNpemVbMF0sIGJveFszXSAqIGJveFNpemVbMV0pOworICAgICAgICBn
bC5jbGVhckNvbG9yKGNvbG9yWzBdIC8gMjU1LiwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8g
MjU1LiwgY29sb3JbM10gLyAyNTUuKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCk7CisgICAgfQogfQorCitmdW5jdGlvbiBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2Fu
dmFzVGVzdFBhdHRlcm4oaW1hZ2VTb3VyY2UsIHBhdHRlcm5OdW1iZXIsIGRlc2MpCit7CisgICAg
cGF0dGVybk51bWJlciA9IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBkZXNjID0gZGVzYyB8fCAi
IjsKKyAgICBjb25zdCB2ZXJpZnlXaWR0aCA9IDMwMDsKKyAgICBjb25zdCBlcnIgPSAxMDsKKyAg
ICBsZXQgaW1hZ2VTb3VyY2VTaXplOworICAgIGxldCBpbWFnZVNvdXJjZUhlaWdodDsKKyAgICBp
ZiAoaW1hZ2VTb3VyY2UgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KQorICAgICAgICBpbWFn
ZVNvdXJjZVNpemUgPSBbaW1hZ2VTb3VyY2UudmlkZW9XaWR0aCwgaW1hZ2VTb3VyY2UudmlkZW9I
ZWlnaHRdOworICAgIGVsc2UKKyAgICAgICAgaW1hZ2VTb3VyY2VTaXplID0gW2ltYWdlU291cmNl
LndpZHRoLCBpbWFnZVNvdXJjZS5oZWlnaHRdOworCisgICAgY29uc3QgY2FudmFzID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY29uc3QgZGVidWdlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRlYnVnZSIpOworICAgIGlmIChkZWJ1Z2UpCisgICAgICAgIGRlYnVn
ZS5hcHBlbmRDaGlsZChjYW52YXMpOworCisgICAgY2FudmFzLndpZHRoID0gdmVyaWZ5V2lkdGg7
CisgICAgY2FudmFzLmhlaWdodCA9ICh2ZXJpZnlXaWR0aCAvIGltYWdlU291cmNlU2l6ZVswXSkg
KiBpbWFnZVNvdXJjZVNpemVbMV07CisgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQo
IjJkIik7CisgICAgY3R4LmRyYXdJbWFnZShpbWFnZVNvdXJjZSwgMCwgMCwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjb25zdCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRh
KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgY29uc3QgcG9pbnRDb2xv
cnMgPSBPYmplY3QudmFsdWVzKHRlc3RDb2xvcnMpOworICAgIGNvbnN0IHBvaW50cyA9IFsKKyAg
ICAgICAgWyAwLjEsIDAuMSBdLAorICAgICAgICBbIDAuOSwgMC4xIF0sCisgICAgICAgIFsgMC45
LCAwLjkgXSwKKyAgICAgICAgWyAwLjEsIDAuOSBdLAorICAgIF07CisgICAgZm9yIChsZXQgbiA9
IDA7IG4gPCA0OyArK24pIHsKKyAgICAgICAgbGV0IGkgPSAobiArIHBhdHRlcm5OdW1iZXIpICUg
cG9pbnRzLmxlbmd0aDsKKyAgICAgICAgbGV0IGNvbG9yID0gcG9pbnRDb2xvcnNbaV07CisgICAg
ICAgIGxldCBwb2ludCA9IHBvaW50c1tuXTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2FwcHJveF9l
cXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBwb2ludCksIGNvbG9yLCBlcnIsIGBy
ZWN0ICR7Y29sb3Iuam9pbigiLCIpfSBhdCAke3BvaW50LmpvaW4oIiwiKX0gbm90IGZvdW5kICR7
ZGVzY31gKTsKKyAgICB9CisgICAgaWYgKGRlYnVnZSkKKyAgICAgICAgZGVidWdlLnJlbW92ZUNo
aWxkKGNhbnZhcyk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbCBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKaW5kZXggYTYyYWVkNzkxZGI4OWFlMTg2
MTczYjBiNzk3OWQzMTIwNDliNDdmYy4uZjkwNGRjODJmNGMyZDMyMmMxYTA0ZDQzY2M4ZjVlMTk0
ZDllNzVmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJh
Y2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1s
CkBAIC0xMSw3ICsxMSw2IEBACiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgogICAgICAgICA8dmlkZW8g
aWQ9InZpZGVvIiBhdXRvcGxheT0iIj48L3ZpZGVvPgogICAgICAgICA8Y2FudmFzIGlkPSJjYW52
YXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIj48L2NhbnZhcz4KLSAgICAgICAgPHNjcmlwdCBz
cmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiB2aWRlbyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOwogY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450129</attachid>
            <date>2022-01-27 05:53:18 -0800</date>
            <delta_ts>2022-01-28 05:11:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235600-20220127155316.patch</filename>
            <type>text/plain</type>
            <size>21091</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uMTY1OTdkNWNmZTc5NDhkZTZhMjU5YjAyYTgxZjEw
YmU0NWZiNDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTI3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNaXJyb3IgYW5kIHJvdGF0ZSB0aGUgV2ViR0wg
aW1hZ2UgYXQgdGhlIHNvdXJjZSBzaW5jZSBXZWJSVEMKKyAgICAgICAgZG9lcyBub3Qgc3VwcG9y
dCBtaXJyb3JpbmcuCisKKyAgICAgICAgVGVzdDogd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5l
Y3Rpb24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TENvY29hOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
Q1ZVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGll
cy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1
ZmZlcik6CisKIDIwMjItMDEtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW01vZGVsXSBNb3VzZSBpbnRlcmFjdGlvbiBmb3IgPG1vZGVsPiBpcyBmbGlw
cGVkIGluIHRoZSB5LWF4aXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaAppbmRleCBjOWZi
ZTBiYTA1YTJiYzIzNTcwMGE2ZTZjOTk2NGVmZGJjMWI2MTM3Li5jNTZlNjk1MzVlNzA5N2ZkZDI1
ZDJmY2UzMDJlMTA2OGU3NmM2ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCkBA
IC0zMCwyMCArMzAsMjYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCiAj
aW5jbHVkZSAiSU9TdXJmYWNlLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7Ci19Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTY29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSA8bWVtb3J5
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJvY2Vzc0lkZW50aXR5
OwogCisjaWYgRU5BQkxFKFZJREVPKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDsKKyNlbmRpZgorCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRH
TENvY29hIDogcHVibGljIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xDb2NvYT4gY3JlYXRlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBQcm9jZXNzSWRlbnRpdHkmJiByZXNvdXJjZU93bmVy
KTsKQEAgLTkwLDYgKzk2LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBi
b29sIG1fc3dpdGNoZXNHUFVPbkRpc3BsYXlSZWNvbmZpZ3VyYXRpb24geyBmYWxzZSB9OwogICAg
IFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQVVJlcXVlc3QgbV9oaWdoUGVyZm9ybWFuY2VHUFVSZXF1
ZXN0OworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4gbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lvbjsK
ICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWQ29jb2E7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggNzEyOWYyMjRjMjY0MGFlNDlmN2M5
MzJlMDdjOTQ1MmY5MzQ2MDRjZC4uMzJhMTQzNjA4ZjU5MDMxNTE2YzU5MTdjZWFlN2ZmZDAzOWZk
NGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC01NCw2ICs1NCw3IEBA
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogI2VuZGlm
CiAKQEAgLTc3NSwxMSArNzc2LDE5IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAh
PSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBtX3N3YXBDaGFpbi5tYXJrRGlzcGxheUJ1ZmZlckluVXNlKCk7CisgICAgLy8gRGlzcGxh
eSBzdXJmYWNlIGlzIG5vdCBtYXJrZWQgaW4gdXNlIHNpbmNlIHdlIHdpbGwgbWlycm9yIGFuZCBy
b3RhdGUgaXQgZXhwbGljaXRseS4KICAgICBhdXRvIHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhl
bEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnN1cmZhY2UoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIE1lZGlhU2FtcGxl
QVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNh
bXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRydWUpOworICAgIC8vIE1p
cnJvciBhbmQgcm90YXRlIHRoZSBwaXhlbCBidWZmZXIgZXhwbGljaXRseSwgYXMgV2ViUlRDIGVu
Y29kZXJzIGNhbm5vdCBtaXJyb3IuCisgICAgaWYgKCFtX21lZGlhU2FtcGxlUm90YXRpb25TZXNz
aW9uKQorICAgICAgICBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUPihJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblBy
b3BlcnRpZXMgeyB0cnVlLCBmYWxzZSwgMTgwIH0sIGdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKKyAg
ICBhdXRvIG1lZGlhU2FtcGxlUGl4ZWxCdWZmZXIgPSBtX21lZGlhU2FtcGxlUm90YXRpb25TZXNz
aW9uLT5yb3RhdGUocGl4ZWxCdWZmZXItPmdldCgpKTsKKyAgICBpZiAoIW1lZGlhU2FtcGxlUGl4
ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChtX3Jlc291cmNlT3du
ZXIpCisgICAgICAgIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihtZWRpYVNh
bXBsZVBpeGVsQnVmZmVyLmdldCgpLCBtX3Jlc291cmNlT3duZXIpOworICAgIHJldHVybiBNZWRp
YVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUobWVkaWFTYW1wbGVQaXhl
bEJ1ZmZlciksIE1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgZmFsc2Up
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLmgKaW5kZXggMWU5YzczMjhkZGM3NTZiYzQ2ZTI4ZjFhNWVhNGFmNTQz
YzRhYTZiZi4uMWE2OGRhMmJkOWNmMzgyNzU5NjRhMWI1MjdhZDU5MjYwM2FlNDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgK
QEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0VfQUND
RUxFUkFUT1IpCiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5
KGNvbnN0IFByb2Nlc3NJZGVudGl0eSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldE93bmVyc2hpcElkZW50aXR5KElPU3VyZmFjZVJlZiwgY29uc3QgUHJvY2Vzc0lkZW50aXR5
Jik7CiAKICAgICB2b2lkIG1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpp
bmRleCBhYzA4NzFmZmJhNTk2Y2QzZDQ3NGQxNTFmNzk0NjQyODY4MWM5YmUzLi44Y2MxNmZkZWEw
NTMxOTQ0MWY3YWUxMjRmMzI1NzdhZDM1NmZmZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC00OTQsMTQgKzQ5NCwy
MSBAQCB2b2lkIElPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYgaW5TdXJmYWNlLCBGb3JtYXQgZgogI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFX0FD
Q0VMRVJBVE9SKQogCiB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkoY29uc3Qg
UHJvY2Vzc0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQoreworICAgIHNldE93bmVyc2hpcElkZW50
aXR5KG1fc3VyZmFjZS5nZXQoKSwgcmVzb3VyY2VPd25lcik7Cit9CisKK3ZvaWQgSU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgUHJvY2Vz
c0lkZW50aXR5JiByZXNvdXJjZU93bmVyKQogewogI2lmIEhBVkUoSU9TVVJGQUNFX1NFVF9PV05F
UlNISVBfSURFTlRJVFkpICYmIEhBVkUoVEFTS19JREVOVElUWV9UT0tFTikKICAgICBBU1NFUlQo
cmVzb3VyY2VPd25lcik7CisgICAgQVNTRVJUKHN1cmZhY2UpOwogICAgIHRhc2tfaWRfdG9rZW5f
dCBvd25lclRhc2tJZFRva2VuID0gcmVzb3VyY2VPd25lci50YXNrSWRUb2tlbigpOwotICAgIGF1
dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlwSWRlbnRpdHkobV9zdXJmYWNlLmdldCgp
LCBvd25lclRhc2tJZFRva2VuLCBrSU9TdXJmYWNlTWVtb3J5TGVkZ2VyVGFnR3JhcGhpY3MsIDAp
OworICAgIGF1dG8gcmVzdWx0ID0gSU9TdXJmYWNlU2V0T3duZXJzaGlwSWRlbnRpdHkoc3VyZmFj
ZSwgb3duZXJUYXNrSWRUb2tlbiwga0lPU3VyZmFjZU1lbW9yeUxlZGdlclRhZ0dyYXBoaWNzLCAw
KTsKICAgICBpZiAocmVzdWx0ICE9IGtJT1JldHVyblN1Y2Nlc3MpCi0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKElPU3VyZmFjZSwgIklPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHk6IEZh
aWxlZCB0byBjbGFpbSBvd25lcnNoaXAgb2YgSU9TdXJmYWNlICVwLCB0YXNrIGlkIHRva2VuOiAl
ZCwgZXJyb3I6ICVkIiwgbV9zdXJmYWNlLmdldCgpLCAoaW50KW93bmVyVGFza0lkVG9rZW4sIHJl
c3VsdCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElPU3VyZmFjZSwgIklPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHk6IEZhaWxlZCB0byBjbGFpbSBvd25lcnNoaXAgb2YgSU9TdXJm
YWNlICVwLCB0YXNrIGlkIHRva2VuOiAlZCwgZXJyb3I6ICVkIiwgc3VyZmFjZSwgKGludClvd25l
clRhc2tJZFRva2VuLCByZXN1bHQpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3VyZmFjZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHJlc291cmNlT3duZXIpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaAppbmRleCAyZTVm
MTk2NThhMzViZjU4ZjJjZDRlMGZhNzRiOWQ1YTJiYWYyZGNmLi5mNGM1YjUxMzdlMzgwY2YzODgy
Y2UwZmNiYjc2MTk1ZGVmMDA1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcgQEAgdXNpbmcgQ1ZQaXhl
bEJ1ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiB1c2luZyBDVlBp
eGVsQnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBQcm9jZXNzSWRlbnRpdHk7CiAKIC8vIENyZWF0ZXMgQ1ZQaXhlbEJ1ZmZlclBvb2wg
dGhhdCBjcmVhdGVzIENWUGl4ZWxCdWZmZXJzIGJhY2tlZCBieSBJT1N1cmZhY2VzLgogLy8gVGhl
c2UgYnVmZmVycyBjYW4gYmUgZm9yIGV4YW1wbGUgc2VudCB0aHJvdWdoIElQQy4KQEAgLTQ1LDQg
KzQ2LDggQEAgV0VCQ09SRV9FWFBPUlQgRXhwZWN0ZWQ8UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+LCBDVlJldHVybj4gY3JlYXRlQ1ZQaXhlbEJ1ZmYKIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVk
PFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiwgQ1ZSZXR1cm4+IGNyZWF0ZUNWUGl4ZWxCdWZm
ZXIoSU9TdXJmYWNlUmVmKTsKIAogUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dD
b2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKKworLy8gU2hvdWxk
IGJlIGNhbGxlZCB3aXRoIG5vbi1lbXB0eSBQcm9jZXNzSWRlbnRpdHkuCitXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE93bmVyc2hpcElkZW50aXR5Rm9yQ1ZQaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVy
UmVmLCBjb25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9DVlV0aWxpdGllcy5tbQppbmRleCAzMjZmMDQzMmI0ODYy
MjE5NjJjNzVlZmM2ZGUwMWVkOGFkYzllNjY3Li4xNGY2MmIwNDA3M2M3ODc0MDQ5YTZmZWZlODEz
OTMzYTY0ZmM0MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9DVlV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9DVlV0aWxpdGllcy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiQ1ZVdGlsaXRp
ZXMuaCIKIAogI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCisjaW1wb3J0ICJJT1N1cmZhY2UuaCIK
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHND
Ri5oPgogI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKQEAgLTEzMiw0ICsxMzMsMTEgQEAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY3JlYXRlQ0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1
ZmZlcihDVlBpeGVsQnVmZmVyUmVmIGIKICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
IH0KIAordm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1
ZmZlclJlZiBwaXhlbEJ1ZmZlciwgY29uc3QgUHJvY2Vzc0lkZW50aXR5JiBvd25lcikKK3sKKyAg
ICBhdXRvIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKHBpeGVsQnVmZmVyKTsK
KyAgICBBU1NFUlQoc3VyZmFjZSk7CisgICAgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0
eShzdXJmYWNlLCBvd25lcik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMTk0ZTVmMmZlZWEyNGI2Yzg5OWUy
YTZkNjlhMjgzOTcxNzAzYmYyLi44Y2E4ZjU4NjMwM2QzODQ0YmI5N2NlMGYyZTJlNGE4M2U1ZmE0
NDkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjItMDEtMjcgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDYXB0dXJpbmcgV2ViR0wgY2FudmFzIHRo
cm91Z2ggcGVlciBjb25uZWN0aW9uIHNob3dzIHRoZSBpbWFnZSBmbGlwcGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU2MDAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzg4MDQzMzI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3Qgc2VuZGluZyBXZWJHTCBpbWFnZSB0aHJvdWdoIGEgcGVlciBj
b25uZWN0aW9uIHRvIGEgbG9jYWwgdmlkZW8KKyAgICAgICAgYW5kIGFzc2VydCB0aGF0IHRoZSBp
bWFnZSBpcyBhcyBkcmF3bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0
aW9uczoKKyAgICAgICAgKiB3ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9u
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9yb3V0aW5lcy5qczoKKyAgICAgICAgKiB3
ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sOgorCisyMDIyLTAxLTI2ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdlYkdMIGNh
bnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAwCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJnbC1pbnZlcnQtd2VicnRjCisKKyAgICAgICAgKiB3
ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJydGMvcm91dGluZXMuanM6CisKIDIwMjItMDEtMjUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViR0wgY29uZm9ybWFuY2UgdGVzdCBz
dWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGli
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggODE3YWFlZDU1MWYxZDg4OWZhYjgwY2ZmOWVmZThmNmFmODg4NDAzNi4uOGZh
NTYwOWM5ZjFlMTk2YjQ0YWU5ZGUwYmQ4MGEwYzE4NDMyNWY3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk0LDYgKzc5NCw3IEBAIHdlYmtpdC5v
cmcvYi8yMzE4MTEgd2ViYXVkaW8vc3VzcGVuZC1jb250ZXh0LXdoaWxlLWludGVycnVwdGVkLmh0
bWwgWyBUaW1lb3V0IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZm
YyBbIFBhc3MgXQogZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtcnZmYy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBGYWlsdXJlIF0K
K3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1l
LWNhbGxiYWNrLXdlYnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZv
cmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmct
eHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJydGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTMxN2M3ZGExYzRlOTZhMzZjOWYyZTBiYzkxNDQ2MGNlY2YzYjBkOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBkcmF3OiB3aXRoV2ViR0wKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRtbCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGFmN2M5NDUyYmJlNGJlYzhlZTVhMTUwODdiNDU3MGZmYWRhMGE1MwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0
bWwKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVidWdlIj48L2Rpdj4KKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CisKK2Z1bmN0aW9uIHdpdGgyRENvbnRleHQoc3ViY2FzZSwgY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKQoreworICAgIGRyYXdDYW52YXNUZXN0UGF0dGVybjJEKGNhbnZhcywg
cGF0dGVybk51bWJlcik7Cit9CisKK2Z1bmN0aW9uIHdpdGhXZWJHTChzdWJjYXNlLCBjYW52YXMs
IHBhdHRlcm5OdW1iZXIpCit7CisgICAgZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0woY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKTsKK30KKworYXN5bmMgZnVuY3Rpb24gY3JlYXRlTG9jYWxQZWVyQ29u
bmVjdGlvblN0cmVhbShzdHJlYW0pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlv
bikgPT4geworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdLCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikg
PT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0cmFja0V2ZW50LnRyYWNrIGluc3Rh
bmNlb2YgTWVkaWFTdHJlYW1UcmFjayk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodHJh
Y2tFdmVudC5yZWNlaXZlciBpbnN0YW5jZW9mIFJUQ1J0cFJlY2VpdmVyKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHRyYWNrRXZlbnQuc3RyZWFtcyksICJBcnJh
eS5pc0FycmF5KCkgc2hvdWxkIHJldHVybiB0cnVlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUoT2JqZWN0LmlzRnJvemVuKHRyYWNrRXZlbnQuc3RyZWFtcyksICJPYmplY3QuaXNGcm96
ZW4oKSBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNr
RXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKworZnVuY3Rpb24gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pCit7CisgICAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2soKG5vdywgbWV0YWRhdGEpID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUobm93LCBt
ZXRhZGF0YSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitjb25zdCB3aWR0aCA9IDUwMDsK
K2NvbnN0IGhlaWdodCA9IDUwMDsKKworYXN5bmMgZnVuY3Rpb24gdGVzdENhbnZhc1RvUGVlckNv
bm5lY3Rpb24odCwgc3ViY2FzZSkKK3sKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGVidWdlIik7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CisgICAgY2FudmFz
LmhlaWdodCA9IGhlaWdodDsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICB0
LmFkZF9jbGVhbnVwKGFzeW5jICgpID0+IGRlYnVnZS5yZW1vdmVDaGlsZChjYW52YXMpKTsKKyAg
ICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IGNyZWF0ZUxvY2FsUGVlckNvbm5lY3Rpb25TdHJl
YW0oY2FudmFzLmNhcHR1cmVTdHJlYW0oKSk7CisgICAgdC5hZGRfY2xlYW51cChhc3luYyAoKSA9
PiBjbG9zZUNvbm5lY3Rpb25zKCkpOworICAgIGNvbnN0IHZpZGVvID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidmlkZW8iKTsKKyAgICB2aWRlby5hdXRvcGxheSA9IHRydWU7CisgICAgdmlkZW8u
Y29udHJvbHMgPSBmYWxzZTsKKyAgICBkZWJ1Z2UuYXBwZW5kQ2hpbGQodmlkZW8pOworICAgIHQu
YWRkX2NsZWFudXAoYXN5bmMgKCkgPT4gZGVidWdlLnJlbW92ZUNoaWxkKHZpZGVvKSk7CisgICAg
dmlkZW8uc3JjT2JqZWN0ID0gbG9jYWxTdHJlYW07CisgICAgYXdhaXQgd2FpdEZvcigzMDApOwor
ICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIDEpOworICAgIGNvbnN0IHZpZGVvRnJh
bWVQcm9taXNlID0gd2FpdEZvclZpZGVvRnJhbWUodmlkZW8pOworICAgIGF3YWl0IHdhaXRGb3JW
aWRlb1NpemUodmlkZW8sIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisgICAgYXdhaXQg
dmlkZW9GcmFtZVByb21pc2U7CisgICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rl
c3RQYXR0ZXJuKHZpZGVvLCAxLCAiYmFzZSBjYXNlIik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDsgKytpKSB7CisgICAgICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIGkpOwor
ICAgICAgICBhd2FpdCB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbyk7CisgICAgICAgIGFzc2VydElt
YWdlU291cmNlQ29udGFpbnNDYW52YXNUZXN0UGF0dGVybih2aWRlbywgaSwgYGl0ZXJhdGlvbjog
JHtpfWApOworICAgIH0KK30KKworY29uc3Qgc3ViY2FzZXMgPSBbXTsKKy8vIEZJWE1FOiBUdGhp
cyBzaG91bGQgYmUgZmlsbGVkIHdoZW4gMkQgY29udGV4dCBzdXBwb3J0cyBIVE1MQ2FudmFzRWxl
bWVudC5jYXB0dXJlU3RyZWFtKCkuCisvLyBzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoMkRDb250
ZXh0fSk7CitzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoV2ViR0x9KTsKKworZnVuY3Rpb24gdGVz
dERlc2NyaXB0aW9uKHN1YmNhc2UpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoc3ViY2FzZSku
bWFwKChrKSA9PiBgJHtrfTogJHt0eXBlb2Ygc3ViY2FzZVtrXSA9PT0gImZ1bmN0aW9uIiA/IHN1
YmNhc2Vba10ubmFtZSA6IHN1YmNhc2Vba119YCkuam9pbigiLCIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNUb1BlZXJDb25uZWN0aW9uVGVzdHMoc2xpY2UsIHNsaWNlcykgeworICAgIGNv
bnN0IHNsaWNlU2l6ZSA9IE1hdGguZmxvb3Ioc3ViY2FzZXMubGVuZ3RoIC8gc2xpY2VzKTsKKyAg
ICBjb25zdCBmaXJzdCA9IHNsaWNlU2l6ZSAqIHNsaWNlOworICAgIGZvciAoY29uc3Qgc3ViY2Fz
ZSBvZiBzdWJjYXNlcy5zbGljZShmaXJzdCwgZmlyc3QgKyBzbGljZVNpemUpKQorICAgICAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7IGF3YWl0IHRlc3RDYW52YXNUb1BlZXJDb25uZWN0aW9u
KHQsIHN1YmNhc2UpOyB9LCB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkpOworfQorY3JlYXRlQ2Fu
dmFzVG9QZWVyQ29ubmVjdGlvblRlc3RzKDAsIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggMmNmZjY5ZTY1MWI5NDE3YjVlMTk5OGJiZDU2
NzkyMTlhNTdmMmNlMS4uZTVhZDViOWFlOWI0NDMyYjk0NzNjNTQwNjU1ZWM2MjcxNDdmYWJmZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMjk4LDYgKzI5OCwxMyBAQCBmdW5jdGlvbiBzZXRI
MjY0SGlnaENvZGVjKHNkcCkKICAgICB9KS5qb2luKCdcclxuJyk7CiB9CiAKK2NvbnN0IHRlc3RD
b2xvcnMgPSB7CisgICAgd2hpdGU6IFsgMjU1LCAyNTUsIDI1NSwgMjU1IF0sCisgICAgeWVsbG93
OiBbIDI1NSwgMjU1LCAwLCAyNTUgXSwKKyAgICBjeWFuOiBbIDAsIDI1NSwgMjU1LCAyNTUgXSwK
KyAgICBsaWdodEdyZWVuOiBbIDAsIDEyOCwgMCwgMjU1IF0sCit9OworCiAvLyBTZXRzIHRoZSBj
YW1lcmEgaW1hZ2Ugb3JpZW50YXRpb24gaWYgcnVubmluZyBvbiB0ZXN0IHJ1bm5lci4KIC8vIGFu
Z2xlOiBvcmllbnRhdGlvbiBhbmdsZSBvZiB0aGUgY2FtZXJhIGltYWdlIGluIGRlZ3JlZXMKIGZ1
bmN0aW9uIHNldE1vY2tDYW1lcmFJbWFnZU9yaWVudGF0aW9uKGFuZ2xlLCB2aWRlb1NpemUpIHsK
QEAgLTM0MCwxOCArMzQ3LDg0IEBAIGZ1bmN0aW9uIGFzc2VydEltYWdlRGF0YUNvbnRhaW5zTW9j
a0NhbWVyYUltYWdlKGltYWdlRGF0YSwgYW5nbGUsIGRlc2MpCiAgICAgICAgIHJldHVybiBuOwog
ICAgIH0KIAotICAgIGNvbnN0IHdoaXRlID0gWyAyNTUsIDI1NSwgMjU1LCAyNTUgXTsKICAgICBj
b25zdCB3aGl0ZVBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjA0LCAwLjcgXSk7Ci0gICAgY29uc3Qg
eWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CiAgICAgY29uc3QgeWVsbG93UG9pbnQgPSBy
b3RhdGVQb2ludChbIDAuMDgsIDAuNyBdKTsKLSAgICBjb25zdCBjeWFuID0gWyAwLCAyNTUsIDI1
NSwgMjU1IF07CiAgICAgY29uc3QgY3lhblBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjEyLCAwLjcg
XSk7Ci0gICAgY29uc3QgbGlnaHRHcmVlbiA9IFsgMCwgMTI4LCAwLCAyNTUgXTsKICAgICBjb25z
dCBsaWdodEdyZWVuUG9pbnQgPSByb3RhdGVQb2ludChbIDAuMTYsIDAuNyBdKTsKIAogICAgIGxl
dCBlcnIgPSAxMTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHdoaXRlUG9pbnQpLCB3aGl0ZSwgZXJyLCAid2hpdGUgcmVjdCBub3Qg
Zm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdl
RGF0YVBpeGVsKGltYWdlRGF0YSwgeWVsbG93UG9pbnQpLCB5ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIGN5YW4sIGVyciwgImN5YW4g
cmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxz
KGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgbGlnaHRHcmVlblBvaW50KSwgbGlnaHRHcmVl
biwgZXJyLCAibGlnaHQgZ3JlZW4gcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOworICAgIGFzc2Vy
dF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgd2hpdGVQ
b2ludCksIHRlc3RDb2xvcnMud2hpdGUsIGVyciwgIndoaXRlIHJlY3Qgbm90IGZvdW5kICIgKyBk
ZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChp
bWFnZURhdGEsIHllbGxvd1BvaW50KSwgdGVzdENvbG9ycy55ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIHRlc3RDb2xvcnMuY3lhbiwg
ZXJyLCAiY3lhbiByZWN0IG5vdCBmb3VuZCAiICsgZGVzYyk7CisgICAgYXNzZXJ0X2FycmF5X2Fw
cHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBsaWdodEdyZWVuUG9pbnQp
LCB0ZXN0Q29sb3JzLmxpZ2h0R3JlZW4sIGVyciwgImxpZ2h0IGdyZWVuIHJlY3Qgbm90IGZvdW5k
ICIgKyBkZXNjKTsKK30KKworLy8gRHJhd3MgYSBjYW52YXMgdGVzdCBwYXR0ZXJuIHdpdGggV2Vi
R0wuCisvLyBDYW4gYmUgY2hlY2tlZCB3aXRoIGBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2Fu
dmFzVGVzdFBhdHRlcm4oKWAuCisvLyBQYXR0ZXJuIGlzIGZvdXIgY29sb3JzLCBpdCBjYW4gZGV0
ZWN0IGZsaXBzIGFuZCByb3RhdGlvbnMuCisvLyBgcGF0dGVybk51bWJlcmAgY2FuIGJlIHVzZWQg
aW4gdG8gdGVzdCBtdWx0aXBsZSBzdWJzZXF1ZW50IGZyYW1lcyAocGFzcyBpbiBmcmFtZSBudW1i
ZXIpLgorLy8gUGF0dGVybiBpcyBmb3VyIGJveGVzIHdpdGggY29sb3IgY3ljbGVkIGJhc2VkIG9u
IHBhdHRlcm5OdW1iZXIgJSA0LgorZnVuY3Rpb24gZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0wo
Y2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIHBhdHRlcm5OdW1iZXIgPSBwYXR0ZXJuTnVt
YmVyIHx8IDA7CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wiLCB7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSk7CisgICAgZ2wu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6ZSA9IFsgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBbCisgICAgICAgIFswLjAs
IDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwgMS4wXSwKKyAgICAgICAg
WzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwgMC41LCAwLjVdLAorICAg
IF07CisgICAgY29uc3QgYm94Q29sb3JzID0gT2JqZWN0LnZhbHVlcyh0ZXN0Q29sb3JzKTsKKyAg
ICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBjb25zdCBpID0gKG4gKyBw
YXR0ZXJuTnVtYmVyKSAlIGJveGVzLmxlbmd0aDsKKyAgICAgICAgY29uc3QgY29sb3IgPSBib3hD
b2xvcnNbaV07CisgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW25dOworICAgICAgICBnbC5zY2lz
c29yKGJveFswXSAqIGJveFNpemVbMF0sIGJveFsxXSAqIGJveFNpemVbMV0sIGJveFsyXSAqIGJv
eFNpemVbMF0sIGJveFszXSAqIGJveFNpemVbMV0pOworICAgICAgICBnbC5jbGVhckNvbG9yKGNv
bG9yWzBdIC8gMjU1LiwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LiwgY29sb3JbM10g
LyAyNTUuKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQog
fQorCitmdW5jdGlvbiBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2FudmFzVGVzdFBhdHRlcm4o
aW1hZ2VTb3VyY2UsIHBhdHRlcm5OdW1iZXIsIGRlc2MpCit7CisgICAgcGF0dGVybk51bWJlciA9
IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBkZXNjID0gZGVzYyB8fCAiIjsKKyAgICBjb25zdCB2
ZXJpZnlXaWR0aCA9IDMwMDsKKyAgICAvLyBGSVhNRTogY2FudmFzLXRvLXBlZXItY29ubmVjdGlv
biBvbiBDYXRhbGluYS1XSzIgd291bGQgZmFpbCB3aXRoIDAgLT4gOCBhbmQgMjU1IC0+IDI0MCBm
b3Igc29tZSByZWFzb24uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNTcwOAorICAgIGNvbnN0IGVyciA9IDE1OworICAgIGxldCBpbWFnZVNvdXJjZVNp
emU7CisgICAgbGV0IGltYWdlU291cmNlSGVpZ2h0OworICAgIGlmIChpbWFnZVNvdXJjZSBpbnN0
YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpCisgICAgICAgIGltYWdlU291cmNlU2l6ZSA9IFtpbWFn
ZVNvdXJjZS52aWRlb1dpZHRoLCBpbWFnZVNvdXJjZS52aWRlb0hlaWdodF07CisgICAgZWxzZQor
ICAgICAgICBpbWFnZVNvdXJjZVNpemUgPSBbaW1hZ2VTb3VyY2Uud2lkdGgsIGltYWdlU291cmNl
LmhlaWdodF07CisKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVi
dWdlIik7CisgICAgaWYgKGRlYnVnZSkKKyAgICAgICAgZGVidWdlLmFwcGVuZENoaWxkKGNhbnZh
cyk7CisKKyAgICBjYW52YXMud2lkdGggPSB2ZXJpZnlXaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0
ID0gKHZlcmlmeVdpZHRoIC8gaW1hZ2VTb3VyY2VTaXplWzBdKSAqIGltYWdlU291cmNlU2l6ZVsx
XTsKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjdHguZHJh
d0ltYWdlKGltYWdlU291cmNlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwor
ICAgIGNvbnN0IGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjb25zdCBwb2ludENvbG9ycyA9IE9iamVjdC52YWx1ZXMo
dGVzdENvbG9ycyk7CisgICAgY29uc3QgcG9pbnRzID0gWworICAgICAgICBbIDAuMSwgMC4xIF0s
CisgICAgICAgIFsgMC45LCAwLjEgXSwKKyAgICAgICAgWyAwLjksIDAuOSBdLAorICAgICAgICBb
IDAuMSwgMC45IF0sCisgICAgXTsKKyAgICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgewor
ICAgICAgICBsZXQgaSA9IChuICsgcGF0dGVybk51bWJlcikgJSBwb2ludHMubGVuZ3RoOworICAg
ICAgICBsZXQgY29sb3IgPSBwb2ludENvbG9yc1tpXTsKKyAgICAgICAgbGV0IHBvaW50ID0gcG9p
bnRzW25dOworICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHBvaW50KSwgY29sb3IsIGVyciwgYHJlY3QgJHtjb2xvci5qb2luKCIs
Iil9IGF0ICR7cG9pbnQuam9pbigiLCIpfSBub3QgZm91bmQgJHtkZXNjfWApOworICAgIH0KKyAg
ICBpZiAoZGVidWdlKQorICAgICAgICBkZWJ1Z2UucmVtb3ZlQ2hpbGQoY2FudmFzKTsKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tcmVwbGFjZS10cmFjay5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxh
Y2UtdHJhY2suaHRtbAppbmRleCBhNjJhZWQ3OTFkYjg5YWUxODYxNzNiMGI3OTc5ZDMxMjA0OWI0
N2ZjLi5mOTA0ZGM4MmY0YzJkMzIyYzFhMDRkNDNjYzhmNWUxOTRkOWU3NWY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKQEAgLTExLDcgKzExLDYgQEAK
IDxkaXYgaWQ9ImxvZyI+PC9kaXY+CiAgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5
PSIiPjwvdmlkZW8+CiAgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0MCIgaGVp
Z2h0PSI0ODAiPjwvY2FudmFzPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvIik7CiBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450227</attachid>
            <date>2022-01-28 05:11:48 -0800</date>
            <delta_ts>2022-01-28 06:28:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235600-20220128151146.patch</filename>
            <type>text/plain</type>
            <size>22117</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uZWQ2NTZiMzlmOWU5M2ViMzljZjhlZThiNzIyODY0
YzM5MTA1MWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTI3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgTWlycm9yIGFuZCByb3RhdGUgdGhlIFdlYkdMIGlt
YWdlIGF0IHRoZSBzb3VyY2Ugc2luY2UgV2ViUlRDCisgICAgICAgIGRvZXMgbm90IHN1cHBvcnQg
bWlycm9yaW5nLgorCisgICAgICAgIFRlc3Q6IHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0
aW9uLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0NW
VXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMu
bW06CisgICAgICAgIChXZWJDb3JlOjpzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZm
ZXIpOgorCiAyMDIyLTAxLTI2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFtNb2RlbF0gTW91c2UgaW50ZXJhY3Rpb24gZm9yIDxtb2RlbD4gaXMgZmxpcHBl
ZCBpbiB0aGUgeS1heGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKaW5kZXggYzlmYmUw
YmEwNWEyYmMyMzU3MDBhNmU2Yzk5NjRlZmRiYzFiNjEzNy4uYzU2ZTY5NTM1ZTcwOTdmZGQyNWQy
ZmNlMzAyZTEwNjhlNzZjNmUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAt
MzAsMjAgKzMwLDI2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIgogI2lu
Y2x1ZGUgIklPU3VyZmFjZS5oIgogCi0jaWYgRU5BQkxFKFZJREVPKQotbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwotfQotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgPG1lbW9yeT4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByb2Nlc3NJZGVudGl0eTsK
IAorI2lmIEVOQUJMRShWSURFTykKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIEltYWdlUm90YXRpb25TZXNz
aW9uVlQ7CisjZW5kaWYKKwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTEFOR0xFIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcik7
CkBAIC05MCw2ICs5Niw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9v
bCBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVjb25maWd1cmF0aW9uIHsgZmFsc2UgfTsKICAgICBT
Y29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IG1faGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVz
dDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlUm90YXRpb25TZXNzaW9uVlQ+IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb247CiAj
ZW5kaWYKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDcxMjlmMjI0YzI2NDBhZTQ5ZjdjOTMy
ZTA3Yzk0NTJmOTM0NjA0Y2QuLjMyYTE0MzYwOGY1OTAzMTUxNmM1OTE3Y2VhZTdmZmQwMzlmZDRl
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNTQsNiArNTQsNyBAQAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkltYWdlUm90YXRp
b25TZXNzaW9uVlQuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNlbmRpZgog
CkBAIC03NzUsMTEgKzc3NiwxOSBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0g
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIC8vIERpc3BsYXkg
c3VyZmFjZSBpcyBub3QgbWFya2VkIGluIHVzZSBzaW5jZSB3ZSB3aWxsIG1pcnJvciBhbmQgcm90
YXRlIGl0IGV4cGxpY2l0bHkuCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxC
dWZmZXIoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBNZWRpYVNhbXBsZUFW
Rk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgTWVkaWFTYW1w
bGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKKyAgICAvLyBNaXJy
b3IgYW5kIHJvdGF0ZSB0aGUgcGl4ZWwgYnVmZmVyIGV4cGxpY2l0bHksIGFzIFdlYlJUQyBlbmNv
ZGVycyBjYW5ub3QgbWlycm9yLgorICAgIGlmICghbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lv
bikKKyAgICAgICAgbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1h
Z2VSb3RhdGlvblNlc3Npb25WVD4oSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9w
ZXJ0aWVzIHsgdHJ1ZSwgZmFsc2UsIDE4MCB9LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
LCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CisgICAg
YXV0byBtZWRpYVNhbXBsZVBpeGVsQnVmZmVyID0gbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lv
bi0+cm90YXRlKHBpeGVsQnVmZmVyLT5nZXQoKSk7CisgICAgaWYgKCFtZWRpYVNhbXBsZVBpeGVs
QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQorICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlci5nZXQoKSwgbV9yZXNvdXJjZU93bmVyKTsKKyAgICByZXR1cm4gTWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKG1lZGlhU2FtcGxlUGl4ZWxC
dWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246Ok5vbmUsIGZhbHNlKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5oCmluZGV4IDFlOWM3MzI4ZGRjNzU2YmM0NmUyOGYxYTVlYTRhZjU0M2M0
YWE2YmYuLjFhNjhkYTJiZDljZjM4Mjc1OTY0YTFiNTI3YWQ1OTI2MDNhZTQ4ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBA
IC0xNjEsNiArMTYxLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFX0FDQ0VM
RVJBVE9SKQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShj
b25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRPd25lcnNoaXBJZGVudGl0eShJT1N1cmZhY2VSZWYsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYp
OwogCiAgICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5k
ZXggYWMwODcxZmZiYTU5NmNkM2Q0NzRkMTUxZjc5NDY0Mjg2ODFjOWJlMy4uOGNjMTZmZGVhMDUz
MTk0NDFmN2FlMTI0ZjMyNTc3YWQzNTZmZmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtNDk0LDE0ICs0OTQsMjEg
QEAgdm9pZCBJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGYKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRV9BQ0NF
TEVSQVRPUikKIAogdm9pZCBJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFBy
b2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikKK3sKKyAgICBzZXRPd25lcnNoaXBJZGVudGl0
eShtX3N1cmZhY2UuZ2V0KCksIHJlc291cmNlT3duZXIpOworfQorCit2b2lkIElPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IFByb2Nlc3NJ
ZGVudGl0eSYgcmVzb3VyY2VPd25lcikKIHsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJT
SElQX0lERU5USVRZKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCiAgICAgQVNTRVJUKHJl
c291cmNlT3duZXIpOworICAgIEFTU0VSVChzdXJmYWNlKTsKICAgICB0YXNrX2lkX3Rva2VuX3Qg
b3duZXJUYXNrSWRUb2tlbiA9IHJlc291cmNlT3duZXIudGFza0lkVG9rZW4oKTsKLSAgICBhdXRv
IHJlc3VsdCA9IElPU3VyZmFjZVNldE93bmVyc2hpcElkZW50aXR5KG1fc3VyZmFjZS5nZXQoKSwg
b3duZXJUYXNrSWRUb2tlbiwga0lPU3VyZmFjZU1lbW9yeUxlZGdlclRhZ0dyYXBoaWNzLCAwKTsK
KyAgICBhdXRvIHJlc3VsdCA9IElPU3VyZmFjZVNldE93bmVyc2hpcElkZW50aXR5KHN1cmZhY2Us
IG93bmVyVGFza0lkVG9rZW4sIGtJT1N1cmZhY2VNZW1vcnlMZWRnZXJUYWdHcmFwaGljcywgMCk7
CiAgICAgaWYgKHJlc3VsdCAhPSBrSU9SZXR1cm5TdWNjZXNzKQotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihJT1N1cmZhY2UsICJJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5OiBGYWls
ZWQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIElPU3VyZmFjZSAlcCwgdGFzayBpZCB0b2tlbjogJWQs
IGVycm9yOiAlZCIsIG1fc3VyZmFjZS5nZXQoKSwgKGludClvd25lclRhc2tJZFRva2VuLCByZXN1
bHQpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJT1N1cmZhY2UsICJJT1N1cmZhY2U6OnNl
dE93bmVyc2hpcElkZW50aXR5OiBGYWlsZWQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIElPU3VyZmFj
ZSAlcCwgdGFzayBpZCB0b2tlbjogJWQsIGVycm9yOiAlZCIsIHN1cmZhY2UsIChpbnQpb3duZXJU
YXNrSWRUb2tlbiwgcmVzdWx0KTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN1cmZhY2UpOwog
ICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZU93bmVyKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmgKaW5kZXggMmU1ZjE5
NjU4YTM1YmY1OGYyY2Q0ZTBmYTc0YjlkNWEyYmFmMmRjZi4uZjRjNWI1MTM3ZTM4MGNmMzg4MmNl
MGZjYmI3NjE5NWRlZjAwNWE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9DVlV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBAIHVzaW5nIENWUGl4ZWxC
dWZmZXJQb29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOwogdXNpbmcgQ1ZQaXhl
bEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgUHJvY2Vzc0lkZW50aXR5OwogCiAvLyBDcmVhdGVzIENWUGl4ZWxCdWZmZXJQb29sIHRo
YXQgY3JlYXRlcyBDVlBpeGVsQnVmZmVycyBiYWNrZWQgYnkgSU9TdXJmYWNlcy4KIC8vIFRoZXNl
IGJ1ZmZlcnMgY2FuIGJlIGZvciBleGFtcGxlIHNlbnQgdGhyb3VnaCBJUEMuCkBAIC00NSw0ICs0
Niw4IEBAIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiwgQ1ZSZXR1cm4+IGNyZWF0ZUNWUGl4ZWxCdWZmCiBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4sIENWUmV0dXJuPiBjcmVhdGVDVlBpeGVsQnVmZmVy
KElPU3VyZmFjZVJlZik7CiAKIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNyZWF0ZUNHQ29s
b3JTcGFjZUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CisKKy8vIFNob3VsZCBi
ZSBjYWxsZWQgd2l0aCBub24tZW1wdHkgUHJvY2Vzc0lkZW50aXR5LgorV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJl
ZiwgY29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggMzI2ZjA0MzJiNDg2MjIx
OTYyYzc1ZWZjNmRlMDFlZDhhZGM5ZTY2Ny4uMTRmNjJiMDQwNzNjNzg3NDA0OWE2ZmVmZTgxMzkz
M2E2NGZjNDM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIkNWVXRpbGl0aWVz
LmgiCiAKICNpbXBvcnQgIkNvbG9yU3BhY2VDRy5oIgorI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCkBAIC0xMzIsNCArMTMzLDExIEBAIFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNyZWF0ZUNHQ29sb3JTcGFjZUZvckNWUGl4ZWxCdWZm
ZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBiCiAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CiB9
CiAKK3ZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgb3duZXIpCit7CisgICAg
YXV0byBzdXJmYWNlID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZShwaXhlbEJ1ZmZlcik7Cisg
ICAgQVNTRVJUKHN1cmZhY2UpOworICAgIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHko
c3VyZmFjZSwgb3duZXIpOworfQorCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzE5NGU1ZjJmZWVhMjRiNmM4OTllMmE2
ZDY5YTI4Mzk3MTcwM2JmMi4uMTRkYzc0NjE2MGZiNTUzMWJhODc5YWZlMmU2YmM3ZjlhNmEzZWQ5
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTI3ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdlYkdMIGNhbnZhcyB0aHJv
dWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24u
CisKKyAgICAgICAgVGVzdCBzZW5kaW5nIFdlYkdMIGltYWdlIHRocm91Z2ggYSBwZWVyIGNvbm5l
Y3Rpb24gdG8gYSBsb2NhbCB2aWRlbworICAgICAgICBhbmQgYXNzZXJ0IHRoYXQgdGhlIGltYWdl
IGlzIGFzIGRyYXduLgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRt
bDogQWRkZWQuCisgICAgICAgICogd2VicnRjL3JvdXRpbmVzLmpzOgorICAgICAgICAqIHdlYnJ0
Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWw6CisKIDIwMjItMDEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdCBzdWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggODE3YWFlZDU1MWYxZDg4OWZhYjgwY2ZmOWVmZThmNmFmODg4
NDAzNi4uOGZhNTYwOWM5ZjFlMTk2YjQ0YWU5ZGUwYmQ4MGEwYzE4NDMyNWY3ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk0LDYgKzc5NCw3IEBA
IHdlYmtpdC5vcmcvYi8yMzE4MTEgd2ViYXVkaW8vc3VzcGVuZC1jb250ZXh0LXdoaWxlLWludGVy
cnVwdGVkLmh0bWwgWyBUaW1lb3V0IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dmlkZW8tcnZmYyBbIFBhc3MgXQogZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtcnZmYy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBG
YWlsdXJlIF0KK3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgWyBGYWlsdXJl
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWNhbGxiYWNrLXdlYnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxs
YmFjay1iZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFj
ay1kdXJpbmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTg2ZTBi
ZTQ0YTY5YjFiYzRhMzRmYWQ2YTA2ZTRlZDQxYWUyNTY3NS4uM2NkYWE2MGNjNzQxZDJjOTRhNjcy
NmNhZjIwM2U2YjEwMjIyYmZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDEsNiArNDEsOCBAQCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9hYm9ydC9nZW5lcmFsLmFueS53b3JrZXIu
aHRtbCBbIFBhc3MgRgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL2Jyb3dzaW5nLXRoZS13ZWIvaGlzdG9yeS10cmF2ZXJzYWwvcGVyc2lzdGVkLXVzZXItc3Rh
dGUtcmVzdG9yYXRpb24vc2Nyb2xsLXJlc3RvcmF0aW9uLWZyYWdtZW50LXNjcm9sbGluZy1jcm9z
cy1vcmlnaW4uaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1vZmZlci5odG1s
IFsgRmFpbHVyZSBdCiAKK3dlYmtpdC5vcmcvYi8yMzU3NjUgd2VicnRjL2NhbnZhcy10by1wZWVy
LWNvbm5lY3Rpb24uaHRtbCBbIEZhaWx1cmUgXQorCiAjIFNpbXVsYXRvciBkb2Vzbid0IHN1cHBv
cnQgV2ViQXNzZW1ibHkuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vd2Fz
bV9zdHJlYW1faW5zdGFudGlhdGVfdGVzdC5odG1sICBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL3dhc21fc3RyZWFtX2NvbXBpbGVfdGVzdC5odG1sICBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5l
Y3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNv
bm5lY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMTdjN2RhMWM0ZTk2YTM2YzlmMmUw
YmM5MTQ0NjBjZWNmM2IwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMv
Y2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgZHJhdzogd2l0aFdlYkdMCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9j
YW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvY2FudmFz
LXRvLXBlZXItY29ubmVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0Y2Y3YTcwOTU5NzQ0ZjViMWNj
MWM1NDZlMDdmODY1OTA2OTIxMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KK3ZpZGVvIHsgd2lkdGg6IDQwcHg7IH0KK2NhbnZhcyB7IHdpZHRoOiA0MHB4OyB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZWJ1Z2UiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gd2l0aDJEQ29udGV4dChzdWJjYXNlLCBjYW52
YXMsIHBhdHRlcm5OdW1iZXIpCit7CisgICAgZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuMkQoY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKTsKK30KKworZnVuY3Rpb24gd2l0aFdlYkdMKHN1YmNhc2UsIGNhbnZh
cywgcGF0dGVybk51bWJlcikKK3sKKyAgICBkcmF3Q2FudmFzVGVzdFBhdHRlcm5XZWJHTChjYW52
YXMsIHBhdHRlcm5OdW1iZXIpOworfQorCithc3luYyBmdW5jdGlvbiBjcmVhdGVMb2NhbFBlZXJD
b25uZWN0aW9uU3RyZWFtKHN0cmVhbSkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0
aW9uKSA9PiB7CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdl
dFZpZGVvVHJhY2tzKClbMF0sIHN0cmVhbSk7CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9u
KSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVu
dCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRyYWNrRXZlbnQudHJhY2sgaW5z
dGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0
cmFja0V2ZW50LnJlY2VpdmVyIGluc3RhbmNlb2YgUlRDUnRwUmVjZWl2ZXIpOworICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkodHJhY2tFdmVudC5zdHJlYW1zKSwgIkFy
cmF5LmlzQXJyYXkoKSBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShPYmplY3QuaXNGcm96ZW4odHJhY2tFdmVudC5zdHJlYW1zKSwgIk9iamVjdC5pc0Zy
b3plbigpIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJh
Y2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgIH0p
OworfQorCitmdW5jdGlvbiB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbykKK3sKKyAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJh
bWVDYWxsYmFjaygobm93LCBtZXRhZGF0YSkgPT4geworICAgICAgICAgICAgcmVzb2x2ZShub3cs
IG1ldGFkYXRhKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2NvbnN0IHdpZHRoID0gNTAw
OworY29uc3QgaGVpZ2h0ID0gNTAwOworCithc3luYyBmdW5jdGlvbiB0ZXN0Q2FudmFzVG9QZWVy
Q29ubmVjdGlvbih0LCBzdWJjYXNlKQoreworICAgIGNvbnN0IGRlYnVnZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZWJ1Z2UiKTsKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKKyAgICBjYW52
YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgIGRlYnVnZS5hcHBlbmRDaGlsZChjYW52YXMpOworICAg
IHQuYWRkX2NsZWFudXAoYXN5bmMgKCkgPT4gZGVidWdlLnJlbW92ZUNoaWxkKGNhbnZhcykpOwor
ICAgIGNvbnN0IGZyYW1lUmF0ZSA9IDYwOworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQg
Y3JlYXRlTG9jYWxQZWVyQ29ubmVjdGlvblN0cmVhbShjYW52YXMuY2FwdHVyZVN0cmVhbSgpKTsK
KyAgICB0LmFkZF9jbGVhbnVwKGFzeW5jICgpID0+IGNsb3NlQ29ubmVjdGlvbnMoKSk7CisgICAg
Y29uc3QgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOworICAgIHZpZGVv
LmF1dG9wbGF5ID0gdHJ1ZTsKKyAgICB2aWRlby5jb250cm9scyA9IGZhbHNlOworICAgIGRlYnVn
ZS5hcHBlbmRDaGlsZCh2aWRlbyk7CisgICAgdC5hZGRfY2xlYW51cChhc3luYyAoKSA9PiBkZWJ1
Z2UucmVtb3ZlQ2hpbGQodmlkZW8pKTsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBsb2NhbFN0cmVh
bTsKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIGRvbid0IGtub3cgd2hpY2ggZnJhbWVzIGFy
ZSBza2lwcGVkLgorICAgIC8vIERyYXcgdW50aWwgdmlkZW8gc2l6ZSBjaGFuZ2VzIGFuZCB0aGVu
IHRyeSB0byBjbGVhciBzdWJzZXF1ZW50IGVucXVldWVkCisgICAgLy8gZnJhbWVzLgorICAgIGNv
bnN0IGlkID0gc2V0SW50ZXJ2YWwoKCkgPT4geyBzdWJjYXNlLmRyYXcoc3ViY2FzZSwgY2FudmFz
LCAxKX0sIDEwMCk7CisgICAgYXdhaXQgd2FpdEZvclZpZGVvU2l6ZSh2aWRlbywgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjbGVhckludGVydmFsKGlkKTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICAgICAgc3ViY2FzZS5kcmF3KHN1YmNhc2UsIGNh
bnZhcywgMSk7CisgICAgICAgIGF3YWl0IHdhaXRGb3JWaWRlb0ZyYW1lKHZpZGVvKTsKKyAgICAg
ICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rlc3RQYXR0ZXJuKHZpZGVvLCAxLCAi
YmFzZSBjYXNlIik7CisgICAgfQorICAgIC8vIFRyeSB0byBjbGVhciB0aGUgdmlkZW8gZnJhbWUg
cXVldWUuCisgICAgYXdhaXQgd2FpdEZvcigxMDApOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAyNTsgKytpKSB7CisgICAgICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIGkpOwor
ICAgICAgICBhd2FpdCB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbyk7CisgICAgICAgIGFzc2VydElt
YWdlU291cmNlQ29udGFpbnNDYW52YXNUZXN0UGF0dGVybih2aWRlbywgaSwgYGl0ZXJhdGlvbjog
JHtpfWApOworICAgIH0KK30KKworY29uc3Qgc3ViY2FzZXMgPSBbXTsKKy8vIEZJWE1FOiBUdGhp
cyBzaG91bGQgYmUgZmlsbGVkIHdoZW4gMkQgY29udGV4dCBzdXBwb3J0cyBIVE1MQ2FudmFzRWxl
bWVudC5jYXB0dXJlU3RyZWFtKCkuCisvLyBzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoMkRDb250
ZXh0fSk7CitzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoV2ViR0x9KTsKKworZnVuY3Rpb24gdGVz
dERlc2NyaXB0aW9uKHN1YmNhc2UpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoc3ViY2FzZSku
bWFwKChrKSA9PiBgJHtrfTogJHt0eXBlb2Ygc3ViY2FzZVtrXSA9PT0gImZ1bmN0aW9uIiA/IHN1
YmNhc2Vba10ubmFtZSA6IHN1YmNhc2Vba119YCkuam9pbigiLCIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNUb1BlZXJDb25uZWN0aW9uVGVzdHMoc2xpY2UsIHNsaWNlcykgeworICAgIGNv
bnN0IHNsaWNlU2l6ZSA9IE1hdGguZmxvb3Ioc3ViY2FzZXMubGVuZ3RoIC8gc2xpY2VzKTsKKyAg
ICBjb25zdCBmaXJzdCA9IHNsaWNlU2l6ZSAqIHNsaWNlOworICAgIGZvciAoY29uc3Qgc3ViY2Fz
ZSBvZiBzdWJjYXNlcy5zbGljZShmaXJzdCwgZmlyc3QgKyBzbGljZVNpemUpKQorICAgICAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7IGF3YWl0IHRlc3RDYW52YXNUb1BlZXJDb25uZWN0aW9u
KHQsIHN1YmNhc2UpOyB9LCB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkpOworfQorY3JlYXRlQ2Fu
dmFzVG9QZWVyQ29ubmVjdGlvblRlc3RzKDAsIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggMmNmZjY5ZTY1MWI5NDE3YjVlMTk5OGJiZDU2
NzkyMTlhNTdmMmNlMS4uZTVhZDViOWFlOWI0NDMyYjk0NzNjNTQwNjU1ZWM2MjcxNDdmYWJmZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMjk4LDYgKzI5OCwxMyBAQCBmdW5jdGlvbiBzZXRI
MjY0SGlnaENvZGVjKHNkcCkKICAgICB9KS5qb2luKCdcclxuJyk7CiB9CiAKK2NvbnN0IHRlc3RD
b2xvcnMgPSB7CisgICAgd2hpdGU6IFsgMjU1LCAyNTUsIDI1NSwgMjU1IF0sCisgICAgeWVsbG93
OiBbIDI1NSwgMjU1LCAwLCAyNTUgXSwKKyAgICBjeWFuOiBbIDAsIDI1NSwgMjU1LCAyNTUgXSwK
KyAgICBsaWdodEdyZWVuOiBbIDAsIDEyOCwgMCwgMjU1IF0sCit9OworCiAvLyBTZXRzIHRoZSBj
YW1lcmEgaW1hZ2Ugb3JpZW50YXRpb24gaWYgcnVubmluZyBvbiB0ZXN0IHJ1bm5lci4KIC8vIGFu
Z2xlOiBvcmllbnRhdGlvbiBhbmdsZSBvZiB0aGUgY2FtZXJhIGltYWdlIGluIGRlZ3JlZXMKIGZ1
bmN0aW9uIHNldE1vY2tDYW1lcmFJbWFnZU9yaWVudGF0aW9uKGFuZ2xlLCB2aWRlb1NpemUpIHsK
QEAgLTM0MCwxOCArMzQ3LDg0IEBAIGZ1bmN0aW9uIGFzc2VydEltYWdlRGF0YUNvbnRhaW5zTW9j
a0NhbWVyYUltYWdlKGltYWdlRGF0YSwgYW5nbGUsIGRlc2MpCiAgICAgICAgIHJldHVybiBuOwog
ICAgIH0KIAotICAgIGNvbnN0IHdoaXRlID0gWyAyNTUsIDI1NSwgMjU1LCAyNTUgXTsKICAgICBj
b25zdCB3aGl0ZVBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjA0LCAwLjcgXSk7Ci0gICAgY29uc3Qg
eWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CiAgICAgY29uc3QgeWVsbG93UG9pbnQgPSBy
b3RhdGVQb2ludChbIDAuMDgsIDAuNyBdKTsKLSAgICBjb25zdCBjeWFuID0gWyAwLCAyNTUsIDI1
NSwgMjU1IF07CiAgICAgY29uc3QgY3lhblBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjEyLCAwLjcg
XSk7Ci0gICAgY29uc3QgbGlnaHRHcmVlbiA9IFsgMCwgMTI4LCAwLCAyNTUgXTsKICAgICBjb25z
dCBsaWdodEdyZWVuUG9pbnQgPSByb3RhdGVQb2ludChbIDAuMTYsIDAuNyBdKTsKIAogICAgIGxl
dCBlcnIgPSAxMTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHdoaXRlUG9pbnQpLCB3aGl0ZSwgZXJyLCAid2hpdGUgcmVjdCBub3Qg
Zm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdl
RGF0YVBpeGVsKGltYWdlRGF0YSwgeWVsbG93UG9pbnQpLCB5ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIGN5YW4sIGVyciwgImN5YW4g
cmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxz
KGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgbGlnaHRHcmVlblBvaW50KSwgbGlnaHRHcmVl
biwgZXJyLCAibGlnaHQgZ3JlZW4gcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOworICAgIGFzc2Vy
dF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgd2hpdGVQ
b2ludCksIHRlc3RDb2xvcnMud2hpdGUsIGVyciwgIndoaXRlIHJlY3Qgbm90IGZvdW5kICIgKyBk
ZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChp
bWFnZURhdGEsIHllbGxvd1BvaW50KSwgdGVzdENvbG9ycy55ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIHRlc3RDb2xvcnMuY3lhbiwg
ZXJyLCAiY3lhbiByZWN0IG5vdCBmb3VuZCAiICsgZGVzYyk7CisgICAgYXNzZXJ0X2FycmF5X2Fw
cHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBsaWdodEdyZWVuUG9pbnQp
LCB0ZXN0Q29sb3JzLmxpZ2h0R3JlZW4sIGVyciwgImxpZ2h0IGdyZWVuIHJlY3Qgbm90IGZvdW5k
ICIgKyBkZXNjKTsKK30KKworLy8gRHJhd3MgYSBjYW52YXMgdGVzdCBwYXR0ZXJuIHdpdGggV2Vi
R0wuCisvLyBDYW4gYmUgY2hlY2tlZCB3aXRoIGBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2Fu
dmFzVGVzdFBhdHRlcm4oKWAuCisvLyBQYXR0ZXJuIGlzIGZvdXIgY29sb3JzLCBpdCBjYW4gZGV0
ZWN0IGZsaXBzIGFuZCByb3RhdGlvbnMuCisvLyBgcGF0dGVybk51bWJlcmAgY2FuIGJlIHVzZWQg
aW4gdG8gdGVzdCBtdWx0aXBsZSBzdWJzZXF1ZW50IGZyYW1lcyAocGFzcyBpbiBmcmFtZSBudW1i
ZXIpLgorLy8gUGF0dGVybiBpcyBmb3VyIGJveGVzIHdpdGggY29sb3IgY3ljbGVkIGJhc2VkIG9u
IHBhdHRlcm5OdW1iZXIgJSA0LgorZnVuY3Rpb24gZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0wo
Y2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIHBhdHRlcm5OdW1iZXIgPSBwYXR0ZXJuTnVt
YmVyIHx8IDA7CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wiLCB7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSk7CisgICAgZ2wu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6ZSA9IFsgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBbCisgICAgICAgIFswLjAs
IDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwgMS4wXSwKKyAgICAgICAg
WzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwgMC41LCAwLjVdLAorICAg
IF07CisgICAgY29uc3QgYm94Q29sb3JzID0gT2JqZWN0LnZhbHVlcyh0ZXN0Q29sb3JzKTsKKyAg
ICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBjb25zdCBpID0gKG4gKyBw
YXR0ZXJuTnVtYmVyKSAlIGJveGVzLmxlbmd0aDsKKyAgICAgICAgY29uc3QgY29sb3IgPSBib3hD
b2xvcnNbaV07CisgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW25dOworICAgICAgICBnbC5zY2lz
c29yKGJveFswXSAqIGJveFNpemVbMF0sIGJveFsxXSAqIGJveFNpemVbMV0sIGJveFsyXSAqIGJv
eFNpemVbMF0sIGJveFszXSAqIGJveFNpemVbMV0pOworICAgICAgICBnbC5jbGVhckNvbG9yKGNv
bG9yWzBdIC8gMjU1LiwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LiwgY29sb3JbM10g
LyAyNTUuKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQog
fQorCitmdW5jdGlvbiBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2FudmFzVGVzdFBhdHRlcm4o
aW1hZ2VTb3VyY2UsIHBhdHRlcm5OdW1iZXIsIGRlc2MpCit7CisgICAgcGF0dGVybk51bWJlciA9
IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBkZXNjID0gZGVzYyB8fCAiIjsKKyAgICBjb25zdCB2
ZXJpZnlXaWR0aCA9IDMwMDsKKyAgICAvLyBGSVhNRTogY2FudmFzLXRvLXBlZXItY29ubmVjdGlv
biBvbiBDYXRhbGluYS1XSzIgd291bGQgZmFpbCB3aXRoIDAgLT4gOCBhbmQgMjU1IC0+IDI0MCBm
b3Igc29tZSByZWFzb24uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNTcwOAorICAgIGNvbnN0IGVyciA9IDE1OworICAgIGxldCBpbWFnZVNvdXJjZVNp
emU7CisgICAgbGV0IGltYWdlU291cmNlSGVpZ2h0OworICAgIGlmIChpbWFnZVNvdXJjZSBpbnN0
YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpCisgICAgICAgIGltYWdlU291cmNlU2l6ZSA9IFtpbWFn
ZVNvdXJjZS52aWRlb1dpZHRoLCBpbWFnZVNvdXJjZS52aWRlb0hlaWdodF07CisgICAgZWxzZQor
ICAgICAgICBpbWFnZVNvdXJjZVNpemUgPSBbaW1hZ2VTb3VyY2Uud2lkdGgsIGltYWdlU291cmNl
LmhlaWdodF07CisKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVi
dWdlIik7CisgICAgaWYgKGRlYnVnZSkKKyAgICAgICAgZGVidWdlLmFwcGVuZENoaWxkKGNhbnZh
cyk7CisKKyAgICBjYW52YXMud2lkdGggPSB2ZXJpZnlXaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0
ID0gKHZlcmlmeVdpZHRoIC8gaW1hZ2VTb3VyY2VTaXplWzBdKSAqIGltYWdlU291cmNlU2l6ZVsx
XTsKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjdHguZHJh
d0ltYWdlKGltYWdlU291cmNlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwor
ICAgIGNvbnN0IGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjb25zdCBwb2ludENvbG9ycyA9IE9iamVjdC52YWx1ZXMo
dGVzdENvbG9ycyk7CisgICAgY29uc3QgcG9pbnRzID0gWworICAgICAgICBbIDAuMSwgMC4xIF0s
CisgICAgICAgIFsgMC45LCAwLjEgXSwKKyAgICAgICAgWyAwLjksIDAuOSBdLAorICAgICAgICBb
IDAuMSwgMC45IF0sCisgICAgXTsKKyAgICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgewor
ICAgICAgICBsZXQgaSA9IChuICsgcGF0dGVybk51bWJlcikgJSBwb2ludHMubGVuZ3RoOworICAg
ICAgICBsZXQgY29sb3IgPSBwb2ludENvbG9yc1tpXTsKKyAgICAgICAgbGV0IHBvaW50ID0gcG9p
bnRzW25dOworICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHBvaW50KSwgY29sb3IsIGVyciwgYHJlY3QgJHtjb2xvci5qb2luKCIs
Iil9IGF0ICR7cG9pbnQuam9pbigiLCIpfSBub3QgZm91bmQgJHtkZXNjfWApOworICAgIH0KKyAg
ICBpZiAoZGVidWdlKQorICAgICAgICBkZWJ1Z2UucmVtb3ZlQ2hpbGQoY2FudmFzKTsKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tcmVwbGFjZS10cmFjay5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxh
Y2UtdHJhY2suaHRtbAppbmRleCBhNjJhZWQ3OTFkYjg5YWUxODYxNzNiMGI3OTc5ZDMxMjA0OWI0
N2ZjLi5mOTA0ZGM4MmY0YzJkMzIyYzFhMDRkNDNjYzhmNWUxOTRkOWU3NWY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKQEAgLTExLDcgKzExLDYgQEAK
IDxkaXYgaWQ9ImxvZyI+PC9kaXY+CiAgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5
PSIiPjwvdmlkZW8+CiAgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0MCIgaGVp
Z2h0PSI0ODAiPjwvY2FudmFzPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvIik7CiBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450229</attachid>
            <date>2022-01-28 06:28:58 -0800</date>
            <delta_ts>2022-01-29 03:50:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235600-20220128162856.patch</filename>
            <type>text/plain</type>
            <size>22117</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzZWMyMDI1OGVkNWEw
OGViMmEzMWQ2MDJjMGU2MjZlMjk2YTZmMy4uZWQ2NTZiMzlmOWU5M2ViMzljZjhlZThiNzIyODY0
YzM5MTA1MWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTI3ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdl
YkdMIGNhbnZhcyB0aHJvdWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgTWlycm9yIGFuZCByb3RhdGUgdGhlIFdlYkdMIGlt
YWdlIGF0IHRoZSBzb3VyY2Ugc2luY2UgV2ViUlRDCisgICAgICAgIGRvZXMgbm90IHN1cHBvcnQg
bWlycm9yaW5nLgorCisgICAgICAgIFRlc3Q6IHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0
aW9uLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0NW
VXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMu
bW06CisgICAgICAgIChXZWJDb3JlOjpzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZm
ZXIpOgorCiAyMDIyLTAxLTI2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFtNb2RlbF0gTW91c2UgaW50ZXJhY3Rpb24gZm9yIDxtb2RlbD4gaXMgZmxpcHBl
ZCBpbiB0aGUgeS1heGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLmgKaW5kZXggYzlmYmUw
YmEwNWEyYmMyMzU3MDBhNmU2Yzk5NjRlZmRiYzFiNjEzNy4uYzU2ZTY5NTM1ZTcwOTdmZGQyNWQy
ZmNlMzAyZTEwNjhlNzZjNmUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EuaApAQCAt
MzAsMjAgKzMwLDI2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIgogI2lu
Y2x1ZGUgIklPU3VyZmFjZS5oIgogCi0jaWYgRU5BQkxFKFZJREVPKQotbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwotfQotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2NvcGVkSGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVzdC5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgPG1lbW9yeT4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByb2Nlc3NJZGVudGl0eTsK
IAorI2lmIEVOQUJMRShWSURFTykKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMQ1ZDb2NvYTsKKyNl
bmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIEltYWdlUm90YXRpb25TZXNz
aW9uVlQ7CisjZW5kaWYKKwogY2xhc3MgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTEFOR0xFIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMQ29jb2E+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgUHJvY2Vzc0lkZW50aXR5JiYgcmVzb3VyY2VPd25lcik7
CkBAIC05MCw2ICs5Niw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9v
bCBtX3N3aXRjaGVzR1BVT25EaXNwbGF5UmVjb25maWd1cmF0aW9uIHsgZmFsc2UgfTsKICAgICBT
Y29wZWRIaWdoUGVyZm9ybWFuY2VHUFVSZXF1ZXN0IG1faGlnaFBlcmZvcm1hbmNlR1BVUmVxdWVz
dDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlUm90YXRpb25TZXNzaW9uVlQ+IG1fbWVkaWFTYW1wbGVSb3RhdGlvblNlc3Npb247CiAj
ZW5kaWYKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVkNvY29hOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCmluZGV4IDcxMjlmMjI0YzI2NDBhZTQ5ZjdjOTMy
ZTA3Yzk0NTJmOTM0NjA0Y2QuLjMyYTE0MzYwOGY1OTAzMTUxNmM1OTE3Y2VhZTdmZmQwMzlmZDRl
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtNTQsNiArNTQsNyBAQAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkltYWdlUm90YXRp
b25TZXNzaW9uVlQuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKICNlbmRpZgog
CkBAIC03NzUsMTEgKzc3NiwxOSBAQCBSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0g
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIC8vIERpc3BsYXkg
c3VyZmFjZSBpcyBub3QgbWFya2VkIGluIHVzZSBzaW5jZSB3ZSB3aWxsIG1pcnJvciBhbmQgcm90
YXRlIGl0IGV4cGxpY2l0bHkuCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxC
dWZmZXIoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zdXJmYWNlKCkpOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBNZWRpYVNhbXBsZUFW
Rk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgTWVkaWFTYW1w
bGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKKyAgICAvLyBNaXJy
b3IgYW5kIHJvdGF0ZSB0aGUgcGl4ZWwgYnVmZmVyIGV4cGxpY2l0bHksIGFzIFdlYlJUQyBlbmNv
ZGVycyBjYW5ub3QgbWlycm9yLgorICAgIGlmICghbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lv
bikKKyAgICAgICAgbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1h
Z2VSb3RhdGlvblNlc3Npb25WVD4oSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9w
ZXJ0aWVzIHsgdHJ1ZSwgZmFsc2UsIDE4MCB9LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
LCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CisgICAg
YXV0byBtZWRpYVNhbXBsZVBpeGVsQnVmZmVyID0gbV9tZWRpYVNhbXBsZVJvdGF0aW9uU2Vzc2lv
bi0+cm90YXRlKHBpeGVsQnVmZmVyLT5nZXQoKSk7CisgICAgaWYgKCFtZWRpYVNhbXBsZVBpeGVs
QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAobV9yZXNvdXJjZU93bmVy
KQorICAgICAgICBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIobWVkaWFTYW1w
bGVQaXhlbEJ1ZmZlci5nZXQoKSwgbV9yZXNvdXJjZU93bmVyKTsKKyAgICByZXR1cm4gTWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKG1lZGlhU2FtcGxlUGl4ZWxC
dWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246Ok5vbmUsIGZhbHNlKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5oCmluZGV4IDFlOWM3MzI4ZGRjNzU2YmM0NmUyOGYxYTVlYTRhZjU0M2M0
YWE2YmYuLjFhNjhkYTJiZDljZjM4Mjc1OTY0YTFiNTI3YWQ1OTI2MDNhZTQ4ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBA
IC0xNjEsNiArMTYxLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIEhBVkUoSU9TVVJGQUNFX0FDQ0VM
RVJBVE9SKQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShj
b25zdCBQcm9jZXNzSWRlbnRpdHkmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRPd25lcnNoaXBJZGVudGl0eShJT1N1cmZhY2VSZWYsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYp
OwogCiAgICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5k
ZXggYWMwODcxZmZiYTU5NmNkM2Q0NzRkMTUxZjc5NDY0Mjg2ODFjOWJlMy4uOGNjMTZmZGVhMDUz
MTk0NDFmN2FlMTI0ZjMyNTc3YWQzNTZmZmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtNDk0LDE0ICs0OTQsMjEg
QEAgdm9pZCBJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiYmIGluU3VyZmFjZSwgRm9ybWF0IGYKICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRV9BQ0NF
TEVSQVRPUikKIAogdm9pZCBJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5KGNvbnN0IFBy
b2Nlc3NJZGVudGl0eSYgcmVzb3VyY2VPd25lcikKK3sKKyAgICBzZXRPd25lcnNoaXBJZGVudGl0
eShtX3N1cmZhY2UuZ2V0KCksIHJlc291cmNlT3duZXIpOworfQorCit2b2lkIElPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHkoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IFByb2Nlc3NJ
ZGVudGl0eSYgcmVzb3VyY2VPd25lcikKIHsKICNpZiBIQVZFKElPU1VSRkFDRV9TRVRfT1dORVJT
SElQX0lERU5USVRZKSAmJiBIQVZFKFRBU0tfSURFTlRJVFlfVE9LRU4pCiAgICAgQVNTRVJUKHJl
c291cmNlT3duZXIpOworICAgIEFTU0VSVChzdXJmYWNlKTsKICAgICB0YXNrX2lkX3Rva2VuX3Qg
b3duZXJUYXNrSWRUb2tlbiA9IHJlc291cmNlT3duZXIudGFza0lkVG9rZW4oKTsKLSAgICBhdXRv
IHJlc3VsdCA9IElPU3VyZmFjZVNldE93bmVyc2hpcElkZW50aXR5KG1fc3VyZmFjZS5nZXQoKSwg
b3duZXJUYXNrSWRUb2tlbiwga0lPU3VyZmFjZU1lbW9yeUxlZGdlclRhZ0dyYXBoaWNzLCAwKTsK
KyAgICBhdXRvIHJlc3VsdCA9IElPU3VyZmFjZVNldE93bmVyc2hpcElkZW50aXR5KHN1cmZhY2Us
IG93bmVyVGFza0lkVG9rZW4sIGtJT1N1cmZhY2VNZW1vcnlMZWRnZXJUYWdHcmFwaGljcywgMCk7
CiAgICAgaWYgKHJlc3VsdCAhPSBrSU9SZXR1cm5TdWNjZXNzKQotICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihJT1N1cmZhY2UsICJJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5OiBGYWls
ZWQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIElPU3VyZmFjZSAlcCwgdGFzayBpZCB0b2tlbjogJWQs
IGVycm9yOiAlZCIsIG1fc3VyZmFjZS5nZXQoKSwgKGludClvd25lclRhc2tJZFRva2VuLCByZXN1
bHQpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJT1N1cmZhY2UsICJJT1N1cmZhY2U6OnNl
dE93bmVyc2hpcElkZW50aXR5OiBGYWlsZWQgdG8gY2xhaW0gb3duZXJzaGlwIG9mIElPU3VyZmFj
ZSAlcCwgdGFzayBpZCB0b2tlbjogJWQsIGVycm9yOiAlZCIsIHN1cmZhY2UsIChpbnQpb3duZXJU
YXNrSWRUb2tlbiwgcmVzdWx0KTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN1cmZhY2UpOwog
ICAgIFVOVVNFRF9QQVJBTShyZXNvdXJjZU93bmVyKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLmgKaW5kZXggMmU1ZjE5
NjU4YTM1YmY1OGYyY2Q0ZTBmYTc0YjlkNWEyYmFmMmRjZi4uZjRjNWI1MTM3ZTM4MGNmMzg4MmNl
MGZjYmI3NjE5NWRlZjAwNWE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9DVlV0aWxpdGllcy5oCkBAIC0zNSw2ICszNSw3IEBAIHVzaW5nIENWUGl4ZWxC
dWZmZXJQb29sUmVmID0gc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqOwogdXNpbmcgQ1ZQaXhl
bEJ1ZmZlclJlZiA9IHN0cnVjdCBfX0NWQnVmZmVyKjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgUHJvY2Vzc0lkZW50aXR5OwogCiAvLyBDcmVhdGVzIENWUGl4ZWxCdWZmZXJQb29sIHRo
YXQgY3JlYXRlcyBDVlBpeGVsQnVmZmVycyBiYWNrZWQgYnkgSU9TdXJmYWNlcy4KIC8vIFRoZXNl
IGJ1ZmZlcnMgY2FuIGJlIGZvciBleGFtcGxlIHNlbnQgdGhyb3VnaCBJUEMuCkBAIC00NSw0ICs0
Niw4IEBAIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVkPFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiwgQ1ZSZXR1cm4+IGNyZWF0ZUNWUGl4ZWxCdWZmCiBXRUJDT1JFX0VYUE9SVCBFeHBlY3RlZDxS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4sIENWUmV0dXJuPiBjcmVhdGVDVlBpeGVsQnVmZmVy
KElPU3VyZmFjZVJlZik7CiAKIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNyZWF0ZUNHQ29s
b3JTcGFjZUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CisKKy8vIFNob3VsZCBi
ZSBjYWxsZWQgd2l0aCBub24tZW1wdHkgUHJvY2Vzc0lkZW50aXR5LgorV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eUZvckNWUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJl
ZiwgY29uc3QgUHJvY2Vzc0lkZW50aXR5Jik7CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0NWVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvQ1ZVdGlsaXRpZXMubW0KaW5kZXggMzI2ZjA0MzJiNDg2MjIx
OTYyYzc1ZWZjNmRlMDFlZDhhZGM5ZTY2Ny4uMTRmNjJiMDQwNzNjNzg3NDA0OWE2ZmVmZTgxMzkz
M2E2NGZjNDM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvQ1ZVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvQ1ZVdGlsaXRpZXMubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIkNWVXRpbGl0aWVz
LmgiCiAKICNpbXBvcnQgIkNvbG9yU3BhY2VDRy5oIgorI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAj
aW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KICNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCkBAIC0xMzIsNCArMTMzLDExIEBAIFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNyZWF0ZUNHQ29sb3JTcGFjZUZvckNWUGl4ZWxCdWZm
ZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBiCiAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CiB9
CiAKK3ZvaWQgc2V0T3duZXJzaGlwSWRlbnRpdHlGb3JDVlBpeGVsQnVmZmVyKENWUGl4ZWxCdWZm
ZXJSZWYgcGl4ZWxCdWZmZXIsIGNvbnN0IFByb2Nlc3NJZGVudGl0eSYgb3duZXIpCit7CisgICAg
YXV0byBzdXJmYWNlID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZShwaXhlbEJ1ZmZlcik7Cisg
ICAgQVNTRVJUKHN1cmZhY2UpOworICAgIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHko
c3VyZmFjZSwgb3duZXIpOworfQorCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzE5NGU1ZjJmZWVhMjRiNmM4OTllMmE2
ZDY5YTI4Mzk3MTcwM2JmMi4uMTRkYzc0NjE2MGZiNTUzMWJhODc5YWZlMmU2YmM3ZjlhNmEzZWQ5
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIyLTAxLTI3ICBLaW1tbyBLaW5udW5lbiAgPGtr
aW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FwdHVyaW5nIFdlYkdMIGNhbnZhcyB0aHJv
dWdoIHBlZXIgY29ubmVjdGlvbiBzaG93cyB0aGUgaW1hZ2UgZmxpcHBlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NjAwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84ODA0MzMyNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24u
CisKKyAgICAgICAgVGVzdCBzZW5kaW5nIFdlYkdMIGltYWdlIHRocm91Z2ggYSBwZWVyIGNvbm5l
Y3Rpb24gdG8gYSBsb2NhbCB2aWRlbworICAgICAgICBhbmQgYXNzZXJ0IHRoYXQgdGhlIGltYWdl
IGlzIGFzIGRyYXduLgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHdlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5lY3Rpb24uaHRt
bDogQWRkZWQuCisgICAgICAgICogd2VicnRjL3JvdXRpbmVzLmpzOgorICAgICAgICAqIHdlYnJ0
Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWw6CisKIDIwMjItMDEtMjUgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdCBzdWl0ZSB0byAyMDIyLTAxLTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggODE3YWFlZDU1MWYxZDg4OWZhYjgwY2ZmOWVmZThmNmFmODg4
NDAzNi4uOGZhNTYwOWM5ZjFlMTk2YjQ0YWU5ZGUwYmQ4MGEwYzE4NDMyNWY3ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzk0LDYgKzc5NCw3IEBA
IHdlYmtpdC5vcmcvYi8yMzE4MTEgd2ViYXVkaW8vc3VzcGVuZC1jb250ZXh0LXdoaWxlLWludGVy
cnVwdGVkLmh0bWwgWyBUaW1lb3V0IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dmlkZW8tcnZmYyBbIFBhc3MgXQogZmFzdC9tZWRpYXN0cmVhbS9nZXRVc2VyTWVkaWEtcnZmYy5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBG
YWlsdXJlIF0KK3dlYnJ0Yy9jYW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgWyBGYWlsdXJl
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWNhbGxiYWNrLXdlYnJ0Yy5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxs
YmFjay1iZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFj
ay1kdXJpbmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTg2ZTBi
ZTQ0YTY5YjFiYzRhMzRmYWQ2YTA2ZTRlZDQxYWUyNTY3NS4uM2NkYWE2MGNjNzQxZDJjOTRhNjcy
NmNhZjIwM2U2YjEwMjIyYmZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXNpbXVsYXRvci9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy1zaW11bGF0b3IvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDEsNiArNDEsOCBAQCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9hYm9ydC9nZW5lcmFsLmFueS53b3JrZXIu
aHRtbCBbIFBhc3MgRgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL2Jyb3dzaW5nLXRoZS13ZWIvaGlzdG9yeS10cmF2ZXJzYWwvcGVyc2lzdGVkLXVzZXItc3Rh
dGUtcmVzdG9yYXRpb24vc2Nyb2xsLXJlc3RvcmF0aW9uLWZyYWdtZW50LXNjcm9sbGluZy1jcm9z
cy1vcmlnaW4uaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJydGMvUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1vZmZlci5odG1s
IFsgRmFpbHVyZSBdCiAKK3dlYmtpdC5vcmcvYi8yMzU3NjUgd2VicnRjL2NhbnZhcy10by1wZWVy
LWNvbm5lY3Rpb24uaHRtbCBbIEZhaWx1cmUgXQorCiAjIFNpbXVsYXRvciBkb2Vzbid0IHN1cHBv
cnQgV2ViQXNzZW1ibHkuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vd2Fz
bV9zdHJlYW1faW5zdGFudGlhdGVfdGVzdC5odG1sICBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL3dhc21fc3RyZWFtX2NvbXBpbGVfdGVzdC5odG1sICBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNvbm5l
Y3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL2NhbnZhcy10by1wZWVyLWNv
bm5lY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMTdjN2RhMWM0ZTk2YTM2YzlmMmUw
YmM5MTQ0NjBjZWNmM2IwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMv
Y2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgZHJhdzogd2l0aFdlYkdMCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9j
YW52YXMtdG8tcGVlci1jb25uZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvY2FudmFz
LXRvLXBlZXItY29ubmVjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0Y2Y3YTcwOTU5NzQ0ZjViMWNj
MWM1NDZlMDdmODY1OTA2OTIxMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvY2FudmFzLXRvLXBlZXItY29ubmVjdGlvbi5odG1sCkBAIC0wLDAgKzEsMTEyIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KK3ZpZGVvIHsgd2lkdGg6IDQwcHg7IH0KK2NhbnZhcyB7IHdpZHRoOiA0MHB4OyB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZWJ1Z2UiPjwvZGl2PgorPHNjcmlw
dD4KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gd2l0aDJEQ29udGV4dChzdWJjYXNlLCBjYW52
YXMsIHBhdHRlcm5OdW1iZXIpCit7CisgICAgZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuMkQoY2FudmFz
LCBwYXR0ZXJuTnVtYmVyKTsKK30KKworZnVuY3Rpb24gd2l0aFdlYkdMKHN1YmNhc2UsIGNhbnZh
cywgcGF0dGVybk51bWJlcikKK3sKKyAgICBkcmF3Q2FudmFzVGVzdFBhdHRlcm5XZWJHTChjYW52
YXMsIHBhdHRlcm5OdW1iZXIpOworfQorCithc3luYyBmdW5jdGlvbiBjcmVhdGVMb2NhbFBlZXJD
b25uZWN0aW9uU3RyZWFtKHN0cmVhbSkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0
aW9uKSA9PiB7CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdl
dFZpZGVvVHJhY2tzKClbMF0sIHN0cmVhbSk7CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9u
KSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVu
dCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRyYWNrRXZlbnQudHJhY2sgaW5z
dGFuY2VvZiBNZWRpYVN0cmVhbVRyYWNrKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0
cmFja0V2ZW50LnJlY2VpdmVyIGluc3RhbmNlb2YgUlRDUnRwUmVjZWl2ZXIpOworICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkodHJhY2tFdmVudC5zdHJlYW1zKSwgIkFy
cmF5LmlzQXJyYXkoKSBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShPYmplY3QuaXNGcm96ZW4odHJhY2tFdmVudC5zdHJlYW1zKSwgIk9iamVjdC5pc0Zy
b3plbigpIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJh
Y2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgIH0p
OworfQorCitmdW5jdGlvbiB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbykKK3sKKyAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJh
bWVDYWxsYmFjaygobm93LCBtZXRhZGF0YSkgPT4geworICAgICAgICAgICAgcmVzb2x2ZShub3cs
IG1ldGFkYXRhKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK2NvbnN0IHdpZHRoID0gNTAw
OworY29uc3QgaGVpZ2h0ID0gNTAwOworCithc3luYyBmdW5jdGlvbiB0ZXN0Q2FudmFzVG9QZWVy
Q29ubmVjdGlvbih0LCBzdWJjYXNlKQoreworICAgIGNvbnN0IGRlYnVnZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZWJ1Z2UiKTsKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjYW52YXMud2lkdGggPSB3aWR0aDsKKyAgICBjYW52
YXMuaGVpZ2h0ID0gaGVpZ2h0OworICAgIGRlYnVnZS5hcHBlbmRDaGlsZChjYW52YXMpOworICAg
IHQuYWRkX2NsZWFudXAoYXN5bmMgKCkgPT4gZGVidWdlLnJlbW92ZUNoaWxkKGNhbnZhcykpOwor
ICAgIGNvbnN0IGZyYW1lUmF0ZSA9IDYwOworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQg
Y3JlYXRlTG9jYWxQZWVyQ29ubmVjdGlvblN0cmVhbShjYW52YXMuY2FwdHVyZVN0cmVhbSgpKTsK
KyAgICB0LmFkZF9jbGVhbnVwKGFzeW5jICgpID0+IGNsb3NlQ29ubmVjdGlvbnMoKSk7CisgICAg
Y29uc3QgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOworICAgIHZpZGVv
LmF1dG9wbGF5ID0gdHJ1ZTsKKyAgICB2aWRlby5jb250cm9scyA9IGZhbHNlOworICAgIGRlYnVn
ZS5hcHBlbmRDaGlsZCh2aWRlbyk7CisgICAgdC5hZGRfY2xlYW51cChhc3luYyAoKSA9PiBkZWJ1
Z2UucmVtb3ZlQ2hpbGQodmlkZW8pKTsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBsb2NhbFN0cmVh
bTsKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIGRvbid0IGtub3cgd2hpY2ggZnJhbWVzIGFy
ZSBza2lwcGVkLgorICAgIC8vIERyYXcgdW50aWwgdmlkZW8gc2l6ZSBjaGFuZ2VzIGFuZCB0aGVu
IHRyeSB0byBjbGVhciBzdWJzZXF1ZW50IGVucXVldWVkCisgICAgLy8gZnJhbWVzLgorICAgIGNv
bnN0IGlkID0gc2V0SW50ZXJ2YWwoKCkgPT4geyBzdWJjYXNlLmRyYXcoc3ViY2FzZSwgY2FudmFz
LCAxKX0sIDEwMCk7CisgICAgYXdhaXQgd2FpdEZvclZpZGVvU2l6ZSh2aWRlbywgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjbGVhckludGVydmFsKGlkKTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDIwOyArK2kpIHsKKyAgICAgICAgc3ViY2FzZS5kcmF3KHN1YmNhc2UsIGNh
bnZhcywgMSk7CisgICAgICAgIGF3YWl0IHdhaXRGb3JWaWRlb0ZyYW1lKHZpZGVvKTsKKyAgICAg
ICAgYXNzZXJ0SW1hZ2VTb3VyY2VDb250YWluc0NhbnZhc1Rlc3RQYXR0ZXJuKHZpZGVvLCAxLCAi
YmFzZSBjYXNlIik7CisgICAgfQorICAgIC8vIFRyeSB0byBjbGVhciB0aGUgdmlkZW8gZnJhbWUg
cXVldWUuCisgICAgYXdhaXQgd2FpdEZvcigxMDApOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAyNTsgKytpKSB7CisgICAgICAgIHN1YmNhc2UuZHJhdyhzdWJjYXNlLCBjYW52YXMsIGkpOwor
ICAgICAgICBhd2FpdCB3YWl0Rm9yVmlkZW9GcmFtZSh2aWRlbyk7CisgICAgICAgIGFzc2VydElt
YWdlU291cmNlQ29udGFpbnNDYW52YXNUZXN0UGF0dGVybih2aWRlbywgaSwgYGl0ZXJhdGlvbjog
JHtpfWApOworICAgIH0KK30KKworY29uc3Qgc3ViY2FzZXMgPSBbXTsKKy8vIEZJWE1FOiBUdGhp
cyBzaG91bGQgYmUgZmlsbGVkIHdoZW4gMkQgY29udGV4dCBzdXBwb3J0cyBIVE1MQ2FudmFzRWxl
bWVudC5jYXB0dXJlU3RyZWFtKCkuCisvLyBzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoMkRDb250
ZXh0fSk7CitzdWJjYXNlcy5wdXNoKHtkcmF3OiB3aXRoV2ViR0x9KTsKKworZnVuY3Rpb24gdGVz
dERlc2NyaXB0aW9uKHN1YmNhc2UpIHsKKyAgICByZXR1cm4gT2JqZWN0LmtleXMoc3ViY2FzZSku
bWFwKChrKSA9PiBgJHtrfTogJHt0eXBlb2Ygc3ViY2FzZVtrXSA9PT0gImZ1bmN0aW9uIiA/IHN1
YmNhc2Vba10ubmFtZSA6IHN1YmNhc2Vba119YCkuam9pbigiLCIpOworfQorCitmdW5jdGlvbiBj
cmVhdGVDYW52YXNUb1BlZXJDb25uZWN0aW9uVGVzdHMoc2xpY2UsIHNsaWNlcykgeworICAgIGNv
bnN0IHNsaWNlU2l6ZSA9IE1hdGguZmxvb3Ioc3ViY2FzZXMubGVuZ3RoIC8gc2xpY2VzKTsKKyAg
ICBjb25zdCBmaXJzdCA9IHNsaWNlU2l6ZSAqIHNsaWNlOworICAgIGZvciAoY29uc3Qgc3ViY2Fz
ZSBvZiBzdWJjYXNlcy5zbGljZShmaXJzdCwgZmlyc3QgKyBzbGljZVNpemUpKQorICAgICAgICBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7IGF3YWl0IHRlc3RDYW52YXNUb1BlZXJDb25uZWN0aW9u
KHQsIHN1YmNhc2UpOyB9LCB0ZXN0RGVzY3JpcHRpb24oc3ViY2FzZSkpOworfQorY3JlYXRlQ2Fu
dmFzVG9QZWVyQ29ubmVjdGlvblRlc3RzKDAsIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvcm91dGluZXMuanMgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvcm91dGluZXMuanMKaW5kZXggMmNmZjY5ZTY1MWI5NDE3YjVlMTk5OGJiZDU2
NzkyMTlhNTdmMmNlMS4uM2M1ZmMzY2E0MjM5MzY5N2MxYzYxZWIzNTc1YzE2OTBlMDhjZTAwNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3JvdXRpbmVzLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMjk4LDYgKzI5OCwxMyBAQCBmdW5jdGlvbiBzZXRI
MjY0SGlnaENvZGVjKHNkcCkKICAgICB9KS5qb2luKCdcclxuJyk7CiB9CiAKK2NvbnN0IHRlc3RD
b2xvcnMgPSB7CisgICAgd2hpdGU6IFsgMjU1LCAyNTUsIDI1NSwgMjU1IF0sCisgICAgeWVsbG93
OiBbIDI1NSwgMjU1LCAwLCAyNTUgXSwKKyAgICBjeWFuOiBbIDAsIDI1NSwgMjU1LCAyNTUgXSwK
KyAgICBsaWdodEdyZWVuOiBbIDAsIDEyOCwgMCwgMjU1IF0sCit9OworCiAvLyBTZXRzIHRoZSBj
YW1lcmEgaW1hZ2Ugb3JpZW50YXRpb24gaWYgcnVubmluZyBvbiB0ZXN0IHJ1bm5lci4KIC8vIGFu
Z2xlOiBvcmllbnRhdGlvbiBhbmdsZSBvZiB0aGUgY2FtZXJhIGltYWdlIGluIGRlZ3JlZXMKIGZ1
bmN0aW9uIHNldE1vY2tDYW1lcmFJbWFnZU9yaWVudGF0aW9uKGFuZ2xlLCB2aWRlb1NpemUpIHsK
QEAgLTM0MCwxOCArMzQ3LDg0IEBAIGZ1bmN0aW9uIGFzc2VydEltYWdlRGF0YUNvbnRhaW5zTW9j
a0NhbWVyYUltYWdlKGltYWdlRGF0YSwgYW5nbGUsIGRlc2MpCiAgICAgICAgIHJldHVybiBuOwog
ICAgIH0KIAotICAgIGNvbnN0IHdoaXRlID0gWyAyNTUsIDI1NSwgMjU1LCAyNTUgXTsKICAgICBj
b25zdCB3aGl0ZVBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjA0LCAwLjcgXSk7Ci0gICAgY29uc3Qg
eWVsbG93ID0gWyAyNTUsIDI1NSwgMCwgMjU1IF07CiAgICAgY29uc3QgeWVsbG93UG9pbnQgPSBy
b3RhdGVQb2ludChbIDAuMDgsIDAuNyBdKTsKLSAgICBjb25zdCBjeWFuID0gWyAwLCAyNTUsIDI1
NSwgMjU1IF07CiAgICAgY29uc3QgY3lhblBvaW50ID0gcm90YXRlUG9pbnQoWyAwLjEyLCAwLjcg
XSk7Ci0gICAgY29uc3QgbGlnaHRHcmVlbiA9IFsgMCwgMTI4LCAwLCAyNTUgXTsKICAgICBjb25z
dCBsaWdodEdyZWVuUG9pbnQgPSByb3RhdGVQb2ludChbIDAuMTYsIDAuNyBdKTsKIAogICAgIGxl
dCBlcnIgPSAxMTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHdoaXRlUG9pbnQpLCB3aGl0ZSwgZXJyLCAid2hpdGUgcmVjdCBub3Qg
Zm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdl
RGF0YVBpeGVsKGltYWdlRGF0YSwgeWVsbG93UG9pbnQpLCB5ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKLSAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIGN5YW4sIGVyciwgImN5YW4g
cmVjdCBub3QgZm91bmQgIiArIGRlc2MpOwotICAgIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxz
KGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgbGlnaHRHcmVlblBvaW50KSwgbGlnaHRHcmVl
biwgZXJyLCAibGlnaHQgZ3JlZW4gcmVjdCBub3QgZm91bmQgIiArIGRlc2MpOworICAgIGFzc2Vy
dF9hcnJheV9hcHByb3hfZXF1YWxzKGdldEltYWdlRGF0YVBpeGVsKGltYWdlRGF0YSwgd2hpdGVQ
b2ludCksIHRlc3RDb2xvcnMud2hpdGUsIGVyciwgIndoaXRlIHJlY3Qgbm90IGZvdW5kICIgKyBk
ZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQaXhlbChp
bWFnZURhdGEsIHllbGxvd1BvaW50KSwgdGVzdENvbG9ycy55ZWxsb3csIGVyciwgInllbGxvdyBy
ZWN0IG5vdCBmb3VuZCIgKyBkZXNjKTsKKyAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhn
ZXRJbWFnZURhdGFQaXhlbChpbWFnZURhdGEsIGN5YW5Qb2ludCksIHRlc3RDb2xvcnMuY3lhbiwg
ZXJyLCAiY3lhbiByZWN0IG5vdCBmb3VuZCAiICsgZGVzYyk7CisgICAgYXNzZXJ0X2FycmF5X2Fw
cHJveF9lcXVhbHMoZ2V0SW1hZ2VEYXRhUGl4ZWwoaW1hZ2VEYXRhLCBsaWdodEdyZWVuUG9pbnQp
LCB0ZXN0Q29sb3JzLmxpZ2h0R3JlZW4sIGVyciwgImxpZ2h0IGdyZWVuIHJlY3Qgbm90IGZvdW5k
ICIgKyBkZXNjKTsKK30KKworLy8gRHJhd3MgYSBjYW52YXMgdGVzdCBwYXR0ZXJuIHdpdGggV2Vi
R0wuCisvLyBDYW4gYmUgY2hlY2tlZCB3aXRoIGBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2Fu
dmFzVGVzdFBhdHRlcm4oKWAuCisvLyBQYXR0ZXJuIGlzIGZvdXIgY29sb3JzLCBpdCBjYW4gZGV0
ZWN0IGZsaXBzIGFuZCByb3RhdGlvbnMuCisvLyBgcGF0dGVybk51bWJlcmAgY2FuIGJlIHVzZWQg
aW4gdG8gdGVzdCBtdWx0aXBsZSBzdWJzZXF1ZW50IGZyYW1lcyAocGFzcyBpbiBmcmFtZSBudW1i
ZXIpLgorLy8gUGF0dGVybiBpcyBmb3VyIGJveGVzIHdpdGggY29sb3IgY3ljbGVkIGJhc2VkIG9u
IHBhdHRlcm5OdW1iZXIgJSA0LgorZnVuY3Rpb24gZHJhd0NhbnZhc1Rlc3RQYXR0ZXJuV2ViR0wo
Y2FudmFzLCBwYXR0ZXJuTnVtYmVyKQoreworICAgIHBhdHRlcm5OdW1iZXIgPSBwYXR0ZXJuTnVt
YmVyIHx8IDA7CisgICAgY29uc3QgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wiLCB7IGRl
cHRoOiBmYWxzZSwgc3RlbmNpbDogZmFsc2UsIGFudGlhbGlhczogZmFsc2UgfSk7CisgICAgZ2wu
ZW5hYmxlKGdsLlNDSVNTT1JfVEVTVCk7CisgICAgY29uc3QgYm94U2l6ZSA9IFsgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0IF07CisgICAgY29uc3QgYm94ZXMgPSBbCisgICAgICAgIFswLjAs
IDAuNSwgMC41LCAxLjBdLAorICAgICAgICBbMC41LCAwLjUsIDEuMCwgMS4wXSwKKyAgICAgICAg
WzAuNSwgMC4wLCAxLjAsIDAuNV0sCisgICAgICAgIFswLjAsIDAuMCwgMC41LCAwLjVdLAorICAg
IF07CisgICAgY29uc3QgYm94Q29sb3JzID0gT2JqZWN0LnZhbHVlcyh0ZXN0Q29sb3JzKTsKKyAg
ICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgeworICAgICAgICBjb25zdCBpID0gKG4gKyBw
YXR0ZXJuTnVtYmVyKSAlIGJveGVzLmxlbmd0aDsKKyAgICAgICAgY29uc3QgY29sb3IgPSBib3hD
b2xvcnNbaV07CisgICAgICAgIGNvbnN0IGJveCA9IGJveGVzW25dOworICAgICAgICBnbC5zY2lz
c29yKGJveFswXSAqIGJveFNpemVbMF0sIGJveFsxXSAqIGJveFNpemVbMV0sIGJveFsyXSAqIGJv
eFNpemVbMF0sIGJveFszXSAqIGJveFNpemVbMV0pOworICAgICAgICBnbC5jbGVhckNvbG9yKGNv
bG9yWzBdIC8gMjU1LiwgY29sb3JbMV0gLyAyNTUsIGNvbG9yWzJdIC8gMjU1LiwgY29sb3JbM10g
LyAyNTUuKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQog
fQorCitmdW5jdGlvbiBhc3NlcnRJbWFnZVNvdXJjZUNvbnRhaW5zQ2FudmFzVGVzdFBhdHRlcm4o
aW1hZ2VTb3VyY2UsIHBhdHRlcm5OdW1iZXIsIGRlc2MpCit7CisgICAgcGF0dGVybk51bWJlciA9
IHBhdHRlcm5OdW1iZXIgfHwgMDsKKyAgICBkZXNjID0gZGVzYyB8fCAiIjsKKyAgICBjb25zdCB2
ZXJpZnlXaWR0aCA9IDMwMDsKKyAgICAvLyBGSVhNRTogY2FudmFzLXRvLXBlZXItY29ubmVjdGlv
biBvbiBDYXRhbGluYS1XSzIgd291bGQgZmFpbCB3aXRoIDAgLT4gOCBhbmQgMjU1IC0+IDI0MCBm
b3Igc29tZSByZWFzb24uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNTcwOAorICAgIGNvbnN0IGVyciA9IDI1OworICAgIGxldCBpbWFnZVNvdXJjZVNp
emU7CisgICAgbGV0IGltYWdlU291cmNlSGVpZ2h0OworICAgIGlmIChpbWFnZVNvdXJjZSBpbnN0
YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpCisgICAgICAgIGltYWdlU291cmNlU2l6ZSA9IFtpbWFn
ZVNvdXJjZS52aWRlb1dpZHRoLCBpbWFnZVNvdXJjZS52aWRlb0hlaWdodF07CisgICAgZWxzZQor
ICAgICAgICBpbWFnZVNvdXJjZVNpemUgPSBbaW1hZ2VTb3VyY2Uud2lkdGgsIGltYWdlU291cmNl
LmhlaWdodF07CisKKyAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKTsKKyAgICBjb25zdCBkZWJ1Z2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVi
dWdlIik7CisgICAgaWYgKGRlYnVnZSkKKyAgICAgICAgZGVidWdlLmFwcGVuZENoaWxkKGNhbnZh
cyk7CisKKyAgICBjYW52YXMud2lkdGggPSB2ZXJpZnlXaWR0aDsKKyAgICBjYW52YXMuaGVpZ2h0
ID0gKHZlcmlmeVdpZHRoIC8gaW1hZ2VTb3VyY2VTaXplWzBdKSAqIGltYWdlU291cmNlU2l6ZVsx
XTsKKyAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjdHguZHJh
d0ltYWdlKGltYWdlU291cmNlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwor
ICAgIGNvbnN0IGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRo
LCBjYW52YXMuaGVpZ2h0KTsKKyAgICBjb25zdCBwb2ludENvbG9ycyA9IE9iamVjdC52YWx1ZXMo
dGVzdENvbG9ycyk7CisgICAgY29uc3QgcG9pbnRzID0gWworICAgICAgICBbIDAuMSwgMC4xIF0s
CisgICAgICAgIFsgMC45LCAwLjEgXSwKKyAgICAgICAgWyAwLjksIDAuOSBdLAorICAgICAgICBb
IDAuMSwgMC45IF0sCisgICAgXTsKKyAgICBmb3IgKGxldCBuID0gMDsgbiA8IDQ7ICsrbikgewor
ICAgICAgICBsZXQgaSA9IChuICsgcGF0dGVybk51bWJlcikgJSBwb2ludHMubGVuZ3RoOworICAg
ICAgICBsZXQgY29sb3IgPSBwb2ludENvbG9yc1tpXTsKKyAgICAgICAgbGV0IHBvaW50ID0gcG9p
bnRzW25dOworICAgICAgICBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhnZXRJbWFnZURhdGFQ
aXhlbChpbWFnZURhdGEsIHBvaW50KSwgY29sb3IsIGVyciwgYHJlY3QgJHtjb2xvci5qb2luKCIs
Iil9IGF0ICR7cG9pbnQuam9pbigiLCIpfSBub3QgZm91bmQgJHtkZXNjfWApOworICAgIH0KKyAg
ICBpZiAoZGVidWdlKQorICAgICAgICBkZWJ1Z2UucmVtb3ZlQ2hpbGQoY2FudmFzKTsKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tcmVwbGFjZS10cmFjay5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXJlcGxh
Y2UtdHJhY2suaHRtbAppbmRleCBhNjJhZWQ3OTFkYjg5YWUxODYxNzNiMGI3OTc5ZDMxMjA0OWI0
N2ZjLi5mOTA0ZGM4MmY0YzJkMzIyYzFhMDRkNDNjYzhmNWUxOTRkOWU3NWY2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tcmVwbGFjZS10cmFjay5odG1sCisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1yZXBsYWNlLXRyYWNrLmh0bWwKQEAgLTExLDcgKzExLDYgQEAK
IDxkaXYgaWQ9ImxvZyI+PC9kaXY+CiAgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGF1dG9wbGF5
PSIiPjwvdmlkZW8+CiAgICAgICAgIDxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjY0MCIgaGVp
Z2h0PSI0ODAiPjwvY2FudmFzPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZGVvIik7CiBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>