<?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>72086</bug_id>
          
          <creation_ts>2011-11-10 18:52:20 -0800</creation_ts>
          <short_desc>Implement WEBGL_compressed_textures WebGL extension</short_desc>
          <delta_ts>2011-12-10 02:31:25 -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>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72309</dependson>
    
    <dependson>72310</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gregg Tavares">gman</reporter>
          <assigned_to name="Gregg Tavares">gman</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kbr</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>ojan</cc>
    
    <cc>thundercat</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500472</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2011-11-10 18:52:20 -0800</bug_when>
    <thetext>Implement WEBGL_EXPERIMENTAL_compressed_textures WebGL extension</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500492</commentid>
    <comment_count>1</comment_count>
      <attachid>114619</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2011-11-10 20:59:09 -0800</bug_when>
    <thetext>Created attachment 114619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500493</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 21:01:41 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500522</commentid>
    <comment_count>3</comment_count>
      <attachid>114619</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-10 22:08:19 -0800</bug_when>
    <thetext>Comment on attachment 114619
Patch

Attachment 114619 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10429290</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500997</commentid>
    <comment_count>4</comment_count>
      <attachid>114619</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-11 12:12:15 -0800</bug_when>
    <thetext>Comment on attachment 114619
Patch

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

Looks great overall. A few minor comments, plus the GraphicsContext3DOpenGL build fix we discussed offline.

&gt; Source/WebCore/html/canvas/WebGLExperimentalCompressedTextures.cpp:48
&gt; +    if (gc3DContext-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_texture_compression_dxt1&quot;)) {

Consider caching the result of getExtensions() in a local variable.

&gt; Source/WebCore/html/canvas/WebGLExperimentalCompressedTextures.cpp:104
&gt; +    return gc3DContext-&gt;getExtensions()-&gt;supports(&quot;GL_EXT_texture_compression_dxt1&quot;)

Here too.

&gt; Source/WebCore/html/canvas/WebGLExperimentalCompressedTextures.cpp:116
&gt; +        if (m_supportsDxt1)

Could just return m_supportsDxt1. Here and below.

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DEfl.cpp:200
&gt; +    // m_internal-&gt;compressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);

Add a FIXME here and below.

&gt; Source/WebKit/chromium/public/WebGraphicsContext3D.h:226
&gt; +    virtual void compressedTexSubImage2D(WGC3Denum target, WGC3Dint level, WGC3Dint xoffset, WGC3Dint yoffset, WGC3Dsizei width, WGC3Dsizei height, WGC3Denum format, WGC3Dsizei imageSize, const void* data) = 0;

Since these are pure virtual, you&apos;ll need to roll forward chromium_rev in Source/WebKit/chromium/DEPS to the revision where you added these entry points, if it hasn&apos;t been already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501126</commentid>
    <comment_count>5</comment_count>
      <attachid>114775</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2011-11-11 14:53:49 -0800</bug_when>
    <thetext>Created attachment 114775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501259</commentid>
    <comment_count>6</comment_count>
      <attachid>114806</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2011-11-11 17:33:09 -0800</bug_when>
    <thetext>Created attachment 114806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501273</commentid>
    <comment_count>7</comment_count>
      <attachid>114806</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-11 17:52:13 -0800</bug_when>
    <thetext>Comment on attachment 114806
Patch

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

Looks great. Did you want this submitted via the commit queue? Please mark the patch cq? if so.

&gt; Source/WebKit/chromium/DEPS:35
&gt; +  &apos;chromium_rev&apos;: &apos;109568&apos;

I heard from someone else today that there was a problem rolling forward the Chromium revision, and that the most recent roll was reverted. Could you check on IRC with the Chromium WebKit gardener to see if that problem was resolved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501298</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-11 18:37:05 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 114806 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114806&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/DEPS:35
&gt; &gt; +  &apos;chromium_rev&apos;: &apos;109568&apos;
&gt; 
&gt; I heard from someone else today that there was a problem rolling forward the Chromium revision, and that the most recent roll was reverted. Could you check on IRC with the Chromium WebKit gardener to see if that problem was resolved?

Ojan is about to roll to 109696 in https://bugs.webkit.org/attachment.cgi?id=114762&amp;action=prettypatch .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501303</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-11 18:45:13 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 114806 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114806&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/chromium/DEPS:35
&gt; &gt; &gt; +  &apos;chromium_rev&apos;: &apos;109568&apos;
&gt; &gt; 
&gt; &gt; I heard from someone else today that there was a problem rolling forward the Chromium revision, and that the most recent roll was reverted. Could you check on IRC with the Chromium WebKit gardener to see if that problem was resolved?
&gt; 
&gt; Ojan is about to roll to 109696 in https://bugs.webkit.org/attachment.cgi?id=114762&amp;action=prettypatch .

Great, thanks. In that case, Gregg, could you re-upload the patch with that section removed? Any committer should be able to cq+ that without needing a re-review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501361</commentid>
    <comment_count>10</comment_count>
      <attachid>114818</attachid>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2011-11-11 21:40:05 -0800</bug_when>
    <thetext>Created attachment 114818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502159</commentid>
    <comment_count>11</comment_count>
      <attachid>114818</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-14 12:01:59 -0800</bug_when>
    <thetext>Comment on attachment 114818
Patch

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502182</commentid>
    <comment_count>12</comment_count>
      <attachid>114818</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 12:24:37 -0800</bug_when>
    <thetext>Comment on attachment 114818
Patch

Clearing flags on attachment: 114818

Committed r100176: &lt;http://trac.webkit.org/changeset/100176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502183</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 12:24:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502239</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-11-14 13:20:46 -0800</bug_when>
    <thetext>This broke the Lion build:

http://build.webkit.org/builders/Lion%20Intel%20Debug%20%28Build%29/builds/3595/steps/compile-webkit/logs/stdio

Undefined symbols for architecture x86_64:
  &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures6createEPNS_21WebGLRenderingContextE&quot;, referenced from:
      __ZN7WebCore21WebGLRenderingContext12getExtensionERKN3WTF6StringE in WebGLRenderingContext.o
  &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures27getCompressedTextureFormatsEv&quot;, referenced from:
      __ZN7WebCore21WebGLRenderingContext12getParameterEjRi in WebGLRenderingContext.o
  &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures9supportedEPNS_21WebGLRenderingContextE&quot;, referenced from:
      __ZN7WebCore21WebGLRenderingContext22getSupportedExtensionsEv in WebGLRenderingContext.o</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502293</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-11-14 14:15:06 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; This broke the Lion build:
&gt; 
&gt; http://build.webkit.org/builders/Lion%20Intel%20Debug%20%28Build%29/builds/3595/steps/compile-webkit/logs/stdio
&gt; 
&gt; Undefined symbols for architecture x86_64:
&gt;   &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures6createEPNS_21WebGLRenderingContextE&quot;, referenced from:
&gt;       __ZN7WebCore21WebGLRenderingContext12getExtensionERKN3WTF6StringE in WebGLRenderingContext.o
&gt;   &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures27getCompressedTextureFormatsEv&quot;, referenced from:
&gt;       __ZN7WebCore21WebGLRenderingContext12getParameterEjRi in WebGLRenderingContext.o
&gt;   &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures9supportedEPNS_21WebGLRenderingContextE&quot;, referenced from:
&gt;       __ZN7WebCore21WebGLRenderingContext22getSupportedExtensionsEv in WebGLRenderingContext.o

How did this patch make it past the commit queue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502300</commentid>
    <comment_count>16</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-11-14 14:20:50 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; This broke the Lion build:
&gt; &gt; 
&gt; &gt; http://build.webkit.org/builders/Lion%20Intel%20Debug%20%28Build%29/builds/3595/steps/compile-webkit/logs/stdio
&gt; &gt; 
&gt; &gt; Undefined symbols for architecture x86_64:
&gt; &gt;   &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures6createEPNS_21WebGLRenderingContextE&quot;, referenced from:
&gt; &gt;       __ZN7WebCore21WebGLRenderingContext12getExtensionERKN3WTF6StringE in WebGLRenderingContext.o
&gt; &gt;   &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures27getCompressedTextureFormatsEv&quot;, referenced from:
&gt; &gt;       __ZN7WebCore21WebGLRenderingContext12getParameterEjRi in WebGLRenderingContext.o
&gt; &gt;   &quot;__ZN7WebCore35WebGLExperimentalCompressedTextures9supportedEPNS_21WebGLRenderingContextE&quot;, referenced from:
&gt; &gt;       __ZN7WebCore21WebGLRenderingContext22getSupportedExtensionsEv in WebGLRenderingContext.o
&gt; 
&gt; How did this patch make it past the commit queue?

Oh it&apos;s the bots-can&apos;t-check-patches-by-non-committers rule.  If we land the patch, it seems like the buildbots will be building the patch anyway, so why not test it before landing via the commit bot?  At least it&apos;s had a review by a trusted person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502317</commentid>
    <comment_count>17</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-14 14:28:32 -0800</bug_when>
    <thetext>Rolled the patch in http://trac.webkit.org/changeset/100191 because of the previous missing symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502322</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-14 14:30:01 -0800</bug_when>
    <thetext>I&apos;ll figure out the missing symbol problem and resubmit the patch. It really shouldn&apos;t have made it through the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503555</commentid>
    <comment_count>19</comment_count>
      <attachid>115313</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-15 20:43:21 -0800</bug_when>
    <thetext>Created attachment 115313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503556</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-15 20:44:16 -0800</bug_when>
    <thetext>Updated DerivedSources.make and WebCore.xcodeproj to fix Mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503574</commentid>
    <comment_count>21</comment_count>
      <attachid>115313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 21:22:24 -0800</bug_when>
    <thetext>Comment on attachment 115313
Patch

Attachment 115313 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10484643</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504380</commentid>
    <comment_count>22</comment_count>
      <attachid>115476</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-16 16:23:21 -0800</bug_when>
    <thetext>Created attachment 115476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504382</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-16 16:24:11 -0800</bug_when>
    <thetext>Merged with move of ArrayBufferView from WebCore to WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504451</commentid>
    <comment_count>24</comment_count>
      <attachid>115476</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-11-16 17:35:54 -0800</bug_when>
    <thetext>Comment on attachment 115476
Patch

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:2117
&gt; +    if (equalIgnoringCase(name, &quot;WEBGL_EXPERIMENTAL_compressed_textures&quot;)) {

Based on the discussions on the WebGL mailing list, we should hold off adding an extension with this name. My feeling is that this should be called WEBKIT_WEBGL_compressed_textures, but I know we haven&apos;t made a decision. So until we do, we shouldn&apos;t go forward with this name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512189</commentid>
    <comment_count>25</comment_count>
      <attachid>117286</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-30 15:39:43 -0800</bug_when>
    <thetext>Created attachment 117286
Patch after extension rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512191</commentid>
    <comment_count>26</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-30 15:43:28 -0800</bug_when>
    <thetext>Per feedback above and after discussion on public_webgl mailing list, exposed the extension under the name WEBKIT_WEBGL_compressed_textures. Submitting to EWS bots before committing. Further feedback welcome, but review not necessary; it&apos;s Gregg&apos;s patch and I&apos;ve already reviewed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512192</commentid>
    <comment_count>27</comment_count>
      <attachid>117286</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-30 15:45:22 -0800</bug_when>
    <thetext>Comment on attachment 117286
Patch after extension rename

Attachment 117286 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10687354</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512230</commentid>
    <comment_count>28</comment_count>
      <attachid>117293</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-30 16:41:14 -0800</bug_when>
    <thetext>Created attachment 117293
Fixed more build issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512285</commentid>
    <comment_count>29</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-30 17:37:30 -0800</bug_when>
    <thetext>Committed r101578: &lt;http://trac.webkit.org/changeset/101578&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518776</commentid>
    <comment_count>30</comment_count>
    <who name="Ben Adams">thundercat</who>
    <bug_when>2011-12-10 02:31:25 -0800</bug_when>
    <thetext>Probably not the right place - but...

Thank you, thank you, thank you!

Ben</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114619</attachid>
            <date>2011-11-10 20:59:09 -0800</date>
            <delta_ts>2011-11-11 14:53:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72086-20111110205908.patch</filename>
            <type>text/plain</type>
            <size>46652</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYmZmNmI0N2U3Y2Y4YTRh
MjEyZDI1YWNkOTQ5ZmVkMWJjNzZhNmJlLi42MDBjY2U1OWJjZjVmYWYzYzViYzVjNjE5Yjc5MDIx
MmRlNWIzYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMTEtMTAgIEdyZWdn
IFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdFQkdMX0VY
UEVSSU1FTlRBTF9jb21wcmVzc2VkX3RleHR1cmVzIFdlYkdMIGV4dGVuc2lvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFdpbGwg
d3JpdGUgZmluYWwgdGVzdCBvbmNlIG9uIGhhcmR3YXJlLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6V2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6On5XZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlczo6Z2V0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJl
c3NlZFRleEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29t
cHJlc3NlZFRleFN1YkRpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmlt
ZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlczo6Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
cy5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5z
aW9uLmguCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKToKKwogMjAxMS0xMS0xMCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgU2hyaW5rIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBkMWU4ZWQ5NWRiZmU1NGMzYWFmZWYyZjg2NTI1MmQzNDViMzUy
OTFhLi5mNzAyZWZkM2VkODU2OWIxNzg3NGZlMjFjN2ZiMTZjNjJhNDE4MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTEwICBHcmVnZyBUYXZh
cmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXRUJHTF9FWFBFUklN
RU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViR3JhcGhpY3NDb250
ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHA6Cisg
ICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAgICAqIHRlc3Rz
L01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3Jh
cGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisKIDIw
MTEtMTEtMTAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2YmQx
YWJhOGJhNTNjOWY3MTg1MzY5NjdlMjRlNTMxZDc2MjQxMWY2Li45NTRhNzliNmExMjllNDdhMzAw
Njk4MTlkNzU3NGI5MjU1OGFmZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjEzNiw2ICsy
MTM2LDcgQEAgSUYgKEVOQUJMRV9XRUJHTCkKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250
ZXh0RXZlbnQuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8u
Y3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAorICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xHZXRJbmZvLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAg
LTIxNjcsNiArMjE2OCw3IEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMQ29udGV4dEV2ZW50LmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5pZGwK
KyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMu
aWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaWRsCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBiZjM0Y2M5NDc1
MTExZWZhMzUwODRjZTM0NDYwZWVhZmUxNTEzNjc3Li45Y2I1ZTZlMzM0MDY4MWU2OTYxMGM0N2Ex
NzZiMzE3NTlhNTQxZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ5NjMs
NiArNDk2Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjZmI0MWU5NjZlN2Mz
N2I1NzhhNDU2YzgxMWMxYmNmYTdkZDVjNTgyLi45NWFmMDBkYWNmNTAxNTQ4OGNhNzJkZWI3NWIy
MjM1YWQ4ZjBkNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM2MjIsNiArMzYyMiw3IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEV2ZW50LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZv
LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oIFwKKyAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBcCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTEZyYW1lYnVmZmVyLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCBc
CkBAIC0zNjU1LDYgKzM2NTYsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkg
ewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAgXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBcCiAgICAgICAgIGh0bWwvY2Fu
dmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
Y3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggOTkwMDZmZjAzYjVhNzJmZDUwYjY2NWZkYWU0M2I2MDNmMmM0YjU2Ni4uMTBiOWIw
YWYzNWM0NTg3Njg0MjAxY2U1ZmI3ODk1YTUzZGNhNTJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTM2NSw2ICsxMzY1LDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRl
cnMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbCcs
CisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaWRsJywK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5pZGwnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwnLApAQCAtNTcxMCw2
ICs1NzExLDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJ
bmZvLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCcsCisgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3Bw
JywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlcy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAppbmRleCA4YjViMTFjZDU1YWEwOTQ4NzZkN2I2OGY4MzRhNzcxMDQwMjM3M2E3Li4wZjg2
MGEyYTIwZGJlM2ZjNDA3MTA1NjdiNjdmNWUzZTZkODAwZThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKICNpbmNs
dWRlICJXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRl
cnMuaCIKKyNpbmNsdWRlICJXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIgog
I2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5o
IgogI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgpAQCAtMTkzLDYgKzE5NCw4IEBAIHN0YXRpYyBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBXZWJHTEV4dGVuCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyo+KGV4dGVuc2lvbikpOwogICAgIGNh
c2UgV2ViR0xFeHRlbnNpb246OldlYkdMRGVidWdTaGFkZXJzTmFtZToKICAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERlYnVnU2hhZGVycyo+
KGV4dGVuc2lvbikpOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzTmFtZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyo+
KGV4dGVuc2lvbikpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4ganNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCAz
NTAyMTUyZjQ4OTAzYTU2MDI5MTA0NGMyMjkzN2YxNzIwZDgwYTJmLi4zN2FiNjkwNmE0ZTdkNDRl
ZmM5ZWZlZDdjZmZlMWZhMjBjOTJmNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJWOFdlYkdMQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVjhXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiVjhXZWJHTERl
YnVnU2hhZGVycy5oIgorI2luY2x1ZGUgIlY4V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMuaCIKICNpbmNsdWRlICJWOFdlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJWOFdl
YkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIlY4V2ViR0xSZW5kZXJidWZmZXIuaCIKQEAgLTE5Miw2
ICsxOTMsMTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KFdlYkdM
RXh0ZW5zaW9uKiBleHRlbnNpb24sIHY4OjpIYW5kbGU8djgKICAgICAgICAgZXh0ZW5zaW9uT2Jq
ZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTERlYnVnU2hhZGVycyo+KGV4dGVuc2lvbikpOwog
ICAgICAgICByZWZlcmVuY2VOYW1lID0gIndlYkdMRGVidWdTaGFkZXJzTmFtZSI7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzTmFtZToKKyAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNf
Y2FzdDxXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyo+KGV4dGVuc2lvbikpOwor
ICAgICAgICByZWZlcmVuY2VOYW1lID0gIndlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzTmFtZSI7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlQoIWV4dGVuc2lvbk9i
amVjdC5Jc0VtcHR5KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRIaWRkZW5SZWZlcmVu
Y2UoY29udGV4dE9iamVjdCwgcmVmZXJlbmNlTmFtZSwgZXh0ZW5zaW9uT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTEzNzgyZTVkZTQ0OGYx
MWNiZjc5NjMxOTQ1ZDM5YjFlZGZkNjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwCkBA
IC0wLDAgKzEsMzA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KFdFQkdMKQorCisjaW5jbHVkZSAiV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMu
aCIKKworI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgorI2luY2x1ZGUgIkludDMyQXJyYXkuaCIK
KyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKworI2luY2x1ZGUgPHd0Zi9Pd25B
cnJheVB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyhXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0
KQorICAgICwgbV9zdXBwb3J0c0R4dDEoZmFsc2UpCisgICAgLCBtX3N1cHBvcnRzRHh0NShmYWxz
ZSkKKyAgICAsIG1fc3VwcG9ydHNFdGMxKGZhbHNlKQorICAgICwgbV9zdXBwb3J0c1B2cnRjKGZh
bHNlKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBnYzNEQ29udGV4dCA9IGNvbnRleHQtPmdy
YXBoaWNzQ29udGV4dDNEKCk7CisgICAgaWYgKGdjM0RDb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpIHsKKyAgICAgICAg
Z2MzRENvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAgICAgICBtX3N1cHBvcnRzRHh0MSA9IHRydWU7Cisg
ICAgfQorICAgIGlmIChnYzNEQ29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpKSB7CisgICAgICAgIGdjM0RDb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X3MzdGMiKTsKKyAgICAgICAgbV9zdXBwb3J0c0R4dDEgPSB0cnVlOworICAgICAgICBtX3N1cHBv
cnRzRHh0NSA9IHRydWU7CisgICAgfQorICAgIGlmIChnYzNEQ29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpIHsK
KyAgICAgICAgZ2MzRENvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xf
Q0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgICAgIG1fc3VwcG9ydHNE
eHQ1ID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGdjM0RDb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpKSB7CisgICAg
ICAgIGdjM0RDb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU19j
b21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7CisgICAgICAgIG1fc3VwcG9ydHNFdGMxID0g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKGdjM0RDb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpKSB7CisgICAgICAgIGdjM0RD
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2Nv
bXByZXNzaW9uX3B2cnRjIik7CisgICAgICAgIG1fc3VwcG9ydHNQdnJ0YyA9IHRydWU7CisgICAg
fQorCisgICAgaWYgKG1fc3VwcG9ydHNEeHQxKSB7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQo
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICAgICAgbV9m
b3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
KTsKKyAgICB9CisKKyAgICBpZiAobV9zdXBwb3J0c0R4dDUpCisgICAgICAgIG1fZm9ybWF0cy5h
cHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisKKyAg
ICBpZiAobV9zdXBwb3J0c0V0YzEpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9u
czNEOjpFVEMxX1JHQjhfT0VTKTsKKworICAgIGlmIChtX3N1cHBvcnRzUHZydGMpIHsKKyAgICAg
ICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRC
UFBWMV9JTUcpOworICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJF
U1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIH0KK30KKworV2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXM6On5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
cygpCit7Cit9CisKK1dlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRXhwZXJpbWVu
dGFsQ29tcHJlc3NlZFRleHR1cmVzOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNOYW1lOworfQorCitQYXNzT3duUHRyPFdl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzPiBXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlczo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzKGNvbnRleHQpKTsKK30KKworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlczo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBH
cmFwaGljc0NvbnRleHQzRCogZ2MzRENvbnRleHQgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQz
RCgpOworICAgIHJldHVybiBnYzNEQ29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpCisgICAgICAgIHx8IGdjM0RDb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjIikKKyAgICAgICAgfHwgZ2MzRENvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpCisgICAgICAgIHx8IGdjM0RD
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMx
X1JHQjhfdGV4dHVyZSIpCisgICAgICAgIHx8IGdjM0RDb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOworfQorCitib29s
IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRU
ZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAg
Y2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICBp
ZiAobV9zdXBwb3J0c0R4dDEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6CisgICAgICAgIGlmICht
X3N1cHBvcnRzRXRjMSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6Cisg
ICAgICAgIGlmIChtX3N1cHBvcnRzRHh0NSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENf
NEJQUFYxX0lNRzoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRD
XzRCUFBWMV9JTUc6CisgICAgICAgIGlmIChtX3N1cHBvcnRzUHZydGMpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21w
cmVzc2VkVGV4RnVuY0RhdGEoR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscykKK3sK
KyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250
ZXh0M0QoKTsKKyAgICBpZiAoIXBpeGVscykgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSB7CisgICAg
ICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHVuc2lnbmVkIGlu
dCBieXRlc1JlcXVpcmVkID0gMDsKKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpFVEMxX1JHQjhfT0VTOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7
CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CisgICAgICAgICAgICBpbnQg
bnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRo
OworICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0
IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxv
Y2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBu
dW1CbG9ja3MgKiBrQmxvY2tTaXplOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgICAg
eworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKKyAgICAgICAgICAgIGNv
bnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1Np
emUgPSAxNjsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGggKyBrQmxv
Y2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzRG93
biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAg
ICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duOworICAg
ICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdC
X1BWUlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdC
QV9QVlJUQ180QlBQVjFfSU1HOgorICAgICAgICB7CisgICAgICAgICAgICBieXRlc1JlcXVpcmVk
ID0gKHN0ZDo6bWF4KHdpZHRoLCA4KSAqIHN0ZDo6bWF4KGhlaWdodCwgOCkgKyA3KSAvIDg7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkg
IT0gYnl0ZXNSZXF1aXJlZCkgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENv
bXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RlbnVtIGZvcm1hdCwgV2ViR0xUZXh0dXJlKiB0ZXgpCit7CisgICAgc3dpdGNoIChm
b3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhU
OgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTOgorICAgICAgICB7CisgICAg
ICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50
IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgICAgICBpZiAoKHhvZmZzZXQgJSBrQmxvY2tXaWR0
aCkgfHwgKHlvZmZzZXQgJSBrQmxvY2tIZWlnaHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGlmICgheG9mZnNldCkgeworICAgICAgICAgICAgICAgIGlmICh3
aWR0aCAhPSB0ZXgtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
ICh3aWR0aCAlIGtCbG9ja1dpZHRoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXlvZmZzZXQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaGVpZ2h0ICE9IHRleC0+Z2V0SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmIChoZWlnaHQgJSBrQmxvY2tIZWlnaHQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRC
UFBWMV9JTUc6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180
QlBQVjFfSU1HOgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoeG9mZnNldCB8fCB5b2Zmc2V0
CisgICAgICAgICAgICAgICAgfHwgd2lkdGggIT0gdGV4LT5nZXRXaWR0aCh0YXJnZXQsIGxldmVs
KSB8fCBoZWlnaHQgIT0gdGV4LT5nZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
M0RzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBB
cnJheUJ1ZmZlclZpZXcqIGRhdGEpCit7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQg
PSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgaWYgKG1fY29udGV4dC0+aXND
b250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNz
ZWRUZXhGb3JtYXQoaW50ZXJuYWxmb3JtYXQpKSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChib3JkZXIpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEod2lkdGgs
IGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIGRhdGEpKQorICAgICAgICByZXR1cm47CisgICAgV2Vi
R0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcodGFyZ2V0
LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9jb250
ZXh0LT5pc0dMRVMyTlBPVFN0cmljdCgpKSB7CisgICAgICAgIGlmIChsZXZlbCAmJiBXZWJHTFRl
eHR1cmU6OmlzTlBPVCh3aWR0aCwgaGVpZ2h0KSkgeworICAgICAgICAgICAgY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRleHQtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciwgZGF0YS0+Ynl0ZUxlbmd0
aCgpLCBkYXRhLT5iYXNlQWRkcmVzcygpKTsKKyAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUpOworICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKK30KKwordm9pZCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRh
dGEpCit7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBtX2NvbnRleHQtPmdyYXBo
aWNzQ29udGV4dDNEKCk7CisgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoZm9ybWF0
KSkgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIXZhbGlk
YXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV9jb250ZXh0LT52YWxp
ZGF0ZVRleHR1cmVCaW5kaW5nKHRhcmdldCwgdHJ1ZSk7CisgICAgaWYgKCF0ZXgpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChmb3JtYXQgIT0gdGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJn
ZXQsIGxldmVsKSkgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnModGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0ZXgpKSB7CisgICAgICAg
IGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09Q
RVJBVElPTik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250ZXh0LT5jb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0
YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRkcmVzcygpKTsKKyAgICBtX2NvbnRleHQtPmNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTEV4
cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRz
KCkKK3sKKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKEludDMyQXJyYXk6OmNyZWF0ZSgmbV9mb3Jt
YXRzWzBdLCBtX2Zvcm1hdHMuc2l6ZSgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJkMjcwOGFjYzYzODY0OGNlZWRkZTZlOTFiZTI5N2Q0OTA2NGI1ZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlcy5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzX2gKKyNkZWZpbmUgV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNfaAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7CitjbGFz
cyBXZWJHTFRleHR1cmU7CisKK2NsYXNzIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcz4gY3JlYXRlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCopOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCopOworCisgICAgdmlydHVhbCB+V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2Vk
VGV4dHVyZXMoKTsKKyAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0Owor
CisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwg
QXJyYXlCdWZmZXJWaWV3KiBkYXRhKTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lk
dGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBk
YXRhKTsKKworICAgIFdlYkdMR2V0SW5mbyBnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKTsK
KworcHJpdmF0ZToKKyAgICBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyhXZWJH
TFJlbmRlcmluZ0NvbnRleHQqKTsKKworICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVu
Y0RhdGEoR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcq
IHBpeGVscyk7CisKKyAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51
bSBmb3JtYXQpOworCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25z
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRl
eHR1cmUqKTsKKworICAgIGJvb2wgbV9zdXBwb3J0c0R4dDE7CisgICAgYm9vbCBtX3N1cHBvcnRz
RHh0NTsKKyAgICBib29sIG1fc3VwcG9ydHNFdGMxOworICAgIGJvb2wgbV9zdXBwb3J0c1B2cnRj
OworCisgICAgVmVjdG9yPGludD4gbV9mb3JtYXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0NGU4MTU2ODVl
OTZkN2I4NTEzOTAwMTRjMjgyZmMxNmFmOWViNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5p
ZGwKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBDb25kaXRpb25hbD1XRUJHTCwKKyAgICAgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAgICAgICBEb250Q2hl
Y2tFbnVtcworICAgIF0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMgeworICAg
ICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0cyAqLworICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCAgICAgICAgPSAweDgzRjA7Cisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCAg
ICAgICA9IDB4ODNGMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfRVhUICAgICAgID0gMHg4M0YzOworICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgRVRDMV9SR0I4X09FUyAgICAgICAgICAgICAgICAgICAgICAgPSAweDhENjQ7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HICAgICA9
IDB4OEMwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9QVlJU
Q180QlBQVjFfSU1HICAgID0gMHg4QzAyOworCisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmdd
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxv
bmcgbGV2ZWwsIGluIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbG9uZyB3aWR0aCwg
aW4gbG9uZyBoZWlnaHQsIGluIGxvbmcgYm9yZGVyLCBpbiBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7
CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkQoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgbGV2ZWwsIGluIGxvbmcgeG9mZnNl
dCwgaW4gbG9uZyB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2lkdGgsIGluIGxvbmcgaGVpZ2h0LCBpbiB1
bnNpZ25lZCBsb25nIGZvcm1hdCwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIH07Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAppbmRleCA2N2Q0
ZDQ3ODM4NTM4MDI4ZWFkY2Q5N2ViZGUzZTYxMzE3ZmM3ZDdhLi40NGQxYmY0Yjk3NTlmOTZlN2Uy
MjVhN2U4ODUxOGQzNDYwY2NmYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBPRVNWZXJ0
ZXhBcnJheU9iamVjdE5hbWUsCiAgICAgICAgIFdlYkdMRGVidWdSZW5kZXJlckluZm9OYW1lLAog
ICAgICAgICBXZWJHTERlYnVnU2hhZGVyc05hbWUsCisgICAgICAgIFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzTmFtZSwKICAgICB9OwogCiAgICAgdm9pZCByZWYoKSB7IG1fY29u
dGV4dC0+cmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDE4YjA5MTE1NzNiNzE4NTBjZmExYmUxNWVhMDNj
M2E1YmVkNzBmZjMuLjUwNTVmZGM2OWIyMmZhZjNiZTEyMTM0ZTA1Mzc5ZWNlOTUyMWQ1ODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYkdMQ29udGV4dEV2ZW50Lmgi
CiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVi
dWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xQcm9n
cmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKQEAgLTIwMDksNiArMjAxMCwx
MSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1ZlcnRl
eEFycmF5T2JqZWN0LmdldCgpOwogICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgIldFQkdMX0VYUEVSSU1FTlRBTF9jb21wcmVzc2VkX3RleHR1cmVzIikpIHsKKyAgICAgICAg
aWYgKCFtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKQorICAgICAgICAgICAg
bV93ZWJnbEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyA9IFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzOjpjcmVhdGUodGhpcyk7CisgICAgICAgIHJldHVybiBtX3dlYmds
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmdldCgpOworICAgIH0KICAgICBpZiAoZXF1
YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQktJVF9sb3NlX2NvbnRleHQiKSkgewogICAgICAgICBp
ZiAoIW1fd2Via2l0TG9zZUNvbnRleHQpCiAgICAgICAgICAgICBtX3dlYmtpdExvc2VDb250ZXh0
ID0gV2ViS2l0TG9zZUNvbnRleHQ6OmNyZWF0ZSh0aGlzKTsKQEAgLTIxMjUsNiArMjEzMSw4IEBA
IFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQzNEZW51
bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9XUklURU1BU0s6CiAgICAgICAgIHJldHVybiBnZXRCb29sZWFuQXJyYXlQYXJhbWV0ZXIocG5h
bWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBSRVNTRURfVEVYVFVSRV9GT1JN
QVRTOgorICAgICAgICBpZiAobV93ZWJnbEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcykK
KyAgICAgICAgICAgIHJldHVybiBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVz
LT5nZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKTsKICAgICAgICAgLy8gRGVmaW5lZCBhcyBu
dWxsIGluIHRoZSBzcGVjCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0U6CkBAIC0yNDU1LDYgKzI0NjMsOCBAQCBWZWN0
b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMo
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKICAg
ICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4
X2FycmF5X29iamVjdCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5
X29iamVjdCIpOworICAgIGlmIChXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6
c3VwcG9ydGVkKHRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9FWFBFUklNRU5U
QUxfY29tcHJlc3NlZF90ZXh0dXJlcyIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9sb3Nl
X2NvbnRleHQiKTsKIAogICAgIGlmIChhbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgK
aW5kZXggY2E3NzYxYjg0YjUyYTliMjQwNGJmZmFhYzM1MDkyMjk2NWM0YjRkNy4uYmQyNTMwOWM2
NjA1NDlhNWRkNzQwZWUwOWIxYjZiMjZhOTgyZmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTYxLDYgKzYxLDcgQEAg
Y2xhc3MgV2ViR0xTaGFkZXI7CiBjbGFzcyBXZWJHTFRleHR1cmU7CiBjbGFzcyBXZWJHTFVuaWZv
cm1Mb2NhdGlvbjsKIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM7CitjbGFzcyBXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczsKIGNsYXNzIFdlYktpdExvc2VDb250ZXh0
OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpAQCAtMzEwLDYgKzMxMSw3IEBAIHB1Ymxp
YzoKICAgICBmcmllbmQgY2xhc3MgV2ViR0xPYmplY3Q7CiAgICAgZnJpZW5kIGNsYXNzIE9FU1Zl
cnRleEFycmF5T2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTERlYnVnU2hhZGVyczsKKyAg
ICBmcmllbmQgY2xhc3MgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM7CiAKICAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZv
aWQgaW5pdGlhbGl6ZU5ld0NvbnRleHQoKTsKQEAgLTQ4MCw2ICs0ODIsNyBAQCBwdWJsaWM6CiAg
ICAgT3duUHRyPFdlYktpdExvc2VDb250ZXh0PiBtX3dlYmtpdExvc2VDb250ZXh0OwogICAgIE93
blB0cjxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm87CiAg
ICAgT3duUHRyPFdlYkdMRGVidWdTaGFkZXJzPiBtX3dlYmdsRGVidWdTaGFkZXJzOworICAgIE93
blB0cjxXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcz4gbV93ZWJnbEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlczsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFtZXRl
ciBhbmQgb3RoZXJzCiAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIoR0MzRGVu
dW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uczNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0Qu
aAppbmRleCA1YzA0ZTM4NWVkNzA5ODhmMTIxMjU1M2ZkN2Q3NWYxZmVkYTE3N2VmLi4yYzI0ZTAz
NjViMDg3NDQ4Zjk0MTBmOWM3MDkzMGNmMjA2NDBkYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaApAQCAtNTcsNiArNTcsMTAgQEAgcHVi
bGljOgogICAgIC8vICAgR0xfT0VTX3JnYjhfcmdiYTgKICAgICAvLyAgIEdMX09FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0CiAgICAgLy8gICBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UK
KyAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAvLyAgIEdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKKyAgICAvLyAgIEdMX09FU19jb21wcmVzc2VkX0VU
QzFfUkdCOF90ZXh0dXJlCisgICAgLy8gICBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0
YwogCiAgICAgLy8gVGFrZXMgZnVsbCBuYW1lIG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCiAg
ICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIuCkBAIC0xMDcsNiArMTExLDIy
IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3Vy
Y2UKICAgICAgICAgVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSA9IDB4OTNB
MCwKKworICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCisgICAgICAg
IC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKKyAgICAgICAgQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMCwKKyAgICAgICAgQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQgPSAweDgzRjEsCisgICAgICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhU
ID0gMHg4M0YyLAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNG
MywKKworICAgICAgICAvLyBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAg
ICAgICBFVEMxX1JHQjhfT0VTID0gMHg4RDY0LAorCisgICAgICAgIC8vIEdMX0lNR190ZXh0dXJl
X2NvbXByZXNzaW9uX3B2cnRjCisgICAgICAgIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9J
TUcgPSAweDhDMDAsCisgICAgICAgIENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcgPSAw
eDhDMDEsCisgICAgICAgIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAy
LAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMywKICAg
ICB9OwogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDFiM2ViNzk2NjU2
MmYzNGZmYjk4ZWNkNDY4MzBjOWEwZmRiZWIyYjUuLmYzOGE1MzkwNjU2YTE3YTYxYzhkMmI0ZDI5
MWEyYjlmMjNmZTNhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNjUyLDkgKzY1Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNE
Ym9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSk7CiAgICAgdm9pZCBjb21waWxlU2hhZGVy
KFBsYXRmb3JtM0RPYmplY3QpOwogCi0gICAgLy8gdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6
ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICAvLyB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zm
c2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsK
LQorICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVp
IGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CiAgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEaW50IGJvcmRlcik7CiAgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKICAg
ICB2b2lkIGN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAK
aW5kZXggNTY0ZDAzOTA0YWE5NTBkZTEyMjhkNTM4MGY4NzZiMjNlNjI3NTIxYy4uYzVlYjI2Y2Ix
NjQ0OWQ5MmM2OGRiOWJiYzE0YWIwZGJmYzA1ZjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwu
Y3BwCkBAIC0xOTUsNiArMTk1LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGluCiAgICAgbV9p
bnRlcm5hbC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeE9mZnNldCwgeU9mZnNl
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7Cisg
ICAgLy8gbV9pbnRlcm5hbC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNl
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgLy8gbV9pbnRlcm5h
bC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjdWxsRmFjZShHQzNEZW51bSBtb2RlKQogewogICAgIG1faW50ZXJuYWwtPmN1
bGxGYWNlKG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXgg
ZTRiMzM4YThjM2NjYWVkY2E1MTBmODE0ZmQwYWI1ZGNjYTM4YzkxZC4uZjFjYWZiOTkzNmZlYzA0
NTFhYzMwZDFhMTNkODFlZGYyZDQ2MWM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwCkBAIC0xNDM0LDYgKzE0MzQsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG8K
ICAgICA6OmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
Cit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4
b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIDo6Z2xDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCmluZGV4IDhhOWVkNWU2MzdhMjQ1MjFmMDVmNjFkYTYwYWFhNzU2NTAzYzAx
MDIuLmQxMDM0Y2FhMTFlZGMxZjQ5ODY5MWY0OTk4YWEyNDExYzU5YWRlMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwCkBAIC02NTIsNiArNjUyLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgZ2xDb21waWxlU2hh
ZGVyKHNoYWRlcik7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIs
IEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRl
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1h
Z2VTaXplLCBkYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7
CisgICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIGdsQ29tcHJl
c3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVt
IGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKIHsKICAgICBtX3ByaXZhdGUtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCA0MmMzZDBkYzE2MDQ1MzIzM2Y4ZDVm
N2JkNWNkYzYzODM1YWFmNzQ0Li4wNWVmZDM0NzY3ZTI3M2NlNzc5NDI5ZjA0MDBlZDIwNzk1NGY4
MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmgKQEAgLTIyMiw2ICsyMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNE
Ym9vbGVhbiBibHVlLCBXR0MzRGJvb2xlYW4gYWxwaGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y29tcGlsZVNoYWRlcihXZWJHTElkIHNoYWRlcikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0
LCBXR0MzRGludCBib3JkZXIsIFdHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51
bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zm
c2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1h
dCwgV0dDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY29weVRleEltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWws
IFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0Rz
aXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRlcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGlu
dCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwg
V0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2UoV0dDM0RlbnVtIG1vZGUpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5j
cHAKaW5kZXggYTUxZmFkMTk2Y2M4NDk3ODQ2ZWM5ZTQzNjU2ZDU3Njk4MGZkMGY3MC4uYjYxZTY0
MjYyOWFjYWEwYjM0M2I4ZjUwZDhiMzNjOGRmZjNkMGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAg
LTQ2Nyw2ICs0NjcsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om5hbWUodDEg
YTEsIHQyIGEyLCB0MyBhMywgdDQgYTQsIHQ1IGE1LCB0NiBhNiwgdDcKICAgICBtX2ltcGwtPm5h
bWUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICBcCiB9CiAKKyNkZWZpbmUg
REVMRUdBVEVfVE9fSU1QTF85KG5hbWUsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwg
dDkpICAgICAgIFwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1lKHQxIGExLCB0
MiBhMiwgdDMgYTMsIHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwK
K3sgXAorICAgIG1faW1wbC0+bmFtZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5
KTsgICAgICBcCit9CisKICNkZWZpbmUgREVMRUdBVEVfVE9fSU1QTF85UihuYW1lLCB0MSwgdDIs
IHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5LCBydCkgXAogcnQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3
IGE3LCB0OCBhOCwgdDkgYTkpIFwKIHsgXApAQCAtNTI3LDYgKzUzMyw4IEBAIERFTEVHQVRFX1RP
X0lNUExfMShjbGVhclN0ZW5jaWwsIEdDM0RpbnQpCiBERUxFR0FURV9UT19JTVBMXzQoY29sb3JN
YXNrLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikK
IERFTEVHQVRFX1RPX0lNUExfMShjb21waWxlU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQogCitE
RUxFR0FURV9UT19JTVBMXzgoY29tcHJlc3NlZFRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50
LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIGNvbnN0
IHZvaWQqKQorREVMRUdBVEVfVE9fSU1QTF85KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNE
ZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVu
dW0sIEdDM0RzaXplaSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleElt
YWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0Mz
RHNpemVpLCBHQzNEc2l6ZWksIEdDM0RpbnQpCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleFN1
YkltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBH
QzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKIERFTEVHQVRFX1RPX0lNUExfMShjdWxsRmFj
ZSwgR0MzRGVudW0pCkBAIC0xMDk0LDYgKzExMDIsOCBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8x
KGNsZWFyU3RlbmNpbCwgR0MzRGludCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzQoY29sb3JNYXNr
LCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERF
TEVHQVRFX1RPX0lOVEVSTkFMXzEoY29tcGlsZVNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCkKIAor
REVMRUdBVEVfVE9fSU5URVJOQUxfOChjb21wcmVzc2VkVGV4SW1hZ2UyRCwgR0MzRGVudW0sIEdD
M0RpbnQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwg
Y29uc3Qgdm9pZCopCitERUxFR0FURV9UT19JTlRFUk5BTF85KGNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRGVudW0sIEdDM0RzaXplaSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTlRFUk5B
TF84KGNvcHlUZXhJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RpbnQs
IEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEaW50KQogREVMRUdBVEVfVE9fSU5U
RVJOQUxfOChjb3B5VGV4U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKQogREVMRUdBVEVf
VE9fSU5URVJOQUxfMShjdWxsRmFjZSwgR0MzRGVudW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDAzZTNhNGVl
M2U3MmY0MDQ4NjlhNTEyYWQ0M2VhMWY2Y2M3NzZhMTMuLmE2OWYxNTg4NDYxMjA5N2JhNDQzMzVh
NDU1ODY3ZDhlNjg5ODQwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC0xMzksNiArMTM5LDggQEAgcHVibGlj
OgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4s
IEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVT
aGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0Rz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwog
ICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpOwogICAgIHZvaWQgY29weVRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCk7CiAgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGlj
c0NvbnRleHQzRC5oCmluZGV4IDg3MjY1YmNiNzE0ODdkYmNhNzQ0Y2YxYzNlYWUxNzI5YmVjNWNh
ZjUuLjZiZTE0MTFlZDI2NjUzNWQzZjQzZjJmOWI3OTFlYWVhNDFhOWIzZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtOTcsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFz
ayhXR0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVl
LCBXR0MzRGJvb2xlYW4gYWxwaGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21waWxlU2hhZGVy
KFdlYkdMSWQgc2hhZGVyKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1h
Z2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9y
ZGVyLCBXR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNE
aW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVp
IHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBp
bWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4
SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVy
bmFsZm9ybWF0LCBXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBXR0Mz
RHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29w
eVRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEaW50
IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNE
c2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3Vs
bEZhY2UoV0dDM0RlbnVtIG1vZGUpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114775</attachid>
            <date>2011-11-11 14:53:49 -0800</date>
            <delta_ts>2011-11-11 17:33:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72086-20111111145348.patch</filename>
            <type>text/plain</type>
            <size>46796</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZlNDQ4ZTNjZDRjMzIw
NmYxOGRkMzczNGI0NjUzMWVjMGE0ODdhNy4uODAwZGQ2NWYyOGM0NDViZDg5YmQ3MWQ1OGY4YzY1
ZDMxMzA1ZWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDExLTExLTEwICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXRUJHTF9F
WFBFUklNRU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBXaWxs
IHdyaXRlIGZpbmFsIHRlc3Qgb25jZSBvbiBoYXJkd2FyZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6Oldl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp+V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OmdldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmlt
ZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5oLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCk6CisKIDIwMTEtMTEtMTEgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQganNDYXN0IHRvIHJlcGxhY2Ugc3RhdGljX2Nhc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzM0MjNhNTc5ZjEwNmUxZjI4MTk4NjZjYWI0NTlh
Njk4YTVlMWM5Zi4uNGFiYjI5MThlYWJlMmFmMWVjN2NlYzEyMTg0YjUwYTlhMzkwMDg3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0xMCAgR3Jl
Z2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV0VCR0xf
RVhQRVJJTUVOVEFMX2NvbXByZXNzZWRfdGV4dHVyZXMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjA4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0u
Y3BwOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAg
KiB0ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQp
OgorCiAyMDExLTExLTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBGaXggQ0NMYXllclRyZWVIb3N0IGxlYWsgaW4gd2Via2l0X3Vu
aXRfdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTU4NjczZjRmZGQxOGFhZjJmNjc3MzZm
ZWM2MGI4OGRiMGRjY2I3OC4uOTU4NTUxZjk1MjBjNDBjZmIwNTA4NzVjZGNhMTc5MjlhMGE3YmQ2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxMzksNiArMjEzOSw3IEBAIElGIChFTkFCTEVf
V0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCkBAIC0yMTcwLDYgKzIxNzEsNyBAQCBJ
RiAoRU5BQkxFX1dFQkdMKQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5p
ZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCisgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmlkbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDNkMzcwYzczNjBhZmFiZGI2OGM5YTU5NzVjNzNl
MmI0NjlkNzFiNC4uNzlkNjNlNmIzMGYyM2Y4NzAwNTY3NGQxNGJhMjRiZTViMDMyMmNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00OTcwLDYgKzQ5NzAsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5k
ZXJlckluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRl
cnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDFlOWQ1Yzc3MmE4YThmNGExZGY1Mjk1ZjJiZWRlZTlk
MWE1OGRkYy4uNzgxMmRiZGQwNmRmNWQ3ZjMxZjExODlhMWFiNzgwMGFjOGFlNGFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCkBAIC0zNjI0LDYgKzM2MjQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VC
R0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5oIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TEV4dGVuc2lvbi5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggXApAQCAtMzY1Nyw2ICszNjU4LDcg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVy
cy5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlcy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAgXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBcCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMR2V0SW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFlOWNmYTM3MzBj
NmYzZGQxODBjNjEzMjFjMjllOTZhOTY5ZWQ2YzMuLmJhNzFmMGVkNWIxMGU4Nzk2MzBhMmU3YjUw
YWExZDNmNzkzNDAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzNjUsNiArMTM2NSw3IEBACiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwnLAorICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsJywKQEAgLTU3MTQsNiArNTcxNSw4IEBACiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMDM3NjEwYTQ5
MWRiNjdhM2ZiZWZkODliYjU4M2Q5ZWIyNWRjNTIxNi4uZDI1OTlhYjNjOTU4MDVmMDU5YmY0Y2M1
MmJkMmZmZDkwZDgwYzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtNjAsNiArNjAs
NyBAQAogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTEdl
dEluZm8uaCIKQEAgLTE5Myw2ICsxOTQsOCBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbgogICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMRGVi
dWdSZW5kZXJlckluZm8qPihleHRlbnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpX
ZWJHTERlYnVnU2hhZGVyc05hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKKyAgICBj
YXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05h
bWU6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMqPihleHRlbnNpb24pKTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMzUwMjE1MmY0ODkwM2E1NjAyOTEw
NDRjMjI5MzdmMTcyMGQ4MGEyZi4uMzdhYjY5MDZhNGU3ZDQ0ZWZjOWVmZWQ3Y2ZmZTFmYTIwYzky
ZjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC01OCw2ICs1
OCw3IEBACiAjaW5jbHVkZSAiVjhXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNs
dWRlICJWOFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgiCiAjaW5jbHVkZSAi
VjhXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTFByb2dyYW0uaCIKICNpbmNs
dWRlICJWOFdlYkdMUmVuZGVyYnVmZmVyLmgiCkBAIC0xOTIsNiArMTkzLDEwIEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9u
LCB2ODo6SGFuZGxlPHY4CiAgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nh
c3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKICAgICAgICAgcmVmZXJlbmNlTmFt
ZSA9ICJ3ZWJHTERlYnVnU2hhZGVyc05hbWUiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YkdMRXh0ZW5zaW9uOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05hbWU6Cisg
ICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXMqPihleHRlbnNpb24pKTsKKyAgICAgICAgcmVmZXJlbmNlTmFt
ZSA9ICJ3ZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05hbWUiOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgQVNTRVJUKCFleHRlbnNpb25PYmplY3QuSXNFbXB0eSgpKTsKICAg
ICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKGNvbnRleHRPYmplY3QsIHJl
ZmVyZW5jZU5hbWUsIGV4dGVuc2lvbk9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlkM2I1YzkxNWFlM2M1YmZhMmY2ZGY2NDZmOGQzODAxYjRi
ODEzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUg
IldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgiCisKKyNpbmNsdWRlICJFeHRl
bnNpb25zM0QuaCIKKyNpbmNsdWRlICJJbnQzMkFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6V2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKKyAgICAsIG1fc3VwcG9ydHNE
eHQxKGZhbHNlKQorICAgICwgbV9zdXBwb3J0c0R4dDUoZmFsc2UpCisgICAgLCBtX3N1cHBvcnRz
RXRjMShmYWxzZSkKKyAgICAsIG1fc3VwcG9ydHNQdnJ0YyhmYWxzZSkKK3sKKyAgICBFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQxIikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAgICAgICBtX3N1cHBvcnRzRHh0
MSA9IHRydWU7CisgICAgfQorICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3Rl
eHR1cmVfY29tcHJlc3Npb25fczN0YyIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKTsKKyAgICAgICAgbV9zdXBw
b3J0c0R4dDEgPSB0cnVlOworICAgICAgICBtX3N1cHBvcnRzRHh0NSA9IHRydWU7CisgICAgfQor
ICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQ1IikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hS
T01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgICAgIG1fc3VwcG9ydHNEeHQ1
ID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfY29t
cHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7CisgICAgICAg
IG1fc3VwcG9ydHNFdGMxID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBv
cnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpKSB7CisgICAgICAgIGV4dGVu
c2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7
CisgICAgICAgIG1fc3VwcG9ydHNQdnJ0YyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKG1fc3Vw
cG9ydHNEeHQxKSB7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICB9CisKKyAgICBp
ZiAobV9zdXBwb3J0c0R4dDUpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisKKyAgICBpZiAobV9zdXBwb3J0c0V0
YzEpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VT
KTsKKworICAgIGlmIChtX3N1cHBvcnRzUHZydGMpIHsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVu
ZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOworICAgICAg
ICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRC
UFBWMV9JTUcpOworICAgIH0KK30KKworV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXM6On5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcygpCit7Cit9CisKK1dlYkdM
RXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXNOYW1lOworfQorCitQYXNzT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKGNvbnRleHQpKTsKK30K
KworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBFeHRlbnNpb25zM0QqIGV4dGVu
c2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Cisg
ICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
Q0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikKKyAgICAgICAgfHwgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikKKyAgICAg
ICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2
cnRjIik7Cit9CisKK2Jvb2wgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19E
WFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzRHh0MWwKKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6RVRDMV9SR0I4X09FUzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNFdGMxOworICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAg
ICAgcmV0dXJuIG1fc3VwcG9ydHNEeHQ1OworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNQdnJ0
YzsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpOworICAgIGlmICghcGl4ZWxz
KSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAo
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGJ5dGVzUmVxdWlyZWQgPSAwOworCisg
ICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAg
ICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tTaXplID0gODsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGgg
KyBrQmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxv
Y2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAg
ICAgICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3du
OworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7
CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OworICAgICAgICAgICAgaW50
IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0
aDsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NEb3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdo
dCAtIDEpIC8ga0Jsb2NrSGVpZ2h0OworICAgICAgICAgICAgaW50IG51bUJsb2NrcyA9IG51bUJs
b2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd247CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0g
bnVtQmxvY2tzICoga0Jsb2NrU2l6ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIDgpICog
c3RkOjptYXgoaGVpZ2h0LCA4KSArIDcpIC8gODsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChwaXhlbHMtPmJ5dGVMZW5ndGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7CisgICAg
ICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0
ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJH
TFRleHR1cmUqIHRleCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkVUQzFfUkdCOF9PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tX
aWR0aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAg
ICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hl
aWdodCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF4
b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFy
Z2V0LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICUga0Jsb2NrV2lkdGgpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICgheW9mZnNldCkgeworICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgIT0gdGV4LT5n
ZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodCAlIGtC
bG9ja0hlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZzZXQKKyAgICAgICAgICAgICAgICB8fCB3aWR0
aCAhPSB0ZXgtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpIHx8IGhlaWdodCAhPSB0ZXgtPmdldEhl
aWdodCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sK
KyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250
ZXh0M0QoKTsKKyAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChpbnRlcm5hbGZvcm1h
dCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGJvcmRl
cikgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSh3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwg
ZGF0YSkpCisgICAgICAgIHJldHVybjsKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IG1fY29udGV4
dC0+dmFsaWRhdGVUZXh0dXJlQmluZGluZyh0YXJnZXQsIHRydWUpOworICAgIGlmICghdGV4KQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2NvbnRleHQtPmlzR0xFUzJOUE9UU3RyaWN0KCkp
IHsKKyAgICAgICAgaWYgKGxldmVsICYmIFdlYkdMVGV4dHVyZTo6aXNOUE9UKHdpZHRoLCBoZWln
aHQpKSB7CisgICAgICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9yZGVyLCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkp
OworICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgbV9j
b250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIFdlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICBpZiAo
bV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZh
bGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChmb3JtYXQpKSB7CisgICAgICAgIGNvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEo
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
R0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcodGFyZ2V0
LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZvcm1h
dCAhPSB0ZXgtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpKSB7CisgICAgICAgIGNv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViRGltZW5zaW9ucyh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHRleCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJh
c2VBZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzOjpnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKQoreworICAgIHJldHVybiBXZWJHTEdl
dEluZm8oSW50MzJBcnJheTo6Y3JlYXRlKCZtX2Zvcm1hdHNbMF0sIG1fZm9ybWF0cy5zaXplKCkp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQyNzA4YWNjNjM4
NjQ4Y2VlZGRlNmU5MWJlMjk3ZDQ5MDY0YjVlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xFeHBlcmltZW50YWxDb21wcmVz
c2VkVGV4dHVyZXNfaAorI2RlZmluZSBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
c19oCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNp
b24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK2NsYXNzIFdlYkdMVGV4dHVyZTsKKworY2xhc3Mg
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNp
b24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICB2aXJ0
dWFsIH5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcygpOworICAgIHZpcnR1YWwg
RXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOworCisgICAgV2ViR0xHZXRJbmZv
IGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOworCitwcml2YXRlOgorICAgIFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworCisg
ICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKTsKKworICAgIGJvb2wgdmFs
aWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCk7CisKKyAgICBib29sIHZh
bGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSopOworCisgICAgYm9vbCBtX3N1
cHBvcnRzRHh0MTsKKyAgICBib29sIG1fc3VwcG9ydHNEeHQ1OworICAgIGJvb2wgbV9zdXBwb3J0
c0V0YzE7CisgICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7CisKKyAgICBWZWN0b3I8aW50PiBtX2Zv
cm1hdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJHTEV4
cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0ZTgxNTY4NWU5NmQ3Yjg1MTM5MDAxNGMyODJmYzE2YWY5
ZWI0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdF
QkdMLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDb250ZXh0LAorICAgICAgICBP
bWl0Q29uc3RydWN0b3IsCisgICAgICAgIERvbnRDaGVja0VudW1zCisgICAgXSBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyB7CisgICAgICAgIC8qIENvbXByZXNzZWQgVGV4dHVy
ZSBGb3JtYXRzICovCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUICAgICAgICA9IDB4ODNGMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50
IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUICAgICAgID0gMHg4M0YxOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgICAgICAgPSAw
eDgzRjM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBFVEMxX1JHQjhfT0VTICAgICAgICAg
ICAgICAgICAgICAgICA9IDB4OEQ2NDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgICAgID0gMHg4QzAwOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgICAgPSAweDhDMDI7
CisKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBsZXZlbCwgaW4gdW5zaWduZWQgbG9u
ZyBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gbG9uZyBi
b3JkZXIsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVj
a2luZ10gdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gbG9uZyBsZXZlbCwgaW4gbG9uZyB4b2Zmc2V0LCBpbiBsb25nIHlvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
bG9uZyB3aWR0aCwgaW4gbG9uZyBoZWlnaHQsIGluIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCBpbiBB
cnJheUJ1ZmZlclZpZXcgZGF0YSk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5oCmluZGV4IDY3ZDRkNDc4Mzg1MzgwMjhlYWRjZDk3ZWJkZTNl
NjEzMTdmYzdkN2EuLjQ0ZDFiZjRiOTc1OWY5NmU3ZTIyNWE3ZTg4NTE4ZDM0NjBjY2ZhYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaApAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9FU1ZlcnRleEFycmF5T2JqZWN0TmFtZSwKICAgICAg
ICAgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mb05hbWUsCiAgICAgICAgIFdlYkdMRGVidWdTaGFkZXJz
TmFtZSwKKyAgICAgICAgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNOYW1lLAog
ICAgIH07CiAKICAgICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggMThiMDkxMTU3M2I3MTg1MGNmYTFiZTE1ZWEwM2MzYTViZWQ3MGZmMy4uNTA1NWZkYzY5YjIy
ZmFmM2JlMTIxMzRlMDUzNzllY2U5NTIxZDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OSw2ICs1OSw3IEBA
CiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNsdWRlICJX
ZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMRnJh
bWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmJ1ZmZlci5oIgpAQCAtMjAwOSw2ICsyMDEwLDExIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CiAgICAg
fQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfRVhQRVJJTUVOVEFMX2Nv
bXByZXNzZWRfdGV4dHVyZXMiKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXMpCisgICAgICAgICAgICBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzID0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0
ZSh0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMuZ2V0KCk7CisgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VC
S0lUX2xvc2VfY29udGV4dCIpKSB7CiAgICAgICAgIGlmICghbV93ZWJraXRMb3NlQ29udGV4dCkK
ICAgICAgICAgICAgIG1fd2Via2l0TG9zZUNvbnRleHQgPSBXZWJLaXRMb3NlQ29udGV4dDo6Y3Jl
YXRlKHRoaXMpOwpAQCAtMjEyNSw2ICsyMTMxLDggQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0
dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICAgIGlmIChtX3dlYmds
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKQorICAgICAgICAgICAgcmV0dXJuIG1fd2Vi
Z2xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMtPmdldENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0cygpOwogICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExf
RkFDRToKQEAgLTI0NTUsNiArMjQ2Myw4IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Ik9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgaWYgKFdlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0ZWQodGhpcykpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIldFQkdMX0VYUEVSSU1FTlRBTF9jb21wcmVzc2VkX3RleHR1cmVzIik7
CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX2xvc2VfY29udGV4dCIpOwogCiAgICAgaWYgKGFs
bG93UHJpdmlsZWdlZEV4dGVuc2lvbnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBjYTc3NjFiODRiNTJhOWIyNDA0
YmZmYWFjMzUwOTIyOTY1YzRiNGQ3Li5iZDI1MzA5YzY2MDU0OWE1ZGQ3NDBlZTA5YjFiNmIyNmE5
ODJmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBXZWJHTFNoYWRlcjsKIGNsYXNz
IFdlYkdMVGV4dHVyZTsKIGNsYXNzIFdlYkdMVW5pZm9ybUxvY2F0aW9uOwogY2xhc3MgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUzsKK2NsYXNzIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRl
eHR1cmVzOwogY2xhc3MgV2ViS2l0TG9zZUNvbnRleHQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CkBAIC0zMTAsNiArMzExLDcgQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBXZWJH
TE9iamVjdDsKICAgICBmcmllbmQgY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOworICAgIGZyaWVuZCBjbGFzcyBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChI
VE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CiAgICAgdm9pZCBpbml0aWFsaXplTmV3Q29udGV4dCgp
OwpAQCAtNDgwLDYgKzQ4Miw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViS2l0TG9zZUNvbnRl
eHQ+IG1fd2Via2l0TG9zZUNvbnRleHQ7CiAgICAgT3duUHRyPFdlYkdMRGVidWdSZW5kZXJlcklu
Zm8+IG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbzsKICAgICBPd25QdHI8V2ViR0xEZWJ1Z1NoYWRl
cnM+IG1fd2ViZ2xEZWJ1Z1NoYWRlcnM7CisgICAgT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOwog
CiAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKICAgICBXZWJHTEdl
dEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCmluZGV4IDVjMDRlMzg1ZWQ3MDk4OGYx
MjEyNTUzZmQ3ZDc1ZjFmZWRhMTc3ZWYuLjJjMjRlMDM2NWIwODc0NDhmOTQxMGY5YzcwOTMwY2Yy
MDY0MGRhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnMzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
c2lvbnMzRC5oCkBAIC01Nyw2ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gICBHTF9PRVNfcmdi
OF9yZ2JhOAogICAgIC8vICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICAvLyAgIEdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIC8vICAgR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0MQorICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YworICAgIC8vICAgR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKKyAgICAvLyAg
IEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjCiAKICAgICAvLyBUYWtlcyBmdWxsIG5h
bWUgb2YgZXh0ZW5zaW9uOyBmb3IgZXhhbXBsZSwKICAgICAvLyAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KQEAgLTEwNyw2ICsxMTEsMjIgQEAgcHVibGljOgogCiAgICAgICAgIC8v
IEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgICAgICBUUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwLAorCisgICAgICAgIC8vIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0YworICAgICAgICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4M0Yw
LAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMSwKKyAgICAg
ICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjIsCisgICAgICAgIENPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0gMHg4M0YzLAorCisgICAgICAgIC8vIEdMX09FU19j
b21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCisgICAgICAgIEVUQzFfUkdCOF9PRVMgPSAweDhE
NjQsCisKKyAgICAgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyAgICAg
ICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMCwKKyAgICAgICAgQ09N
UFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMSwKKyAgICAgICAgQ09NUFJFU1NF
RF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDIsCisgICAgICAgIENPTVBSRVNTRURfUkdC
QV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzLAogICAgIH07CiAKICAgICAvLyBHTF9BUkJfcm9i
dXN0bmVzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKaW5kZXggMWIzZWI3OTY2NTYyZjM0ZmZiOThlY2Q0NjgzMGM5YTBmZGJl
YjJiNS4uZjM4YTUzOTA2NTZhMTdhNjFjOGQyYjRkMjkxYTJiOWYyM2ZlM2FiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CkBAIC02NTIsOSArNjUyLDggQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29s
ZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFu
IGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKLSAg
ICAvLyB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpOwotICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotCisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVy
LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBk
YXRhKTsKICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKTsKICAgICB2b2lk
IGNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQgY3VsbEZhY2UoR0MzRGVudW0g
bW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCA1NjRkMDM5MDRhYTk1MGRlMTIy
OGQ1MzgwZjg3NmIyM2U2Mjc1MjFjLi4wYjY0MzAwNjU1OGVhNTVkOGE2MDEzYmI4NzVhOTY0OWU3
ZmYzYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTE5NSw2ICsxOTUsMTggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW4KICAgICBtX2ludGVybmFsLT5jb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4T2Zmc2V0LCB5T2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIGNvbXByZXNzZWRUZXhJbWFnZTJELgorICAgIC8vIG1faW50ZXJuYWwtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lk
KiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQuCisgICAgLy8gbV9pbnRlcm5hbC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUs
IGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNEZW51bSBt
b2RlKQogewogICAgIG1faW50ZXJuYWwtPmN1bGxGYWNlKG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTRiMzM4YThjM2NjYWVkY2E1MTBmODE0ZmQwYWI1
ZGNjYTM4YzkxZC4uZTM4MDViZjNhNmY1ODJjZWU3MmNjYjFkOWY4MjZiZDk4MWFmNTc3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0xNDM0LDYgKzE0MzQsMTgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG8KICAgICA6OmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7
CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBp
bWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworICAgIDo6Z2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisK
IFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IDhhOWVk
NWU2MzdhMjQ1MjFmMDVmNjFkYTYwYWFhNzU2NTAzYzAxMDIuLmQxMDM0Y2FhMTFlZGMxZjQ5ODY5
MWY0OTk4YWEyNDExYzU5YWRlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC02NTIsNiAr
NjUyLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0z
RE9iamVjdCBzaGFkZXIpCiAgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRh
dGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50
IGJvcmRlcikKIHsKICAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0RFUFMKaW5kZXggMWRjN2ZkN2E0MjY2MjJlNDc3MTlkMWVjYTBhZjRhODA5MWNlOTE4
ZS4uNDg3NmJlYzI5NTAzZWI0NWNhZDRhOGIwOGY0NzQ1NDc4ODI5MWJjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
REVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0gewogICAnY2hyb21pdW1fc3ZuJzogJ2h0
dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9zcmMnLAotICAnY2hyb21pdW1fcmV2Jzog
JzEwOTQyMycKKyAgJ2Nocm9taXVtX3Jldic6ICcxMDk1NjgnCiB9CiAKIGRlcHMgPSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aAppbmRleCA0MmMzZDBkYzE2MDQ1MzIzM2Y4ZDVmN2JkNWNkYzYzODM1YWFmNzQ0Li4wNWVmZDM0
NzY3ZTI3M2NlNzc5NDI5ZjA0MDBlZDIwNzk1NGY4MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKQEAgLTIyMiw2ICsy
MjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xlYW4g
cmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xlYW4g
YWxwaGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTElkIHNoYWRl
cikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKFdHQzNEZW51
bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNE
c2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIsIFdHQzNEc2l6
ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBX
R0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0Mz
RHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29weVRleEltYWdlMkQoV0dD
M0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
V0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWln
aHQsIFdHQzNEaW50IGJvcmRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4U3ViSW1h
Z2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwg
V0dDM0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0
aCwgV0dDM0RzaXplaSBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2UoV0dD
M0RlbnVtIG1vZGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYTUxZmFkMTk2Y2M4NDk3ODQ2
ZWM5ZTQzNjU2ZDU3Njk4MGZkMGY3MC4uYjYxZTY0MjYyOWFjYWEwYjM0M2I4ZjUwZDhiMzNjOGRm
ZjNkMGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3ND
b250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3Jh
cGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTQ2Nyw2ICs0NjcsMTIgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6Om5hbWUodDEgYTEsIHQyIGEyLCB0MyBhMywgdDQgYTQsIHQ1
IGE1LCB0NiBhNiwgdDcKICAgICBtX2ltcGwtPm5hbWUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwg
YTcsIGE4KTsgICAgICBcCiB9CiAKKyNkZWZpbmUgREVMRUdBVEVfVE9fSU1QTF85KG5hbWUsIHQx
LCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpICAgICAgIFwKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0LCB0NSBhNSwg
dDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwKK3sgXAorICAgIG1faW1wbC0+bmFtZShhMSwg
YTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsgICAgICBcCit9CisKICNkZWZpbmUgREVM
RUdBVEVfVE9fSU1QTF85UihuYW1lLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5
LCBydCkgXAogcnQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1lKHQxIGExLCB0MiBhMiwg
dDMgYTMsIHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwKIHsgXApA
QCAtNTI3LDYgKzUzMyw4IEBAIERFTEVHQVRFX1RPX0lNUExfMShjbGVhclN0ZW5jaWwsIEdDM0Rp
bnQpCiBERUxFR0FURV9UT19JTVBMXzQoY29sb3JNYXNrLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xl
YW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RPX0lNUExfMShjb21waWxl
U2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQogCitERUxFR0FURV9UT19JTVBMXzgoY29tcHJlc3Nl
ZFRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQorREVMRUdBVEVfVE9fSU1QTF85
KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0Mz
RGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RzaXplaSwgY29uc3Qgdm9pZCop
CiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBH
QzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RpbnQp
CiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleFN1YkltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXpl
aSkKIERFTEVHQVRFX1RPX0lNUExfMShjdWxsRmFjZSwgR0MzRGVudW0pCkBAIC0xMDk0LDYgKzEx
MDIsOCBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8xKGNsZWFyU3RlbmNpbCwgR0MzRGludCkKIERF
TEVHQVRFX1RPX0lOVEVSTkFMXzQoY29sb3JNYXNrLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4s
IEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY29tcGls
ZVNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCkKIAorREVMRUdBVEVfVE9fSU5URVJOQUxfOChjb21w
cmVzc2VkVGV4SW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEaW50LCBH
QzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgY29uc3Qgdm9pZCopCitERUxFR0FURV9UT19J
TlRFUk5BTF85KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0Mz
RGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RzaXplaSwgY29u
c3Qgdm9pZCopCiBERUxFR0FURV9UT19JTlRFUk5BTF84KGNvcHlUZXhJbWFnZTJELCBHQzNEZW51
bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNp
emVpLCBHQzNEaW50KQogREVMRUdBVEVfVE9fSU5URVJOQUxfOChjb3B5VGV4U3ViSW1hZ2UyRCwg
R0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RzaXplaSwgR0MzRHNpemVpKQogREVMRUdBVEVfVE9fSU5URVJOQUxfMShjdWxsRmFjZSwgR0Mz
RGVudW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCmluZGV4IDAzZTNhNGVlM2U3MmY0MDQ4NjlhNTEyYWQ0M2VhMWY2Y2M3
NzZhMTMuLmE2OWYxNTg4NDYxMjA5N2JhNDQzMzVhNDU1ODY3ZDhlNjg5ODQwMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCkBAIC0xMzksNiArMTM5LDggQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Ri
b29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29s
ZWFuIGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBp
bWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwogICAgIHZvaWQgY29weVRleEltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0Mz
RGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGludCBib3JkZXIpOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGlu
dCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAgICAg
dm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDg3MjY1YmNi
NzE0ODdkYmNhNzQ0Y2YxYzNlYWUxNzI5YmVjNWNhZjUuLjZiZTE0MTFlZDI2NjUzNWQzZjQzZjJm
OWI3OTFlYWVhNDFhOWIzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtOTcsNiArOTcsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJv
b2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xlYW4gYWxwaGEpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjb21waWxlU2hhZGVyKFdlYkdMSWQgc2hhZGVyKSB7IH0KIAorICAg
IHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0Mz
RGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBX
R0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyLCBXR0MzRHNpemVpIGltYWdlU2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0
LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwg
V0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBX
R0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0MzRGludCB4LCBXR0Mz
RGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9y
ZGVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29weVRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRh
cmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQs
IFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVp
Z2h0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2UoV0dDM0RlbnVtIG1vZGUpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114806</attachid>
            <date>2011-11-11 17:33:09 -0800</date>
            <delta_ts>2011-11-11 21:40:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72086-20111111173308.patch</filename>
            <type>text/plain</type>
            <size>46808</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZlNDQ4ZTNjZDRjMzIw
NmYxOGRkMzczNGI0NjUzMWVjMGE0ODdhNy4uODAwZGQ2NWYyOGM0NDViZDg5YmQ3MWQ1OGY4YzY1
ZDMxMzA1ZWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDExLTExLTEwICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXRUJHTF9F
WFBFUklNRU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBXaWxs
IHdyaXRlIGZpbmFsIHRlc3Qgb25jZSBvbiBoYXJkd2FyZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6Oldl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp+V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OmdldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmlt
ZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5oLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCk6CisKIDIwMTEtMTEtMTEgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQganNDYXN0IHRvIHJlcGxhY2Ugc3RhdGljX2Nhc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzM0MjNhNTc5ZjEwNmUxZjI4MTk4NjZjYWI0NTlh
Njk4YTVlMWM5Zi4uNGFiYjI5MThlYWJlMmFmMWVjN2NlYzEyMTg0YjUwYTlhMzkwMDg3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0xMCAgR3Jl
Z2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV0VCR0xf
RVhQRVJJTUVOVEFMX2NvbXByZXNzZWRfdGV4dHVyZXMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjA4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0u
Y3BwOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAg
KiB0ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQp
OgorCiAyMDExLTExLTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBGaXggQ0NMYXllclRyZWVIb3N0IGxlYWsgaW4gd2Via2l0X3Vu
aXRfdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTU4NjczZjRmZGQxOGFhZjJmNjc3MzZm
ZWM2MGI4OGRiMGRjY2I3OC4uOTU4NTUxZjk1MjBjNDBjZmIwNTA4NzVjZGNhMTc5MjlhMGE3YmQ2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxMzksNiArMjEzOSw3IEBAIElGIChFTkFCTEVf
V0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCkBAIC0yMTcwLDYgKzIxNzEsNyBAQCBJ
RiAoRU5BQkxFX1dFQkdMKQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5p
ZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCisgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmlkbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDNkMzcwYzczNjBhZmFiZGI2OGM5YTU5NzVjNzNl
MmI0NjlkNzFiNC4uNzlkNjNlNmIzMGYyM2Y4NzAwNTY3NGQxNGJhMjRiZTViMDMyMmNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00OTcwLDYgKzQ5NzAsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5k
ZXJlckluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRl
cnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDFlOWQ1Yzc3MmE4YThmNGExZGY1Mjk1ZjJiZWRlZTlk
MWE1OGRkYy4uNzgxMmRiZGQwNmRmNWQ3ZjMxZjExODlhMWFiNzgwMGFjOGFlNGFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCkBAIC0zNjI0LDYgKzM2MjQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VC
R0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5oIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TEV4dGVuc2lvbi5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggXApAQCAtMzY1Nyw2ICszNjU4LDcg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVy
cy5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlcy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAgXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBcCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMR2V0SW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFlOWNmYTM3MzBj
NmYzZGQxODBjNjEzMjFjMjllOTZhOTY5ZWQ2YzMuLmJhNzFmMGVkNWIxMGU4Nzk2MzBhMmU3YjUw
YWExZDNmNzkzNDAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzNjUsNiArMTM2NSw3IEBACiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwnLAorICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsJywKQEAgLTU3MTQsNiArNTcxNSw4IEBACiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMDM3NjEwYTQ5
MWRiNjdhM2ZiZWZkODliYjU4M2Q5ZWIyNWRjNTIxNi4uZDI1OTlhYjNjOTU4MDVmMDU5YmY0Y2M1
MmJkMmZmZDkwZDgwYzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtNjAsNiArNjAs
NyBAQAogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTEdl
dEluZm8uaCIKQEAgLTE5Myw2ICsxOTQsOCBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbgogICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMRGVi
dWdSZW5kZXJlckluZm8qPihleHRlbnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpX
ZWJHTERlYnVnU2hhZGVyc05hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKKyAgICBj
YXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05h
bWU6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMqPihleHRlbnNpb24pKTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMzUwMjE1MmY0ODkwM2E1NjAyOTEw
NDRjMjI5MzdmMTcyMGQ4MGEyZi4uMzdhYjY5MDZhNGU3ZDQ0ZWZjOWVmZWQ3Y2ZmZTFmYTIwYzky
ZjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC01OCw2ICs1
OCw3IEBACiAjaW5jbHVkZSAiVjhXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNs
dWRlICJWOFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgiCiAjaW5jbHVkZSAi
VjhXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTFByb2dyYW0uaCIKICNpbmNs
dWRlICJWOFdlYkdMUmVuZGVyYnVmZmVyLmgiCkBAIC0xOTIsNiArMTkzLDEwIEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9u
LCB2ODo6SGFuZGxlPHY4CiAgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nh
c3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKICAgICAgICAgcmVmZXJlbmNlTmFt
ZSA9ICJ3ZWJHTERlYnVnU2hhZGVyc05hbWUiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YkdMRXh0ZW5zaW9uOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05hbWU6Cisg
ICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXMqPihleHRlbnNpb24pKTsKKyAgICAgICAgcmVmZXJlbmNlTmFt
ZSA9ICJ3ZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05hbWUiOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgQVNTRVJUKCFleHRlbnNpb25PYmplY3QuSXNFbXB0eSgpKTsKICAg
ICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKGNvbnRleHRPYmplY3QsIHJl
ZmVyZW5jZU5hbWUsIGV4dGVuc2lvbk9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDllYzkzZDI0YmMzNGFjMzYxZjU2NDMyOTdiZjViMGIzYThm
YTcxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUg
IldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgiCisKKyNpbmNsdWRlICJFeHRl
bnNpb25zM0QuaCIKKyNpbmNsdWRlICJJbnQzMkFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6V2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKKyAgICAsIG1fc3VwcG9ydHNE
eHQxKGZhbHNlKQorICAgICwgbV9zdXBwb3J0c0R4dDUoZmFsc2UpCisgICAgLCBtX3N1cHBvcnRz
RXRjMShmYWxzZSkKKyAgICAsIG1fc3VwcG9ydHNQdnJ0YyhmYWxzZSkKK3sKKyAgICBFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQxIikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAgICAgICBtX3N1cHBvcnRzRHh0
MSA9IHRydWU7CisgICAgfQorICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3Rl
eHR1cmVfY29tcHJlc3Npb25fczN0YyIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKTsKKyAgICAgICAgbV9zdXBw
b3J0c0R4dDEgPSB0cnVlOworICAgICAgICBtX3N1cHBvcnRzRHh0NSA9IHRydWU7CisgICAgfQor
ICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQ1IikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hS
T01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgICAgIG1fc3VwcG9ydHNEeHQ1
ID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfY29t
cHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7CisgICAgICAg
IG1fc3VwcG9ydHNFdGMxID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBv
cnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpKSB7CisgICAgICAgIGV4dGVu
c2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7
CisgICAgICAgIG1fc3VwcG9ydHNQdnJ0YyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKG1fc3Vw
cG9ydHNEeHQxKSB7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICB9CisKKyAgICBp
ZiAobV9zdXBwb3J0c0R4dDUpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisKKyAgICBpZiAobV9zdXBwb3J0c0V0
YzEpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VT
KTsKKworICAgIGlmIChtX3N1cHBvcnRzUHZydGMpIHsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVu
ZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOworICAgICAg
ICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRC
UFBWMV9JTUcpOworICAgIH0KK30KKworV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXM6On5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcygpCit7Cit9CisKK1dlYkdM
RXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXNOYW1lOworfQorCitQYXNzT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKGNvbnRleHQpKTsKK30K
KworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBFeHRlbnNpb25zM0QqIGV4dGVu
c2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Cisg
ICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
Q0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikKKyAgICAgICAgfHwgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikKKyAgICAg
ICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2
cnRjIik7Cit9CisKK2Jvb2wgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19E
WFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzRHh0MTsKKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6RVRDMV9SR0I4X09FUzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNFdGMxOworICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAg
ICAgcmV0dXJuIG1fc3VwcG9ydHNEeHQ1OworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNQdnJ0
YzsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpOworICAgIGlmICghcGl4ZWxz
KSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAo
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGJ5dGVzUmVxdWlyZWQgPSAwOworCisg
ICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAg
ICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tTaXplID0gODsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGgg
KyBrQmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxv
Y2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAg
ICAgICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3du
OworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7
CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OworICAgICAgICAgICAgaW50
IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0
aDsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NEb3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdo
dCAtIDEpIC8ga0Jsb2NrSGVpZ2h0OworICAgICAgICAgICAgaW50IG51bUJsb2NrcyA9IG51bUJs
b2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd247CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0g
bnVtQmxvY2tzICoga0Jsb2NrU2l6ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIDgpICog
c3RkOjptYXgoaGVpZ2h0LCA4KSArIDcpIC8gODsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChwaXhlbHMtPmJ5dGVMZW5ndGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7CisgICAg
ICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0
ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJH
TFRleHR1cmUqIHRleCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkVUQzFfUkdCOF9PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tX
aWR0aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAg
ICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hl
aWdodCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF4
b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFy
Z2V0LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICUga0Jsb2NrV2lkdGgpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICgheW9mZnNldCkgeworICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgIT0gdGV4LT5n
ZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodCAlIGtC
bG9ja0hlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZzZXQKKyAgICAgICAgICAgICAgICB8fCB3aWR0
aCAhPSB0ZXgtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpIHx8IGhlaWdodCAhPSB0ZXgtPmdldEhl
aWdodCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sK
KyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250
ZXh0M0QoKTsKKyAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChpbnRlcm5hbGZvcm1h
dCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGJvcmRl
cikgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSh3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwg
ZGF0YSkpCisgICAgICAgIHJldHVybjsKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IG1fY29udGV4
dC0+dmFsaWRhdGVUZXh0dXJlQmluZGluZyh0YXJnZXQsIHRydWUpOworICAgIGlmICghdGV4KQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2NvbnRleHQtPmlzR0xFUzJOUE9UU3RyaWN0KCkp
IHsKKyAgICAgICAgaWYgKGxldmVsICYmIFdlYkdMVGV4dHVyZTo6aXNOUE9UKHdpZHRoLCBoZWln
aHQpKSB7CisgICAgICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9yZGVyLCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkp
OworICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgbV9j
b250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIFdlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICBpZiAo
bV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZh
bGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChmb3JtYXQpKSB7CisgICAgICAgIGNvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEo
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
R0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcodGFyZ2V0
LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZvcm1h
dCAhPSB0ZXgtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpKSB7CisgICAgICAgIGNv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViRGltZW5zaW9ucyh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHRleCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJh
c2VBZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzOjpnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKQoreworICAgIHJldHVybiBXZWJHTEdl
dEluZm8oSW50MzJBcnJheTo6Y3JlYXRlKCZtX2Zvcm1hdHNbMF0sIG1fZm9ybWF0cy5zaXplKCkp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQyNzA4YWNjNjM4
NjQ4Y2VlZGRlNmU5MWJlMjk3ZDQ5MDY0YjVlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xFeHBlcmltZW50YWxDb21wcmVz
c2VkVGV4dHVyZXNfaAorI2RlZmluZSBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
c19oCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNp
b24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK2NsYXNzIFdlYkdMVGV4dHVyZTsKKworY2xhc3Mg
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNp
b24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICB2aXJ0
dWFsIH5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcygpOworICAgIHZpcnR1YWwg
RXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOworCisgICAgV2ViR0xHZXRJbmZv
IGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOworCitwcml2YXRlOgorICAgIFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworCisg
ICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKTsKKworICAgIGJvb2wgdmFs
aWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCk7CisKKyAgICBib29sIHZh
bGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSopOworCisgICAgYm9vbCBtX3N1
cHBvcnRzRHh0MTsKKyAgICBib29sIG1fc3VwcG9ydHNEeHQ1OworICAgIGJvb2wgbV9zdXBwb3J0
c0V0YzE7CisgICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7CisKKyAgICBWZWN0b3I8aW50PiBtX2Zv
cm1hdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJHTEV4
cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0ZTgxNTY4NWU5NmQ3Yjg1MTM5MDAxNGMyODJmYzE2YWY5
ZWI0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdF
QkdMLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDb250ZXh0LAorICAgICAgICBP
bWl0Q29uc3RydWN0b3IsCisgICAgICAgIERvbnRDaGVja0VudW1zCisgICAgXSBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyB7CisgICAgICAgIC8qIENvbXByZXNzZWQgVGV4dHVy
ZSBGb3JtYXRzICovCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUICAgICAgICA9IDB4ODNGMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50
IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUICAgICAgID0gMHg4M0YxOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgICAgICAgPSAw
eDgzRjM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBFVEMxX1JHQjhfT0VTICAgICAgICAg
ICAgICAgICAgICAgICA9IDB4OEQ2NDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgICAgID0gMHg4QzAwOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgICAgPSAweDhDMDI7
CisKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBsZXZlbCwgaW4gdW5zaWduZWQgbG9u
ZyBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gbG9uZyBi
b3JkZXIsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVj
a2luZ10gdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gbG9uZyBsZXZlbCwgaW4gbG9uZyB4b2Zmc2V0LCBpbiBsb25nIHlvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
bG9uZyB3aWR0aCwgaW4gbG9uZyBoZWlnaHQsIGluIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCBpbiBB
cnJheUJ1ZmZlclZpZXcgZGF0YSk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5oCmluZGV4IDY3ZDRkNDc4Mzg1MzgwMjhlYWRjZDk3ZWJkZTNl
NjEzMTdmYzdkN2EuLjQ0ZDFiZjRiOTc1OWY5NmU3ZTIyNWE3ZTg4NTE4ZDM0NjBjY2ZhYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaApAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9FU1ZlcnRleEFycmF5T2JqZWN0TmFtZSwKICAgICAg
ICAgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mb05hbWUsCiAgICAgICAgIFdlYkdMRGVidWdTaGFkZXJz
TmFtZSwKKyAgICAgICAgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNOYW1lLAog
ICAgIH07CiAKICAgICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggMThiMDkxMTU3M2I3MTg1MGNmYTFiZTE1ZWEwM2MzYTViZWQ3MGZmMy4uNTA1NWZkYzY5YjIy
ZmFmM2JlMTIxMzRlMDUzNzllY2U5NTIxZDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OSw2ICs1OSw3IEBA
CiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNsdWRlICJX
ZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMRnJh
bWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmJ1ZmZlci5oIgpAQCAtMjAwOSw2ICsyMDEwLDExIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CiAgICAg
fQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfRVhQRVJJTUVOVEFMX2Nv
bXByZXNzZWRfdGV4dHVyZXMiKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXMpCisgICAgICAgICAgICBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzID0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0
ZSh0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMuZ2V0KCk7CisgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VC
S0lUX2xvc2VfY29udGV4dCIpKSB7CiAgICAgICAgIGlmICghbV93ZWJraXRMb3NlQ29udGV4dCkK
ICAgICAgICAgICAgIG1fd2Via2l0TG9zZUNvbnRleHQgPSBXZWJLaXRMb3NlQ29udGV4dDo6Y3Jl
YXRlKHRoaXMpOwpAQCAtMjEyNSw2ICsyMTMxLDggQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0
dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICAgIGlmIChtX3dlYmds
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKQorICAgICAgICAgICAgcmV0dXJuIG1fd2Vi
Z2xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMtPmdldENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0cygpOwogICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExf
RkFDRToKQEAgLTI0NTUsNiArMjQ2Myw4IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Ik9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgaWYgKFdlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0ZWQodGhpcykpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIldFQkdMX0VYUEVSSU1FTlRBTF9jb21wcmVzc2VkX3RleHR1cmVzIik7
CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX2xvc2VfY29udGV4dCIpOwogCiAgICAgaWYgKGFs
bG93UHJpdmlsZWdlZEV4dGVuc2lvbnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBjYTc3NjFiODRiNTJhOWIyNDA0
YmZmYWFjMzUwOTIyOTY1YzRiNGQ3Li5iZDI1MzA5YzY2MDU0OWE1ZGQ3NDBlZTA5YjFiNmIyNmE5
ODJmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBXZWJHTFNoYWRlcjsKIGNsYXNz
IFdlYkdMVGV4dHVyZTsKIGNsYXNzIFdlYkdMVW5pZm9ybUxvY2F0aW9uOwogY2xhc3MgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUzsKK2NsYXNzIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRl
eHR1cmVzOwogY2xhc3MgV2ViS2l0TG9zZUNvbnRleHQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CkBAIC0zMTAsNiArMzExLDcgQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBXZWJH
TE9iamVjdDsKICAgICBmcmllbmQgY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOworICAgIGZyaWVuZCBjbGFzcyBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChI
VE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CiAgICAgdm9pZCBpbml0aWFsaXplTmV3Q29udGV4dCgp
OwpAQCAtNDgwLDYgKzQ4Miw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViS2l0TG9zZUNvbnRl
eHQ+IG1fd2Via2l0TG9zZUNvbnRleHQ7CiAgICAgT3duUHRyPFdlYkdMRGVidWdSZW5kZXJlcklu
Zm8+IG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbzsKICAgICBPd25QdHI8V2ViR0xEZWJ1Z1NoYWRl
cnM+IG1fd2ViZ2xEZWJ1Z1NoYWRlcnM7CisgICAgT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOwog
CiAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKICAgICBXZWJHTEdl
dEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCmluZGV4IDVjMDRlMzg1ZWQ3MDk4OGYx
MjEyNTUzZmQ3ZDc1ZjFmZWRhMTc3ZWYuLjJjMjRlMDM2NWIwODc0NDhmOTQxMGY5YzcwOTMwY2Yy
MDY0MGRhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnMzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
c2lvbnMzRC5oCkBAIC01Nyw2ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gICBHTF9PRVNfcmdi
OF9yZ2JhOAogICAgIC8vICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICAvLyAgIEdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIC8vICAgR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0MQorICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YworICAgIC8vICAgR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKKyAgICAvLyAg
IEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjCiAKICAgICAvLyBUYWtlcyBmdWxsIG5h
bWUgb2YgZXh0ZW5zaW9uOyBmb3IgZXhhbXBsZSwKICAgICAvLyAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KQEAgLTEwNyw2ICsxMTEsMjIgQEAgcHVibGljOgogCiAgICAgICAgIC8v
IEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgICAgICBUUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwLAorCisgICAgICAgIC8vIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0YworICAgICAgICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4M0Yw
LAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMSwKKyAgICAg
ICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjIsCisgICAgICAgIENPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0gMHg4M0YzLAorCisgICAgICAgIC8vIEdMX09FU19j
b21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCisgICAgICAgIEVUQzFfUkdCOF9PRVMgPSAweDhE
NjQsCisKKyAgICAgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyAgICAg
ICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMCwKKyAgICAgICAgQ09N
UFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMSwKKyAgICAgICAgQ09NUFJFU1NF
RF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDIsCisgICAgICAgIENPTVBSRVNTRURfUkdC
QV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzLAogICAgIH07CiAKICAgICAvLyBHTF9BUkJfcm9i
dXN0bmVzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKaW5kZXggMWIzZWI3OTY2NTYyZjM0ZmZiOThlY2Q0NjgzMGM5YTBmZGJl
YjJiNS4uZjM4YTUzOTA2NTZhMTdhNjFjOGQyYjRkMjkxYTJiOWYyM2ZlM2FiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CkBAIC02NTIsOSArNjUyLDggQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29s
ZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFu
IGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKLSAg
ICAvLyB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpOwotICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotCisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVy
LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBk
YXRhKTsKICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKTsKICAgICB2b2lk
IGNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQgY3VsbEZhY2UoR0MzRGVudW0g
bW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCA1NjRkMDM5MDRhYTk1MGRlMTIy
OGQ1MzgwZjg3NmIyM2U2Mjc1MjFjLi5hMmExNmJhNDczZTFlNjkzZTlhZmZiYzJmMTI4NTlmODA4
MDliMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTE5NSw2ICsxOTUsMTggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW4KICAgICBtX2ludGVybmFsLT5jb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4T2Zmc2V0LCB5T2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIGNvbXByZXNzZWRUZXhJbWFnZTJELgorICAgIC8vIG1faW50ZXJuYWwtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lk
KiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQuCisgICAgLy8gbV9pbnRlcm5hbC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFn
ZVNpemUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNE
ZW51bSBtb2RlKQogewogICAgIG1faW50ZXJuYWwtPmN1bGxGYWNlKG1vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTRiMzM4YThjM2NjYWVkY2E1MTBmODE0
ZmQwYWI1ZGNjYTM4YzkxZC4uZTM4MDViZjNhNmY1ODJjZWU3MmNjYjFkOWY4MjZiZDk4MWFmNTc3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0xNDM0LDYgKzE0
MzQsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG8KICAgICA6OmdsVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0Rz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIDo6Z2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7
Cit9CisKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4
IDhhOWVkNWU2MzdhMjQ1MjFmMDVmNjFkYTYwYWFhNzU2NTAzYzAxMDIuLjNjN2RjZDE5ZmE0MWNi
NzdmZGJhMjljM2MxMmEwNzMxYjBmNjNkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC02
NTIsNiArNjUyLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNl
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBp
bWFnZVNpemUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEaW50IGJvcmRlcikKIHsKICAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0RFUFMKaW5kZXggMWRjN2ZkN2E0MjY2MjJlNDc3MTlkMWVjYTBh
ZjRhODA5MWNlOTE4ZS4uNDg3NmJlYzI5NTAzZWI0NWNhZDRhOGIwOGY0NzQ1NDc4ODI5MWJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vREVQUwpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0gewogICAnY2hyb21p
dW1fc3ZuJzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9zcmMnLAotICAnY2hy
b21pdW1fcmV2JzogJzEwOTQyMycKKyAgJ2Nocm9taXVtX3Jldic6ICcxMDk1NjgnCiB9CiAKIGRl
cHMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFw
aGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaAppbmRleCA0MmMzZDBkYzE2MDQ1MzIzM2Y4ZDVmN2JkNWNkYzYzODM1YWFm
NzQ0Li4wNWVmZDM0NzY3ZTI3M2NlNzc5NDI5ZjA0MDBlZDIwNzk1NGY4MDAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgK
QEAgLTIyMiw2ICsyMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhX
R0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBX
R0MzRGJvb2xlYW4gYWxwaGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZVNoYWRlcihX
ZWJHTElkIHNoYWRlcikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3Jk
ZXIsIFdHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNE
aW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVp
IHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBp
bWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29weVRl
eEltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dD
M0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
b3B5VGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0Rp
bnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dD
M0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y3VsbEZhY2UoV0dDM0RlbnVtIG1vZGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYTUxZmFk
MTk2Y2M4NDk3ODQ2ZWM5ZTQzNjU2ZDU3Njk4MGZkMGY3MC4uYjYxZTY0MjYyOWFjYWEwYjM0M2I4
ZjUwZDhiMzNjOGRmZjNkMGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTQ2Nyw2ICs0NjcsMTIg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om5hbWUodDEgYTEsIHQyIGEyLCB0MyBh
MywgdDQgYTQsIHQ1IGE1LCB0NiBhNiwgdDcKICAgICBtX2ltcGwtPm5hbWUoYTEsIGEyLCBhMywg
YTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICBcCiB9CiAKKyNkZWZpbmUgREVMRUdBVEVfVE9fSU1Q
TF85KG5hbWUsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpICAgICAgIFwKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0
IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwKK3sgXAorICAgIG1faW1w
bC0+bmFtZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsgICAgICBcCit9CisK
ICNkZWZpbmUgREVMRUdBVEVfVE9fSU1QTF85UihuYW1lLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2
LCB0NywgdDgsIHQ5LCBydCkgXAogcnQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1lKHQx
IGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkg
YTkpIFwKIHsgXApAQCAtNTI3LDYgKzUzMyw4IEBAIERFTEVHQVRFX1RPX0lNUExfMShjbGVhclN0
ZW5jaWwsIEdDM0RpbnQpCiBERUxFR0FURV9UT19JTVBMXzQoY29sb3JNYXNrLCBHQzNEYm9vbGVh
biwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RPX0lN
UExfMShjb21waWxlU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQogCitERUxFR0FURV9UT19JTVBM
XzgoY29tcHJlc3NlZFRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0Mz
RGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQorREVMRUdB
VEVfVE9fSU1QTF85KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwg
R0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RzaXplaSwg
Y29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleEltYWdlMkQsIEdDM0RlbnVt
LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6
ZWksIEdDM0RpbnQpCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleFN1YkltYWdlMkQsIEdDM0Rl
bnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6
ZWksIEdDM0RzaXplaSkKIERFTEVHQVRFX1RPX0lNUExfMShjdWxsRmFjZSwgR0MzRGVudW0pCkBA
IC0xMDk0LDYgKzExMDIsOCBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8xKGNsZWFyU3RlbmNpbCwg
R0MzRGludCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzQoY29sb3JNYXNrLCBHQzNEYm9vbGVhbiwg
R0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RPX0lOVEVS
TkFMXzEoY29tcGlsZVNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCkKIAorREVMRUdBVEVfVE9fSU5U
RVJOQUxfOChjb21wcmVzc2VkVGV4SW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVt
LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgY29uc3Qgdm9pZCopCitE
RUxFR0FURV9UT19JTlRFUk5BTF85KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwg
R0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVudW0sIEdD
M0RzaXplaSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTlRFUk5BTF84KGNvcHlUZXhJbWFn
ZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rz
aXplaSwgR0MzRHNpemVpLCBHQzNEaW50KQogREVMRUdBVEVfVE9fSU5URVJOQUxfOChjb3B5VGV4
U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQs
IEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKQogREVMRUdBVEVfVE9fSU5URVJOQUxfMShj
dWxsRmFjZSwgR0MzRGVudW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDAzZTNhNGVlM2U3MmY0MDQ4NjlhNTEy
YWQ0M2VhMWY2Y2M3NzZhMTMuLmE2OWYxNTg4NDYxMjA5N2JhNDQzMzVhNDU1ODY3ZDhlNjg5ODQw
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCkBAIC0xMzksNiArMTM5LDggQEAgcHVibGljOgogICAgIHZvaWQgY29s
b3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJs
dWUsIEdDM0Rib29sZWFuIGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0z
RE9iamVjdCk7CiAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9m
ZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQs
IEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwogICAgIHZvaWQgY29weVRl
eEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGludCBib3JkZXIpOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9m
ZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCk7CiAgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oCmlu
ZGV4IDg3MjY1YmNiNzE0ODdkYmNhNzQ0Y2YxYzNlYWUxNzI5YmVjNWNhZjUuLjZiZTE0MTFlZDI2
NjUzNWQzZjQzZjJmOWI3OTFlYWVhNDFhOWIzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtOTcsNiAr
OTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xlYW4g
cmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xlYW4g
YWxwaGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21waWxlU2hhZGVyKFdlYkdMSWQgc2hhZGVy
KSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChXR0MzRGVudW0g
dGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0MzRHNp
emVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyLCBXR0MzRHNpemVp
IGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0Mz
RGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNp
emVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4SW1hZ2UyRChXR0MzRGVu
dW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0Mz
RGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwg
V0dDM0RpbnQgYm9yZGVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29weVRleFN1YkltYWdlMkQo
V0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNE
aW50IHlvZmZzZXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdH
QzNEc2l6ZWkgaGVpZ2h0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2UoV0dDM0RlbnVt
IG1vZGUpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114818</attachid>
            <date>2011-11-11 21:40:05 -0800</date>
            <delta_ts>2011-11-15 20:43:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72086-20111111214004.patch</filename>
            <type>text/plain</type>
            <size>46412</size>
            <attacher name="Gregg Tavares">gman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZlNDQ4ZTNjZDRjMzIw
NmYxOGRkMzczNGI0NjUzMWVjMGE0ODdhNy4uODAwZGQ2NWYyOGM0NDViZDg5YmQ3MWQ1OGY4YzY1
ZDMxMzA1ZWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDExLTExLTEwICBHcmVn
ZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXRUJHTF9F
WFBFUklNRU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBXaWxs
IHdyaXRlIGZpbmFsIHRlc3Qgb25jZSBvbiBoYXJkd2FyZS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4T2JqZWN0KToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6Oldl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp+V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OmdldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmlt
ZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXBy
ZXNzZWRUZXhGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXM6OmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaDogQWRkZWQu
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5oLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRCk6CisKIDIwMTEtMTEtMTEgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQganNDYXN0IHRvIHJlcGxhY2Ugc3RhdGljX2Nhc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzM0MjNhNTc5ZjEwNmUxZjI4MTk4NjZjYWI0NTlh
Njk4YTVlMWM5Zi4uNGFiYjI5MThlYWJlMmFmMWVjN2NlYzEyMTg0YjUwYTlhMzkwMDg3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0xMCAgR3Jl
Z2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV0VCR0xf
RVhQRVJJTUVOVEFMX2NvbXByZXNzZWRfdGV4dHVyZXMgV2ViR0wgZXh0ZW5zaW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjA4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0u
Y3BwOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAg
KiB0ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQp
OgorCiAyMDExLTExLTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBGaXggQ0NMYXllclRyZWVIb3N0IGxlYWsgaW4gd2Via2l0X3Vu
aXRfdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTU4NjczZjRmZGQxOGFhZjJmNjc3MzZm
ZWM2MGI4OGRiMGRjY2I3OC4uOTU4NTUxZjk1MjBjNDBjZmIwNTA4NzVjZGNhMTc5MjlhMGE3YmQ2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxMzksNiArMjEzOSw3IEBAIElGIChFTkFCTEVf
V0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCkBAIC0yMTcwLDYgKzIxNzEsNyBAQCBJ
RiAoRU5BQkxFX1dFQkdMKQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5p
ZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCisgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmlkbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDNkMzcwYzczNjBhZmFiZGI2OGM5YTU5NzVjNzNl
MmI0NjlkNzFiNC4uNzlkNjNlNmIzMGYyM2Y4NzAwNTY3NGQxNGJhMjRiZTViMDMyMmNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00OTcwLDYgKzQ5NzAsOCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5k
ZXJlckluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRl
cnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDFlOWQ1Yzc3MmE4YThmNGExZGY1Mjk1ZjJiZWRlZTlk
MWE1OGRkYy4uNzgxMmRiZGQwNmRmNWQ3ZjMxZjExODlhMWFiNzgwMGFjOGFlNGFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCkBAIC0zNjI0LDYgKzM2MjQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VC
R0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5oIFwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIFwKICAgICAgICAgaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TEV4dGVuc2lvbi5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmggXApAQCAtMzY1Nyw2ICszNjU4LDcg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVy
cy5jcHAgXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlcy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAgXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBcCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMR2V0SW5mby5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFlOWNmYTM3MzBj
NmYzZGQxODBjNjEzMjFjMjllOTZhOTY5ZWQ2YzMuLmJhNzFmMGVkNWIxMGU4Nzk2MzBhMmU3YjUw
YWExZDNmNzkzNDAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzNjUsNiArMTM2NSw3IEBACiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwnLAorICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsJywKQEAgLTU3MTQsNiArNTcxNSw4IEBACiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCcsCisgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMDM3NjEwYTQ5
MWRiNjdhM2ZiZWZkODliYjU4M2Q5ZWIyNWRjNTIxNi4uZDI1OTlhYjNjOTU4MDVmMDU5YmY0Y2M1
MmJkMmZmZDkwZDgwYzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtNjAsNiArNjAs
NyBAQAogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTEdl
dEluZm8uaCIKQEAgLTE5Myw2ICsxOTQsOCBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgV2ViR0xFeHRlbgogICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMRGVi
dWdSZW5kZXJlckluZm8qPihleHRlbnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpX
ZWJHTERlYnVnU2hhZGVyc05hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKKyAgICBj
YXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05h
bWU6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMqPihleHRlbnNpb24pKTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMzUwMjE1MmY0ODkwM2E1NjAyOTEw
NDRjMjI5MzdmMTcyMGQ4MGEyZi4uMzdhYjY5MDZhNGU3ZDQ0ZWZjOWVmZWQ3Y2ZmZTFmYTIwYzky
ZjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC01OCw2ICs1
OCw3IEBACiAjaW5jbHVkZSAiVjhXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1
Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNs
dWRlICJWOFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgiCiAjaW5jbHVkZSAi
VjhXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiVjhXZWJHTFByb2dyYW0uaCIKICNpbmNs
dWRlICJWOFdlYkdMUmVuZGVyYnVmZmVyLmgiCkBAIC0xOTIsNiArMTkzLDEwIEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChXZWJHTEV4dGVuc2lvbiogZXh0ZW5zaW9u
LCB2ODo6SGFuZGxlPHY4CiAgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nh
c3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24pKTsKICAgICAgICAgcmVmZXJlbmNlTmFt
ZSA9ICJ3ZWJHTERlYnVnU2hhZGVyc05hbWUiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YkdMRXh0ZW5zaW9uOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05hbWU6Cisg
ICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXMqPihleHRlbnNpb24pKTsKKyAgICAgICAgcmVmZXJlbmNlTmFt
ZSA9ICJ3ZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05hbWUiOworICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgQVNTRVJUKCFleHRlbnNpb25PYmplY3QuSXNFbXB0eSgpKTsKICAg
ICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKGNvbnRleHRPYmplY3QsIHJl
ZmVyZW5jZU5hbWUsIGV4dGVuc2lvbk9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDllYzkzZDI0YmMzNGFjMzYxZjU2NDMyOTdiZjViMGIzYThm
YTcxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcApAQCAtMCwwICsxLDI5OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUg
IldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgiCisKKyNpbmNsdWRlICJFeHRl
bnNpb25zM0QuaCIKKyNpbmNsdWRlICJJbnQzMkFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6V2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKKyAgICAsIG1fc3VwcG9ydHNE
eHQxKGZhbHNlKQorICAgICwgbV9zdXBwb3J0c0R4dDUoZmFsc2UpCisgICAgLCBtX3N1cHBvcnRz
RXRjMShmYWxzZSkKKyAgICAsIG1fc3VwcG9ydHNQdnJ0YyhmYWxzZSkKK3sKKyAgICBFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQxIikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAgICAgICBtX3N1cHBvcnRzRHh0
MSA9IHRydWU7CisgICAgfQorICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3Rl
eHR1cmVfY29tcHJlc3Npb25fczN0YyIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKTsKKyAgICAgICAgbV9zdXBw
b3J0c0R4dDEgPSB0cnVlOworICAgICAgICBtX3N1cHBvcnRzRHh0NSA9IHRydWU7CisgICAgfQor
ICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQ1IikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hS
T01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgICAgIG1fc3VwcG9ydHNEeHQ1
ID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfY29t
cHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7CisgICAgICAg
IG1fc3VwcG9ydHNFdGMxID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBv
cnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpKSB7CisgICAgICAgIGV4dGVu
c2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7
CisgICAgICAgIG1fc3VwcG9ydHNQdnJ0YyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKG1fc3Vw
cG9ydHNEeHQxKSB7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICB9CisKKyAgICBp
ZiAobV9zdXBwb3J0c0R4dDUpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisKKyAgICBpZiAobV9zdXBwb3J0c0V0
YzEpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VT
KTsKKworICAgIGlmIChtX3N1cHBvcnRzUHZydGMpIHsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVu
ZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOworICAgICAg
ICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRC
UFBWMV9JTUcpOworICAgIH0KK30KKworV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXM6On5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcygpCit7Cit9CisKK1dlYkdM
RXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzOjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXNOYW1lOworfQorCitQYXNzT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKGNvbnRleHQpKTsKK30K
KworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBFeHRlbnNpb25zM0QqIGV4dGVu
c2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Cisg
ICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
Q0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikKKyAgICAgICAgfHwgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikKKyAgICAg
ICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2
cnRjIik7Cit9CisKK2Jvb2wgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnZh
bGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19E
WFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzRHh0MTsKKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6RVRDMV9SR0I4X09FUzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNFdGMxOworICAg
IGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAg
ICAgcmV0dXJuIG1fc3VwcG9ydHNEeHQ1OworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNQdnJ0
YzsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpOworICAgIGlmICghcGl4ZWxz
KSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAo
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGJ5dGVzUmVxdWlyZWQgPSAwOworCisg
ICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAg
ICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBr
QmxvY2tTaXplID0gODsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGgg
KyBrQmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxv
Y2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAg
ICAgICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3du
OworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQg
a0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7
CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OworICAgICAgICAgICAgaW50
IG51bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0
aDsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NEb3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdo
dCAtIDEpIC8ga0Jsb2NrSGVpZ2h0OworICAgICAgICAgICAgaW50IG51bUJsb2NrcyA9IG51bUJs
b2Nrc0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd247CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0g
bnVtQmxvY2tzICoga0Jsb2NrU2l6ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIDgpICog
c3RkOjptYXgoaGVpZ2h0LCA4KSArIDcpIC8gODsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChwaXhlbHMtPmJ5dGVMZW5ndGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7CisgICAg
ICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0
ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJH
TFRleHR1cmUqIHRleCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkVUQzFfUkdCOF9PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tX
aWR0aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAg
ICAgICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hl
aWdodCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF4
b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFy
Z2V0LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICUga0Jsb2NrV2lkdGgpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICgheW9mZnNldCkgeworICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgIT0gdGV4LT5n
ZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodCAlIGtC
bG9ja0hlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZzZXQKKyAgICAgICAgICAgICAgICB8fCB3aWR0
aCAhPSB0ZXgtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpIHx8IGhlaWdodCAhPSB0ZXgtPmdldEhl
aWdodCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sK
KyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250
ZXh0M0QoKTsKKyAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChpbnRlcm5hbGZvcm1h
dCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGJvcmRl
cikgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF2YWxp
ZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSh3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwg
ZGF0YSkpCisgICAgICAgIHJldHVybjsKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IG1fY29udGV4
dC0+dmFsaWRhdGVUZXh0dXJlQmluZGluZyh0YXJnZXQsIHRydWUpOworICAgIGlmICghdGV4KQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2NvbnRleHQtPmlzR0xFUzJOUE9UU3RyaWN0KCkp
IHsKKyAgICAgICAgaWYgKGxldmVsICYmIFdlYkdMVGV4dHVyZTo6aXNOUE9UKHdpZHRoLCBoZWln
aHQpKSB7CisgICAgICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9yZGVyLCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkp
OworICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgbV9j
b250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIFdlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
ZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sKKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICBpZiAo
bV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZh
bGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChmb3JtYXQpKSB7CisgICAgICAgIGNvbnRleHQtPnN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEo
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2Vi
R0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcodGFyZ2V0
LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZvcm1h
dCAhPSB0ZXgtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpKSB7CisgICAgICAgIGNv
bnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViRGltZW5zaW9ucyh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHRleCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJh
c2VBZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzOjpnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKQoreworICAgIHJldHVybiBXZWJHTEdl
dEluZm8oSW50MzJBcnJheTo6Y3JlYXRlKCZtX2Zvcm1hdHNbMF0sIG1fZm9ybWF0cy5zaXplKCkp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQyNzA4YWNjNjM4
NjQ4Y2VlZGRlNmU5MWJlMjk3ZDQ5MDY0YjVlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xFeHBlcmltZW50YWxDb21wcmVz
c2VkVGV4dHVyZXNfaAorI2RlZmluZSBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
c19oCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNp
b24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKK2NsYXNzIFdlYkdMVGV4dHVyZTsKKworY2xhc3Mg
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNp
b24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICB2aXJ0
dWFsIH5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcygpOworICAgIHZpcnR1YWwg
RXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOwor
ICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOworCisgICAgV2ViR0xHZXRJbmZv
IGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOworCitwcml2YXRlOgorICAgIFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworCisg
ICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKTsKKworICAgIGJvb2wgdmFs
aWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCk7CisKKyAgICBib29sIHZh
bGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSopOworCisgICAgYm9vbCBtX3N1
cHBvcnRzRHh0MTsKKyAgICBib29sIG1fc3VwcG9ydHNEeHQ1OworICAgIGJvb2wgbV9zdXBwb3J0
c0V0YzE7CisgICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7CisKKyAgICBWZWN0b3I8aW50PiBtX2Zv
cm1hdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJHTEV4
cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQ0ZTgxNTY4NWU5NmQ3Yjg1MTM5MDAxNGMyODJmYzE2YWY5
ZWI0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIGh0bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdF
QkdMLAorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDb250ZXh0LAorICAgICAgICBP
bWl0Q29uc3RydWN0b3IsCisgICAgICAgIERvbnRDaGVja0VudW1zCisgICAgXSBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyB7CisgICAgICAgIC8qIENvbXByZXNzZWQgVGV4dHVy
ZSBGb3JtYXRzICovCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUICAgICAgICA9IDB4ODNGMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50
IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUICAgICAgID0gMHg4M0YxOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgICAgICAgPSAw
eDgzRjM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBFVEMxX1JHQjhfT0VTICAgICAgICAg
ICAgICAgICAgICAgICA9IDB4OEQ2NDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBS
RVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgICAgID0gMHg4QzAwOworICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgICAgPSAweDhDMDI7
CisKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2Uy
RChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBsZXZlbCwgaW4gdW5zaWduZWQgbG9u
ZyBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gbG9uZyBi
b3JkZXIsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVj
a2luZ10gdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gbG9uZyBsZXZlbCwgaW4gbG9uZyB4b2Zmc2V0LCBpbiBsb25nIHlvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
bG9uZyB3aWR0aCwgaW4gbG9uZyBoZWlnaHQsIGluIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCBpbiBB
cnJheUJ1ZmZlclZpZXcgZGF0YSk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5oCmluZGV4IDY3ZDRkNDc4Mzg1MzgwMjhlYWRjZDk3ZWJkZTNl
NjEzMTdmYzdkN2EuLjQ0ZDFiZjRiOTc1OWY5NmU3ZTIyNWE3ZTg4NTE4ZDM0NjBjY2ZhYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaApAQCAtNDAsNiAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9FU1ZlcnRleEFycmF5T2JqZWN0TmFtZSwKICAgICAg
ICAgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mb05hbWUsCiAgICAgICAgIFdlYkdMRGVidWdTaGFkZXJz
TmFtZSwKKyAgICAgICAgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNOYW1lLAog
ICAgIH07CiAKICAgICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggMThiMDkxMTU3M2I3MTg1MGNmYTFiZTE1ZWEwM2MzYTViZWQ3MGZmMy4uNTA1NWZkYzY5YjIy
ZmFmM2JlMTIxMzRlMDUzNzllY2U5NTIxZDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OSw2ICs1OSw3IEBA
CiAjaW5jbHVkZSAiV2ViR0xDb250ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNsdWRlICJX
ZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMRnJh
bWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmJ1ZmZlci5oIgpAQCAtMjAwOSw2ICsyMDEwLDExIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CiAgICAg
fQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfRVhQRVJJTUVOVEFMX2Nv
bXByZXNzZWRfdGV4dHVyZXMiKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXMpCisgICAgICAgICAgICBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzID0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0
ZSh0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMuZ2V0KCk7CisgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VC
S0lUX2xvc2VfY29udGV4dCIpKSB7CiAgICAgICAgIGlmICghbV93ZWJraXRMb3NlQ29udGV4dCkK
ICAgICAgICAgICAgIG1fd2Via2l0TG9zZUNvbnRleHQgPSBXZWJLaXRMb3NlQ29udGV4dDo6Y3Jl
YXRlKHRoaXMpOwpAQCAtMjEyNSw2ICsyMTMxLDggQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJgog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0
dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICAgIGlmIChtX3dlYmds
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKQorICAgICAgICAgICAgcmV0dXJuIG1fd2Vi
Z2xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMtPmdldENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0cygpOwogICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExf
RkFDRToKQEAgLTI0NTUsNiArMjQ2Myw4IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Ik9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwogICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgaWYgKFdlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0ZWQodGhpcykpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIldFQkdMX0VYUEVSSU1FTlRBTF9jb21wcmVzc2VkX3RleHR1cmVzIik7
CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX2xvc2VfY29udGV4dCIpOwogCiAgICAgaWYgKGFs
bG93UHJpdmlsZWdlZEV4dGVuc2lvbnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCBjYTc3NjFiODRiNTJhOWIyNDA0
YmZmYWFjMzUwOTIyOTY1YzRiNGQ3Li5iZDI1MzA5YzY2MDU0OWE1ZGQ3NDBlZTA5YjFiNmIyNmE5
ODJmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBXZWJHTFNoYWRlcjsKIGNsYXNz
IFdlYkdMVGV4dHVyZTsKIGNsYXNzIFdlYkdMVW5pZm9ybUxvY2F0aW9uOwogY2xhc3MgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUzsKK2NsYXNzIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRl
eHR1cmVzOwogY2xhc3MgV2ViS2l0TG9zZUNvbnRleHQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CkBAIC0zMTAsNiArMzExLDcgQEAgcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBXZWJH
TE9iamVjdDsKICAgICBmcmllbmQgY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOworICAgIGZyaWVuZCBjbGFzcyBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczsKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChI
VE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CiAgICAgdm9pZCBpbml0aWFsaXplTmV3Q29udGV4dCgp
OwpAQCAtNDgwLDYgKzQ4Miw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViS2l0TG9zZUNvbnRl
eHQ+IG1fd2Via2l0TG9zZUNvbnRleHQ7CiAgICAgT3duUHRyPFdlYkdMRGVidWdSZW5kZXJlcklu
Zm8+IG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbzsKICAgICBPd25QdHI8V2ViR0xEZWJ1Z1NoYWRl
cnM+IG1fd2ViZ2xEZWJ1Z1NoYWRlcnM7CisgICAgT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzPiBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOwog
CiAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKICAgICBXZWJHTEdl
dEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCmluZGV4IDVjMDRlMzg1ZWQ3MDk4OGYx
MjEyNTUzZmQ3ZDc1ZjFmZWRhMTc3ZWYuLjJjMjRlMDM2NWIwODc0NDhmOTQxMGY5YzcwOTMwY2Yy
MDY0MGRhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4
dGVuc2lvbnMzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
c2lvbnMzRC5oCkBAIC01Nyw2ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gICBHTF9PRVNfcmdi
OF9yZ2JhOAogICAgIC8vICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICAvLyAgIEdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIC8vICAgR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0MQorICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YworICAgIC8vICAgR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKKyAgICAvLyAg
IEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjCiAKICAgICAvLyBUYWtlcyBmdWxsIG5h
bWUgb2YgZXh0ZW5zaW9uOyBmb3IgZXhhbXBsZSwKICAgICAvLyAiR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4Ii4KQEAgLTEwNyw2ICsxMTEsMjIgQEAgcHVibGljOgogCiAgICAgICAgIC8v
IEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgICAgICBUUkFOU0xBVEVEX1NI
QURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwLAorCisgICAgICAgIC8vIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0YworICAgICAgICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUID0gMHg4M0Yw
LAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMSwKKyAgICAg
ICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjIsCisgICAgICAgIENPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0gMHg4M0YzLAorCisgICAgICAgIC8vIEdMX09FU19j
b21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCisgICAgICAgIEVUQzFfUkdCOF9PRVMgPSAweDhE
NjQsCisKKyAgICAgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyAgICAg
ICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMCwKKyAgICAgICAgQ09N
UFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMSwKKyAgICAgICAgQ09NUFJFU1NF
RF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDIsCisgICAgICAgIENPTVBSRVNTRURfUkdC
QV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzLAogICAgIH07CiAKICAgICAvLyBHTF9BUkJfcm9i
dXN0bmVzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKaW5kZXggMWIzZWI3OTY2NTYyZjM0ZmZiOThlY2Q0NjgzMGM5YTBmZGJl
YjJiNS4uZjM4YTUzOTA2NTZhMTdhNjFjOGQyYjRkMjkxYTJiOWYyM2ZlM2FiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CkBAIC02NTIsOSArNjUyLDggQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29s
ZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFu
IGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKLSAg
ICAvLyB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpOwotICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotCisgICAgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVy
LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBk
YXRhKTsKICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKTsKICAgICB2b2lk
IGNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGlu
dCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQgY3VsbEZhY2UoR0MzRGVudW0g
bW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCA1NjRkMDM5MDRhYTk1MGRlMTIy
OGQ1MzgwZjg3NmIyM2U2Mjc1MjFjLi5hMmExNmJhNDczZTFlNjkzZTlhZmZiYzJmMTI4NTlmODA4
MDliMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTE5NSw2ICsxOTUsMTggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW4KICAgICBtX2ludGVybmFsLT5jb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4T2Zmc2V0LCB5T2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIGNvbXByZXNzZWRUZXhJbWFnZTJELgorICAgIC8vIG1faW50ZXJuYWwtPmNvbXByZXNzZWRU
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lk
KiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29tcHJlc3NlZFRleFN1
YkltYWdlMkQuCisgICAgLy8gbV9pbnRlcm5hbC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFn
ZVNpemUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNE
ZW51bSBtb2RlKQogewogICAgIG1faW50ZXJuYWwtPmN1bGxGYWNlKG1vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTRiMzM4YThjM2NjYWVkY2E1MTBmODE0
ZmQwYWI1ZGNjYTM4YzkxZC4uZTM4MDViZjNhNmY1ODJjZWU3MmNjYjFkOWY4MjZiZDk4MWFmNTc3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0xNDM0LDYgKzE0
MzQsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG8KICAgICA6OmdsVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0Rz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOworICAgIDo6Z2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7
Cit9CisKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4
IDhhOWVkNWU2MzdhMjQ1MjFmMDVmNjFkYTYwYWFhNzU2NTAzYzAxMDIuLjNjN2RjZDE5ZmE0MWNi
NzdmZGJhMjljM2MxMmEwNzMxYjBmNjNkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC02
NTIsNiArNjUyLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKK30K
Kwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNl
dCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBp
bWFnZVNpemUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEaW50IGJvcmRlcikKIHsKICAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJH
cmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaAppbmRleCA0MmMzZDBkYzE2MDQ1MzIzM2Y4ZDVmN2JkNWNkYzYzODM1
YWFmNzQ0Li4wNWVmZDM0NzY3ZTI3M2NlNzc5NDI5ZjA0MDBlZDIwNzk1NGY4MDAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgKQEAgLTIyMiw2ICsyMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFz
ayhXR0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVl
LCBXR0MzRGJvb2xlYW4gYWxwaGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZVNoYWRl
cihXZWJHTElkIHNoYWRlcikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJ
bWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBi
b3JkZXIsIFdHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdH
QzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNp
emVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29w
eVRleEltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBp
bnRlcm5hbGZvcm1hdCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwg
V0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjb3B5VGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dD
M0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwg
V0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY3VsbEZhY2UoV0dDM0RlbnVtIG1vZGUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKaW5kZXggYTUx
ZmFkMTk2Y2M4NDk3ODQ2ZWM5ZTQzNjU2ZDU3Njk4MGZkMGY3MC4uYjYxZTY0MjYyOWFjYWEwYjM0
M2I4ZjUwZDhiMzNjOGRmZjNkMGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAKQEAgLTQ2Nyw2ICs0Njcs
MTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om5hbWUodDEgYTEsIHQyIGEyLCB0
MyBhMywgdDQgYTQsIHQ1IGE1LCB0NiBhNiwgdDcKICAgICBtX2ltcGwtPm5hbWUoYTEsIGEyLCBh
MywgYTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICBcCiB9CiAKKyNkZWZpbmUgREVMRUdBVEVfVE9f
SU1QTF85KG5hbWUsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpICAgICAgIFwK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMs
IHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwKK3sgXAorICAgIG1f
aW1wbC0+bmFtZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KTsgICAgICBcCit9
CisKICNkZWZpbmUgREVMRUdBVEVfVE9fSU1QTF85UihuYW1lLCB0MSwgdDIsIHQzLCB0NCwgdDUs
IHQ2LCB0NywgdDgsIHQ5LCBydCkgXAogcnQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1l
KHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwg
dDkgYTkpIFwKIHsgXApAQCAtNTI3LDYgKzUzMyw4IEBAIERFTEVHQVRFX1RPX0lNUExfMShjbGVh
clN0ZW5jaWwsIEdDM0RpbnQpCiBERUxFR0FURV9UT19JTVBMXzQoY29sb3JNYXNrLCBHQzNEYm9v
bGVhbiwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RP
X0lNUExfMShjb21waWxlU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQogCitERUxFR0FURV9UT19J
TVBMXzgoY29tcHJlc3NlZFRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwg
R0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQorREVM
RUdBVEVfVE9fSU1QTF85KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGlu
dCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RzaXpl
aSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleEltYWdlMkQsIEdDM0Rl
bnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNE
c2l6ZWksIEdDM0RpbnQpCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleFN1YkltYWdlMkQsIEdD
M0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNE
c2l6ZWksIEdDM0RzaXplaSkKIERFTEVHQVRFX1RPX0lNUExfMShjdWxsRmFjZSwgR0MzRGVudW0p
CkBAIC0xMDk0LDYgKzExMDIsOCBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8xKGNsZWFyU3RlbmNp
bCwgR0MzRGludCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzQoY29sb3JNYXNrLCBHQzNEYm9vbGVh
biwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RPX0lO
VEVSTkFMXzEoY29tcGlsZVNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCkKIAorREVMRUdBVEVfVE9f
SU5URVJOQUxfOChjb21wcmVzc2VkVGV4SW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0Rl
bnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgY29uc3Qgdm9pZCop
CitERUxFR0FURV9UT19JTlRFUk5BTF85KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNEZW51
bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVudW0s
IEdDM0RzaXplaSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9UT19JTlRFUk5BTF84KGNvcHlUZXhJ
bWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RzaXplaSwgR0MzRHNpemVpLCBHQzNEaW50KQogREVMRUdBVEVfVE9fSU5URVJOQUxfOChjb3B5
VGV4U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKQogREVMRUdBVEVfVE9fSU5URVJOQUxf
MShjdWxsRmFjZSwgR0MzRGVudW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDAzZTNhNGVlM2U3MmY0MDQ4Njlh
NTEyYWQ0M2VhMWY2Y2M3NzZhMTMuLmE2OWYxNTg4NDYxMjA5N2JhNDQzMzVhNDU1ODY3ZDhlNjg5
ODQwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oCkBAIC0xMzksNiArMTM5LDggQEAgcHVibGljOgogICAgIHZvaWQg
Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFu
IGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCk7CiAKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNp
emUsIGNvbnN0IHZvaWQqIGRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwogICAgIHZvaWQgY29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCk7CiAgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5o
CmluZGV4IDg3MjY1YmNiNzE0ODdkYmNhNzQ0Y2YxYzNlYWUxNzI5YmVjNWNhZjUuLjZiZTE0MTFl
ZDI2NjUzNWQzZjQzZjJmOWI3OTFlYWVhNDFhOWIzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtOTcs
NiArOTcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xl
YW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xl
YW4gYWxwaGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21waWxlU2hhZGVyKFdlYkdMSWQgc2hh
ZGVyKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChXR0MzRGVu
dW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0Mz
RHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyLCBXR0MzRHNp
emVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBX
R0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0Mz
RHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4SW1hZ2UyRChXR0Mz
RGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBX
R0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdo
dCwgV0dDM0RpbnQgYm9yZGVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29weVRleFN1YkltYWdl
MkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdH
QzNEaW50IHlvZmZzZXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgs
IFdHQzNEc2l6ZWkgaGVpZ2h0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2UoV0dDM0Rl
bnVtIG1vZGUpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115313</attachid>
            <date>2011-11-15 20:43:21 -0800</date>
            <delta_ts>2011-11-16 16:23:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72086-20111115204319.patch</filename>
            <type>text/plain</type>
            <size>51917</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDM5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTExLTE1ICBHcmVnZyBU
YXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXRUJHTF9FWFBF
UklNRU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBXaWxsIHdy
aXRlIGZpbmFsIHRlc3Qgb25jZSBvbiBoYXJkd2FyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlczo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6On5XZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Z2V0TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVu
Y0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRl
eHR1cmVzOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3Jt
YXRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRh
bENvbXByZXNzZWRUZXh0dXJlcy5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVz
c2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29t
cHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisKIDIwMTEtMTEtMTUgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
aGFyZSBIaWdobGlnaHQgQ29kZSBmb3IgRHJhd2luZyBPdXRsaW5lZCBRdWFkCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTAwMzk0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxMzgsNiArMjEzOCw3IEBAIElGIChFTkFCTEVf
V0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcAogICAgICAg
ICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCkBAIC0yMTY5LDYgKzIxNzAsNyBAQCBJ
RiAoRU5BQkxFX1dFQkdMKQogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5p
ZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaWRsCisgICAgICAgIGh0bWwvY2FudmFz
L1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmlkbApJbmRleDog
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxMDAzOTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsNiArNTI4
LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgV2ViR0xCdWZmZXIgXAogICAgIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMgXAogICAgIFdlYkdMQ29udGV4dEV2ZW50IFwKKyAgICBXZWJHTEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlcyBcCiAgICAgV2ViR0xGcmFtZWJ1ZmZlciBcCiAgICAgV2Vi
R0xQcm9ncmFtIFwKICAgICBXZWJHTFJlbmRlcmJ1ZmZlciBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5NzUsNiArNDk3NSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1Jl
bmRlcmVySW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hh
ZGVycy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJz
LmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJ
bmZvLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTM2MjIsNiArMzYyMiw3IEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMQ29udGV4dEV2ZW50LmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVy
ZXJJbmZvLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oIFwKKyAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEdldElu
Zm8uaCBcCkBAIC0zNjU1LDYgKzM2NTYsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VC
R0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAgXAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBcCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCBcCisgICAgICAgIGh0bWwvY2FudmFzL1dl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2Fu
dmFzL1dlYkdMRXh0ZW5zaW9uLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDAzOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEzNjQsNiArMTM2NCw3IEBACiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5pZGwnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJidWZmZXIuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaWRsJywKQEAgLTU3MDYsNiArNTcwNyw4IEBACiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMRGVidWdTaGFkZXJzLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9X
ZWJHTEV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVm
ZmVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDAzOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2OTksNiAr
MTY5OSwxMCBAQAogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMzQURF
MDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CiAJCTZFMjFDNkMwMTEyNjMzODUwMEE3QkUwMiAv
KiBHcmFwaGljc0NvbnRleHQzRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0
M0QuY3BwICovOyB9OwogCQk2RTIxQzZDMjExMjYzMzk5MDBBN0JFMDIgLyogR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RTIxQzZDMTExMjYzMzk5MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgKi87
IH07CisJCTZFM0ZBRDM4MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLzsgfTsKKwkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2
IC8qIEpTV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMw
NiAvKiBKU1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggKi87IH07CisJCTZF
M0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMuY3BwICovOyB9OworCQk2RTNGQUU4RjE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oICovOyB9OwogCQk2RTQ3RTY2MDEwQjc5NDRCMDBC
MTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8u
Y3BwICovOyB9OwogCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RjEw
Qjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi87IH07CiAJCTZFNEFCQ0Q0MTM4RUEw
QjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTRBQkNEMjEzOEVBMEI3MDA3MUQyOTEgLyog
SlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwICovOyB9OwpAQCAtODkxNCw2ICs4OTE4LDExIEBACiAJ
CTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNELmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUyMUM2QzExMTI2MzM5OTAwQTdCRTAyIC8q
IEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHA7IHBhdGggPSBj
YW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaDsgcGF0aCA9IGNhbnZh
cy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RTNGQUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xFeHBlcmltZW50
YWxDb21wcmVzc2VkVGV4dHVyZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xHZXRJbmZvLmNwcDsgcGF0aCA9IGNh
bnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3
RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5oOyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTRBQkNEMjEzOEVBMEI3MDA3MUQy
OTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNIVE1MVW5rbm93bkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ5MjUsNiArMTQ5MzQsOSBAQAogCQkJCTkzRjZGMUVBMTI3RjcwQjEwMDU1
Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5jcHAgKi8sCiAJCQkJOTNGNkYxRUIxMjdGNzBCMTAw
NTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi8sCiAJCQkJOTNGNkYxRUMxMjdGNzBCMTAw
NTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmlkbCAqLywKKwkJCQk2RTNGQUU4QzE0NzMzRkRC
MDBFNDIzMDYgLyogV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwICovLAor
CQkJCTZFM0ZBRThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy5oICovLAorCQkJCTZFM0ZBRTkwMTQ3MzNGRUEwMEU0MjMwNiAvKiBXZWJHTEV4
cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5pZGwgKi8sCiAJCQkJNkVCRjBFNTIxMkE4OTI5
ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk2RUJGMEU1MzEyQTg5Mjk4
MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCAqLywKIAkJCQk0OUM3QjlBRTEwNDJEMzJFMDAw
OUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5jcHAgKi8sCkBAIC0xNzg2OSw2ICsxNzg4MSw4IEBA
CiAJCQkJNkVFOEE3NzExMEY4MDNGMzAwNUE0QTI0IC8qIEpTV2ViR0xDb250ZXh0QXR0cmlidXRl
cy5oICovLAogCQkJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2
ZW50LmNwcCAqLywKIAkJCQlCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRl
eHRFdmVudC5oICovLAorCQkJCTZFM0ZBRDM2MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLywKKwkJCQk2RTNGQUQzNzE0NzMzRjQw
MDBFNDIzMDYgLyogSlNXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oICovLAog
CQkJCTQ5QzdCOTg0MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwICov
LAogCQkJCTQ5QzdCOTg1MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuaCAq
LywKIAkJCQk0OUM3Qjk4ODEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTFByb2dyYW0uY3BwICov
LApAQCAtMjQ2OTQsNiArMjQ3MDgsOCBAQAogCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAv
KiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5MTdCNTYy
MTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyOTE3QjU2MzE0NzM0OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTZF
M0ZBRThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzU2NCw2ICsyNzU4MCw4IEBACiAJCQkJMzEzMTNG
NjUxNDQzQjM1RjAwNkUyQTkwIC8qIEZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTI5MTdCNTYxMTQ3MzQ5NkMwMDUyQzlEMCAvKiBMYXllckZsdXNoU2NoZWR1bGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5MTdCNTY2MTQ3MzQ5OTUwMDUyQzlEMCAvKiBMYXll
ckZsdXNoU2NoZWR1bGVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFM0ZBRDM4MTQ3MzNG
NDAwMEU0MjMwNiAvKiBKU1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAi
V2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgi
CisjaW5jbHVkZSAiV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaCIKICNpbmNs
dWRlICJXZWJHTEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNp
bmNsdWRlICJXZWJHTEdldEluZm8uaCIKQEAgLTE5Myw2ICsxOTQsOCBAQCBzdGF0aWMgSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNECiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyo+KGV4dGVuc2lv
bikpOwogICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYkdMRGVidWdTaGFkZXJzTmFtZToKICAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERl
YnVnU2hhZGVycyo+KGV4dGVuc2lvbikpOworICAgIGNhc2UgV2ViR0xFeHRlbnNpb246OldlYkdM
RXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzTmFtZToKKyAgICAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcyo+KGV4dGVuc2lvbikpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4ganNOdWxsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJWOFdlYkdMQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiVjhXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiVjhXZWJHTERlYnVnU2hh
ZGVycy5oIgorI2luY2x1ZGUgIlY4V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMu
aCIKICNpbmNsdWRlICJWOFdlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJWOFdlYkdMUHJv
Z3JhbS5oIgogI2luY2x1ZGUgIlY4V2ViR0xSZW5kZXJidWZmZXIuaCIKQEAgLTE5Miw2ICsxOTMs
MTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KAogICAgICAgICBl
eHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMRGVidWdTaGFkZXJzKj4oZXh0
ZW5zaW9uKSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViR0xEZWJ1Z1NoYWRlcnNOYW1l
IjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHBlcmlt
ZW50YWxDb21wcmVzc2VkVGV4dHVyZXNOYW1lOgorICAgICAgICBleHRlbnNpb25PYmplY3QgPSB0
b1Y4KHN0YXRpY19jYXN0PFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKj4oZXh0
ZW5zaW9uKSk7CisgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXNOYW1lIjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVCgh
ZXh0ZW5zaW9uT2JqZWN0LklzRW1wdHkoKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhp
ZGRlblJlZmVyZW5jZShjb250ZXh0T2JqZWN0LCByZWZlcmVuY2VOYW1lLCBleHRlbnNpb25PYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9u
czNELmgiCisjaW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIgorCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OldlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCkKKyAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCisgICAgLCBtX3N1cHBvcnRzRHh0MShm
YWxzZSkKKyAgICAsIG1fc3VwcG9ydHNEeHQ1KGZhbHNlKQorICAgICwgbV9zdXBwb3J0c0V0YzEo
ZmFsc2UpCisgICAgLCBtX3N1cHBvcnRzUHZydGMoZmFsc2UpCit7CisgICAgRXh0ZW5zaW9uczNE
KiBleHRlbnNpb25zID0gY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9u
cygpOworICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsKKyAgICAgICAgbV9zdXBwb3J0c0R4dDEgPSB0
cnVlOworICAgIH0KKyAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMiKSkgeworICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIik7CisgICAgICAgIG1fc3VwcG9ydHNE
eHQxID0gdHJ1ZTsKKyAgICAgICAgbV9zdXBwb3J0c0R4dDUgPSB0cnVlOworICAgIH0KKyAgICBp
ZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25f
ZHh0NSIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVN
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOworICAgICAgICBtX3N1cHBvcnRzRHh0NSA9IHRy
dWU7CisgICAgfQorICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX2NvbXByZXNz
ZWRfRVRDMV9SR0I4X3RleHR1cmUiKSkgeworICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFi
bGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpOworICAgICAgICBtX3N1
cHBvcnRzRXRjMSA9IHRydWU7CisgICAgfQorICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygi
R0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKSkgeworICAgICAgICBleHRlbnNpb25z
LT5lbnN1cmVFbmFibGVkKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOworICAg
ICAgICBtX3N1cHBvcnRzUHZydGMgPSB0cnVlOworICAgIH0KKworICAgIGlmIChtX3N1cHBvcnRz
RHh0MSkgeworICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9SR0JfUzNUQ19EWFQxX0VYVCk7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7CisgICAgfQorCisgICAgaWYgKG1f
c3VwcG9ydHNEeHQ1KQorICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworCisgICAgaWYgKG1fc3VwcG9ydHNFdGMxKQor
ICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6RVRDMV9SR0I4X09FUyk7CisK
KyAgICBpZiAobV9zdXBwb3J0c1B2cnRjKSB7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0
ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HKTsKKyAgICAgICAgbV9m
b3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFf
SU1HKTsKKyAgICB9Cit9CisKK1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp+
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMoKQoreworfQorCitXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6
Z2V0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3Nl
ZFRleHR1cmVzTmFtZTsKK30KKworUGFzc093blB0cjxXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcz4gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyhjb250ZXh0KSk7Cit9CisKK2Jv
b2wgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnN1cHBvcnRlZChXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25z
ID0gY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIHJl
dHVybiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0
MSIpCisgICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9zM3RjIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9N
SVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpCisgICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpCisgICAgICAgIHx8
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIp
OworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0
ZUNvbXByZXNzZWRUZXhGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9y
bWF0KSB7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9F
WFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
OgorICAgICAgICByZXR1cm4gbV9zdXBwb3J0c0R4dDE7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6
OkVUQzFfUkdCOF9PRVM6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzRXRjMTsKKyAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgIHJl
dHVybiBtX3N1cHBvcnRzRHh0NTsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzUHZydGM7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBB
cnJheUJ1ZmZlclZpZXcqIHBpeGVscykKK3sKKyAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICBpZiAoIXBpeGVscykgewor
ICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKHdpZHRo
IDwgMCB8fCBoZWlnaHQgPCAwKSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHVuc2lnbmVkIGludCBieXRlc1JlcXVpcmVkID0gMDsKKworICAgIHN3
aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1Mz
VENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTOgorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAg
Y29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2Nr
U2l6ZSA9IDg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Js
b2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOworICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rv
d24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAg
ICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAg
ICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9j
a1dpZHRoID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAg
ICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSAxNjsKKyAgICAgICAgICAgIGludCBudW1C
bG9ja3NBY3Jvc3MgPSAod2lkdGggKyBrQmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7Cisg
ICAgICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAx
KSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NB
Y3Jvc3MgKiBudW1CbG9ja3NEb3duOworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJs
b2NrcyAqIGtCbG9ja1NpemU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAgICAgICB7
CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gKHN0ZDo6bWF4KHdpZHRoLCA4KSAqIHN0ZDo6
bWF4KGhlaWdodCwgOCkgKyA3KSAvIDg7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgIT0gYnl0ZXNSZXF1aXJlZCkgeworICAgICAgICBj
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21w
cmVzc2VkVGV4U3ViRGltZW5zaW9ucyhHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgV2ViR0xUZXh0
dXJlKiB0ZXgpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpFVEMx
X1JHQjhfT0VTOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrV2lkdGgg
PSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7CisgICAgICAgICAg
ICBpZiAoKHhvZmZzZXQgJSBrQmxvY2tXaWR0aCkgfHwgKHlvZmZzZXQgJSBrQmxvY2tIZWlnaHQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICgheG9mZnNl
dCkgeworICAgICAgICAgICAgICAgIGlmICh3aWR0aCAhPSB0ZXgtPmdldFdpZHRoKHRhcmdldCwg
bGV2ZWwpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh3aWR0aCAlIGtCbG9ja1dpZHRoKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIXlvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0ICE9IHRleC0+Z2V0SGVp
Z2h0KHRhcmdldCwgbGV2ZWwpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgJSBrQmxvY2tI
ZWlnaHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgY2FzZSBFeHRlbnNpb25z
M0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBFeHRlbnNpb25z
M0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoeG9mZnNldCB8fCB5b2Zmc2V0CisgICAgICAgICAgICAgICAgfHwgd2lkdGggIT0g
dGV4LT5nZXRXaWR0aCh0YXJnZXQsIGxldmVsKSB8fCBoZWlnaHQgIT0gdGV4LT5nZXRIZWlnaHQo
dGFyZ2V0LCBsZXZlbCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXM6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXpl
aSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit7CisgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNE
KCk7CisgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoaW50ZXJuYWxmb3JtYXQpKSB7
CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX0VOVU0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChib3JkZXIpIHsK
KyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghdmFsaWRhdGVD
b21wcmVzc2VkVGV4RnVuY0RhdGEod2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIGRhdGEp
KQorICAgICAgICByZXR1cm47CisgICAgV2ViR0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZh
bGlkYXRlVGV4dHVyZUJpbmRpbmcodGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmICghbV9jb250ZXh0LT5pc0dMRVMyTlBPVFN0cmljdCgpKSB7Cisg
ICAgICAgIGlmIChsZXZlbCAmJiBXZWJHTFRleHR1cmU6OmlzTlBPVCh3aWR0aCwgaGVpZ2h0KSkg
eworICAgICAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorICAgIGNvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvcmRlciwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRkcmVzcygpKTsKKyAg
ICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOworICAgIG1fY29udGV4
dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0g
Zm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit7CisgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQgPSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgaWYgKG1fY29u
dGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0
ZUNvbXByZXNzZWRUZXhGb3JtYXQoZm9ybWF0KSkgeworICAgICAgICBjb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgZGF0YSkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkdMVGV4
dHVyZSogdGV4ID0gbV9jb250ZXh0LT52YWxpZGF0ZVRleHR1cmVCaW5kaW5nKHRhcmdldCwgdHJ1
ZSk7CisgICAgaWYgKCF0ZXgpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmb3JtYXQgIT0g
dGV4LT5nZXRJbnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICBjb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleFN1
YkRpbWVuc2lvbnModGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0ZXgpKSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRk
cmVzcygpKTsKKyAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6
Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKCkKK3sKKyAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KEludDMyQXJyYXk6OmNyZWF0ZSgmbV9mb3JtYXRzWzBdLCBtX2Zvcm1hdHMuc2l6ZSgpKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3Nl
ZFRleHR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzX2gKKyNkZWZpbmUgV2ViR0xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXNfaAorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBcnJheUJ1ZmZlclZpZXc7CitjbGFzcyBXZWJHTFRl
eHR1cmU7CisKK2NsYXNzIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzIDogcHVi
bGljIFdlYkdMRXh0ZW5zaW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4
dCopOworCisgICAgdmlydHVhbCB+V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMo
KTsKKyAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0OworCisgICAgdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZm
ZXJWaWV3KiBkYXRhKTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKTsKKwor
ICAgIFdlYkdMR2V0SW5mbyBnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKTsKKworcHJpdmF0
ZToKKyAgICBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqKTsKKworICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscyk7
CisKKyAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQp
OworCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqKTsK
KworICAgIGJvb2wgbV9zdXBwb3J0c0R4dDE7CisgICAgYm9vbCBtX3N1cHBvcnRzRHh0NTsKKyAg
ICBib29sIG1fc3VwcG9ydHNFdGMxOworICAgIGJvb2wgbV9zdXBwb3J0c1B2cnRjOworCisgICAg
VmVjdG9yPGludD4gbV9mb3JtYXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNfaApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XRUJHTCwKKyAgICAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAg
ICAgICBEb250Q2hlY2tFbnVtcworICAgIF0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMgeworICAgICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0cyAqLworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCAgICAgICAg
PSAweDgzRjA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVCAgICAgICA9IDB4ODNGMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUICAgICAgID0gMHg4M0YzOworICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgRVRDMV9SR0I4X09FUyAgICAgICAgICAgICAgICAgICAgICAgPSAweDhE
NjQ7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQ
VjFfSU1HICAgICA9IDB4OEMwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNT
RURfUkdCQV9QVlJUQ180QlBQVjFfSU1HICAgID0gMHg4QzAyOworCisgICAgICAgIFtTdHJpY3RU
eXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoaW4gdW5zaWduZWQgbG9uZyB0
YXJnZXQsIGluIGxvbmcgbGV2ZWwsIGluIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
bG9uZyB3aWR0aCwgaW4gbG9uZyBoZWlnaHQsIGluIGxvbmcgYm9yZGVyLCBpbiBBcnJheUJ1ZmZl
clZpZXcgZGF0YSk7CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgbGV2ZWwsIGlu
IGxvbmcgeG9mZnNldCwgaW4gbG9uZyB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2lkdGgsIGluIGxvbmcg
aGVpZ2h0LCBpbiB1bnNpZ25lZCBsb25nIGZvcm1hdCwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEp
OworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmgJKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGlj
OgogICAgICAgICBPRVNWZXJ0ZXhBcnJheU9iamVjdE5hbWUsCiAgICAgICAgIFdlYkdMRGVidWdS
ZW5kZXJlckluZm9OYW1lLAogICAgICAgICBXZWJHTERlYnVnU2hhZGVyc05hbWUsCisgICAgICAg
IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzTmFtZSwKICAgICB9OwogCiAgICAg
dm9pZCByZWYoKSB7IG1fY29udGV4dC0+cmVmKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24g
MTAwMzk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYkdM
Q29udGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2lu
Y2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2ViR0xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5j
bHVkZSAiV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKQEAg
LTIxMjUsNiArMjEyNiwxMSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0
KCk7CiAgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCR0xfRVhQRVJJ
TUVOVEFMX2NvbXByZXNzZWRfdGV4dHVyZXMiKSkgeworICAgICAgICBpZiAoIW1fd2ViZ2xFeHBl
cmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMpCisgICAgICAgICAgICBtX3dlYmdsRXhwZXJpbWVu
dGFsQ29tcHJlc3NlZFRleHR1cmVzID0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXM6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViZ2xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXMuZ2V0KCk7CisgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCAiV0VCS0lUX2xvc2VfY29udGV4dCIpKSB7CiAgICAgICAgIGlmICghbV93ZWJraXRMb3Nl
Q29udGV4dCkKICAgICAgICAgICAgIG1fd2Via2l0TG9zZUNvbnRleHQgPSBXZWJLaXRMb3NlQ29u
dGV4dDo6Y3JlYXRlKHRoaXMpOwpAQCAtMjI0MSw2ICsyMjQ3LDggQEAgV2ViR0xHZXRJbmZvIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5BcnJheVBhcmFtZXRlcihw
bmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJFU1NFRF9URVhUVVJFX0ZP
Uk1BVFM6CisgICAgICAgIGlmIChtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVz
KQorICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMtPmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOwogICAgICAgICAvLyBEZWZpbmVkIGFz
IG51bGwgaW4gdGhlIHNwZWMKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToKQEAgLTI1NzEsNiArMjU3OSw4IEBAIFZl
Y3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2UKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7CiAgICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICBpZiAo
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnN1cHBvcnRlZCh0aGlzKSkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfRVhQRVJJTUVOVEFMX2NvbXByZXNzZWRfdGV4dHVy
ZXMiKTsKICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfbG9zZV9jb250ZXh0Iik7CiAKICAgICBp
ZiAoYWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9ucygpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMTAw
Mzk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgV2ViR0xTaGFkZXI7CiBj
bGFzcyBXZWJHTFRleHR1cmU7CiBjbGFzcyBXZWJHTFVuaWZvcm1Mb2NhdGlvbjsKIGNsYXNzIFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVM7CitjbGFzcyBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlczsKIGNsYXNzIFdlYktpdExvc2VDb250ZXh0OwogCiB0eXBlZGVmIGludCBFeGNl
cHRpb25Db2RlOwpAQCAtMzExLDYgKzMxMiw3IEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3Mg
V2ViR0xPYmplY3Q7CiAgICAgZnJpZW5kIGNsYXNzIE9FU1ZlcnRleEFycmF5T2JqZWN0OwogICAg
IGZyaWVuZCBjbGFzcyBXZWJHTERlYnVnU2hhZGVyczsKKyAgICBmcmllbmQgY2xhc3MgV2ViR0xF
eHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ld0NvbnRl
eHQoKTsKQEAgLTQ4NSw2ICs0ODcsNyBAQCBwdWJsaWM6CiAgICAgT3duUHRyPFdlYktpdExvc2VD
b250ZXh0PiBtX3dlYmtpdExvc2VDb250ZXh0OwogICAgIE93blB0cjxXZWJHTERlYnVnUmVuZGVy
ZXJJbmZvPiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm87CiAgICAgT3duUHRyPFdlYkdMRGVidWdT
aGFkZXJzPiBtX3dlYmdsRGVidWdTaGFkZXJzOworICAgIE93blB0cjxXZWJHTEV4cGVyaW1lbnRh
bENvbXByZXNzZWRUZXh0dXJlcz4gbV93ZWJnbEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
czsKIAogICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFtZXRlciBhbmQgb3RoZXJzCiAgICAgV2Vi
R0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIoR0MzRGVudW0pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHJldmlzaW9uIDEw
MDM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgLy8gICBHTF9P
RVNfcmdiOF9yZ2JhOAogICAgIC8vICAgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICAv
LyAgIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQorICAgIC8vICAgR0xfRVhUX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0MQorICAgIC8vICAgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fczN0YworICAgIC8vICAgR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKKyAg
ICAvLyAgIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjCiAKICAgICAvLyBUYWtlcyBm
dWxsIG5hbWUgb2YgZXh0ZW5zaW9uOyBmb3IgZXhhbXBsZSwKICAgICAvLyAiR0xfRVhUX3RleHR1
cmVfZm9ybWF0X0JHUkE4ODg4Ii4KQEAgLTEwNyw2ICsxMTEsMjIgQEAgcHVibGljOgogCiAgICAg
ICAgIC8vIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZQogICAgICAgICBUUkFOU0xB
VEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFID0gMHg5M0EwLAorCisgICAgICAgIC8vIEdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAgICAgLy8gR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fczN0YworICAgICAgICBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUID0g
MHg4M0YwLAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMSwK
KyAgICAgICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAweDgzRjIsCisgICAgICAg
IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0gMHg4M0YzLAorCisgICAgICAgIC8vIEdM
X09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCisgICAgICAgIEVUQzFfUkdCOF9PRVMg
PSAweDhENjQsCisKKyAgICAgICAgLy8gR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMK
KyAgICAgICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMCwKKyAgICAg
ICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMSwKKyAgICAgICAgQ09N
UFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDIsCisgICAgICAgIENPTVBSRVNT
RURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzLAogICAgIH07CiAKICAgICAvLyBHTF9B
UkJfcm9idXN0bmVzcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxMDAzOTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NTAsOSArNjUwLDggQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Ri
b29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29s
ZWFuIGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAK
LSAgICAvLyB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpOwotICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotCisgICAgdm9pZCBjb21wcmVzc2Vk
VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVy
bmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9y
ZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lk
KiBkYXRhKTsKICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKTsKICAgICB2
b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQgY3VsbEZhY2UoR0MzRGVu
dW0gbW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3Jh
cGhpY3NDb250ZXh0M0RFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJKHJldmlzaW9uIDEwMDM5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRl
eHQzREVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMTggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMgogICAgIG1faW50ZXJuYWwtPmNvcHlUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhPZmZzZXQsIHlPZmZzZXQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNE
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgY29tcHJlc3NlZFRleEltYWdlMkQuCisgICAgLy8gbV9pbnRlcm5hbC0+Y29t
cHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpCit7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRC4KKyAgICAvLyBtX2ludGVybmFsLT5jb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmN1bGxG
YWNlKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+Y3VsbEZhY2UobW9kZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAJKHJldmlzaW9uIDEwMDM5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzQsNiArMTQzNCwxOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKEdDCiAgICAgOjpnbFRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4
SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVy
LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIDo6Z2xDb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEp
OworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICA6OmdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUs
IGRhdGEpOworfQorCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVC
dWZmZXIoKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHAJKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTMs
NiArNjUzLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGwKICAg
ICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sK
KyAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgZ2xDb21wcmVz
c2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkKK3sKKyAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQogewog
ICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDAzOTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTE1
ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBX
RUJHTF9FWFBFUklNRU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBleHRlbnNpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDg2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJv
bWl1bS5jcHA6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAg
ICAgICAqIHRlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViS2l0
OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRCk6CisKIDIwMTEtMTEtMTUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDAzNDAuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmgJKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xlYW4gcmVk
LCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xlYW4gYWxw
aGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTElkIHNoYWRlcikg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEc2l6
ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIsIFdHQzNEc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0Mz
RGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNp
emVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29weVRleEltYWdlMkQoV0dDM0Rl
bnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgV0dD
M0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQs
IFdHQzNEaW50IGJvcmRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4U3ViSW1hZ2Uy
RChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dD
M0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwg
V0dDM0RzaXplaSBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2UoV0dDM0Rl
bnVtIG1vZGUpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNz
Q29udGV4dDNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDAzOTQpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDczLDYgKzQ3MywxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6bmFtZSh0MSBhCiAgICAgbV9pbXBsLT5uYW1lKGExLCBhMiwgYTMsIGE0LCBh
NSwgYTYsIGE3LCBhOCk7ICAgICAgXAogfQogCisjZGVmaW5lIERFTEVHQVRFX1RPX0lNUExfOShu
YW1lLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KSAgICAgICBcCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bmFtZSh0MSBhMSwgdDIgYTIsIHQzIGEzLCB0NCBhNCwg
dDUgYTUsIHQ2IGE2LCB0NyBhNywgdDggYTgsIHQ5IGE5KSBcCit7IFwKKyAgICBtX2ltcGwtPm5h
bWUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSk7ICAgICAgXAorfQorCiAjZGVm
aW5lIERFTEVHQVRFX1RPX0lNUExfOVIobmFtZSwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcs
IHQ4LCB0OSwgcnQpIFwKIHJ0IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bmFtZSh0MSBhMSwg
dDIgYTIsIHQzIGEzLCB0NCBhNCwgdDUgYTUsIHQ2IGE2LCB0NyBhNywgdDggYTgsIHQ5IGE5KSBc
CiB7IFwKQEAgLTUzMyw2ICs1MzksOCBAQCBERUxFR0FURV9UT19JTVBMXzEoY2xlYXJTdGVuY2ls
LCBHQzNEaW50CiBERUxFR0FURV9UT19JTVBMXzQoY29sb3JNYXNrLCBHQzNEYm9vbGVhbiwgR0Mz
RGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RPX0lNUExfMShj
b21waWxlU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQogCitERUxFR0FURV9UT19JTVBMXzgoY29t
cHJlc3NlZFRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwg
R0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQorREVMRUdBVEVfVE9f
SU1QTF85KGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RzaXplaSwgY29uc3Qg
dm9pZCopCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNE
aW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdD
M0RpbnQpCiBERUxFR0FURV9UT19JTVBMXzgoY29weVRleFN1YkltYWdlMkQsIEdDM0RlbnVtLCBH
QzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSkKIERFTEVHQVRFX1RPX0lNUExfMShjdWxsRmFjZSwgR0MzRGVudW0pCkBAIC0xMDk3
LDYgKzExMDUsOCBAQCBERUxFR0FURV9UT19JTlRFUk5BTF8xKGNsZWFyU3RlbmNpbCwgR0MzCiBE
RUxFR0FURV9UT19JTlRFUk5BTF80KGNvbG9yTWFzaywgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFu
LCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4pCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKGNvbXBp
bGVTaGFkZXIsIFBsYXRmb3JtM0RPYmplY3QpCiAKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzgoY29t
cHJlc3NlZFRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwg
R0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQorREVMRUdBVEVfVE9f
SU5URVJOQUxfOShjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEc2l6ZWksIGNv
bnN0IHZvaWQqKQogREVMRUdBVEVfVE9fSU5URVJOQUxfOChjb3B5VGV4SW1hZ2UyRCwgR0MzRGVu
dW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0Rz
aXplaSwgR0MzRGludCkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzgoY29weVRleFN1YkltYWdlMkQs
IEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBH
QzNEc2l6ZWksIEdDM0RzaXplaSkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY3VsbEZhY2UsIEdD
M0RlbnVtKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgJKHJldmlzaW9uIDEwMDM5NCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzcsNiArMTM3LDggQEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29s
ZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFu
IGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKKyAg
ICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhl
aWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFn
ZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwogICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGlu
dCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGlu
dCBib3JkZXIpOwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAgICAgdm9p
ZCBjdWxsRmFjZShHQzNEZW51bSBtb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24g
MTAwMzk0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3Jl
ZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xlYW4gYWxwaGEpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjb21waWxlU2hhZGVyKFdlYkdMSWQgc2hhZGVyKSB7IH0KIAorICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZl
bCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVp
IGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyLCBXR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9p
ZCogZGF0YSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdH
QzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGlu
dCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVt
IGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBjb3B5VGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBs
ZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0MzRGludCB4LCBXR0MzRGludCB5LCBX
R0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY29weVRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dD
M0RpbnQgbGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEaW50
IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2UoV0dDM0RlbnVtIG1vZGUpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115476</attachid>
            <date>2011-11-16 16:23:21 -0800</date>
            <delta_ts>2011-11-30 15:39:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72086-20111116162319.patch</filename>
            <type>text/plain</type>
            <size>51888</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTExLTE2ICBHcmVnZyBU
YXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXRUJHTF9FWFBF
UklNRU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBleHRlbnNpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBXaWxsIHdy
aXRlIGZpbmFsIHRlc3Qgb25jZSBvbiBoYXJkd2FyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlczo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6On5XZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Z2V0TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4RnVu
Y0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRl
eHR1cmVzOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3Jt
YXRzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRh
bENvbXByZXNzZWRUZXh0dXJlcy5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVz
c2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29t
cHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisKIDIwMTEtMTEtMTYgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIDggQml0IFN0cmlu
Z3MgaW4gSmF2YVNjcmlwdENvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
MDA1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjEzOCw2ICsyMTM4LDcgQEAgSUYgKEVOQUJMRV9XRUJHTCkKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0RXZlbnQuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdS
ZW5kZXJlckluZm8uY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNw
cAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
cy5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKICAgICAgICAg
aHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9i
amVjdC5jcHAKQEAgLTIxNjksNiArMjE3MCw3IEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmlkbAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJHTERlYnVnUmVuZGVyZXJJbmZvLmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTERlYnVn
U2hhZGVycy5pZGwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVz
c2VkVGV4dHVyZXMuaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaWRs
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5pZGwKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJidWZmZXIuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDEwMDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTUyOCw2ICs1MjgsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAg
ICBXZWJHTEJ1ZmZlciBcCiAgICAgV2ViR0xDb250ZXh0QXR0cmlidXRlcyBcCiAgICAgV2ViR0xD
b250ZXh0RXZlbnQgXAorICAgIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzIFwK
ICAgICBXZWJHTEZyYW1lYnVmZmVyIFwKICAgICBXZWJHTFByb2dyYW0gXAogICAgIFdlYkdMUmVu
ZGVyYnVmZmVyIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtNDk4Myw2ICs0OTgzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBcCisJU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQkocmV2aXNpb24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtMzYzMCw2ICszNjMwLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dF
QkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaCBcCiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaCBcCiAgICAgICAgIGh0bWwv
Y2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmggXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEV4
cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2Vi
R0xFeHRlbnNpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBc
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oIFwKQEAgLTM2NjMsNiArMzY2NCw3
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRl
cnMuY3BwIFwKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2Vk
VGV4dHVyZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwIFwK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgXAogICAgICAgICBodG1s
L2NhbnZhcy9XZWJHTEdldEluZm8uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDEwMDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtMTM2NSw2ICsxMzY1LDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVn
UmVuZGVyZXJJbmZvLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1No
YWRlcnMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlk
bCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2Vk
VGV4dHVyZXMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaWRs
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwnLApAQCAtNTcx
Niw2ICs1NzE3LDggQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVy
ZXJJbmZvLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNw
cCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCcsCisgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEwMDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcwNSw2ICsxNzA1LDEwIEBACiAJCTY1RkVBODY5MDk4
MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLzsg
fTsKIAkJNkUyMUM2QzAxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjFDNkJGMTEy
NjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi87IH07CiAJCTZFMjFDNkMy
MTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRENHLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjFDNkMxMTEyNjMzOTkwMEE3QkUw
MiAvKiBHcmFwaGljc0NvbnRleHQzRENHLmNwcCAqLzsgfTsKKwkJNkUzRkFEMzgxNDczM0Y0MDAw
RTQyMzA2IC8qIEpTV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFEMzYxNDczM0Y0
MDAwRTQyMzA2IC8qIEpTV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwICov
OyB9OworCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTEV4cGVyaW1lbnRhbENv
bXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xFeHBlcmltZW50YWxD
b21wcmVzc2VkVGV4dHVyZXMuaCAqLzsgfTsKKwkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8q
IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAv
KiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi87IH07CisJCTZFM0ZB
RThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFF
OEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVz
LmggKi87IH07CiAJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUx
MEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi87IH07CiAJCTZFNDdFNjYxMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdl
dEluZm8uaCAqLzsgfTsKIAkJNkU0QUJDRDQxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25v
d25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFNEFCQ0QyMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVudC5jcHAg
Ki87IH07CkBAIC04OTI2LDYgKzg5MzAsMTEgQEAKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFC
IC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTIxQzZCRjExMjYzMzg1MDBBN0JF
MDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RTIxQzZDMTExMjYzMzk5MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRENH
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFEMzYxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRDM3MTQ3
MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOEMx
NDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENv
bXByZXNzZWRUZXh0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZB
RThEMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEV4cGVyaW1lbnRhbENv
bXByZXNzZWRUZXh0dXJlcy5oOyBwYXRoID0gY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRTkwMTQ3
MzNGRUEwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuaWRsOyBwYXRoID0gY2FudmFzL1dlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVz
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0N0U2NUUxMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJHTEdldEluZm8uY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5mby5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBX
ZWJHTEdldEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xHZXRJ
bmZvLmg7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTZFNEFCQ0QyMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxVbmtub3du
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDkzNyw2ICsxNDk0
Niw5IEBACiAJCQkJOTNGNkYxRUExMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50
LmNwcCAqLywKIAkJCQk5M0Y2RjFFQjEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZl
bnQuaCAqLywKIAkJCQk5M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZl
bnQuaWRsICovLAorCQkJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8sCisJCQkJNkUzRkFFOEQxNDczM0ZEQjAwRTQy
MzA2IC8qIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggKi8sCisJCQkJNkUz
RkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1
cmVzLmlkbCAqLywKIAkJCQk2RUJGMEU1MjEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNp
b24uY3BwICovLAogCQkJCTZFQkYwRTUzMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lv
bi5oICovLAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVy
LmNwcCAqLywKQEAgLTE3ODgyLDYgKzE3ODk0LDggQEAKIAkJCQk2RUU4QTc3MTEwRjgwM0YzMDA1
QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8sCiAJCQkJQkMyQ0JGN0ExNDBG
MUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwICovLAogCQkJCUJDMkNCRjRC
MTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggKi8sCisJCQkJNkUzRkFE
MzYxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuY3BwICovLAorCQkJCTZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMRXhwZXJp
bWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmggKi8sCiAJCQkJNDlDN0I5ODQxMDQyRDJEMzAwMDlE
NDQ3IC8qIEpTV2ViR0xGcmFtZWJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlDN0I5ODUxMDQyRDJEMzAw
MDlENDQ3IC8qIEpTV2ViR0xGcmFtZWJ1ZmZlci5oICovLAogCQkJCTQ5QzdCOTg4MTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMUHJvZ3JhbS5jcHAgKi8sCkBAIC0yNDcxNiw2ICsyNDczMCw4IEBA
CiAJCQkJNTAzOEJDMEIxNDcxMUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTAzOEJFMzAxNDcyQUQyMzAwOTVFMEQxIC8qIFN0eWxlQ2Fj
aGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkU0MTE0NzJBRDk4MDA5NUUwRDEg
LyogQ2FjaGVkU2hhZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTNGQUQzOTE0NzMzRjQwMDBF
NDIzMDYgLyogSlNXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3NTg5LDYgKzI3NjA1LDgg
QEAKIAkJCQk1MDM4QkMwNzE0NzExQ0RCMDA5NUUwRDEgLyogV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTAzOEJFMkYxNDcyQUQyMzAwOTVFMEQxIC8qIFN0eWxl
Q2FjaGVkU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUwMzhCRTQwMTQ3MkFEOTgwMDk1
RTBEMSAvKiBDYWNoZWRTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkUzRkFEMzgxNDcz
M0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNkUzRkFFOEUxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRl
ICJXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMu
aCIKKyNpbmNsdWRlICJXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIgogI2lu
Y2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgog
I2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgpAQCAtMTkzLDYgKzE5NCw4IEBAIHN0YXRpYyBKU1Zh
bHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0QKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTERlYnVnUmVuZGVyZXJJbmZvKj4oZXh0ZW5z
aW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViR0xEZWJ1Z1NoYWRlcnNOYW1lOgog
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdM
RGVidWdTaGFkZXJzKj4oZXh0ZW5zaW9uKSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2Vi
R0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNOYW1lOgorICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBqc051bGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlY4V2ViR0xCdWZmZXIuaCIKICNpbmNs
dWRlICJWOFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKICNpbmNsdWRlICJWOFdlYkdMRGVidWdT
aGFkZXJzLmgiCisjaW5jbHVkZSAiVjhXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJl
cy5oIgogI2luY2x1ZGUgIlY4V2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xQ
cm9ncmFtLmgiCiAjaW5jbHVkZSAiVjhXZWJHTFJlbmRlcmJ1ZmZlci5oIgpAQCAtMTkyLDYgKzE5
MywxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoCiAgICAgICAg
IGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihl
eHRlbnNpb24pKTsKICAgICAgICAgcmVmZXJlbmNlTmFtZSA9ICJ3ZWJHTERlYnVnU2hhZGVyc05h
bWUiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc05hbWU6CisgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9
IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMqPihl
eHRlbnNpb24pKTsKKyAgICAgICAgcmVmZXJlbmNlTmFtZSA9ICJ3ZWJHTEV4cGVyaW1lbnRhbENv
bXByZXNzZWRUZXh0dXJlc05hbWUiOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJU
KCFleHRlbnNpb25PYmplY3QuSXNFbXB0eSgpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVk
SGlkZGVuUmVmZXJlbmNlKGNvbnRleHRPYmplY3QsIHJlZmVyZW5jZU5hbWUsIGV4dGVuc2lvbk9i
amVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRh
bENvbXByZXNzZWRUZXh0dXJlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21w
cmVzc2VkVGV4dHVyZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJHTCkKKworI2luY2x1ZGUgIldl
YkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzLmgiCisKKyNpbmNsdWRlICJFeHRlbnNp
b25zM0QuaCIKKyNpbmNsdWRlICJJbnQzMkFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgiCisKKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6V2ViR0xF
eHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKKyAgICAsIG1fc3VwcG9ydHNEeHQx
KGZhbHNlKQorICAgICwgbV9zdXBwb3J0c0R4dDUoZmFsc2UpCisgICAgLCBtX3N1cHBvcnRzRXRj
MShmYWxzZSkKKyAgICAsIG1fc3VwcG9ydHNQdnJ0YyhmYWxzZSkKK3sKKyAgICBFeHRlbnNpb25z
M0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNp
b25zKCk7CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9keHQxIikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpOworICAgICAgICBtX3N1cHBvcnRzRHh0MSA9
IHRydWU7CisgICAgfQorICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fczN0YyIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJs
ZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKTsKKyAgICAgICAgbV9zdXBwb3J0
c0R4dDEgPSB0cnVlOworICAgICAgICBtX3N1cHBvcnRzRHh0NSA9IHRydWU7CisgICAgfQorICAg
IGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQ1IikpIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01J
VU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Iik7CisgICAgICAgIG1fc3VwcG9ydHNEeHQ1ID0g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfY29tcHJl
c3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVu
YWJsZWQoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIik7CisgICAgICAgIG1f
c3VwcG9ydHNFdGMxID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRz
KCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpKSB7CisgICAgICAgIGV4dGVuc2lv
bnMtPmVuc3VyZUVuYWJsZWQoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7Cisg
ICAgICAgIG1fc3VwcG9ydHNQdnJ0YyA9IHRydWU7CisgICAgfQorCisgICAgaWYgKG1fc3VwcG9y
dHNEeHQxKSB7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICB9CisKKyAgICBpZiAo
bV9zdXBwb3J0c0R4dDUpCisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisKKyAgICBpZiAobV9zdXBwb3J0c0V0YzEp
CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTKTsK
KworICAgIGlmIChtX3N1cHBvcnRzUHZydGMpIHsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOworICAgICAgICBt
X2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBW
MV9JTUcpOworICAgIH0KK30KKworV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6
On5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcygpCit7Cit9CisKK1dlYkdMRXh0
ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVz
OjpnZXROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViR0xFeHBlcmltZW50YWxDb21wcmVz
c2VkVGV4dHVyZXNOYW1lOworfQorCitQYXNzT3duUHRyPFdlYkdMRXhwZXJpbWVudGFsQ29tcHJl
c3NlZFRleHR1cmVzPiBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6Y3JlYXRl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKGNvbnRleHQpKTsKK30KKwor
Ym9vbCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lv
bnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAg
cmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3MzdGMiKQorICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hS
T01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikKKyAgICAgICAg
fHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRj
Iik7Cit9CisKK2Jvb2wgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlk
YXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNoIChm
b3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQ6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzRHh0MTsKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6RVRDMV9SR0I4X09FUzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNFdGMxOworICAgIGNh
c2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgICAg
cmV0dXJuIG1fc3VwcG9ydHNEeHQ1OworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9ydHNQdnJ0YzsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkdMRXhwZXJpbWVudGFsQ29t
cHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
IEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0ID0gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpOworICAgIGlmICghcGl4ZWxzKSB7
CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAod2lk
dGggPCAwIHx8IGhlaWdodCA8IDApIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGJ5dGVzUmVxdWlyZWQgPSAwOworCisgICAg
c3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0Jf
UzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAgICAg
ICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxv
Y2tTaXplID0gODsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGggKyBr
QmxvY2tXaWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tz
RG93biA9IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAg
ICAgICAgIGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duOwor
ICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQga0Js
b2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7Cisg
ICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDE2OworICAgICAgICAgICAgaW50IG51
bUJsb2Nrc0Fjcm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0aDsK
KyAgICAgICAgICAgIGludCBudW1CbG9ja3NEb3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdodCAt
IDEpIC8ga0Jsb2NrSGVpZ2h0OworICAgICAgICAgICAgaW50IG51bUJsb2NrcyA9IG51bUJsb2Nr
c0Fjcm9zcyAqIG51bUJsb2Nrc0Rvd247CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVt
QmxvY2tzICoga0Jsb2NrU2l6ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgICAg
IHsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSAoc3RkOjptYXgod2lkdGgsIDgpICogc3Rk
OjptYXgoaGVpZ2h0LCA4KSArIDcpIC8gODsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChwaXhlbHMtPmJ5dGVMZW5ndGgoKSAhPSBieXRlc1JlcXVpcmVkKSB7CisgICAgICAg
IGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNv
bXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRl
eHR1cmUqIHRleCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVU
QzFfUkdCOF9PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tXaWR0
aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrSGVpZ2h0ID0gNDsKKyAgICAgICAg
ICAgIGlmICgoeG9mZnNldCAlIGtCbG9ja1dpZHRoKSB8fCAoeW9mZnNldCAlIGtCbG9ja0hlaWdo
dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCF4b2Zm
c2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICE9IHRleC0+Z2V0V2lkdGgodGFyZ2V0
LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoICUga0Jsb2NrV2lkdGgpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICgheW9mZnNldCkgeworICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgIT0gdGV4LT5nZXRI
ZWlnaHQodGFyZ2V0LCBsZXZlbCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodCAlIGtCbG9j
a0hlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzoKKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh4b2Zmc2V0IHx8IHlvZmZzZXQKKyAgICAgICAgICAgICAgICB8fCB3aWR0aCAh
PSB0ZXgtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpIHx8IGhlaWdodCAhPSB0ZXgtPmdldEhlaWdo
dCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0
dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sKKyAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0
M0QoKTsKKyAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChpbnRlcm5hbGZvcm1hdCkp
IHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGJvcmRlcikg
eworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF2YWxpZGF0
ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSh3aWR0aCwgaGVpZ2h0LCBpbnRlcm5hbGZvcm1hdCwgZGF0
YSkpCisgICAgICAgIHJldHVybjsKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IG1fY29udGV4dC0+
dmFsaWRhdGVUZXh0dXJlQmluZGluZyh0YXJnZXQsIHRydWUpOworICAgIGlmICghdGV4KQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFtX2NvbnRleHQtPmlzR0xFUzJOUE9UU3RyaWN0KCkpIHsK
KyAgICAgICAgaWYgKGxldmVsICYmIFdlYkdMVGV4dHVyZTo6aXNOUE9UKHdpZHRoLCBoZWlnaHQp
KSB7CisgICAgICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisgICAgY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9yZGVyLCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VBZGRyZXNzKCkpOwor
ICAgIHRleC0+c2V0TGV2ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgbV9jb250
ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCit2b2lkIFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogZGF0YSkKK3sKKyAgICBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICBpZiAobV9j
b250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZhbGlk
YXRlQ29tcHJlc3NlZFRleEZvcm1hdChmb3JtYXQpKSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEod2lk
dGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViR0xU
ZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQtPnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcodGFyZ2V0LCB0
cnVlKTsKKyAgICBpZiAoIXRleCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZvcm1hdCAh
PSB0ZXgtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpKSB7CisgICAgICAgIGNvbnRl
eHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4
U3ViRGltZW5zaW9ucyh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHRleCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBkYXRhLT5ieXRlTGVuZ3RoKCksIGRhdGEtPmJhc2VB
ZGRyZXNzKCkpOworICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVz
OjpnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKQoreworICAgIHJldHVybiBXZWJHTEdldElu
Zm8oSW50MzJBcnJheTo6Y3JlYXRlKCZtX2Zvcm1hdHNbMF0sIG1fZm9ybWF0cy5zaXplKCkpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVz
c2VkVGV4dHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xF
eHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNfaAorI2RlZmluZSBXZWJHTEV4cGVyaW1lbnRh
bENvbXByZXNzZWRUZXh0dXJlc19oCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFdlYkdMVGV4dHVyZTsKKworY2xhc3MgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVy
ZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kik7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIH5XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRU
ZXh0dXJlcygpOworICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisK
KyAgICB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBB
cnJheUJ1ZmZlclZpZXcqIGRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRh
dGEpOworCisgICAgV2ViR0xHZXRJbmZvIGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOwor
Citwcml2YXRlOgorICAgIFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCopOworCisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5j
RGF0YShHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyog
cGl4ZWxzKTsKKworICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVt
IGZvcm1hdCk7CisKKyAgICBib29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQg
eW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4
dHVyZSopOworCisgICAgYm9vbCBtX3N1cHBvcnRzRHh0MTsKKyAgICBib29sIG1fc3VwcG9ydHNE
eHQ1OworICAgIGJvb2wgbV9zdXBwb3J0c0V0YzE7CisgICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7
CisKKyAgICBWZWN0b3I8aW50PiBtX2Zvcm1hdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlc19oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMuaWRsCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4
dHVyZXMuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0
bWwgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdFQkdMLAorICAgICAg
ICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxDb250ZXh0LAorICAgICAgICBPbWl0Q29uc3RydWN0
b3IsCisgICAgICAgIERvbnRDaGVja0VudW1zCisgICAgXSBXZWJHTEV4cGVyaW1lbnRhbENvbXBy
ZXNzZWRUZXh0dXJlcyB7CisgICAgICAgIC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRzICov
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
ICAgICAgICA9IDB4ODNGMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhUICAgICAgID0gMHg4M0YxOworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgICAgICAgPSAweDgzRjM7CisgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGludCBFVEMxX1JHQjhfT0VTICAgICAgICAgICAgICAgICAgICAg
ICA9IDB4OEQ2NDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCX1BW
UlRDXzRCUFBWMV9JTUcgICAgID0gMHg4QzAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgICAgPSAweDhDMDI7CisKKyAgICAgICAg
W1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChpbiB1bnNpZ25l
ZCBsb25nIHRhcmdldCwgaW4gbG9uZyBsZXZlbCwgaW4gdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gbG9uZyBib3JkZXIsIGluIEFy
cmF5QnVmZmVyVmlldyBkYXRhKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBj
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBs
ZXZlbCwgaW4gbG9uZyB4b2Zmc2V0LCBpbiBsb25nIHlvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbG9uZyB3aWR0aCwg
aW4gbG9uZyBoZWlnaHQsIGluIHVuc2lnbmVkIGxvbmcgZm9ybWF0LCBpbiBBcnJheUJ1ZmZlclZp
ZXcgZGF0YSk7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xFeHRlbnNpb24uaAkocmV2aXNpb24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE9FU1ZlcnRleEFycmF5T2JqZWN0TmFtZSwKICAgICAgICAgV2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mb05hbWUsCiAgICAgICAgIFdlYkdMRGVidWdTaGFkZXJzTmFtZSwK
KyAgICAgICAgV2ViR0xFeHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXNOYW1lLAogICAgIH07
CiAKICAgICB2b2lkIHJlZigpIHsgbV9jb250ZXh0LT5yZWYoKTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAxMDA1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVk
ZSAiV2ViR0xDb250ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVuZGVyZXJJbmZv
LmgiCiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKKyNpbmNsdWRlICJXZWJHTEV4cGVy
aW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIu
aCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZl
ci5oIgpAQCAtMjExMyw2ICsyMTE0LDExIEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmcKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNWZXJ0ZXhBcnJheU9i
amVjdC5nZXQoKTsKICAgICB9CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJXRUJH
TF9FWFBFUklNRU5UQUxfY29tcHJlc3NlZF90ZXh0dXJlcyIpKSB7CisgICAgICAgIGlmICghbV93
ZWJnbEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlcykKKyAgICAgICAgICAgIG1fd2ViZ2xF
eHBlcmltZW50YWxDb21wcmVzc2VkVGV4dHVyZXMgPSBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlczo6Y3JlYXRlKHRoaXMpOworICAgICAgICByZXR1cm4gbV93ZWJnbEV4cGVyaW1l
bnRhbENvbXByZXNzZWRUZXh0dXJlcy5nZXQoKTsKKyAgICB9CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJXRUJLSVRfbG9zZV9jb250ZXh0IikpIHsKICAgICAgICAgaWYgKCFtX3dl
YmtpdExvc2VDb250ZXh0KQogICAgICAgICAgICAgbV93ZWJraXRMb3NlQ29udGV4dCA9IFdlYktp
dExvc2VDb250ZXh0OjpjcmVhdGUodGhpcyk7CkBAIC0yMjI5LDYgKzIyMzUsOCBAQCBXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQCiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfV1JJVEVNQVNLOgogICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhbkFycmF5UGFy
YW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RF
WFRVUkVfRk9STUFUUzoKKyAgICAgICAgaWYgKG1fd2ViZ2xFeHBlcmltZW50YWxDb21wcmVzc2Vk
VGV4dHVyZXMpCisgICAgICAgICAgICByZXR1cm4gbV93ZWJnbEV4cGVyaW1lbnRhbENvbXByZXNz
ZWRUZXh0dXJlcy0+Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKCk7CiAgICAgICAgIC8vIERl
ZmluZWQgYXMgbnVsbCBpbiB0aGUgc3BlYwogICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VMTF9GQUNFOgpAQCAtMjU1OSw2ICsyNTY3
LDggQEAgVmVjdG9yPFN0cmluZz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKICAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVj
dCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwor
ICAgIGlmIChXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczo6c3VwcG9ydGVkKHRo
aXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9FWFBFUklNRU5UQUxfY29tcHJlc3Nl
ZF90ZXh0dXJlcyIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9sb3NlX2NvbnRleHQiKTsK
IAogICAgIGlmIChhbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZp
c2lvbiAxMDA1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBXZWJHTFNo
YWRlcjsKIGNsYXNzIFdlYkdMVGV4dHVyZTsKIGNsYXNzIFdlYkdMVW5pZm9ybUxvY2F0aW9uOwog
Y2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKK2NsYXNzIFdlYkdMRXhwZXJpbWVudGFs
Q29tcHJlc3NlZFRleHR1cmVzOwogY2xhc3MgV2ViS2l0TG9zZUNvbnRleHQ7CiAKIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CkBAIC0zMTEsNiArMzEyLDcgQEAgcHVibGljOgogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTE9iamVjdDsKICAgICBmcmllbmQgY2xhc3MgT0VTVmVydGV4QXJyYXlPYmpl
Y3Q7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJzOworICAgIGZyaWVuZCBjbGFz
cyBXZWJHTEV4cGVyaW1lbnRhbENvbXByZXNzZWRUZXh0dXJlczsKIAogICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CiAgICAgdm9pZCBpbml0aWFsaXpl
TmV3Q29udGV4dCgpOwpAQCAtNDg1LDYgKzQ4Nyw3IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2Vi
S2l0TG9zZUNvbnRleHQ+IG1fd2Via2l0TG9zZUNvbnRleHQ7CiAgICAgT3duUHRyPFdlYkdMRGVi
dWdSZW5kZXJlckluZm8+IG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbzsKICAgICBPd25QdHI8V2Vi
R0xEZWJ1Z1NoYWRlcnM+IG1fd2ViZ2xEZWJ1Z1NoYWRlcnM7CisgICAgT3duUHRyPFdlYkdMRXhw
ZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzPiBtX3dlYmdsRXhwZXJpbWVudGFsQ29tcHJlc3Nl
ZFRleHR1cmVzOwogCiAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMK
ICAgICBXZWJHTEdldEluZm8gZ2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAkocmV2
aXNpb24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uczNELmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDEwIEBAIHB1YmxpYzoKICAgICAv
LyAgIEdMX09FU19yZ2I4X3JnYmE4CiAgICAgLy8gICBHTF9PRVNfdmVydGV4X2FycmF5X29iamVj
dAogICAgIC8vICAgR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCisgICAgLy8gICBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCisgICAgLy8gICBHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjCisgICAgLy8gICBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4
dHVyZQorICAgIC8vICAgR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKIAogICAgIC8v
IFRha2VzIGZ1bGwgbmFtZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxlLAogICAgIC8vICJHTF9F
WFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiLgpAQCAtMTA3LDYgKzExMSwyMiBAQCBwdWJsaWM6
CiAKICAgICAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCiAgICAgICAg
IFRSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgPSAweDkzQTAsCisKKyAgICAg
ICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQorICAgICAgICAvLyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCisgICAgICAgIENPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQgPSAweDgzRjAsCisgICAgICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUID0g
MHg4M0YxLAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCA9IDB4ODNGMiwK
KyAgICAgICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgPSAweDgzRjMsCisKKyAgICAg
ICAgLy8gR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKKyAgICAgICAgRVRDMV9S
R0I4X09FUyA9IDB4OEQ2NCwKKworICAgICAgICAvLyBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lv
bl9wdnJ0YworICAgICAgICBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAw
LAorICAgICAgICBDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAxLAorICAg
ICAgICBDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyA9IDB4OEMwMiwKKyAgICAgICAg
Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcgPSAweDhDMDMsCiAgICAgfTsKIAogICAg
IC8vIEdMX0FSQl9yb2J1c3RuZXNzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDEwMDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdv
cmtpbmcgY29weSkKQEAgLTY1MCw5ICs2NTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xvck1h
c2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBncmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwg
R0MzRGJvb2xlYW4gYWxwaGEpOwogICAgIHZvaWQgY29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0KTsKIAotICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSk7Ci0gICAgLy8gdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5
b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci0KKyAgICB2b2lkIGNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpOwogICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNE
aW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIp
OwogICAgIHZvaWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAgICAgdm9pZCBjdWxsRmFj
ZShHQzNEZW51bSBtb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAkocmV2aXNp
b24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNERWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwxOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4U3ViSW1hZ2UyCiAgICAgbV9pbnRlcm5hbC0+
Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeE9mZnNldCwgeU9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBjb21wcmVzc2VkVGV4SW1hZ2UyRC4KKyAgICAvLyBtX2ludGVy
bmFsLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkg
d2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVpIGltYWdl
U2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJELgorICAgIC8vIG1faW50ZXJuYWwtPmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFsLT5jdWxsRmFjZSht
b2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkocmV2aXNp
b24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzNCw2ICsxNDM0
LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFN1YkltYWdlMkQoR0MKICAgICA6Omds
VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHBpeGVscyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGlu
dCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgOjpnbENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6
ZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBH
QzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVu
dW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIDo6Z2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgZGF0YSk7Cit9CisKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFF0LmNwcAkocmV2aXNpb24gMTAwNTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY1Myw2ICs2NTMsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRl
cihQbAogICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwogfQogCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBk
YXRhKQoreworICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKyAgICBn
bENvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKKyAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsK
K30KKwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIpCiB7CiAgICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDUxNCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTEtMTEtMTYgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IFdFQkdMX0VYUEVSSU1FTlRBTF9jb21wcmVzc2VkX3RleHR1cmVzIFdlYkdMIGV4dGVu
c2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIw
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRl
eHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Lmg6CisgICAgICAgICogdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKToKKwogMjAxMS0xMS0xNiAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbXByb3ZlbWVudHMgZm9yIHBhZ2Ugc2Nh
bGUgZGVsdGEgZHVyaW5nIGNvbW1pdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxMDA1MTQpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjb2xvck1hc2soV0dDM0Rib29sZWFuIHJlZCwgV0dDM0Rib29sZWFuIGdyZWVuLCBXR0MzRGJv
b2xlYW4gYmx1ZSwgV0dDM0Rib29sZWFuIGFscGhhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXBpbGVTaGFkZXIoV2ViR0xJZCBzaGFkZXIpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBjb21w
cmVzc2VkVGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwg
V0dDM0RpbnQgYm9yZGVyLCBXR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChXR0MzRGVudW0g
dGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNl
dCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51bSBmb3JtYXQs
IFdHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNvcHlUZXhJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBX
R0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6
ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY29weVRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQg
bGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEaW50IHgsIFdH
QzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGN1bGxGYWNlKFdHQzNEZW51bSBtb2RlKSA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9t
aXVtLmNwcAkocmV2aXNpb24gMTAwNTE0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
R3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3Myw2ICs0
NzMsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om5hbWUodDEgYQogICAgIG1f
aW1wbC0+bmFtZShhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpOyAgICAgIFwKIH0KIAor
I2RlZmluZSBERUxFR0FURV9UT19JTVBMXzkobmFtZSwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0Niwg
dDcsIHQ4LCB0OSkgICAgICAgXAordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Om5hbWUo
dDEgYTEsIHQyIGEyLCB0MyBhMywgdDQgYTQsIHQ1IGE1LCB0NiBhNiwgdDcgYTcsIHQ4IGE4LCB0
OSBhOSkgXAoreyBcCisgICAgbV9pbXBsLT5uYW1lKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3
LCBhOCwgYTkpOyAgICAgIFwKK30KKwogI2RlZmluZSBERUxFR0FURV9UT19JTVBMXzlSKG5hbWUs
IHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDksIHJ0KSBcCiBydCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6Om5hbWUodDEgYTEsIHQyIGEyLCB0MyBhMywgdDQgYTQsIHQ1IGE1LCB0
NiBhNiwgdDcgYTcsIHQ4IGE4LCB0OSBhOSkgXAogeyBcCkBAIC01MzMsNiArNTM5LDggQEAgREVM
RUdBVEVfVE9fSU1QTF8xKGNsZWFyU3RlbmNpbCwgR0MzRGludAogREVMRUdBVEVfVE9fSU1QTF80
KGNvbG9yTWFzaywgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbiwgR0MzRGJv
b2xlYW4pCiBERUxFR0FURV9UT19JTVBMXzEoY29tcGlsZVNoYWRlciwgUGxhdGZvcm0zRE9iamVj
dCkKIAorREVMRUdBVEVfVE9fSU1QTF84KGNvbXByZXNzZWRUZXhJbWFnZTJELCBHQzNEZW51bSwg
R0MzRGludCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVp
LCBjb25zdCB2b2lkKikKK0RFTEVHQVRFX1RPX0lNUExfOShjb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQs
IEdDM0RlbnVtLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQogREVMRUdBVEVfVE9fSU1QTF84KGNv
cHlUZXhJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEaW50KQogREVMRUdBVEVfVE9fSU1QTF84KGNv
cHlUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0Mz
RGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpCiBERUxFR0FURV9UT19JTVBMXzEo
Y3VsbEZhY2UsIEdDM0RlbnVtKQpAQCAtMTA5Nyw2ICsxMTA1LDggQEAgREVMRUdBVEVfVE9fSU5U
RVJOQUxfMShjbGVhclN0ZW5jaWwsIEdDMwogREVMRUdBVEVfVE9fSU5URVJOQUxfNChjb2xvck1h
c2ssIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuKQog
REVMRUdBVEVfVE9fSU5URVJOQUxfMShjb21waWxlU2hhZGVyLCBQbGF0Zm9ybTNET2JqZWN0KQog
CitERUxFR0FURV9UT19JTlRFUk5BTF84KGNvbXByZXNzZWRUZXhJbWFnZTJELCBHQzNEZW51bSwg
R0MzRGludCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVp
LCBjb25zdCB2b2lkKikKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzkoY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNE
aW50LCBHQzNEZW51bSwgR0MzRHNpemVpLCBjb25zdCB2b2lkKikKIERFTEVHQVRFX1RPX0lOVEVS
TkFMXzgoY29weVRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGlu
dCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RpbnQpCiBERUxFR0FURV9UT19J
TlRFUk5BTF84KGNvcHlUZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwg
R0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpCiBERUxFR0FU
RV9UT19JTlRFUk5BTF8xKGN1bGxGYWNlLCBHQzNEZW51bSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCShyZXZp
c2lvbiAxMDA1MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBH
QzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSk7CiAgICAgdm9pZCBjb21waWxlU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3QpOwogCisgICAgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6
ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKICAg
ICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lk
dGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKTsKICAgICB2b2lkIGNvcHlUZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQgY3VsbEZhY2UoR0MzRGVudW0gbW9kZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQz
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdy
YXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDEwMDUxNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAg
LTk5LDYgKzk5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb2xvck1hc2soV0dDM0Ri
b29sZWFuIHJlZCwgV0dDM0Rib29sZWFuIGdyZWVuLCBXR0MzRGJvb2xlYW4gYmx1ZSwgV0dDM0Ri
b29sZWFuIGFscGhhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTElk
IHNoYWRlcikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoV0dD
M0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
V0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRlciwgV0dD
M0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZl
bCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RzaXplaSB3aWR0aCwg
V0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCB2b2lkKiBkYXRhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29weVRleEltYWdlMkQo
V0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1h
dCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBo
ZWlnaHQsIFdHQzNEaW50IGJvcmRlcikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXhTdWJJ
bWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0
LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdp
ZHRoLCBXR0MzRHNpemVpIGhlaWdodCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGN1bGxGYWNlKFdH
QzNEZW51bSBtb2RlKSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117286</attachid>
            <date>2011-11-30 15:39:43 -0800</date>
            <delta_ts>2011-11-30 16:41:09 -0800</delta_ts>
            <desc>Patch after extension rename</desc>
            <filename>bug-72086-20111130153942.patch</filename>
            <type>text/plain</type>
            <size>51215</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTU2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTExLTMwICBHcmVnZyBU
YXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBkcmFmdCBXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVzIFdlYkdMIGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwODYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFdpbGwgd3JpdGUgZmlu
YWwgdGVzdCBvbmNlIG9uIGhhcmR3YXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6fldl
YkdMQ29tcHJlc3NlZFRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzOjpnZXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXM6OnN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
czo6dmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZXM6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKToKKwogMjAxMS0xMS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDYW5ub3Qgc2VsZWN0IFJUTCB0ZXh0IGluc2lkZSBMVFIgdGV4dCBmcm9tIHJpZ2h0
IHRvIGxlZnQgYnkgYSBtb3VzZSBkcmFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTAxNTYyKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNDYsNiArMjE0Niw3IEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCiAKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAKQEAgLTIxNzcs
NiArMjE3OCw3IEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFzL09FU1Zl
cnRleEFycmF5T2JqZWN0LmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8u
aWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbAorICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
RXZlbnQuaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwMTU2MikKKysr
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUy
Nyw2ICs1MjcsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBXYXZlU2hhcGVyTm9kZSBcCiAgICAg
V2ViR0xBY3RpdmVJbmZvIFwKICAgICBXZWJHTEJ1ZmZlciBcCisgICAgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMgXAogICAgIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgXAogICAgIFdlYkdMQ29udGV4
dEV2ZW50IFwKICAgICBXZWJHTEZyYW1lYnVmZmVyIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTAxNTYyKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDk4NCw2ICs0OTg0LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8u
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDEwMTU2MikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTM2MjgsNiArMzYyOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0x
KSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEFjdGl2ZUluZm8uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmggXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIFwKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIFwKICAgICAgICAgaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
RGVidWdSZW5kZXJlckluZm8uaCBcCkBAIC0zNjY0LDYgKzM2NjUsNyBAQCBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0
QXR0cmlidXRlcy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAgXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgXAorICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEV2ZW50LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8u
Y3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwMTU2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTM3MSw2ICsxMzcxLDcgQEAK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRF
dmVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlcklu
Zm8uaWRsJywKQEAgLTU3MTYsNiArNTcxNyw4IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xBY3RpdmVJbmZvLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCcsCisgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTAxNTYyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzAyLDYgKzE3MDIsMTAgQEAKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovOyB9OwogCQk2RTIx
QzZDMDExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2QkYxMTI2MzM4NTAwQTdC
RTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLzsgfTsKIAkJNkUyMUM2QzIxMTI2MzM5OTAw
QTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwICovOyB9OworCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyog
SlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5jcHAgKi87IH07CisJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAv
KiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5oICovOyB9OworCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVzLmNwcCAqLzsgfTsKKwkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMuaCAqLzsgfTsKIAkJNkU0N0U2NjAxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0
SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLzsgfTsKIAkJNkU0
N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5oICovOyB9OwogCQk2RTRBQkNENDEzOEVBMEI3MDA3MUQyOTEgLyogSlNI
VE1MVW5rbm93bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVt
ZW50LmNwcCAqLzsgfTsKQEAgLTg5MzIsNiArODkzNiwxMSBAQAogCQk2NUZFQTg2ODA5ODMzQURF
MDBCRUQ0QUIgLyogUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFDNkJGMTEyNjMz
ODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjFDNkMxMTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQz
RENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dDNEQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNjE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8q
IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg7IHBhdGggPSBjYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOTAx
NDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGw7IHBhdGggPSBjYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7IHBhdGggPSBjYW52
YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0N0U2
NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkx
IC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTFVua25vd25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0OTU0LDYgKzE0OTYzLDkgQEAKIAkJCQk5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuY3BwICovLAogCQkJCTkzRjZGMUVCMTI3RjcwQjEwMDU1
Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovLAogCQkJCTkzRjZGMUVDMTI3RjcwQjEwMDU1
Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5pZGwgKi8sCisJCQkJNkUzRkFFOEMxNDczM0ZEQjAw
RTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLywKKwkJCQk2RTNGQUU4RDE0
NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLywKKwkJCQk2RTNG
QUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsICovLAog
CQkJCTZFQkYwRTUyMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgKi8sCiAJ
CQkJNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggKi8sCiAJCQkJ
NDlDN0I5QUUxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwICovLApAQCAt
MTc5MDAsNiArMTc5MTIsOCBAQAogCQkJCTZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLywKIAkJCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUg
LyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgKi8sCiAJCQkJQkMyQ0JGNEIxNDBGMUE2NTAwMzg3
OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLywKKwkJCQk2RTNGQUQzNjE0NzMzRjQwMDBF
NDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8sCisJCQkJNkUzRkFEMzcx
NDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLywKIAkJCQk0
OUM3Qjk4NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLywKIAkJ
CQk0OUM3Qjk4NTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmggKi8sCiAJ
CQkJNDlDN0I5ODgxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xQcm9ncmFtLmNwcCAqLywKQEAg
LTI0NzUwLDYgKzI0NzY0LDggQEAKIAkJCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyogQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkYyOTE0NzUwRjE5
MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkYy
QjE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzYyNSw2ICsyNzY0MSw4IEBA
CiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBNTFERDUxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3Bl
Y3Rvck1ldGFBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDM4QkYyQTE0NzUwRjE5MDA5
NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTNGQUQz
ODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CShyZXZpc2lvbiAxMDE1NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAj
aW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKICNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5o
IgpAQCAtMTkzLDYgKzE5NCw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0QKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2Fz
dDxXZWJHTERlYnVnUmVuZGVyZXJJbmZvKj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4
dGVuc2lvbjo6V2ViR0xEZWJ1Z1NoYWRlcnNOYW1lOgogICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMRGVidWdTaGFkZXJzKj4oZXh0ZW5zaW9u
KSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXNOYW1lOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19j
YXN0PFdlYkdMRXhwZXJpbWVudGFsQ29tcHJlc3NlZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBqc051bGwoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTAxNTYy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1
ZGUgIlY4VWludDMyQXJyYXkuaCIKICNpbmNsdWRlICJWOFVpbnQ4QXJyYXkuaCIKICNpbmNsdWRl
ICJWOFdlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiVjhXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5o
IgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2Vi
R0xEZWJ1Z1NoYWRlcnMuaCIKICNpbmNsdWRlICJWOFdlYkdMRnJhbWVidWZmZXIuaCIKQEAgLTE5
Miw2ICsxOTMsMTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KAog
ICAgICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMRGVidWdTaGFk
ZXJzKj4oZXh0ZW5zaW9uKSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViR0xEZWJ1Z1No
YWRlcnNOYW1lIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2Vi
S2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1lOgorICAgICAgICBleHRlbnNpb25PYmplY3Qg
PSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7
CisgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNO
YW1lIjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVCghZXh0ZW5zaW9uT2JqZWN0
LklzRW1wdHkoKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZShj
b250ZXh0T2JqZWN0LCByZWZlcmVuY2VOYW1lLCBleHRlbnNpb25PYmplY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1
cmVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRl
ICJXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgi
CisjaW5jbHVkZSAiSW50MzJBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dC5oIgorCisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVzKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRl
eHQpCisgICAgLCBtX3N1cHBvcnRzRHh0MShmYWxzZSkKKyAgICAsIG1fc3VwcG9ydHNEeHQ1KGZh
bHNlKQorICAgICwgbV9zdXBwb3J0c0V0YzEoZmFsc2UpCisgICAgLCBtX3N1cHBvcnRzUHZydGMo
ZmFsc2UpCit7CisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dC0+Z3JhcGhp
Y3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIGlmIChleHRlbnNpb25zLT5zdXBw
b3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKSB7CisgICAgICAgIGV4dGVu
c2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKTsK
KyAgICAgICAgbV9zdXBwb3J0c0R4dDEgPSB0cnVlOworICAgIH0KKyAgICBpZiAoZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSkgeworICAgICAg
ICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjIik7CisgICAgICAgIG1fc3VwcG9ydHNEeHQxID0gdHJ1ZTsKKyAgICAgICAgbV9zdXBwb3J0
c0R4dDUgPSB0cnVlOworICAgIH0KKyAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NI
Uk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpKSB7CisgICAgICAgIGV4dGVuc2lvbnMt
PmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpOwor
ICAgICAgICBtX3N1cHBvcnRzRHh0NSA9IHRydWU7CisgICAgfQorICAgIGlmIChleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKSkgeworICAg
ICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JH
QjhfdGV4dHVyZSIpOworICAgICAgICBtX3N1cHBvcnRzRXRjMSA9IHRydWU7CisgICAgfQorICAg
IGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZy
dGMiKSkgeworICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9JTUdfdGV4dHVy
ZV9jb21wcmVzc2lvbl9wdnJ0YyIpOworICAgICAgICBtX3N1cHBvcnRzUHZydGMgPSB0cnVlOwor
ICAgIH0KKworICAgIGlmIChtX3N1cHBvcnRzRHh0MSkgeworICAgICAgICBtX2Zvcm1hdHMuYXBw
ZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCk7CisgICAgICAg
IG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCk7CisgICAgfQorCisgICAgaWYgKG1fc3VwcG9ydHNEeHQ1KQorICAgICAgICBtX2Zvcm1h
dHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwor
CisgICAgaWYgKG1fc3VwcG9ydHNFdGMxKQorICAgICAgICBtX2Zvcm1hdHMuYXBwZW5kKEV4dGVu
c2lvbnMzRDo6RVRDMV9SR0I4X09FUyk7CisKKyAgICBpZiAobV9zdXBwb3J0c1B2cnRjKSB7Cisg
ICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJU
Q180QlBQVjFfSU1HKTsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6OkNP
TVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HKTsKKyAgICB9Cit9CisKK1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVzOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMoKQoreworfQorCitXZWJHTEV4
dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Z2V0TmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYktpdFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzTmFtZTsK
K30KKworUGFzc093blB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlcz4gV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXM6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJHTENvbXByZXNzZWRUZXh0dXJlcyhjb250ZXh0KSk7Cit9
CisKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29u
dGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIHJldHVybiBl
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpCisg
ICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9zM3RjIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3Rl
eHR1cmVfY29tcHJlc3Npb25fZHh0NSIpCisgICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRz
KCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSIpCisgICAgICAgIHx8IGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOworfQor
Citib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3Jt
YXQoR0MzRGVudW0gZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICByZXR1cm4g
bV9zdXBwb3J0c0R4dDE7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkVUQzFfUkdCOF9PRVM6Cisg
ICAgICAgIHJldHVybiBtX3N1cHBvcnRzRXRjMTsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzRHh0
NTsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lN
RzoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUc6CisgICAgICAgIHJldHVybiBtX3N1cHBvcnRzUHZydGM7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVz
c2VkVGV4RnVuY0RhdGEoR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscykKK3sKKyAg
ICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0
M0QoKTsKKyAgICBpZiAoIXBpeGVscykgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSB7CisgICAgICAg
IGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHVuc2lnbmVkIGludCBi
eXRlc1JlcXVpcmVkID0gMDsKKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpFVEMxX1JHQjhfT0VTOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBpbnQga0Js
b2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9IDQ7Cisg
ICAgICAgICAgICBjb25zdCBpbnQga0Jsb2NrU2l6ZSA9IDg7CisgICAgICAgICAgICBpbnQgbnVt
QmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAxKSAvIGtCbG9ja1dpZHRoOwor
ICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0ICsga0Jsb2NrSGVpZ2h0IC0g
MSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzID0gbnVtQmxvY2tz
QWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAgICAgICAgICAgIGJ5dGVzUmVxdWlyZWQgPSBudW1C
bG9ja3MgKiBrQmxvY2tTaXplOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgICAgewor
ICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRoID0gNDsKKyAgICAgICAgICAgIGNvbnN0
IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1NpemUg
PSAxNjsKKyAgICAgICAgICAgIGludCBudW1CbG9ja3NBY3Jvc3MgPSAod2lkdGggKyBrQmxvY2tX
aWR0aCAtIDEpIC8ga0Jsb2NrV2lkdGg7CisgICAgICAgICAgICBpbnQgbnVtQmxvY2tzRG93biA9
IChoZWlnaHQgKyBrQmxvY2tIZWlnaHQgLSAxKSAvIGtCbG9ja0hlaWdodDsKKyAgICAgICAgICAg
IGludCBudW1CbG9ja3MgPSBudW1CbG9ja3NBY3Jvc3MgKiBudW1CbG9ja3NEb3duOworICAgICAg
ICAgICAgYnl0ZXNSZXF1aXJlZCA9IG51bUJsb2NrcyAqIGtCbG9ja1NpemU7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BW
UlRDXzRCUFBWMV9JTUc6CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9Q
VlJUQ180QlBQVjFfSU1HOgorICAgICAgICB7CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0g
KHN0ZDo6bWF4KHdpZHRoLCA4KSAqIHN0ZDo6bWF4KGhlaWdodCwgOCkgKyA3KSAvIDg7CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgIT0g
Ynl0ZXNSZXF1aXJlZCkgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
czo6dmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViRGltZW5zaW9ucyhHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZv
cm1hdCwgV2ViR0xUZXh0dXJlKiB0ZXgpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBj
YXNlIEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNl
IEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUOgorICAgIGNhc2UgRXh0
ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBp
bnQga0Jsb2NrV2lkdGggPSA0OworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja0hlaWdodCA9
IDQ7CisgICAgICAgICAgICBpZiAoKHhvZmZzZXQgJSBrQmxvY2tXaWR0aCkgfHwgKHlvZmZzZXQg
JSBrQmxvY2tIZWlnaHQpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICgheG9mZnNldCkgeworICAgICAgICAgICAgICAgIGlmICh3aWR0aCAhPSB0ZXgtPmdl
dFdpZHRoKHRhcmdldCwgbGV2ZWwpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh3aWR0aCAlIGtCbG9j
a1dpZHRoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoIXlvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0
ICE9IHRleC0+Z2V0SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICho
ZWlnaHQgJSBrQmxvY2tIZWlnaHQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
Y2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
Y2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoeG9mZnNldCB8fCB5b2Zmc2V0CisgICAgICAgICAgICAg
ICAgfHwgd2lkdGggIT0gdGV4LT5nZXRXaWR0aCh0YXJnZXQsIGxldmVsKSB8fCBoZWlnaHQgIT0g
dGV4LT5nZXRIZWlnaHQodGFyZ2V0LCBsZXZlbCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXM6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpCit7Cisg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4
dDNEKCk7CisgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGb3JtYXQoaW50ZXJuYWxmb3JtYXQp
KSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX0VOVU0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChib3JkZXIp
IHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghdmFsaWRh
dGVDb21wcmVzc2VkVGV4RnVuY0RhdGEod2lkdGgsIGhlaWdodCwgaW50ZXJuYWxmb3JtYXQsIGRh
dGEpKQorICAgICAgICByZXR1cm47CisgICAgV2ViR0xUZXh0dXJlKiB0ZXggPSBtX2NvbnRleHQt
PnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcodGFyZ2V0LCB0cnVlKTsKKyAgICBpZiAoIXRleCkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmICghbV9jb250ZXh0LT5pc0dMRVMyTlBPVFN0cmljdCgpKSB7
CisgICAgICAgIGlmIChsZXZlbCAmJiBXZWJHTFRleHR1cmU6OmlzTlBPVCh3aWR0aCwgaGVpZ2h0
KSkgeworICAgICAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorICAgIGNvbnRleHQtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvcmRlciwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRkcmVzcygpKTsK
KyAgICB0ZXgtPnNldExldmVsSW5mbyh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOworICAgIG1fY29u
dGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKK30KKwordm9pZCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlczo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBB
cnJheUJ1ZmZlclZpZXcqIGRhdGEpCit7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQg
PSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgaWYgKG1fY29udGV4dC0+aXND
b250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNz
ZWRUZXhGb3JtYXQoZm9ybWF0KSkgeworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1bmNEYXRhKHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgZGF0YSkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkdMVGV4dHVyZSogdGV4
ID0gbV9jb250ZXh0LT52YWxpZGF0ZVRleHR1cmVCaW5kaW5nKHRhcmdldCwgdHJ1ZSk7CisgICAg
aWYgKCF0ZXgpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmb3JtYXQgIT0gdGV4LT5nZXRJ
bnRlcm5hbEZvcm1hdCh0YXJnZXQsIGxldmVsKSkgeworICAgICAgICBjb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lv
bnModGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0ZXgpKSB7CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjb250ZXh0LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgZGF0YS0+Ynl0ZUxlbmd0aCgpLCBkYXRhLT5iYXNlQWRkcmVzcygpKTsK
KyAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKK1dl
YkdMR2V0SW5mbyBXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6Z2V0Q29tcHJlc3NlZFRleHR1cmVG
b3JtYXRzKCkKK3sKKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKEludDMyQXJyYXk6OmNyZWF0ZSgm
bV9mb3JtYXRzWzBdLCBtX2Zvcm1hdHMuc2l6ZSgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVzX2gKKyNkZWZpbmUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXNfaAorCisj
aW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIldlYkdMRXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHTFRleHR1cmU7CisKK2NsYXNzIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVzIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlcz4gY3JlYXRlKFdl
YkdMUmVuZGVyaW5nQ29udGV4dCopOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCopOworCisgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXMoKTsKKyAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0OworCisgICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlC
dWZmZXJWaWV3KiBkYXRhKTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKTsK
KworICAgIFdlYkdMR2V0SW5mbyBnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKTsKKworcHJp
dmF0ZToKKyAgICBXZWJHTENvbXByZXNzZWRUZXh0dXJlcyhXZWJHTFJlbmRlcmluZ0NvbnRleHQq
KTsKKworICAgIGJvb2wgdmFsaWRhdGVDb21wcmVzc2VkVGV4RnVuY0RhdGEoR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscyk7CisKKyAgICBi
b29sIHZhbGlkYXRlQ29tcHJlc3NlZFRleEZvcm1hdChHQzNEZW51bSBmb3JtYXQpOworCisgICAg
Ym9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBXZWJHTFRleHR1cmUqKTsKKworICAgIGJv
b2wgbV9zdXBwb3J0c0R4dDE7CisgICAgYm9vbCBtX3N1cHBvcnRzRHh0NTsKKyAgICBib29sIG1f
c3VwcG9ydHNFdGMxOworICAgIGJvb2wgbV9zdXBwb3J0c1B2cnRjOworCisgICAgVmVjdG9yPGlu
dD4gbV9mb3JtYXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNfaApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBodG1sIHsKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XRUJHTCwKKyAgICAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsQ29udGV4dCwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yLAorICAg
ICAgICBEb250Q2hlY2tFbnVtcworICAgIF0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMgeworICAg
ICAgICAvKiBDb21wcmVzc2VkIFRleHR1cmUgRm9ybWF0cyAqLworICAgICAgICBjb25zdCB1bnNp
Z25lZCBpbnQgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCAgICAgICAgPSAweDgzRjA7Cisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCAg
ICAgICA9IDB4ODNGMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfRVhUICAgICAgID0gMHg4M0YzOworICAgICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgRVRDMV9SR0I4X09FUyAgICAgICAgICAgICAgICAgICAgICAgPSAweDhENjQ7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGludCBDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HICAgICA9
IDB4OEMwMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9QVlJU
Q180QlBQVjFfSU1HICAgID0gMHg4QzAyOworCisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmdd
IHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxv
bmcgbGV2ZWwsIGluIHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbG9uZyB3aWR0aCwg
aW4gbG9uZyBoZWlnaHQsIGluIGxvbmcgYm9yZGVyLCBpbiBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7
CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdl
MkQoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIGxvbmcgbGV2ZWwsIGluIGxvbmcgeG9mZnNl
dCwgaW4gbG9uZyB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgd2lkdGgsIGluIGxvbmcgaGVpZ2h0LCBpbiB1
bnNpZ25lZCBsb25nIGZvcm1hdCwgaW4gQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIH07Cit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgJKHJl
dmlzaW9uIDEwMTU2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5z
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBP
RVNWZXJ0ZXhBcnJheU9iamVjdE5hbWUsCiAgICAgICAgIFdlYkdMRGVidWdSZW5kZXJlckluZm9O
YW1lLAogICAgICAgICBXZWJHTERlYnVnU2hhZGVyc05hbWUsCisgICAgICAgIFdlYktpdFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVzTmFtZSwgLy8gV0VCS0lUXyBwcmVmaXggdW50aWwgZXh0ZW5zaW9u
IGlzIG9mZmljaWFsCiAgICAgfTsKIAogICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQtPnJlZigp
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwMTU2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDYgKzU0LDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkdMQWN0aXZl
SW5mby5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5j
bHVkZSAiV2ViR0xDb250ZXh0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVuZGVyZXJJ
bmZvLmgiCkBAIC0yMTI4LDYgKzIxMjksMTIgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZwogICAgICAgICAgICAgbV93ZWJraXRMb3NlQ29udGV4dCA9IFdlYktpdExv
c2VDb250ZXh0OjpjcmVhdGUodGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmtpdExvc2VDb250
ZXh0LmdldCgpOwogICAgIH0KKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIldFQktJ
VF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVzIikpIHsKKyAgICAgICAgLy8gVXNlIFdFQktJVF8g
cHJlZml4IHVudGlsIGV4dGVuc2lvbiBpcyBvZmZpY2lhbC4KKyAgICAgICAgaWYgKCFtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVzKQorICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
cyA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpjcmVhdGUodGhpcyk7CisgICAgICAgIHJldHVy
biBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzLmdldCgpOworICAgIH0KIAogICAgIGlmIChhbGxv
d1ByaXZpbGVnZWRFeHRlbnNpb25zKCkpIHsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKQEAgLTIyMzksNiArMjI0Niw4
IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFAKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9XUklURU1BU0s6CiAgICAgICAgIHJldHVybiBnZXRCb29s
ZWFuQXJyYXlQYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAgICBpZiAobV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlcykKKyAgICAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzLT5n
ZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKTsKICAgICAgICAgLy8gRGVmaW5lZCBhcyBudWxs
IGluIHRoZSBzcGVjCiAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0U6CkBAIC0yNTcwLDYgKzI1NzksOCBAQCBWZWN0b3I8
U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdlCiAgICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKICAgICByZXN1
bHQuYXBwZW5kKCJXRUJLSVRfbG9zZV9jb250ZXh0Iik7CisgICAgaWYgKFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzOjpzdXBwb3J0ZWQodGhpcykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJ
VF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVzIik7CiAKICAgICBpZiAoYWxsb3dQcml2aWxlZ2Vk
RXh0ZW5zaW9ucygpKSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEwMTU2MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIE9F
U1RleHR1cmVGbG9hdDsKIGNsYXNzIE9FU1ZlcnRleEFycmF5T2JqZWN0OwogY2xhc3MgV2ViR0xB
Y3RpdmVJbmZvOwogY2xhc3MgV2ViR0xCdWZmZXI7CitjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0
dXJlczsKIGNsYXNzIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM7CiBjbGFzcyBXZWJHTERlYnVnUmVu
ZGVyZXJJbmZvOwogY2xhc3MgV2ViR0xEZWJ1Z1NoYWRlcnM7CkBAIC0zMTEsNiArMzEyLDcgQEAg
cHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKICAgICBmcmllbmQgY2xhc3Mg
T0VTVmVydGV4QXJyYXlPYmplY3Q7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJz
OworICAgIGZyaWVuZCBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlczsKIAogICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCosIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+LCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CiAgICAgdm9pZCBpbml0
aWFsaXplTmV3Q29udGV4dCgpOwpAQCAtNDg1LDYgKzQ4Nyw3IEBAIHB1YmxpYzoKICAgICBPd25Q
dHI8V2ViS2l0TG9zZUNvbnRleHQ+IG1fd2Via2l0TG9zZUNvbnRleHQ7CiAgICAgT3duUHRyPFdl
YkdMRGVidWdSZW5kZXJlckluZm8+IG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbzsKICAgICBPd25Q
dHI8V2ViR0xEZWJ1Z1NoYWRlcnM+IG1fd2ViZ2xEZWJ1Z1NoYWRlcnM7CisgICAgT3duUHRyPFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVzPiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzOwogCiAgICAg
Ly8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKICAgICBXZWJHTEdldEluZm8g
Z2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAkocmV2aXNpb24gMTAxNTYyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIHB1YmxpYzoKICAgICAvLyAgICAgaW1wbGVtZW50IElP
U3VyZmFjZSBiaW5kaW5nOyBpdCdzIHJlY29tbWVuZGVkIHRvIHN1cHBvcnQKICAgICAvLyAgICAg
dGhpcyBvbmx5IG9uIE1hYyBPUyBYIHRvIGxpbWl0IHRoZSBhbW91bnQgb2YgY29kZSBkZXBlbmRl
bnQKICAgICAvLyAgICAgb24gdGhpcyBleHRlbnNpb24pCisgICAgLy8gICBHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxCisgICAgLy8gICBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjCisgICAgLy8gICBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAgIC8v
ICAgR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKIAogICAgIC8vIFRha2VzIGZ1bGwg
bmFtZSBvZiBleHRlbnNpb247IGZvciBleGFtcGxlLAogICAgIC8vICJHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgiLgpAQCAtMTE1LDYgKzExOSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZQogICAgICAgICBURVhUVVJFX1JFQ1RBTkdMRV9BUkIg
PSAgMHg4NEY1LAogICAgICAgICBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FSQiA9IDB4ODRG
NiwKKworICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCisgICAgICAg
IC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKKyAgICAgICAgQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVCA9IDB4ODNGMCwKKyAgICAgICAgQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQgPSAweDgzRjEsCisgICAgICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhU
ID0gMHg4M0YyLAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCA9IDB4ODNG
MywKKworICAgICAgICAvLyBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAg
ICAgICBFVEMxX1JHQjhfT0VTID0gMHg4RDY0LAorCisgICAgICAgIC8vIEdMX0lNR190ZXh0dXJl
X2NvbXByZXNzaW9uX3B2cnRjCisgICAgICAgIENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9J
TUcgPSAweDhDMDAsCisgICAgICAgIENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcgPSAw
eDhDMDEsCisgICAgICAgIENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HID0gMHg4QzAy
LAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMwMywKICAg
ICB9OwogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24g
MTAxNTYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNjUzLDkgKzY1Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29sZWFuIGdyZWVuLCBHQzNEYm9v
bGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSk7CiAgICAgdm9pZCBjb21waWxlU2hhZGVyKFBs
YXRmb3JtM0RPYmplY3QpOwogCi0gICAgLy8gdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6ZWkg
aW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICAvLyB2b2lkIGNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0Mz
RGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKLQor
ICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCog
ZGF0YSk7CisgICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CiAgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNE
aW50IGJvcmRlcik7CiAgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKICAgICB2
b2lkIGN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwu
Y3BwCShyZXZpc2lvbiAxMDE1NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiAr
MTk2LDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhTdWJJbWFnZTIKICAgICBt
X2ludGVybmFsLT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4T2Zmc2V0LCB5T2Zm
c2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sK
KyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGNvbXByZXNzZWRUZXhJbWFnZTJELgorICAg
IC8vIG1faW50ZXJuYWwtPmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgY29tcHJlc3NlZFRleFN1YkltYWdlMkQuCisgICAgLy8gbV9pbnRlcm5hbC0+
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNEZW51bSBtb2RlKQogewogICAgIG1faW50ZXJuYWwt
PmN1bGxGYWNlKG1vZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwCShyZXZpc2lvbiAxMDE1NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDM0LDYgKzE0MzQsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2UyRChH
QwogICAgIDo6Z2xUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSkKK3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICA6OmdsQ29tcHJlc3NlZFRleElt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgaW1hZ2VTaXplLCBkYXRhKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50
IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpCit7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgOjpnbENvbXByZXNzZWRUZXhT
dWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKK30KKwogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCShyZXZpc2lvbiAxMDE1NjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjUzLDYgKzY1MywxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpj
b21waWxlU2hhZGVyKFBsCiAgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOworICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgbV9wcml2YXRlLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOworICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNp
emUsIGRhdGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBH
QzNEaW50IGJvcmRlcikKIHsKICAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxNTYyKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMS0xMS0zMCAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgZHJhZnQgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlcyBXZWJHTCBl
eHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyMDg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3ND
b250ZXh0M0RDaHJvbWl1bS5jcHA6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oOgorICAgICAgICAqIHRlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAg
ICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFn
ZTJEKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCk6CisKIDIwMTEtMTEtMzAgIERhdmlkIExldmluICA8bGV2aW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBkaWRVcGRhdGVMYXlvdXQgZnJv
bSBXZWJGcmFtZUNsaWVudCB0byBXZWJWaWV3Q2xpZW50LgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oCShyZXZpc2lvbiAxMDE1NjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjYsNiArMjI2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb2xvck1hc2soV0dDM0Ri
b29sZWFuIHJlZCwgV0dDM0Rib29sZWFuIGdyZWVuLCBXR0MzRGJvb2xlYW4gYmx1ZSwgV0dDM0Ri
b29sZWFuIGFscGhhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbXBpbGVTaGFkZXIoV2ViR0xJ
ZCBzaGFkZXIpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChX
R0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0
LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyLCBX
R0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBs
ZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RzaXplaSB3aWR0
aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXhJbWFn
ZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6
ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29weVRl
eFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEaW50IHhv
ZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6
ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1bGxG
YWNlKFdHQzNEZW51bSBtb2RlKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAkocmV2aXNpb24g
MTAxNTYyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RD
aHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQAogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IkltYWdlRGF0YS5oIgotI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQz
RC5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpA
QCAtNDczLDYgKzQ3MywxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bmFtZSh0
MSBhCiAgICAgbV9pbXBsLT5uYW1lKGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCk7ICAg
ICAgXAogfQogCisjZGVmaW5lIERFTEVHQVRFX1RPX0lNUExfOShuYW1lLCB0MSwgdDIsIHQzLCB0
NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KSAgICAgICBcCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6bmFtZSh0MSBhMSwgdDIgYTIsIHQzIGEzLCB0NCBhNCwgdDUgYTUsIHQ2IGE2LCB0NyBh
NywgdDggYTgsIHQ5IGE5KSBcCit7IFwKKyAgICBtX2ltcGwtPm5hbWUoYTEsIGEyLCBhMywgYTQs
IGE1LCBhNiwgYTcsIGE4LCBhOSk7ICAgICAgXAorfQorCiAjZGVmaW5lIERFTEVHQVRFX1RPX0lN
UExfOVIobmFtZSwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSwgcnQpIFwKIHJ0
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bmFtZSh0MSBhMSwgdDIgYTIsIHQzIGEzLCB0NCBh
NCwgdDUgYTUsIHQ2IGE2LCB0NyBhNywgdDggYTgsIHQ5IGE5KSBcCiB7IFwKQEAgLTUzMyw2ICs1
MzksOCBAQCBERUxFR0FURV9UT19JTVBMXzEoY2xlYXJTdGVuY2lsLCBHQzNEaW50CiBERUxFR0FU
RV9UT19JTVBMXzQoY29sb3JNYXNrLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4sIEdDM0Rib29s
ZWFuLCBHQzNEYm9vbGVhbikKIERFTEVHQVRFX1RPX0lNUExfMShjb21waWxlU2hhZGVyLCBQbGF0
Zm9ybTNET2JqZWN0KQogCitERUxFR0FURV9UT19JTVBMXzgoY29tcHJlc3NlZFRleEltYWdlMkQs
IEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVp
LCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQorREVMRUdBVEVfVE9fSU1QTF85KGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RzaXplaSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9U
T19JTVBMXzgoY29weVRleEltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0Mz
RGludCwgR0MzRGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RpbnQpCiBERUxFR0FURV9U
T19JTVBMXzgoY29weVRleFN1YkltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBH
QzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSkKIERFTEVHQVRF
X1RPX0lNUExfMShjdWxsRmFjZSwgR0MzRGVudW0pCkBAIC0xMDk4LDYgKzExMDYsOCBAQCBERUxF
R0FURV9UT19JTlRFUk5BTF8xKGNsZWFyU3RlbmNpbCwgR0MzCiBERUxFR0FURV9UT19JTlRFUk5B
TF80KGNvbG9yTWFzaywgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbiwgR0Mz
RGJvb2xlYW4pCiBERUxFR0FURV9UT19JTlRFUk5BTF8xKGNvbXBpbGVTaGFkZXIsIFBsYXRmb3Jt
M0RPYmplY3QpCiAKK0RFTEVHQVRFX1RPX0lOVEVSTkFMXzgoY29tcHJlc3NlZFRleEltYWdlMkQs
IEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRHNpemVp
LCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQorREVMRUdBVEVfVE9fSU5URVJOQUxfOShjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKQogREVMRUdB
VEVfVE9fSU5URVJOQUxfOChjb3B5VGV4SW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0Rl
bnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgR0MzRGludCkKIERF
TEVHQVRFX1RPX0lOVEVSTkFMXzgoY29weVRleFN1YkltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXpl
aSkKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY3VsbEZhY2UsIEdDM0RlbnVtKQpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgJKHJldmlzaW9uIDEwMTU2MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDgg
QEAgcHVibGljOgogICAgIHZvaWQgY29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xl
YW4gZ3JlZW4sIEdDM0Rib29sZWFuIGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKTsKICAgICB2b2lk
IGNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCk7CiAKKyAgICB2b2lkIGNvbXByZXNzZWRU
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworICAgIHZvaWQgY29t
cHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
aW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQq
IGRhdGEpOwogICAgIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpOwogICAgIHZv
aWQgY29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
aW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAgICAgdm9pZCBjdWxsRmFjZShHQzNEZW51
bSBtb2RlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMTAxNTYyKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9y
TWFzayhXR0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBi
bHVlLCBXR0MzRGJvb2xlYW4gYWxwaGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21waWxlU2hh
ZGVyKFdlYkdMSWQgc2hhZGVyKSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBjb21wcmVzc2VkVGV4
SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVy
bmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQg
Ym9yZGVyLCBXR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdH
QzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNp
emVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3B5
VGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGlu
dGVybmFsZm9ybWF0LCBXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBX
R0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y29weVRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNE
aW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdH
QzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
Y3VsbEZhY2UoV0dDM0RlbnVtIG1vZGUpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117293</attachid>
            <date>2011-11-30 16:41:14 -0800</date>
            <delta_ts>2011-11-30 16:41:14 -0800</delta_ts>
            <desc>Fixed more build issues</desc>
            <filename>bug-72086-20111130164112.patch</filename>
            <type>text/plain</type>
            <size>51211</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDExLTExLTMwICBHcmVnZyBU
YXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBkcmFmdCBXRUJH
TF9jb21wcmVzc2VkX3RleHR1cmVzIFdlYkdMIGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwODYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFdpbGwgd3JpdGUgZmlu
YWwgdGVzdCBvbmNlIG9uIGhhcmR3YXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVjdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6fldl
YkdMQ29tcHJlc3NlZFRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVzOjpnZXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXM6OnN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJl
czo6dmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVzOjp2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlczo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZXM6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhJbWFnZTJEKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEKToKKwogMjAxMS0xMS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDYW5ub3Qgc2VsZWN0IFJUTCB0ZXh0IGluc2lkZSBMVFIgdGV4dCBmcm9tIHJpZ2h0
IHRvIGxlZnQgYnkgYSBtb3VzZSBkcmFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTAxNTY4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNDYsNiArMjE0Niw3IEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwCiAKICAgICAg
ICAgaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVzLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRB
dHRyaWJ1dGVzLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAK
ICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAKQEAgLTIxNzcs
NiArMjE3OCw3IEBAIElGIChFTkFCTEVfV0VCR0wpCiAgICAgICAgIGh0bWwvY2FudmFzL09FU1Zl
cnRleEFycmF5T2JqZWN0LmlkbAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8u
aWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmlkbAorICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2Vi
R0xDb250ZXh0QXR0cmlidXRlcy5pZGwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0
RXZlbnQuaWRsCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaWRs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwMTU2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUy
Nyw2ICs1MjcsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBXYXZlU2hhcGVyTm9kZSBcCiAgICAg
V2ViR0xBY3RpdmVJbmZvIFwKICAgICBXZWJHTEJ1ZmZlciBcCisgICAgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMgXAogICAgIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgXAogICAgIFdlYkdMQ29udGV4
dEV2ZW50IFwKICAgICBXZWJHTEZyYW1lYnVmZmVyIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkocmV2aXNpb24gMTAxNTY4KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDk4NCw2ICs0OTg0LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEFjdGl2ZUluZm8u
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEV2ZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDEwMTU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTM2MjgsNiArMzYyOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0x
KSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTEFjdGl2ZUluZm8uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmggXAorICAgICAgICBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIFwKICAg
ICAgICAgaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIFwKICAgICAgICAgaHRt
bC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
RGVidWdSZW5kZXJlckluZm8uaCBcCkBAIC0zNjY0LDYgKzM2NjUsNyBAQCBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAgICBodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0
QXR0cmlidXRlcy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAgXAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgXAorICAgICAgICBodG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJH
TENvbnRleHRBdHRyaWJ1dGVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEV2ZW50LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8u
Y3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwMTU2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTM3MSw2ICsxMzcxLDcgQEAK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9VaW50OEFycmF5LmlkbCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xBY3RpdmVJbmZvLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52
YXMvV2ViR0xCdWZmZXIuaWRsJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRF
dmVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlcklu
Zm8uaWRsJywKQEAgLTU3MTYsNiArNTcxNyw4IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMv
V2ViR0xBY3RpdmVJbmZvLmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCcsCisgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTENvbnRleHRBdHRyaWJ1dGVzLmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTAxNTY4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzAyLDYgKzE3MDIsMTAgQEAKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovOyB9OwogCQk2RTIx
QzZDMDExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2QkYxMTI2MzM4NTAwQTdC
RTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLzsgfTsKIAkJNkUyMUM2QzIxMTI2MzM5OTAw
QTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwICovOyB9OworCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyog
SlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5jcHAgKi87IH07CisJCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAv
KiBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5oICovOyB9OworCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVzLmNwcCAqLzsgfTsKKwkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMuaCAqLzsgfTsKIAkJNkU0N0U2NjAxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0
SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLzsgfTsKIAkJNkU0
N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5oICovOyB9OwogCQk2RTRBQkNENDEzOEVBMEI3MDA3MUQyOTEgLyogSlNI
VE1MVW5rbm93bkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkxIC8qIEpTSFRNTFVua25vd25FbGVt
ZW50LmNwcCAqLzsgfTsKQEAgLTg5MzIsNiArODkzNiwxMSBAQAogCQk2NUZFQTg2ODA5ODMzQURF
MDBCRUQ0QUIgLyogUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFMjFDNkJGMTEyNjMz
ODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjFDNkMxMTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQz
RENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dDNEQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTNGQUQzNjE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8q
IEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xDb21wcmVz
c2VkVGV4dHVyZXMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2
IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmg7IHBhdGggPSBjYW52YXMvV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOTAx
NDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGw7IHBhdGggPSBjYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7IHBhdGggPSBjYW52
YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0N0U2
NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU0QUJDRDIxMzhFQTBCNzAwNzFEMjkx
IC8qIEpTSFRNTFVua25vd25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTFVua25vd25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0OTU0LDYgKzE0OTYzLDkgQEAKIAkJCQk5M0Y2RjFFQTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuY3BwICovLAogCQkJCTkzRjZGMUVCMTI3RjcwQjEwMDU1
Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovLAogCQkJCTkzRjZGMUVDMTI3RjcwQjEwMDU1
Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5pZGwgKi8sCisJCQkJNkUzRkFFOEMxNDczM0ZEQjAw
RTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcCAqLywKKwkJCQk2RTNGQUU4RDE0
NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLywKKwkJCQk2RTNG
QUU5MDE0NzMzRkVBMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsICovLAog
CQkJCTZFQkYwRTUyMTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5jcHAgKi8sCiAJ
CQkJNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggKi8sCiAJCQkJ
NDlDN0I5QUUxMDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwICovLApAQCAt
MTc5MDAsNiArMTc5MTIsOCBAQAogCQkJCTZFRThBNzcxMTBGODAzRjMwMDVBNEEyNCAvKiBKU1dl
YkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLywKIAkJCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUg
LyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgKi8sCiAJCQkJQkMyQ0JGNEIxNDBGMUE2NTAwMzg3
OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLywKKwkJCQk2RTNGQUQzNjE0NzMzRjQwMDBF
NDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgKi8sCisJCQkJNkUzRkFEMzcx
NDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaCAqLywKIAkJCQk0
OUM3Qjk4NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLywKIAkJ
CQk0OUM3Qjk4NTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEZyYW1lYnVmZmVyLmggKi8sCiAJ
CQkJNDlDN0I5ODgxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xQcm9ncmFtLmNwcCAqLywKQEAg
LTI0NzUwLDYgKzI0NzY0LDggQEAKIAkJCQk1MDM4QkYyODE0NzUwRjE5MDA5NUUwRDEgLyogQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkYyOTE0NzUwRjE5
MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDM4QkYy
QjE0NzUwRjE5MDA5NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzYyNSw2ICsyNzY0MSw4IEBA
CiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FBNTFERDUxNDg1MDZBOTAwQUQyNzUyIC8qIEluc3Bl
Y3Rvck1ldGFBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MDM4QkYyQTE0NzUwRjE5MDA5
NUUwRDEgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTNGQUQz
ODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CShyZXZpc2lvbiAxMDE1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcg
QEAKICNpbmNsdWRlICJPRVNUZXh0dXJlRmxvYXQuaCIKICNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJh
eU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xDb21w
cmVzc2VkVGV4dHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgiCiAj
aW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKICNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5o
IgpAQCAtMTkzLDYgKzE5NCw4IEBAIHN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBKU0QKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2Fz
dDxXZWJHTERlYnVnUmVuZGVyZXJJbmZvKj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4
dGVuc2lvbjo6V2ViR0xEZWJ1Z1NoYWRlcnNOYW1lOgogICAgICAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PFdlYkdMRGVidWdTaGFkZXJzKj4oZXh0ZW5zaW9u
KSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZXNOYW1lOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0YXRpY19j
YXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBqc051bGwoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMTAxNTY4KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIlY4VWludDMy
QXJyYXkuaCIKICNpbmNsdWRlICJWOFVpbnQ4QXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMQnVm
ZmVyLmgiCisjaW5jbHVkZSAiVjhXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oIgogI2luY2x1ZGUg
IlY4V2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIlY4V2ViR0xEZWJ1Z1NoYWRl
cnMuaCIKICNpbmNsdWRlICJWOFdlYkdMRnJhbWVidWZmZXIuaCIKQEAgLTE5Miw2ICsxOTMsMTAg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KAogICAgICAgICBleHRl
bnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PFdlYkdMRGVidWdTaGFkZXJzKj4oZXh0ZW5z
aW9uKSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAid2ViR0xEZWJ1Z1NoYWRlcnNOYW1lIjsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xDb21w
cmVzc2VkVGV4dHVyZXNOYW1lOgorICAgICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRp
Y19jYXN0PFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKj4oZXh0ZW5zaW9uKSk7CisgICAgICAgIHJl
ZmVyZW5jZU5hbWUgPSAid2ViS2l0V2ViR0xDb21wcmVzc2VkVGV4dHVyZXNOYW1lIjsKKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVCghZXh0ZW5zaW9uT2JqZWN0LklzRW1wdHkoKSk7
CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZShjb250ZXh0T2JqZWN0
LCByZWZlcmVuY2VOYW1lLCBleHRlbnNpb25PYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRlICJXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlcy5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCisjaW5jbHVkZSAi
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisKKyNpbmNsdWRlIDx3dGYvSW50MzJBcnJheS5oPgor
I2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVzOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlcyhXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQorICAg
ICwgbV9zdXBwb3J0c0R4dDEoZmFsc2UpCisgICAgLCBtX3N1cHBvcnRzRHh0NShmYWxzZSkKKyAg
ICAsIG1fc3VwcG9ydHNFdGMxKGZhbHNlKQorICAgICwgbV9zdXBwb3J0c1B2cnRjKGZhbHNlKQor
eworICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkgeworICAgICAgICBleHRlbnNpb25zLT5l
bnN1cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIik7CisgICAgICAg
IG1fc3VwcG9ydHNEeHQxID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBv
cnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikpIHsKKyAgICAgICAgZXh0ZW5z
aW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpOwor
ICAgICAgICBtX3N1cHBvcnRzRHh0MSA9IHRydWU7CisgICAgICAgIG1fc3VwcG9ydHNEeHQ1ID0g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSkgeworICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVF
bmFibGVkKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKKyAgICAgICAg
bV9zdXBwb3J0c0R4dDUgPSB0cnVlOworICAgIH0KKyAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIikpIHsKKyAgICAgICAgZXh0
ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1
cmUiKTsKKyAgICAgICAgbV9zdXBwb3J0c0V0YzEgPSB0cnVlOworICAgIH0KKyAgICBpZiAoZXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIikpIHsK
KyAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfSU1HX3RleHR1cmVfY29tcHJl
c3Npb25fcHZydGMiKTsKKyAgICAgICAgbV9zdXBwb3J0c1B2cnRjID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBpZiAobV9zdXBwb3J0c0R4dDEpIHsKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOworICAgICAgICBtX2Zvcm1h
dHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOwor
ICAgIH0KKworICAgIGlmIChtX3N1cHBvcnRzRHh0NSkKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVu
ZChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUKTsKKworICAgIGlm
IChtX3N1cHBvcnRzRXRjMSkKKyAgICAgICAgbV9mb3JtYXRzLmFwcGVuZChFeHRlbnNpb25zM0Q6
OkVUQzFfUkdCOF9PRVMpOworCisgICAgaWYgKG1fc3VwcG9ydHNQdnJ0YykgeworICAgICAgICBt
X2Zvcm1hdHMuYXBwZW5kKEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYx
X0lNRyk7CisgICAgICAgIG1fZm9ybWF0cy5hcHBlbmQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7CisgICAgfQorfQorCitXZWJHTENvbXByZXNzZWRUZXh0
dXJlczo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVzKCkKK3sKK30KKworV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmdldE5hbWUoKSBjb25zdAor
eworICAgIHJldHVybiBXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlc05hbWU7Cit9CisKK1Bh
c3NPd25QdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM+IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVz
OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMoY29udGV4dCkpOworfQorCitib29s
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0KQoreworICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdy
YXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQorICAgICAgICB8
fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIp
CisgICAgICAgIHx8IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2Nv
bXByZXNzaW9uX2R4dDUiKQorICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VT
X2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKQorICAgICAgICB8fCBleHRlbnNpb25zLT5z
dXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKK30KKworYm9vbCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlczo6dmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0Rl
bnVtIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgcmV0dXJuIG1fc3VwcG9y
dHNEeHQxOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpFVEMxX1JHQjhfT0VTOgorICAgICAgICBy
ZXR1cm4gbV9zdXBwb3J0c0V0YzE7CisgICAgY2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICByZXR1cm4gbV9zdXBwb3J0c0R4dDU7CisgICAg
Y2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc6CisgICAg
Y2FzZSBFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOgorICAg
ICAgICByZXR1cm4gbV9zdXBwb3J0c1B2cnRjOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlkYXRlQ29tcHJlc3NlZFRleEZ1
bmNEYXRhKEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMpCit7CisgICAgR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQgPSBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCk7Cisg
ICAgaWYgKCFwaXhlbHMpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkgeworICAgICAgICBjb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgYnl0ZXNSZXF1
aXJlZCA9IDA7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpD
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6RVRD
MV9SR0I4X09FUzoKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9ja1dpZHRo
ID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAgICAgICAg
ICAgY29uc3QgaW50IGtCbG9ja1NpemUgPSA4OworICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Fj
cm9zcyA9ICh3aWR0aCArIGtCbG9ja1dpZHRoIC0gMSkgLyBrQmxvY2tXaWR0aDsKKyAgICAgICAg
ICAgIGludCBudW1CbG9ja3NEb3duID0gKGhlaWdodCArIGtCbG9ja0hlaWdodCAtIDEpIC8ga0Js
b2NrSGVpZ2h0OworICAgICAgICAgICAgaW50IG51bUJsb2NrcyA9IG51bUJsb2Nrc0Fjcm9zcyAq
IG51bUJsb2Nrc0Rvd247CisgICAgICAgICAgICBieXRlc1JlcXVpcmVkID0gbnVtQmxvY2tzICog
a0Jsb2NrU2l6ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IGludCBrQmxvY2tXaWR0aCA9IDQ7CisgICAgICAgICAgICBjb25zdCBpbnQga0Js
b2NrSGVpZ2h0ID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Cisg
ICAgICAgICAgICBpbnQgbnVtQmxvY2tzQWNyb3NzID0gKHdpZHRoICsga0Jsb2NrV2lkdGggLSAx
KSAvIGtCbG9ja1dpZHRoOworICAgICAgICAgICAgaW50IG51bUJsb2Nrc0Rvd24gPSAoaGVpZ2h0
ICsga0Jsb2NrSGVpZ2h0IC0gMSkgLyBrQmxvY2tIZWlnaHQ7CisgICAgICAgICAgICBpbnQgbnVt
QmxvY2tzID0gbnVtQmxvY2tzQWNyb3NzICogbnVtQmxvY2tzRG93bjsKKyAgICAgICAgICAgIGJ5
dGVzUmVxdWlyZWQgPSBudW1CbG9ja3MgKiBrQmxvY2tTaXplOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQ
VjFfSU1HOgorICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQ
UFYxX0lNRzoKKyAgICAgICAgeworICAgICAgICAgICAgYnl0ZXNSZXF1aXJlZCA9IChzdGQ6Om1h
eCh3aWR0aCwgOCkgKiBzdGQ6Om1heChoZWlnaHQsIDgpICsgNykgLyA4OworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0pOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKHBpeGVscy0+Ynl0ZUxlbmd0aCgpICE9IGJ5dGVzUmVx
dWlyZWQpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OnZhbGlk
YXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdl
YkdMVGV4dHVyZSogdGV4KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBFeHRl
bnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgY2FzZSBFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgIGNhc2UgRXh0ZW5zaW9u
czNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDoKKyAgICBjYXNlIEV4dGVuc2lvbnMz
RDo6RVRDMV9SR0I4X09FUzoKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IGtCbG9j
a1dpZHRoID0gNDsKKyAgICAgICAgICAgIGNvbnN0IGludCBrQmxvY2tIZWlnaHQgPSA0OworICAg
ICAgICAgICAgaWYgKCh4b2Zmc2V0ICUga0Jsb2NrV2lkdGgpIHx8ICh5b2Zmc2V0ICUga0Jsb2Nr
SGVpZ2h0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IXhvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggIT0gdGV4LT5nZXRXaWR0aCh0
YXJnZXQsIGxldmVsKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggJSBrQmxvY2tXaWR0aCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCF5b2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodCAhPSB0ZXgt
PmdldEhlaWdodCh0YXJnZXQsIGxldmVsKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0ICUg
a0Jsb2NrSGVpZ2h0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIGNhc2UgRXh0
ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOgorICAgIGNhc2UgRXh0
ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRzoKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHhvZmZzZXQgfHwgeW9mZnNldAorICAgICAgICAgICAgICAgIHx8IHdp
ZHRoICE9IHRleC0+Z2V0V2lkdGgodGFyZ2V0LCBsZXZlbCkgfHwgaGVpZ2h0ICE9IHRleC0+Z2V0
SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOjpj
b21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEc2l6ZWkgaGVp
Z2h0LCBHQzNEaW50IGJvcmRlciwgQXJyYXlCdWZmZXJWaWV3KiBkYXRhKQoreworICAgIEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpOwor
ICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KGludGVybmFsZm9ybWF0KSkgeworICAg
ICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9FTlVNKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYm9yZGVyKSB7CisgICAg
ICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlQ29tcHJl
c3NlZFRleEZ1bmNEYXRhKHdpZHRoLCBoZWlnaHQsIGludGVybmFsZm9ybWF0LCBkYXRhKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV9jb250ZXh0LT52YWxpZGF0
ZVRleHR1cmVCaW5kaW5nKHRhcmdldCwgdHJ1ZSk7CisgICAgaWYgKCF0ZXgpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIW1fY29udGV4dC0+aXNHTEVTMk5QT1RTdHJpY3QoKSkgeworICAgICAg
ICBpZiAobGV2ZWwgJiYgV2ViR0xUZXh0dXJlOjppc05QT1Qod2lkdGgsIGhlaWdodCkpIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBjb250ZXh0LT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3JkZXIsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSk7CisgICAgdGV4
LT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKKyAgICBtX2NvbnRleHQtPmNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Cit9CisKK3ZvaWQgV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZXM6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgQXJyYXlCdWZm
ZXJWaWV3KiBkYXRhKQoreworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9jb250
ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpOworICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExv
c3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9y
bWF0KGZvcm1hdCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YSh3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IGRhdGEpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IG1fY29u
dGV4dC0+dmFsaWRhdGVUZXh0dXJlQmluZGluZyh0YXJnZXQsIHRydWUpOworICAgIGlmICghdGV4
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZm9ybWF0ICE9IHRleC0+Z2V0SW50ZXJuYWxG
b3JtYXQodGFyZ2V0LCBsZXZlbCkpIHsKKyAgICAgICAgY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCF2YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJEaW1lbnNpb25zKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdGV4KSkg
eworICAgICAgICBjb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGV4
dC0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIGRhdGEtPmJ5dGVMZW5ndGgoKSwgZGF0YS0+YmFzZUFkZHJlc3MoKSk7CisgICAgbV9j
b250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOworfQorCitXZWJHTEdldElu
Zm8gV2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygp
Cit7CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhJbnQzMkFycmF5OjpjcmVhdGUoJm1fZm9ybWF0
c1swXSwgbV9mb3JtYXRzLnNpemUoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVzLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlc19oCisjZGVmaW5lIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzX2gKKworI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJXZWJHTEV4dGVuc2lvbi5oIgorI2luY2x1ZGUg
PHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdMVGV4dHVyZTsKKworY2xhc3MgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZXMgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzPiBjcmVhdGUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kik7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlcygp
OworICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CisKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBBcnJheUJ1ZmZl
clZpZXcqIGRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBBcnJheUJ1ZmZlclZpZXcqIGRhdGEpOworCisg
ICAgV2ViR0xHZXRJbmZvIGdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOworCitwcml2YXRl
OgorICAgIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwor
CisgICAgYm9vbCB2YWxpZGF0ZUNvbXByZXNzZWRUZXhGdW5jRGF0YShHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyogcGl4ZWxzKTsKKworICAgIGJvb2wg
dmFsaWRhdGVDb21wcmVzc2VkVGV4Rm9ybWF0KEdDM0RlbnVtIGZvcm1hdCk7CisKKyAgICBib29s
IHZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkRpbWVuc2lvbnMoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIFdlYkdMVGV4dHVyZSopOworCisgICAgYm9vbCBt
X3N1cHBvcnRzRHh0MTsKKyAgICBib29sIG1fc3VwcG9ydHNEeHQ1OworICAgIGJvb2wgbV9zdXBw
b3J0c0V0YzE7CisgICAgYm9vbCBtX3N1cHBvcnRzUHZydGM7CisKKyAgICBWZWN0b3I8aW50PiBt
X2Zvcm1hdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJH
TENvbXByZXNzZWRUZXh0dXJlc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlcy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuaWRsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGh0bWwgeworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdFQkdMLAorICAgICAgICBHZW5lcmF0ZUlz
UmVhY2hhYmxlPUltcGxDb250ZXh0LAorICAgICAgICBPbWl0Q29uc3RydWN0b3IsCisgICAgICAg
IERvbnRDaGVja0VudW1zCisgICAgXSBXZWJHTENvbXByZXNzZWRUZXh0dXJlcyB7CisgICAgICAg
IC8qIENvbXByZXNzZWQgVGV4dHVyZSBGb3JtYXRzICovCisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGludCBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAgICA9IDB4ODNGMDsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUICAgICAg
ID0gMHg4M0YxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUNV9FWFQgICAgICAgPSAweDgzRjM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBF
VEMxX1JHQjhfT0VTICAgICAgICAgICAgICAgICAgICAgICA9IDB4OEQ2NDsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IENPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgICAgID0gMHg4
QzAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRC
UFBWMV9JTUcgICAgPSAweDhDMDI7CisKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9p
ZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBs
ZXZlbCwgaW4gdW5zaWduZWQgbG9uZyBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25nIHdpZHRoLCBpbiBs
b25nIGhlaWdodCwgaW4gbG9uZyBib3JkZXIsIGluIEFycmF5QnVmZmVyVmlldyBkYXRhKTsKKyAg
ICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChp
biB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gbG9uZyBsZXZlbCwgaW4gbG9uZyB4b2Zmc2V0LCBp
biBsb25nIHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gbG9uZyB3aWR0aCwgaW4gbG9uZyBoZWlnaHQsIGluIHVuc2ln
bmVkIGxvbmcgZm9ybWF0LCBpbiBBcnJheUJ1ZmZlclZpZXcgZGF0YSk7CisgICAgfTsKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAkocmV2aXNp
b24gMTAxNTY4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9FU1Zl
cnRleEFycmF5T2JqZWN0TmFtZSwKICAgICAgICAgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mb05hbWUs
CiAgICAgICAgIFdlYkdMRGVidWdTaGFkZXJzTmFtZSwKKyAgICAgICAgV2ViS2l0V2ViR0xDb21w
cmVzc2VkVGV4dHVyZXNOYW1lLCAvLyBXRUJLSVRfIHByZWZpeCB1bnRpbCBleHRlbnNpb24gaXMg
b2ZmaWNpYWwKICAgICB9OwogCiAgICAgdm9pZCByZWYoKSB7IG1fY29udGV4dC0+cmVmKCk7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAkocmV2aXNpb24gMTAxNTY4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiAr
NTQsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViR0xBY3RpdmVJbmZv
LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRU
ZXh0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRl
ICJXZWJHTENvbnRleHRFdmVudC5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJlckluZm8u
aCIKQEAgLTIxMjgsNiArMjEyOSwxMiBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnCiAgICAgICAgICAgICBtX3dlYmtpdExvc2VDb250ZXh0ID0gV2ViS2l0TG9zZUNv
bnRleHQ6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2Via2l0TG9zZUNvbnRleHQu
Z2V0KCk7CiAgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAiV0VCS0lUX1dF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZXMiKSkgeworICAgICAgICAvLyBVc2UgV0VCS0lUXyBwcmVm
aXggdW50aWwgZXh0ZW5zaW9uIGlzIG9mZmljaWFsLgorICAgICAgICBpZiAoIW1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZXMpCisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVzID0g
V2ViR0xDb21wcmVzc2VkVGV4dHVyZXM6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1f
d2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMuZ2V0KCk7CisgICAgfQogCiAgICAgaWYgKGFsbG93UHJp
dmlsZWdlZEV4dGVuc2lvbnMoKSkgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKSkgewpAQCAtMjIzOSw2ICsyMjQ2LDggQEAg
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UAogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoKICAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5B
cnJheVBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUFJF
U1NFRF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICAgIGlmIChtX3dlYmdsQ29tcHJlc3NlZFRleHR1
cmVzKQorICAgICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXMtPmdldENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0cygpOwogICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4g
dGhlIHNwZWMKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNVTExfRkFDRToKQEAgLTI1NzAsNiArMjU3OSw4IEBAIFZlY3RvcjxTdHJp
bmc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2UKICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogICAgIHJlc3VsdC5h
cHBlbmQoIldFQktJVF9sb3NlX2NvbnRleHQiKTsKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4
dHVyZXM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZXMiKTsKIAogICAgIGlmIChhbGxvd1ByaXZpbGVnZWRFeHRl
bnNpb25zKCkpIHsKICAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBw
b3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2
aXNpb24gMTAxNTY4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgT0VTVGV4
dHVyZUZsb2F0OwogY2xhc3MgT0VTVmVydGV4QXJyYXlPYmplY3Q7CiBjbGFzcyBXZWJHTEFjdGl2
ZUluZm87CiBjbGFzcyBXZWJHTEJ1ZmZlcjsKK2NsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVz
OwogY2xhc3MgV2ViR0xDb250ZXh0QXR0cmlidXRlczsKIGNsYXNzIFdlYkdMRGVidWdSZW5kZXJl
ckluZm87CiBjbGFzcyBXZWJHTERlYnVnU2hhZGVyczsKQEAgLTMxMSw2ICszMTIsNyBAQCBwdWJs
aWM6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMT2JqZWN0OwogICAgIGZyaWVuZCBjbGFzcyBPRVNW
ZXJ0ZXhBcnJheU9iamVjdDsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xEZWJ1Z1NoYWRlcnM7Cisg
ICAgZnJpZW5kIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVzOwogCiAgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiwgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRl
eHQzRD4sIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICB2b2lkIGluaXRpYWxp
emVOZXdDb250ZXh0KCk7CkBAIC00ODUsNiArNDg3LDcgQEAgcHVibGljOgogICAgIE93blB0cjxX
ZWJLaXRMb3NlQ29udGV4dD4gbV93ZWJraXRMb3NlQ29udGV4dDsKICAgICBPd25QdHI8V2ViR0xE
ZWJ1Z1JlbmRlcmVySW5mbz4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvOwogICAgIE93blB0cjxX
ZWJHTERlYnVnU2hhZGVycz4gbV93ZWJnbERlYnVnU2hhZGVyczsKKyAgICBPd25QdHI8V2ViR0xD
b21wcmVzc2VkVGV4dHVyZXM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZXM7CiAKICAgICAvLyBI
ZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycwogICAgIFdlYkdMR2V0SW5mbyBnZXRC
b29sZWFuUGFyYW1ldGVyKEdDM0RlbnVtKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCShyZXZpc2lvbiAxMDE1NjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAkod29ya2luZyBjb3B5
KQpAQCAtNjEsNiArNjEsMTAgQEAgcHVibGljOgogICAgIC8vICAgICBpbXBsZW1lbnQgSU9TdXJm
YWNlIGJpbmRpbmc7IGl0J3MgcmVjb21tZW5kZWQgdG8gc3VwcG9ydAogICAgIC8vICAgICB0aGlz
IG9ubHkgb24gTWFjIE9TIFggdG8gbGltaXQgdGhlIGFtb3VudCBvZiBjb2RlIGRlcGVuZGVudAog
ICAgIC8vICAgICBvbiB0aGlzIGV4dGVuc2lvbikKKyAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX2R4dDEKKyAgICAvLyAgIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMK
KyAgICAvLyAgIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCisgICAgLy8gICBH
TF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwogCiAgICAgLy8gVGFrZXMgZnVsbCBuYW1l
IG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCiAgICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1h
dF9CR1JBODg4OCIuCkBAIC0xMTUsNiArMTE5LDIyIEBAIHB1YmxpYzoKICAgICAgICAgLy8gR0xf
QVJCX3RleHR1cmVfcmVjdGFuZ2xlCiAgICAgICAgIFRFWFRVUkVfUkVDVEFOR0xFX0FSQiA9ICAw
eDg0RjUsCiAgICAgICAgIFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCID0gMHg4NEY2LAor
CisgICAgICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyAgICAgICAgLy8g
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YworICAgICAgICBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUID0gMHg4M0YwLAorICAgICAgICBDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCA9IDB4ODNGMSwKKyAgICAgICAgQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQgPSAw
eDgzRjIsCisgICAgICAgIENPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUID0gMHg4M0YzLAor
CisgICAgICAgIC8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCisgICAgICAg
IEVUQzFfUkdCOF9PRVMgPSAweDhENjQsCisKKyAgICAgICAgLy8gR0xfSU1HX3RleHR1cmVfY29t
cHJlc3Npb25fcHZydGMKKyAgICAgICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyA9
IDB4OEMwMCwKKyAgICAgICAgQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyA9IDB4OEMw
MSwKKyAgICAgICAgQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgPSAweDhDMDIsCisg
ICAgICAgIENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HID0gMHg4QzAzLAogICAgIH07
CiAKICAgICAvLyBHTF9BUkJfcm9idXN0bmVzcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxMDE1
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTMsOSArNjUzLDggQEAgcHVibGljOgogICAgIHZvaWQg
Y29sb3JNYXNrKEdDM0Rib29sZWFuIHJlZCwgR0MzRGJvb2xlYW4gZ3JlZW4sIEdDM0Rib29sZWFu
IGJsdWUsIEdDM0Rib29sZWFuIGFscGhhKTsKICAgICB2b2lkIGNvbXBpbGVTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCk7CiAKLSAgICAvLyB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RzaXplaSBpbWFn
ZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotICAgIC8vIHZvaWQgY29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51
bSBmb3JtYXQsIEdDM0RzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotCisgICAg
dm9pZCBjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRh
KTsKKyAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkKiBkYXRhKTsKICAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQg
eCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQg
Ym9yZGVyKTsKICAgICB2b2lkIGNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpOwogICAgIHZvaWQg
Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJ
KHJldmlzaW9uIDEwMTU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYs
MTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMgogICAgIG1faW50
ZXJuYWwtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhPZmZzZXQsIHlPZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21w
cmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVt
IGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rp
bnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQoreworICAg
IC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29tcHJlc3NlZFRleEltYWdlMkQuCisgICAgLy8g
bV9pbnRlcm5hbC0+Y29tcHJlc3NlZFRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKK30KKwordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRC4KKyAgICAvLyBtX2ludGVybmFsLT5jb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7Cit9CisKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+Y3Vs
bEZhY2UobW9kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAJ
KHJldmlzaW9uIDEwMTU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzQs
NiArMTQzNCwxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhTdWJJbWFnZTJEKEdDCiAg
ICAgOjpnbFRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZiwgeW9mZiwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RpbnQgYm9yZGVyLCBHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKQor
eworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIDo6Z2xDb21wcmVzc2VkVGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBp
bWFnZVNpemUsIGRhdGEpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9m
ZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkK
K3sKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICA6OmdsQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCBpbWFnZVNpemUsIGRhdGEpOworfQorCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVCdWZmZXIoKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RRdC5jcHAJKHJldmlzaW9uIDEwMTU2OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NTMsNiArNjUzLDE4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBp
bGVTaGFkZXIoUGwKICAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSkKK3sKKyAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CisgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBtX3ByaXZhdGUtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwg
ZGF0YSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0Rp
bnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rp
bnQgYm9yZGVyKQogewogICAgIG1fcHJpdmF0ZS0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDE1NjgpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDExLTExLTMwICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBkcmFmdCBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVzIFdlYkdMIGV4dGVu
c2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIw
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRl
eHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Lmg6CisgICAgICAgICogdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Y29tcHJlc3NlZFRleEltYWdlMkQp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKToKKwogMjAxMS0xMS0zMCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNb3ZlIGRpZFVwZGF0ZUxheW91dCBmcm9tIFdl
YkZyYW1lQ2xpZW50IHRvIFdlYlZpZXdDbGllbnQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4
dDNELmgJKHJldmlzaW9uIDEwMTU2OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw2
ICsyMjYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xl
YW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xl
YW4gYWxwaGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTElkIHNo
YWRlcikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKFdHQzNE
ZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdH
QzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIsIFdHQzNE
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVs
LCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBX
R0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29weVRleEltYWdlMkQo
V0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1h
dCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBo
ZWlnaHQsIFdHQzNEaW50IGJvcmRlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4U3Vi
SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNl
dCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3
aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2Uo
V0dDM0RlbnVtIG1vZGUpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDE1
NjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBACiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1h
Z2VEYXRhLmgiCi0jaW5jbHVkZSAiV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKICNpbmNsdWRlICJXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJX
ZWJWaWV3SW1wbC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgi
CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC00
NzMsNiArNDczLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1lKHQxIGEK
ICAgICBtX2ltcGwtPm5hbWUoYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KTsgICAgICBc
CiB9CiAKKyNkZWZpbmUgREVMRUdBVEVfVE9fSU1QTF85KG5hbWUsIHQxLCB0MiwgdDMsIHQ0LCB0
NSwgdDYsIHQ3LCB0OCwgdDkpICAgICAgIFwKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0LCB0NSBhNSwgdDYgYTYsIHQ3IGE3LCB0
OCBhOCwgdDkgYTkpIFwKK3sgXAorICAgIG1faW1wbC0+bmFtZShhMSwgYTIsIGEzLCBhNCwgYTUs
IGE2LCBhNywgYTgsIGE5KTsgICAgICBcCit9CisKICNkZWZpbmUgREVMRUdBVEVfVE9fSU1QTF85
UihuYW1lLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5LCBydCkgXAogcnQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpuYW1lKHQxIGExLCB0MiBhMiwgdDMgYTMsIHQ0IGE0LCB0
NSBhNSwgdDYgYTYsIHQ3IGE3LCB0OCBhOCwgdDkgYTkpIFwKIHsgXApAQCAtNTMzLDYgKzUzOSw4
IEBAIERFTEVHQVRFX1RPX0lNUExfMShjbGVhclN0ZW5jaWwsIEdDM0RpbnQKIERFTEVHQVRFX1RP
X0lNUExfNChjb2xvck1hc2ssIEdDM0Rib29sZWFuLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4s
IEdDM0Rib29sZWFuKQogREVMRUdBVEVfVE9fSU1QTF8xKGNvbXBpbGVTaGFkZXIsIFBsYXRmb3Jt
M0RPYmplY3QpCiAKK0RFTEVHQVRFX1RPX0lNUExfOChjb21wcmVzc2VkVGV4SW1hZ2UyRCwgR0Mz
RGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSwgY29uc3Qgdm9pZCopCitERUxFR0FURV9UT19JTVBMXzkoY29tcHJlc3NlZFRleFN1
YkltYWdlMkQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50LCBH
QzNEaW50LCBHQzNEZW51bSwgR0MzRHNpemVpLCBjb25zdCB2b2lkKikKIERFTEVHQVRFX1RPX0lN
UExfOChjb3B5VGV4SW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSwgR0MzRGludCkKIERFTEVHQVRFX1RPX0lN
UExfOChjb3B5VGV4U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKQogREVMRUdBVEVfVE9f
SU1QTF8xKGN1bGxGYWNlLCBHQzNEZW51bSkKQEAgLTEwOTgsNiArMTEwNiw4IEBAIERFTEVHQVRF
X1RPX0lOVEVSTkFMXzEoY2xlYXJTdGVuY2lsLCBHQzMKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzQo
Y29sb3JNYXNrLCBHQzNEYm9vbGVhbiwgR0MzRGJvb2xlYW4sIEdDM0Rib29sZWFuLCBHQzNEYm9v
bGVhbikKIERFTEVHQVRFX1RPX0lOVEVSTkFMXzEoY29tcGlsZVNoYWRlciwgUGxhdGZvcm0zRE9i
amVjdCkKIAorREVMRUdBVEVfVE9fSU5URVJOQUxfOChjb21wcmVzc2VkVGV4SW1hZ2UyRCwgR0Mz
RGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEaW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSwgY29uc3Qgdm9pZCopCitERUxFR0FURV9UT19JTlRFUk5BTF85KGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RzaXplaSwgY29uc3Qgdm9pZCopCiBERUxFR0FURV9U
T19JTlRFUk5BTF84KGNvcHlUZXhJbWFnZTJELCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0s
IEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpLCBHQzNEaW50KQogREVMRUdB
VEVfVE9fSU5URVJOQUxfOChjb3B5VGV4U3ViSW1hZ2UyRCwgR0MzRGVudW0sIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKQog
REVMRUdBVEVfVE9fSU5URVJOQUxfMShjdWxsRmFjZSwgR0MzRGVudW0pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aAkocmV2aXNpb24gMTAxNTY4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb2xvck1hc2soR0MzRGJvb2xlYW4gcmVkLCBHQzNEYm9vbGVhbiBn
cmVlbiwgR0MzRGJvb2xlYW4gYmx1ZSwgR0MzRGJvb2xlYW4gYWxwaGEpOwogICAgIHZvaWQgY29t
cGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0KTsKIAorICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwg
R0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7CisgICAgdm9pZCBjb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQg
eG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0
YSk7CiAgICAgdm9pZCBjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcik7CiAgICAgdm9pZCBj
b3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQg
eG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKICAgICB2b2lkIGN1bGxGYWNlKEdDM0RlbnVtIG1v
ZGUpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01v
Y2tXZWJHcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxMDE1NjgpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw2ICs5OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29sb3JNYXNr
KFdHQzNEYm9vbGVhbiByZWQsIFdHQzNEYm9vbGVhbiBncmVlbiwgV0dDM0Rib29sZWFuIGJsdWUs
IFdHQzNEYm9vbGVhbiBhbHBoYSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbXBpbGVTaGFkZXIo
V2ViR0xJZCBzaGFkZXIpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFn
ZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3Jk
ZXIsIFdHQzNEc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0Rp
bnQgbGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEc2l6ZWkg
d2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGVudW0gZm9ybWF0LCBXR0MzRHNpemVpIGlt
YWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXhJ
bWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNE
c2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3B5
VGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQg
eG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0Rz
aXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjdWxs
RmFjZShXR0MzRGVudW0gbW9kZSkgeyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>