<?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>106643</bug_id>
          
          <creation_ts>2013-01-11 01:55:16 -0800</creation_ts>
          <short_desc>[Shadow DOM] Put node reprojection code behind ENABLE(SHADOW_DOM)</short_desc>
          <delta_ts>2013-09-28 20:44:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>103339</blocked>
    
    <blocked>107621</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>d-r</cc>
    
    <cc>fmalita</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>805078</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-11 01:55:16 -0800</bug_when>
    <thetext>This is a main dish of Bug 103339. Although we need some cleanup work after this, this should hide most of complicated part of shadow dom.
This should also include Bug 103208. I&apos;d close it once this has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805079</commentid>
    <comment_count>1</comment_count>
      <attachid>182298</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-11 01:55:46 -0800</bug_when>
    <thetext>Created attachment 182298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805080</commentid>
    <comment_count>2</comment_count>
      <attachid>182298</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-11 02:01:39 -0800</bug_when>
    <thetext>Comment on attachment 182298
Patch

Attachment 182298 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15806300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805081</commentid>
    <comment_count>3</comment_count>
      <attachid>182298</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-11 02:03:19 -0800</bug_when>
    <thetext>Comment on attachment 182298
Patch

Attachment 182298 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15806301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805092</commentid>
    <comment_count>4</comment_count>
      <attachid>182298</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-11 02:18:21 -0800</bug_when>
    <thetext>Comment on attachment 182298
Patch

Attachment 182298 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15801385</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805192</commentid>
    <comment_count>5</comment_count>
      <attachid>182298</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 05:16:31 -0800</bug_when>
    <thetext>Comment on attachment 182298
Patch

Attachment 182298 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15805365

New failing tests:
accessibility/aria-checkbox-checked.html
animations/3d/matrix-transform-type-animation.html
http/tests/appcache/cyrillic-uri.html
accessibility/anchor-linked-anonymous-block-crash.html
animations/animation-add-events-in-handler.html
http/tests/appcache/deferred-events-delete-while-raising.html
animations/additive-transform-animations.html
animations/3d/replace-filling-transform.html
http/tests/appcache/deferred-events-delete-while-raising-timer.html
accessibility/aria-describedby-on-input.html
http/tests/appcache/crash-when-navigating-away-then-back.html
animations/animation-border-overflow.html
animations/animation-direction-alternate-reverse.html
accessibility/accessibility-object-detached.html
http/tests/appcache/abort-cache-ondownloading-manifest-404.html
http/tests/appcache/credential-url.html
http/tests/appcache/access-via-redirect.php
animations/3d/change-transform-in-end-event.html
accessibility/aria-controls-with-tabs.html
http/tests/appcache/destroyed-frame.html
animations/animation-controller-drt-api.html
animations/3d/transform-perspective.html
accessibility/accessibility-node-reparent.html
http/tests/appcache/deferred-events.html
animations/3d/state-at-end-event-transform.html
animations/animation-direction-normal.html
animations/3d/transform-origin-vs-functions.html
accessibility/accessibility-node-memory-management.html
animations/animation-css-rule-types.html
accessibility/adjacent-continuations-cause-assertion-failure.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805329</commentid>
    <comment_count>6</comment_count>
      <attachid>182298</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-11 09:32:58 -0800</bug_when>
    <thetext>Comment on attachment 182298
Patch

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

&gt; Source/WebCore/css/StyleScopeResolver.cpp:219
&gt; +#if ENABLE(SHADOW_DOM)
&gt;          if (!ScopeContentDistribution::hasShadowElement(shadowRoot))
&gt;              break;
&gt; +#else
&gt; +        break;
&gt; +#endif

Factor into an inline function to reduce the number of ifdefs in this file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808208</commentid>
    <comment_count>7</comment_count>
      <attachid>182946</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-16 02:43:22 -0800</bug_when>
    <thetext>Created attachment 182946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808210</commentid>
    <comment_count>8</comment_count>
      <attachid>182947</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-16 02:45:09 -0800</bug_when>
    <thetext>Created attachment 182947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808215</commentid>
    <comment_count>9</comment_count>
      <attachid>182947</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-16 02:54:52 -0800</bug_when>
    <thetext>Comment on attachment 182947
Patch

Attachment 182947 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15908331</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808234</commentid>
    <comment_count>10</comment_count>
      <attachid>182947</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-16 03:17:59 -0800</bug_when>
    <thetext>Comment on attachment 182947
Patch

Attachment 182947 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15907268</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808261</commentid>
    <comment_count>11</comment_count>
      <attachid>182947</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 04:12:43 -0800</bug_when>
    <thetext>Comment on attachment 182947
Patch

Attachment 182947 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15905347

New failing tests:
fast/dom/shadow/composed-shadow-tree-walker.html
editing/shadow/insertorderedlist-crash.html
editing/shadow/selection-of-orphan-shadowroot.html
fast/css/style-scoped/style-scoped-change-scoped-in-shadow.html
editing/shadow/select-contenteditable-shadowhost.html
accessibility/corresponding-control-deleted-crash.html
fast/dom/shadow/athost-atrules.html
editing/shadow/doubleclick-on-meter-in-shadow-crash.html
editing/shadow/adjusting-editing-boundary-with-table-in-shadow.html
editing/shadow/breaking-editing-boundary-with-table.html
fast/dom/shadow/compare-document-position.html
fast/dom/shadow/composed-shadow-tree-walker-shadow-reprojection.html
fast/css/style-scoped/style-scoped-apply-author-styles.html
fast/dom/shadow/adopt-node-with-shadow-root.html
editing/shadow/rightclick-on-meter-in-shadow-crash.html
editing/shadow/shadow-selection-not-exported.html
editing/shadow/contenteditable-propagation-at-shadow-boundary.html
fast/block/block-remove-child-delete-line-box-crash.html
fast/dom/shadow/access-key.html
fast/css/style-scoped/style-scoped-in-shadow.html
editing/shadow/bold-twice-in-shadow.html
fast/dom/HTMLTemplateElement/cycles-in-shadow.html
editing/shadow/breaking-editing-boundaries-2.html
fast/css/style-scoped/style-scoped-with-important-rule.html
editing/shadow/selection-of-shadowroot.html
editing/shadow/execcommand-indent-in-shadow.html
fast/css/style-scoped/style-scoped-nested.html
editing/shadow/breaking-editing-boundaries.html
editing/shadow/delete-characters-in-distributed-node-crash.html
editing/shadow/compare-positions-in-nested-shadow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808289</commentid>
    <comment_count>12</comment_count>
      <attachid>182947</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 05:11:25 -0800</bug_when>
    <thetext>Comment on attachment 182947
Patch

Attachment 182947 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15905367

New failing tests:
fast/dom/shadow/composed-shadow-tree-walker.html
editing/shadow/insertorderedlist-crash.html
editing/shadow/selection-of-orphan-shadowroot.html
fast/css/style-scoped/style-scoped-change-scoped-in-shadow.html
editing/shadow/select-contenteditable-shadowhost.html
accessibility/corresponding-control-deleted-crash.html
fast/dom/shadow/athost-atrules.html
editing/shadow/doubleclick-on-meter-in-shadow-crash.html
editing/shadow/adjusting-editing-boundary-with-table-in-shadow.html
editing/shadow/breaking-editing-boundary-with-table.html
fast/dom/shadow/compare-document-position.html
fast/dom/shadow/composed-shadow-tree-walker-shadow-reprojection.html
fast/css/style-scoped/style-scoped-apply-author-styles.html
fast/dom/shadow/adopt-node-with-shadow-root.html
editing/shadow/rightclick-on-meter-in-shadow-crash.html
editing/shadow/shadow-selection-not-exported.html
editing/shadow/contenteditable-propagation-at-shadow-boundary.html
fast/block/block-remove-child-delete-line-box-crash.html
fast/dom/shadow/access-key.html
fast/css/style-scoped/style-scoped-in-shadow.html
editing/shadow/bold-twice-in-shadow.html
fast/dom/HTMLTemplateElement/cycles-in-shadow.html
editing/shadow/breaking-editing-boundaries-2.html
fast/css/style-scoped/style-scoped-with-important-rule.html
editing/shadow/selection-of-shadowroot.html
editing/shadow/execcommand-indent-in-shadow.html
fast/css/style-scoped/style-scoped-nested.html
editing/shadow/breaking-editing-boundaries.html
editing/shadow/delete-characters-in-distributed-node-crash.html
editing/shadow/compare-positions-in-nested-shadow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809227</commentid>
    <comment_count>13</comment_count>
      <attachid>182947</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-17 03:12:49 -0800</bug_when>
    <thetext>Comment on attachment 182947
Patch

Attachment 182947 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/15926548</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812905</commentid>
    <comment_count>14</comment_count>
      <attachid>183960</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-22 04:02:51 -0800</bug_when>
    <thetext>Created attachment 183960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812907</commentid>
    <comment_count>15</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-22 04:05:06 -0800</bug_when>
    <thetext>This one is almost ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812931</commentid>
    <comment_count>16</comment_count>
      <attachid>183960</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-22 04:40:07 -0800</bug_when>
    <thetext>Comment on attachment 183960
Patch

Attachment 183960 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16040546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812956</commentid>
    <comment_count>17</comment_count>
      <attachid>183960</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 05:31:14 -0800</bug_when>
    <thetext>Comment on attachment 183960
Patch

Attachment 183960 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16038511

New failing tests:
fast/dom/shadow/composed-shadow-tree-walker.html
editing/shadow/insertorderedlist-crash.html
editing/shadow/selection-of-orphan-shadowroot.html
fast/css/style-scoped/style-scoped-change-scoped-in-shadow.html
editing/shadow/select-contenteditable-shadowhost.html
accessibility/corresponding-control-deleted-crash.html
fast/dom/click-method-on-html-element.html
fast/dom/shadow/athost-atrules.html
editing/shadow/doubleclick-on-meter-in-shadow-crash.html
editing/shadow/adjusting-editing-boundary-with-table-in-shadow.html
editing/shadow/breaking-editing-boundary-with-table.html
fast/dom/shadow/compare-document-position.html
fast/dom/shadow/composed-shadow-tree-walker-shadow-reprojection.html
fast/css/style-scoped/style-scoped-apply-author-styles.html
fast/dom/shadow/adopt-node-with-shadow-root.html
editing/shadow/rightclick-on-meter-in-shadow-crash.html
editing/shadow/shadow-selection-not-exported.html
editing/shadow/contenteditable-propagation-at-shadow-boundary.html
fast/css/style-scoped/style-scoped-with-important-rule.html
fast/dom/shadow/access-key.html
fast/css/style-scoped/style-scoped-in-shadow.html
editing/shadow/bold-twice-in-shadow.html
fast/dom/HTMLTemplateElement/cycles-in-shadow.html
editing/shadow/breaking-editing-boundaries-2.html
editing/shadow/selection-of-shadowroot.html
editing/shadow/execcommand-indent-in-shadow.html
fast/css/style-scoped/style-scoped-nested.html
editing/shadow/breaking-editing-boundaries.html
editing/shadow/delete-characters-in-distributed-node-crash.html
editing/shadow/compare-positions-in-nested-shadow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812973</commentid>
    <comment_count>18</comment_count>
      <attachid>183960</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-22 05:46:12 -0800</bug_when>
    <thetext>Comment on attachment 183960
Patch

Attachment 183960 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16041592</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813654</commentid>
    <comment_count>19</comment_count>
      <attachid>184099</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-22 18:26:51 -0800</bug_when>
    <thetext>Created attachment 184099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813728</commentid>
    <comment_count>20</comment_count>
      <attachid>184117</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-22 20:29:15 -0800</bug_when>
    <thetext>Created attachment 184117
Fixing Mac and Win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813774</commentid>
    <comment_count>21</comment_count>
      <attachid>184129</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-22 21:16:36 -0800</bug_when>
    <thetext>Created attachment 184129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814017</commentid>
    <comment_count>22</comment_count>
      <attachid>184129</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-23 02:01:18 -0800</bug_when>
    <thetext>Comment on attachment 184129
Patch

Attachment 184129 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16073128

New failing tests:
fullscreen/full-screen-render-inline.html
inspector/elements/shadow-root.html
svg/custom/use-multiple-on-nested-disallowed-font.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814058</commentid>
    <comment_count>23</comment_count>
      <attachid>184129</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-23 03:08:43 -0800</bug_when>
    <thetext>Comment on attachment 184129
Patch

Attachment 184129 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16063534

New failing tests:
fullscreen/full-screen-render-inline.html
inspector/elements/shadow-root.html
svg/custom/use-multiple-on-nested-disallowed-font.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814550</commentid>
    <comment_count>24</comment_count>
      <attachid>184129</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-23 13:14:21 -0800</bug_when>
    <thetext>Comment on attachment 184129
Patch

Attachment 184129 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16075310

New failing tests:
svg/custom/use-multiple-on-nested-disallowed-font.html
inspector/elements/shadow-root.html
fullscreen/full-screen-render-inline.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815240</commentid>
    <comment_count>25</comment_count>
      <attachid>184437</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-24 01:37:29 -0800</bug_when>
    <thetext>Created attachment 184437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815283</commentid>
    <comment_count>26</comment_count>
      <attachid>184454</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-24 03:02:01 -0800</bug_when>
    <thetext>Created attachment 184454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815340</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 04:50:03 -0800</bug_when>
    <thetext>Attachment 184454 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fullscreen/full-screen-render-inline-expected.png&apos;, u&apos;LayoutTests/fullscreen/full-screen-render-inline-expected.txt&apos;, u&apos;LayoutTests/platform/mac-wk2/TestExpectations&apos;, u&apos;LayoutTests/platform/mac/TestExpectations&apos;, u&apos;LayoutTests/platform/mac/fast/html/details-nested-2-expected.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleScopeResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleScopeResolver.h&apos;, u&apos;Source/WebCore/dom/AncestorChainWalker.cpp&apos;, u&apos;Source/WebCore/dom/ComposedShadowTreeWalker.cpp&apos;, u&apos;Source/WebCore/dom/ComposedShadowTreeWalker.h&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/dom/ElementShadow.cpp&apos;, u&apos;Source/WebCore/dom/ElementShadow.h&apos;, u&apos;Source/WebCore/dom/NodeRenderingTraversal.cpp&apos;, u&apos;Source/WebCore/dom/NodeRenderingTraversal.h&apos;, u&apos;Source/WebCore/dom/ShadowRoot.cpp&apos;, u&apos;Source/WebCore/dom/ShadowRoot.h&apos;, u&apos;Source/WebCore/html/HTMLDetailsElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLDetailsElement.h&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/ContentDistributor.cpp&apos;, u&apos;Source/WebCore/html/shadow/ContentDistributor.h&apos;, u&apos;Source/WebCore/html/shadow/ContentSelectorQuery.cpp&apos;, u&apos;Source/WebCore/html/shadow/ContentSelectorQuery.h&apos;, u&apos;Source/WebCore/html/shadow/HTMLContentElement.h&apos;, u&apos;Source/WebCore/html/shadow/InsertionPoint.cpp&apos;, u&apos;Source/WebCore/html/shadow/InsertionPoint.h&apos;, u&apos;Source/WebCore/html/shadow/SelectRuleFeatureSet.cpp&apos;, u&apos;Source/WebCore/html/shadow/SelectRuleFeatureSet.h&apos;, u&apos;Source/WebCore/svg/SVGUseElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGUseElement.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in&apos;]&quot; exit_code: 1
LayoutTests/fullscreen/full-screen-render-inline-expected.png:0:  Have to enable auto props in the subversion config file (/home/alancutter/.subversion/config &quot;enable-auto-props = yes&quot;). Have to set the svn:mime-type in the subversion config file (/home/alancutter/.subversion/config &quot;*.png = svn:mime-type=image/png&quot;).  [image/png] [5]
Total errors found: 1 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815346</commentid>
    <comment_count>28</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-24 05:09:33 -0800</bug_when>
    <thetext>There seems to be a lot of confusing code and complexity here purely because of &lt;details&gt; elements Shadow DOM dependency. It might be better to move it off the Shadow DOM first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815362</commentid>
    <comment_count>29</comment_count>
      <attachid>184454</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 05:31:34 -0800</bug_when>
    <thetext>Comment on attachment 184454
Patch

Attachment 184454 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16077694

New failing tests:
fullscreen/full-screen-render-inline.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815458</commentid>
    <comment_count>30</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-24 07:37:59 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; There seems to be a lot of confusing code and complexity here purely because of &lt;details&gt; elements Shadow DOM dependency. It might be better to move it off the Shadow DOM first.

Shadow DOM is the right way to implement this. I don&apos;t understand why we would be forcing ourselves to churn this from Shadow DOM implementation to some one-off hack and back to it again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816020</commentid>
    <comment_count>31</comment_count>
      <attachid>184617</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-24 17:23:48 -0800</bug_when>
    <thetext>Created attachment 184617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816199</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-24 21:47:51 -0800</bug_when>
    <thetext>This &quot;cure&quot; seems worse than the disease.  This patch reads like an in-place fork of WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816200</commentid>
    <comment_count>33</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-24 21:48:31 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; There seems to be a lot of confusing code and complexity here purely because of &lt;details&gt; elements Shadow DOM dependency. It might be better to move it off the Shadow DOM first.

Or we could just accept the fact that Shadow DOM is part of WebCore and skip all this make-work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816230</commentid>
    <comment_count>34</comment_count>
      <attachid>184665</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-24 22:23:01 -0800</bug_when>
    <thetext>Created attachment 184665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816241</commentid>
    <comment_count>35</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-24 22:33:39 -0800</bug_when>
    <thetext>The last patch tried to make it clear which part is for non-SHADOW_DOM &lt;details&gt; implementations.
I hope I could make it work even with SHADOW_DOM flag.
But it&apos;s so hard - just like it is hard to make &lt;input&gt; work with shadow DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816275</commentid>
    <comment_count>36</comment_count>
      <attachid>184665</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 22:58:08 -0800</bug_when>
    <thetext>Comment on attachment 184665
Patch

Attachment 184665 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16121136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816293</commentid>
    <comment_count>37</comment_count>
      <attachid>184679</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-24 23:21:50 -0800</bug_when>
    <thetext>Created attachment 184679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816344</commentid>
    <comment_count>38</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-25 00:45:05 -0800</bug_when>
    <thetext>&gt; 
&gt; Or we could just accept the fact that Shadow DOM is part of WebCore and skip all this make-work.

Actually, this is what Antti did at Bug 103208. Probably I should go that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816377</commentid>
    <comment_count>39</comment_count>
      <attachid>184698</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-25 01:32:47 -0800</bug_when>
    <thetext>Created attachment 184698
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816385</commentid>
    <comment_count>40</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-25 01:47:27 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Or we could just accept the fact that Shadow DOM is part of WebCore and skip all this make-work.

No such decision has been made. Shadow DOM is currently strictly an experiment. If you want to make that argument please do it elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816469</commentid>
    <comment_count>41</comment_count>
      <attachid>184698</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-25 04:21:49 -0800</bug_when>
    <thetext>Comment on attachment 184698
WIP

Attachment 184698 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16118294</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816478</commentid>
    <comment_count>42</comment_count>
      <attachid>184698</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 04:36:23 -0800</bug_when>
    <thetext>Comment on attachment 184698
WIP

Attachment 184698 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16119266

New failing tests:
fast/dom/shadow/composed-shadow-tree-walker.html
editing/shadow/insertorderedlist-crash.html
editing/shadow/selection-of-orphan-shadowroot.html
fast/css/style-scoped/style-scoped-change-scoped-in-shadow.html
editing/shadow/select-contenteditable-shadowhost.html
accessibility/corresponding-control-deleted-crash.html
fast/dom/shadow/athost-atrules.html
editing/shadow/doubleclick-on-meter-in-shadow-crash.html
editing/shadow/adjusting-editing-boundary-with-table-in-shadow.html
editing/shadow/breaking-editing-boundary-with-table.html
fast/dom/HTMLTemplateElement/cycles-in-shadow.html
fast/dom/shadow/composed-shadow-tree-walker-shadow-reprojection.html
fast/css/style-scoped/style-scoped-apply-author-styles.html
fast/dom/shadow/adopt-node-with-shadow-root.html
editing/shadow/rightclick-on-meter-in-shadow-crash.html
editing/shadow/shadow-selection-not-exported.html
editing/shadow/contenteditable-propagation-at-shadow-boundary.html
fast/css/style-scoped/style-scoped-with-important-rule.html
fast/dom/shadow/access-key.html
fast/css/style-scoped/style-scoped-in-shadow.html
editing/shadow/bold-twice-in-shadow.html
fast/dom/shadow/compare-document-position.html
editing/shadow/breaking-editing-boundaries-2.html
editing/shadow/selection-of-shadowroot.html
editing/shadow/execcommand-indent-in-shadow.html
fast/css/style-scoped/style-scoped-nested.html
editing/shadow/breaking-editing-boundaries.html
fast/dom/shadow/content-after-style.html
editing/shadow/delete-characters-in-distributed-node-crash.html
editing/shadow/compare-positions-in-nested-shadow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816522</commentid>
    <comment_count>43</comment_count>
      <attachid>184698</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 05:48:51 -0800</bug_when>
    <thetext>Comment on attachment 184698
WIP

Attachment 184698 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16120274</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816523</commentid>
    <comment_count>44</comment_count>
      <attachid>184698</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 05:50:40 -0800</bug_when>
    <thetext>Comment on attachment 184698
WIP

Attachment 184698 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16120284</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816560</commentid>
    <comment_count>45</comment_count>
      <attachid>184698</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 06:53:03 -0800</bug_when>
    <thetext>Comment on attachment 184698
WIP

Attachment 184698 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16123290</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816591</commentid>
    <comment_count>46</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-25 07:42:32 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; (In reply to comment #33)
&gt; &gt; Or we could just accept the fact that Shadow DOM is part of WebCore and skip all this make-work.
&gt; 
&gt; No such decision has been made. Shadow DOM is currently strictly an experiment. If you want to make that argument please do it elsewhere.

Can you help me understand this a bit more? I think you&apos;re saying that there&apos;s a process that takes a new feature in WebKit from some stage that called &quot;experiment&quot; to another stage where it&apos;s not. As far as I know, we don&apos;t have any process like that. We just announce a feature on webkit-dev, have a spirited discussion, and then, if everyone is content, we build it (http://www.webkit.org/coding/adding-features.html) -- which is what happened with Shadow DOM.

Would you like me to start another discussion on webkit-dev to baptize Shadow DOM somehow? Should we have a modification to our typical process to clarify this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816667</commentid>
    <comment_count>47</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-25 09:47:37 -0800</bug_when>
    <thetext>We use feature flags for non-core (things that not everyone ships) and experimental (work-in-progress standards, things no one ships) features. This automatically prevents orthogonal features and the core from becoming dependent on them. Had this been done properly in the first place &lt;details&gt; could not depend on the Shadow DOM infrastructure now.

If you want to argue that Shadow DOM is a core feature that should not be behind a feature flag then that is definitely a new discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817059</commentid>
    <comment_count>48</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-25 17:05:37 -0800</bug_when>
    <thetext>I think it&apos;s appropriate to use ENABLE macros to hide APIs from the web.  However, I don&apos;t see any reason why we shouldn&apos;t use these facilities internally in the engine.

The patch just reads like you&apos;re angry and want Shadow DOM to get off your lawn and you don&apos;t care about making a mess of WebCore in the process.  For better or worse, we share this lawn and we should worth together to make it beautiful rather than working at cross purposes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817719</commentid>
    <comment_count>49</comment_count>
      <attachid>184698</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-28 06:20:45 -0800</bug_when>
    <thetext>Comment on attachment 184698
WIP

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Since &lt;detail&gt; and &lt;summary&gt; are relying on this mechanism,

Nit: &lt;detail&gt; =&gt; &lt;details&gt;

&gt; Source/WebCore/ChangeLog:15
&gt; +        they are now disabled when ENABLE(SHADOW_DOM) is not given.

Is this correct? Because in the patch it looks like ShadowTreeWalker is there to support details/summary when SHADOW_DOM isn’t enabled.

&gt; Source/WebCore/WebCore.exp.in:2531
&gt; +__ZN7WebCore18ContentDistributor22ensureSelectFeatureSetEPNS_13ElementShadowE

These symbols are kept in sorted order, I think; this should be sorted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934327</commentid>
    <comment_count>50</comment_count>
      <attachid>184698</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-28 20:43:52 -0700</bug_when>
    <thetext>Comment on attachment 184698
WIP

We&apos;re removing Shadow DOM.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182298</attachid>
            <date>2013-01-11 01:55:46 -0800</date>
            <delta_ts>2013-01-16 02:43:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130111185248.patch</filename>
            <type>text/plain</type>
            <size>33952</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3Bl
UmVzb2x2ZXIuY3BwCmluZGV4IGZkZWJkYTRjYzgwNjBiYjFmZjkzY2VhY2UyMzlhNjJhYzVlZDRm
YTcuLjM0MTQ0OWVkNGIzOWYwOGQwOGZiZTZkN2FiZWI4MGMxZmFkOTgzZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCkBAIC0yMTEsOCArMjExLDEyIEBAIGJv
b2wgU3R5bGVTY29wZVJlc29sdmVyOjpzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1
bGVzKGNvbnN0IEVsZW1lbnQqIGVsCiAgICAgICAgIGlmIChhdEhvc3RSdWxlU2V0Rm9yKHNoYWRv
d1Jvb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICAgICAgaWYgKCFTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc1NoYWRvd0VsZW1l
bnQoc2hhZG93Um9vdCkpCiAgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgIGJyZWFr
OworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIzMyw4ICsyMzcsMTIg
QEAgdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6Om1hdGNoSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQsIFZlY3RvcjxSdWxlU2V0Kj4KICAgICBmb3IgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jv
b3QgPSBzaGFkb3ctPnlvdW5nZXN0U2hhZG93Um9vdCgpOyBzaGFkb3dSb290OyBzaGFkb3dSb290
ID0gc2hhZG93Um9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsgCiAgICAgICAgIGlmIChSdWxlU2V0
KiBydWxlU2V0ID0gYXRIb3N0UnVsZVNldEZvcihzaGFkb3dSb290KSkKICAgICAgICAgICAgIG1h
dGNoZWRSdWxlcy5hcHBlbmQocnVsZVNldCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAg
ICAgIGlmICghU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50KHNoYWRv
d1Jvb3QpKQogICAgICAgICAgICAgYnJlYWs7CisjZWxzZQorICAgICAgICBicmVhazsKKyNlbmRp
ZgogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hh
aW5XYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3Bw
CmluZGV4IDk3MGNkYzIwNTk3YzUwYjIxOGRmNDMxMDM4ZTZjNThiOWVhYmFhZTYuLjdmZTE5M2Nk
Njk0NjU5YmNlYmZkZTI2MGU5MjAzODNkMzI1ZDY5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QW5jZXN0b3JDaGFpbldhbGtlci5jcHAKQEAgLTQ2LDI2ICs0NiwzNCBAQCB2b2lkIEFuY2VzdG9y
Q2hhaW5XYWxrZXI6OnBhcmVudCgpCiAgICAgQVNTRVJUKG1fbm9kZSk7CiAgICAgQVNTRVJUKG1f
ZGlzdHJpYnV0ZWROb2RlKTsKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93
T2ZQYXJlbnQobV9ub2RlKSkgeworICAgICAgICBVTlVTRURfUEFSQU0oc2hhZG93KTsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IobV9kaXN0
cmlidXRlZE5vZGUpKSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKICAg
ICAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gdHJ1ZTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfQogICAgIGlmICghbV9ub2RlLT5pc1No
YWRvd1Jvb3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgaWYgKCEobV9ub2RlICYmIG1fbm9kZS0+aXNT
aGFkb3dSb290KCkgJiYgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHRvU2hh
ZG93Um9vdChtX25vZGUpKSkpCiAgICAgICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9k
ZTsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKICAgICAgICAg
cmV0dXJuOworI2VuZGlmCiAgICAgfQogCiAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9v
dCA9IHRvU2hhZG93Um9vdChtX25vZGUpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlm
IChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBTY29wZUNvbnRlbnREaXN0cmlidXRp
b246OmFzc2lnbmVkVG8oc2hhZG93Um9vdCkpIHsKICAgICAgICAgbV9ub2RlID0gaW5zZXJ0aW9u
UG9pbnQ7CiAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gdHJ1ZTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZgorCiAgICAgbV9ub2RlID0gc2hhZG93Um9vdC0+aG9z
dCgpOwogICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOwogICAgIG1faXNDcm9zc2luZ0lu
c2VydGlvblBvaW50ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4IGFiNThkNjE1MmJjNjBkOTA1MTdhZTRhYjhjZWVhMDdi
NDhmY2IxOGMuLmQyMzBmODY0ODc4MjQ2ZjY5MDM4YzRkYTdiYTMxNmM5ZmZkNDRlMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0x
LDQgKzEsMyBAQAotCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjgsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCisKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgpAQCAtMzEzLDMgKzMxNCw1IEBA
IHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91cygpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAppbmRleCA4MzQ5ZTIxYWE5ODNmMGE4NGEx
MTNjMTY3ODBlNDllYzY3NjY0ZjNlLi4yZjAyYTdjM2JjNDU1MDVmNWI0MjgyODUzZWE2ZDI4M2Yz
OGZmMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5oCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5vZGU7CkBAIC0xNDMsNCArMTQ1LDUgQEAgaW5s
aW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNv
bnN0IE5vZGUqIG5vZGUsIFBvbGkKIAogfSAvLyBuYW1lc3BhY2UKIAorI2VuZGlmIC8vIEVOQUJM
RShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYTMxMTM2ODdh
NjdjMzg0ZWE0NTBiY2M2YzA0ZjZkMGMwY2UxZTcwNC4uOWEzMzBhMzFkY2M4MDBkZjBhZjViNDkz
MWFkNWFlOGFiNmFkYzQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzc2LDEwICs3NzYs
MTIgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9ySWRDaGFuZ2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwgY28KIAogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
VmFsdWUpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cq
IHBhcmVudEVsZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlz
KSkgewogICAgICAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1
dGVDaGFuZ2VkKHBhcmVudEVsZW1lbnRTaGFkb3csIG5hbWUsIG5ld1ZhbHVlKSkKICAgICAgICAg
ICAgIHBhcmVudEVsZW1lbnRTaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKICAgICB9
CisjZW5kaWYKIAogICAgIHBhcnNlQXR0cmlidXRlKG5hbWUsIG5ld1ZhbHVlKTsKIApAQCAtOTE2
LDYgKzkxOCw3IEBAIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiAKIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsZW1l
bnRTaGFkb3csIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmV3VmFsdWUpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQVNTRVJUKGVsZW1lbnRT
aGFkb3cpOwogICAgIGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gZWxl
bWVudFNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGVsZW1lbnRT
aGFkb3cpOwogCkBAIC05NDcsNiArOTUwLDEyIEBAIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsCiAg
ICAgfQogCiAgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFt
ZS5sb2NhbE5hbWUoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShlbGVtZW50U2hhZG93KTsK
KyAgICBVTlVTRURfUEFSQU0obmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKG5ld1ZhbHVlKTsKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBnaXZl
biBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFuZGxlci4KQEAgLTE0MTIsOCArMTQyMSwxMCBAQCBF
bGVtZW50U2hhZG93KiBFbGVtZW50OjplbnN1cmVTaGFkb3coKQogdm9pZCBFbGVtZW50OjpkaWRB
ZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKQogewogICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNo
YWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMp
KQogICAgICAgICBlbGVtZW50U2hhZG93LT5kaWRBZmZlY3RTZWxlY3RvcihtYXNrKTsKKyNlbmRp
ZgogfQogCiBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3Qo
RXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXgg
NzIwMWQzMjc1MjIwN2E1NWI3YTc4MDVhMTlmODRiODRlZTRkYWY2Yi4uYzdhNDUyNDczZDE1MWM5
ZjQwOTU2OTQ2MjUyOGM1NDdjODNhNDk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcApAQCAtODIsNyArODIsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3Qo
RWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogICAgIHNoYWRv
d1Jvb3QtPnNldEhvc3Qoc2hhZG93SG9zdCk7CiAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJl
ZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29wZSgpKTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2go
c2hhZG93Um9vdC5nZXQoKSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbV9kaXN0cmli
dXRvci5kaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShzaGFkb3dIb3N0KTsKKyNlbmRpZgogICAgIENo
aWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290Lmdl
dCgpKTsKIAogICAgIC8vIEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMgdGhlIGhv
c3QgYW5kIGl0cyBjaGlsZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLgpAQCAtMTE3LDcgKzExOSw5IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3Zl
QWxsU2hhZG93Um9vdHMoKQogICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93
SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmF0dGFjaCgpCkBAIC0xNzIsNyAr
MTc2LDEwIEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICAgICAgaW5mby5hZGRNZW1iZXIo
c2hhZG93Um9vdCk7CiAgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dSb290LT5uZXh0KCk7CiAg
ICAgfQorCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaW5mby5hZGRNZW1iZXIobV9kaXN0
cmlidXRvcik7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5oCmluZGV4IDkxZjY3OTE2ODg2ZDRhOTM0YjEzYWU3NzQ5NmI3MDFiNmQyZWE2MjYu
LjU2YjQ4MDlhMzA0MDk0MWQzZjU1NWVjZDBlYTZjYjhhMzhhZmFhNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuaApAQCAtNjMsMTkgKzYzLDI3IEBAIHB1YmxpYzoKICAgICBib29sIG5l
ZWRzU3R5bGVSZWNhbGMoKTsKICAgICB2b2lkIHJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdl
KTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1
dGlvbigpIHsgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0K
ICAgICB2b2lkIGVuc3VyZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRvci5lbnN1cmVEaXN0
cmlidXRpb24oaG9zdCgpKTsgfQogICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRT
ZWxlY3Rvck1hc2sgbWFzaykgeyBtX2Rpc3RyaWJ1dG9yLmRpZEFmZmVjdFNlbGVjdG9yKGhvc3Qo
KSwgbWFzayk7IH0KICAgICB2b2lkIHdpbGxBZmZlY3RTZWxlY3RvcigpIHsgbV9kaXN0cmlidXRv
ci53aWxsQWZmZWN0U2VsZWN0b3IoaG9zdCgpKTsgfQogCi0gICAgQ29udGVudERpc3RyaWJ1dG9y
JiBkaXN0cmlidXRvcigpOwotICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0
b3IoKSBjb25zdDsKKyAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgeyByZXR1
cm4gbV9kaXN0cmlidXRvcjsgfQorICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJp
YnV0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CisjZWxzZQorICAgIHZvaWQg
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgfQorICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9u
KCkgeyB9CisjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwotcHJpdmF0ZToKIAorcHJpdmF0ZToKICAgICBEb3VibHlMaW5rZWRMaXN0
PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICBDb250ZW50RGlzdHJpYnV0b3IgbV9kaXN0cmlidXRvcjsKKyNlbmRpZgogfTsKIAogaW5saW5l
IFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFkb3c6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CkBA
IC04OCwxNiArOTYsNiBAQCBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6b2xkZXN0
U2hhZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQog
Ci1pbmxpbmUgQ29udGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigp
Ci17Ci0gICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7Ci19Ci0KLWlubGluZSBjb25zdCBDb250ZW50
RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQogaW5saW5lIEVsZW1lbnQqIEVsZW1lbnRTaGFkb3c6
Omhvc3QoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9zaGFkb3dSb290cy5pc0VtcHR5KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCmluZGV4IDgz
YmI3ZWM3ZTc5ZWYyZjIxNjNlZjA3NzUzNzlkNzc3ZTY5ZWZmZjIuLjNhZDU0ZjRkMjZmMWI3Mjcw
NjJjZTA0OTFhNGM0NGUyMTM0NjE2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ1RyYXZlcnNhbC5jcHAKQEAgLTQ5LDEzICs0OSwxOSBAQCB2b2lkIFBhcmVudERldGFp
bHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQogCiBDb250
YWluZXJOb2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRl
dGFpbHMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNyb3NzVXBwZXJC
b3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFydEZyb21TaGFkb3dCb3Vu
ZGFyeSk7CiAgICAgQ29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRhaW5lck5vZGUod2Fsa2Vy
LnRyYXZlcnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwogICAgIHJldHVybiBkZXRh
aWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CisjZWxzZQorICAgIC8vIFRPRE86
IGltcGwKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBuZXh0U2libGluZ1Nsb3co
Y29uc3QgTm9kZSogbm9kZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIGlmIChub2RlLT5pc0JlZm9yZVBz
ZXVkb0VsZW1lbnQoKSkgewogICAgICAgICB3YWxrZXIucGFyZW50KCk7CkBAIC02OSwxMiArNzUs
MTUgQEAgTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgTm9kZSog
cGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOwogICAgIGlmIChwYXJlbnQgJiYg
cGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50
KS0+cHNldWRvRWxlbWVudChBRlRFUik7Ci0KKyNlbHNlCisgICAgLy8gVE9ETzogaW1wbAogICAg
IHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29uc3Qg
Tm9kZSogbm9kZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIGlmIChub2RlLT5pc0FmdGVyUHNldWRvRWxl
bWVudCgpKSB7CiAgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKQEAgLTg4LDQwICs5Nyw2MiBAQCBO
b2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgTm9kZSogcGFy
ZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOwogICAgIGlmIChwYXJlbnQgJiYgcGFy
ZW50LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+
cHNldWRvRWxlbWVudChCRUZPUkUpOwotCisjZWxzZQorICAgIC8vIFRPRE86IGltcGwKICAgICBy
ZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBuZXh0SW5TY29wZShjb25zdCBOb2RlKiBub2Rl
KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKICAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUs
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAg
IHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgLy8g
VE9ETzogaW1wbAorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIHByZXZpb3VzSW5T
Y29wZShjb25zdCBOb2RlKiBub2RlKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIC8v
IEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAh
RU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDMzMzkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9z
c1VwcGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5wcmV2aW91cygpOwogICAgIHJldHVybiB3YWxr
ZXIuZ2V0KCk7CisjZWxzZQorICAgIC8vIFRPRE86IGltcGwKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgogfQogCiBOb2RlKiBwYXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBz
aG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLnBhcmVu
dCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIC8vIFRPRE86IGltcGwK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0
IE5vZGUqIG5vZGUpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgLy8gRklYTUU6IENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hB
RE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQog
ICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3Vu
ZGFyeSk7CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7
CisjZWxzZQorICAgIC8vIFRPRE86IGltcGwKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggZTNhNDgyMjJiOTNkMzhkNjcwZWMyYTIz
ODFmMGJmNmRhMTUxNzQyZC4uYjNlMzc4MmIxYzRmYzQ1ZTUyYWY5MTliZDcyZTE2YTBhM2E0MmM1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTcsNyArNTcsMTEgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNTaGFkb3dSb290IDogcHVibGljIERv
Y3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxTaGFkb3dSb290PiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCogcG9p
bnRlcnNbM107CisjZWxzZQorICAgIHZvaWQqIHBvaW50ZXJzWzJdOworI2VuZGlmCiAgICAgdW5z
aWduZWQgY291bnRlcnNBbmRGbGFnc1sxXTsKIH07CiAKQEAgLTI2Niw3ICsyNzAsNyBAQCBOb2Rl
OjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhD
b250YWluZXJOb2RlKiBpbnNlcgogCiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVu
dCgpIHx8ICFpc09sZGVzdCgpKQogICAgICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKLQorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIC8vIEZJWE1FOiBXaGVuIHBhcnNpbmcgPHZpZGVvIGNv
bnRyb2xzPiwgaW5zZXJ0ZWRJbnRvKCkgaXMgY2FsbGVkIG1hbnkgdGltZXMgd2l0aG91dCBpbnZv
a2luZyByZW1vdmVkRnJvbS4KICAgICAvLyBGb3Igbm93LCB3ZSBjaGVjayBtX3JlZ2lzdGVyZWRX
aXRoUGFyZW50U2hhZG93cm9vdC4gV2Ugd291bGQgbGlrZSB0byBBU1NFUlQoIW1fcmVnaXN0ZXJl
ZFNoYWRvd1Jvb3QpIGhlcmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2lnP2lkPTEwMTMxNgpAQCAtMjc3LDEyICsyODEsMTMgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBTaGFkb3dSb290OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSog
aW5zZXIKICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+cmVnaXN0ZXJF
bGVtZW50U2hhZG93KCk7CiAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290
ID0gdHJ1ZTsKICAgICB9Ci0KKyNlbmRpZgogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQog
CiB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+
aW5Eb2N1bWVudCgpICYmIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290KSB7CiAgICAg
ICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7CiAg
ICAgICAgIGlmICghcm9vdCkKQEAgLTI5Miw3ICsyOTcsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICAgICAgcm9v
dC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKICAgICAg
ICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBmYWxzZTsKICAgICB9Ci0KKyNl
bmRpZgogICAgIERvY3VtZW50RnJhZ21lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsK
IH0KIApAQCAtMzE3LDYgKzMyMiw3IEBAIHZvaWQgU2hhZG93Um9vdDo6dW5yZWdpc3RlclNjb3Bl
ZEhUTUxTdHlsZUNoaWxkKCkKICAgICBzZXRIYXNTY29wZWRIVE1MU3R5bGVDaGlsZChtX251bWJl
ck9mU3R5bGVzID4gMCk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKQogewog
ICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQpAQCAtMzI0LDcgKzMzMCw4IEBAIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKQog
CiAgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNvbnRlbnREaXN0
cmlidXRpb24pOwogICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOwotfSAgIAor
fQorI2VuZGlmCiAKIHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKQEAgLTMzMyw3ICszNDAsOSBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiAgICAgVHJlZVNjb3BlOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZXYpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fbmV4dCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaW5mby5hZGRNZW1i
ZXIobV9zY29wZURpc3RyaWJ1dGlvbik7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKaW5kZXggMTUyNjkzOGVkZTUwNDBkZGM0MzM5ZjU4ZmY4NjUxYTJjNzI1OWY3OS4uODU5
ZjBkMjJkZWFkODJhZDhjN2RlMTA1NjRmMjgyMjI5MTQxY2U1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCkBAIC04OCw5ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9u
KCkgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQogICAgIGNvbnN0IFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
KiBlbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpOworI2VuZGlmCiAKICAgICBTaGFkb3dSb290VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhvclNoYWRvd1Jvb3QgPyBBdXRob3JTaGFk
b3dSb290IDogVXNlckFnZW50U2hhZG93Um9vdDsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmxlKCkg
Y29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dGhvclNoYWRvd1Jvb3Q7IH0KQEAgLTExMCw3ICsx
MTIsOSBAQCBwcml2YXRlOgogCiAgICAgU2hhZG93Um9vdCogbV9wcmV2OwogICAgIFNoYWRvd1Jv
b3QqIG1fbmV4dDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBPd25QdHI8U2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOworI2VuZGlmCiAgICAgdW5zaWdu
ZWQgbV9udW1iZXJPZlN0eWxlcyA6IDI4OwogICAgIHVuc2lnbmVkIG1fYXBwbHlBdXRob3JTdHls
ZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIDogMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDRhY2I3NmRmNzUyZjU0Njc5
ZjFmMTY0N2JlODhmMzI3NDM4YjYxOGYuLjEzMDg5ZjQxMWRiZDM4ZmIxMzk1ZmExYTZmMWNkYjQ1
MDU0MDJmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAt
NTM2LDggKzUzNiwxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAg
ICAgICAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUpOwogICAgIH0KIAorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFkb3ct
PmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgogCiAgICAgc2V0Q2hhbmdlZFNpbmNl
TGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCA4NjdhMTc0NTdiNTI5
ZWYwODlkODBiMGZkODgzZTE0YTYyYzdlZTM4Li4wOGRlM2FjZTE2OTgzOGQwZDRhMTE0ZTZmNmU0
MWU3ZTdmYjAzYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJFbGVtZW50
U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCkBAIC00MzMsMyArNDM1
LDUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKEVs
ZW1lbnQqIGhvc3QpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRleCA0
NjBkNDEzNWQ5OTBlOGZmNjk2NzU3ZDU2MmEwYjBiMTNlZjczNjgyLi40ZTFjNzAyZjE5Yzg0Njcz
ZjZiZWYyNTJkYmU5NzFjOTMxMzFmN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZTsK
QEAgLTE2Myw0ICsxNjUsNSBAQCBpbmxpbmUgYm9vbCBDb250ZW50RGlzdHJpYnV0b3I6Om5lZWRz
RGlzdHJpYnV0aW9uKCkgY29uc3QKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00p
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcAppbmRleCAwY2FiMzEyOGRkMDU1YzYyMzcyODMzNjQ5NzZlODUwY2I3NDVk
ZTE4Li4yNDhjNjU1MmVkZmY0YmVlZTcxZTNkMTU5YTZmN2U2NzJlZGU1NzZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCkBA
IC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudFNl
bGVjdG9yUXVlcnkuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NT
U2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJT
ZWxlY3RvckNoZWNrZXIuaCIKQEAgLTkwLDMgKzkyLDUgQEAgYm9vbCBDb250ZW50U2VsZWN0b3JR
dWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdzLCBpbnQg
bnQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAppbmRleCA2YTRmMzM4
MTU0NmFhYTNhMzA5ODk0NjM3NTM3OGYzNjA0NWUxYzFiLi5iNzAzM2UxODcwMzYyNDIyN2U1N2Uy
N2FhZGU3MzkwY2ZiOGM3NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpAQCAtNzYsNCAr
NzgsNSBAQCBwcml2YXRlOgogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
aAppbmRleCA5ZDBjOGZjNDM1M2JmOTZjZTI0ZDFhMjZmMjUxYWRjM2M5ODFhZDA4Li5jYTI2OWU4
NjM5MGU1ZWI0MWZkNmM5YjM5ODNiOWJjYzIyMjg3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaApAQCAtODgsNyArODgsNiBAQCBjbGFz
cyBIVE1MQ29udGVudEVsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZW50VGFnTmFtZShEb2N1bWVudCop
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50RWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Kik7Ci0KICAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQ29udGVudEluc2VydGlvblBvaW50OyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCA5NmZi
MjUwMGYyMGFjN2FmYzkzYzhhZThlNWYyZWMyN2JlYzdlZGVlLi5lYTI5ZWQ4ZjFlMTRlMTQ1YzI0
ZDEwZDY1NzU5OWJkNTkxYjY4Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0zOSwxMCArMzksMzYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitTaW1wbGVJbnNlcnRpb25Qb2ludDo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRNTEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUluc2VydGlvblBvaW50KQoreworfQorCiti
b29sIFNpbXBsZUluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFj
b250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3Qg
Tm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBp
ZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFNpbXBsZUluc2VydGlvblBvaW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIHJldHVybiAhaXNTaGFk
b3dCb3VuZGFyeSgpICYmIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwor
fQorCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQpCisgICAgOiBTaW1wbGVJbnNlcnRpb25Qb2lu
dCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290KGZh
bHNlKQogewogfQpAQCAtNzgsMjUgKzEwNCw2IEBAIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OnNob3Vs
ZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdAogICAgIHJldHVybiBpc0FjdGl2ZSgpICYmICFo
YXNEaXN0cmlidXRpb24oKTsKIH0KIAotYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNTaGFkb3dCb3Vu
ZGFyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5pc1No
YWRvd1Jvb3QoKSAmJiBpc0FjdGl2ZSgpOwotfQotCi1ib29sIEluc2VydGlvblBvaW50Ojppc0Fj
dGl2ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFjb250YWluaW5nU2hhZG93Um9vdCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKLSAg
ICB3aGlsZSAobm9kZSkgewotICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCiBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0CiB7CiAgICAgQ29u
dGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb25Gcm9tRG9jdW1lbnQoY29uc3RfY2Fz
dDxJbnNlcnRpb25Qb2ludCo+KHRoaXMpKTsKQEAgLTEwOSwxMSArMTE2LDYgQEAgUGFzc1JlZlB0
cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdAog
ICAgIHJldHVybiBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobm9kZXMpOwogfQogCi1ib29sIEluc2Vy
dGlvblBvaW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBj
b250ZXh0KQotewotICAgIHJldHVybiAhaXNTaGFkb3dCb3VuZGFyeSgpICYmIEhUTUxFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwotfQotCiB2b2lkIEluc2VydGlvblBvaW50Ojpj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwg
Tm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgSFRNTEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJD
aGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yMjYsNCArMjI4LDYgQEAgSW5zZXJ0aW9uUG9p
bnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKICAgICBy
ZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKaW5kZXggNzQyNDNlOWNhYTQ1MzdjNTk0YTkyOTBiNDY4MTFlM2I2MDA1
YmNlNi4uZTQ2NWUzMjM2MGQ4ZjYwNjE2OGQ0NmYyODMyYzc1OTgwYzlhNzdhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC00MSw3ICs0MSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgeworY2xhc3MgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQgewogcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFNoYWRvd0luc2VydGlv
blBvaW50LApAQCAtNTQsMTkgKzU0LDM0IEBAIHB1YmxpYzoKICAgICAgICAgSGFzVG9NYXRjaFNl
bGVjdG9yCiAgICAgfTsKIAorICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2Rl
KikgeyByZXR1cm4gQWx3YXlzTWF0Y2hlczsgfQorICAgIHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Q
b2ludFR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25z
dCB7IHJldHVybiB0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkgJiYgaXNB
Y3RpdmUoKTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAg
IFNpbXBsZUluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFOworfTsKKworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorCitjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBTaW1wbGVJ
bnNlcnRpb25Qb2ludCB7CitwdWJsaWM6CisKICAgICB2aXJ0dWFsIH5JbnNlcnRpb25Qb2ludCgp
OwogCiAgICAgYm9vbCBoYXNEaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiAhbV9kaXN0cmli
dXRpb24uaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBzZXREaXN0cmlidXRpb24oQ29udGVudERpc3Ry
aWJ1dGlvbiYgZGlzdHJpYnV0aW9uKSB7IG1fZGlzdHJpYnV0aW9uLnN3YXAoZGlzdHJpYnV0aW9u
KTsgfQogICAgIHZvaWQgY2xlYXJEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0aW9uLmNsZWFy
KCk7IH0KLSAgICBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdDsKLSAgICBib29sIGlzQWN0
aXZlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXREaXN0cmlidXRlZE5v
ZGVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVGb3IoTm9kZSop
IHsgcmV0dXJuIEFsd2F5c01hdGNoZXM7IH0KICAgICB2aXJ0dWFsIGNvbnN0IENTU1NlbGVjdG9y
TGlzdCYgc2VsZWN0b3JMaXN0KCkgeyByZXR1cm4gZW1wdHlTZWxlY3Rvckxpc3QoKTsgfQotICAg
IHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGNhbkFmZmVjdFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAg
IGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CkBAIC05MCwxMiArMTA1LDExIEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2Us
IE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVy
Tm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogCiBwcml2YXRlOgogCkBAIC0xMDMsMzAgKzExNywxNCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Q7CiB9OwogCi1pbmxpbmUgSW5zZXJ0aW9uUG9p
bnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQoIW5vZGUgfHwg
bm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0
aW9uUG9pbnQqPihub2RlKTsKLX0KLQotaW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiB0b0lu
c2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFub2RlIHx8IG5v
ZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IElu
c2VydGlvblBvaW50Kj4obm9kZSk7Ci19CitJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2lu
dChOb2RlKik7Citjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBO
b2RlKik7CiAKIGlubGluZSBib29sIGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSog
bm9kZSkKIHsKICAgICByZXR1cm4gbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpICYmIHRvSW5zZXJ0
aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCk7CiB9CiAKLWlubGluZSBib29sIGlzTG93ZXJFbmNh
cHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUgfHwgIW5vZGUt
PmlzSW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0
b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7Ci19Ci0KIGlubGluZSBO
b2RlKiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAg
QVNTRVJUKG5vZGUpOwpAQCAtMTYxLDYgKzE1OSwzNiBAQCBpbmxpbmUgRWxlbWVudFNoYWRvdyog
c2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKIAogSW5zZXJ0
aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSopOwogCisjZWxzZQorCitj
bGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBTaW1wbGVJbnNlcnRpb25Qb2ludCB7CitwdWJs
aWM6CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorcHJvdGVjdGVkOgorICAgIEluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkgOiBTaW1wbGVJbnNlcnRpb25Qb2ludCh0YWdO
YW1lLCBkb2N1bWVudCkgeyB9Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisK
K2lubGluZSBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQorewor
ICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxJbnNlcnRpb25Qb2ludCo+KG5vZGUpOworfQorCitpbmxpbmUgY29uc3Qg
SW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKworaW5saW5lIGJv
b2wgaXNMb3dlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeShOb2RlKiBub2RlKQoreworICAgIGlmICgh
bm9kZSB8fCAhbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzU2hhZG93Qm91bmRhcnkoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1
cmVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuY3BwCmluZGV4IDQ2NTIyYzQ0NTNiYzNlYjAzNjFmZDQ2MTFhZDE5NjcyMjZjZGQxYzAuLjZl
Mjc3YTQwZDk0ZjA5YTUxZjM2MGQ2MGY5NWY3YzlkNjlhNWM5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKQEAgLTMxLDYg
KzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVy
ZVNldC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJDU1NTZWxlY3Rv
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwzICs4Nyw0IEBAIHZvaWQgU2VsZWN0
UnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihjb25zdCBDU1NTZWxl
Y3Rvciogc2VsZWN0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKaW5kZXgg
ZDBmMmRlNjgyMWIzMjUwOTE2YzdlYzE2ZGVkNGRiNzU5ODRhMDgxNy4uYjAyMDczZDRmMmMzNzk1
ZDc4NzVlNGFkNWVkZDhjNDk3NzcxN2NmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCkBAIC0zMSw5ICszMSwxMiBAQAogI2lmbmRl
ZiBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCiAjZGVmaW5lIFNlbGVjdFJ1bGVGZWF0dXJlU2V0X2gK
IAorCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWxl
Y3RSdWxlRmVhdHVyZVNldCB7CkBAIC04NSw0ICs4OCw1IEBAIGlubGluZSBib29sIFNlbGVjdFJ1
bGVGZWF0dXJlU2V0OjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcm
IGF0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZDQyYjczOGNlN2U0ZWU2MWI4NDIxODBkMGU1
MzA4NzNjODI5MzJmYi4uY2JmMDgyYzE5ZTg1ZWEwMWVkNWQ5MjA1MzI0Y2MwY2ZjZWI5OTZlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzQ4LDcgKzM0OCwxMSBAQCBi
b29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNv
bnN0IFN0cmluZyYgaWRWYWx1ZSwgRQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9y
KCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JJ
ZChpZFZhbHVlKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wg
SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29u
c3QgU3RyaW5nJiBjbGFzc05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzU4LDcgKzM2Miwx
MSBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQq
IGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3Ry
aWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0
b3JGb3JDbGFzcyhjbGFzc05hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
IH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxl
bWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTM2OCw3ICszNzYsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0
cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHQKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhv
c3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+
c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVj
dG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHBz
ZXVkb0NsYXNzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM3OCw2ICszOTAsNyBAQCBib29sIElu
dGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3Qs
IGNvbnN0IFN0cmluZyYgcAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9
IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9z
dC0+c2hhZG93KCkpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiY2hlY2tlZCIpCiAgICAgICAg
IHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgpOwpAQCAtMzk1LDYgKzQw
OCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3co
RWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0
Lmhhc1NlbGVjdG9yRm9yVmlzaXRlZCgpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0Miw4ICs0NTYsMTAgQEAgYm9vbCBJ
bnRlcm5hbHM6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChjb25zdCBTdHJp
bmcmIHByb3BlcnR5LCBkb3UKIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBv
aW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQog
ICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFkb3dFbGVtZW50
KHRvU2hhZG93Um9vdChyb290KSk7CisjZW5kaWYKIAogICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOwogICAgIHJldHVybiAwOwpAQCAtNDUxLDggKzQ2NywxMCBAQCBib29sIEludGVybmFsczo6
aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbgogCiBib29sIEludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSog
cm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0NvbnRlbnRFbGVtZW50KHRvU2hhZG93Um9vdChy
b290KSk7CisjZW5kaWYKIAogICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgIHJldHVy
biAwOwpAQCAtNDY1LDcgKzQ4MywxMSBAQCBzaXplX3QgSW50ZXJuYWxzOjpjb3VudEVsZW1lbnRT
aGFkb3coY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBT
Y29wZUNvbnRlbnREaXN0cmlidXRpb246OmNvdW50RWxlbWVudFNoYWRvdyh0b1NoYWRvd1Jvb3Qo
cm9vdCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZiAKIH0KIAogYm9vbCBJbnRlcm5h
bHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDgwLDYgKzUw
Miw3IEBAIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIAogTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKE5vZGUqIG5vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICgh
bm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJu
IDA7CkBAIC00ODcsMTAgKzUxMCwxNCBAQCBOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nQnlX
YWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIubmV4dFNpYmxpbmcoKTsKICAgICBy
ZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBO
b2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDk4
LDEwICs1MjUsMTQgQEAgTm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9kZSog
bm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlcihub2RlKTsKICAgICB3YWxrZXIuZmlyc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIu
Z2V0KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFs
czo6bGFzdENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTUwOSwxMCArNTQwLDE0IEBA
IE5vZGUqIEludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAg
ICB3YWxrZXIubGFzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fs
a2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC01MjAsMTAgKzU1NSwxNCBAQCBOb2RlKiBJbnRlcm5hbHM6
Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIubmV4dCgpOwog
ICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9
CiAKIE5vZGUqIEludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2Rl
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsK
QEAgLTUzMSw2ICs1NzAsOSBAQCBOb2RlKiBJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fsa2Vy
KE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0dXJuIHdh
bGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogU3RyaW5nIElu
dGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggZWRjM2My
ODA1OTdiMmVkYjhhYTM2YTNjOWFiOGRkMDRmNDJiYzA2OS4uNjlkYTliZDI0OWZiMDc4YzNhMGIw
OTg1OTI3Mzk4ZjlkNDQzZmY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpA
QCAtMTA3LDcgKzEwNyw3IEBACiAgICAgICAnRU5BQkxFX1JVQlk9MScsCiAgICAgICAnRU5BQkxF
X1NBTkRCT1g9MScsCiAgICAgICAnRU5BQkxFX1NDUklQVEVEX1NQRUVDSD0xJywKLSAgICAgICdF
TkFCTEVfU0hBRE9XX0RPTT0xJywKKyAgICAgICdFTkFCTEVfU0hBRE9XX0RPTT0wJywKICAgICAg
ICdFTkFCTEVfU01PT1RIX1NDUk9MTElORz0xJywKICAgICAgICdFTkFCTEVfU1FMX0RBVEFCQVNF
PTEnLAogICAgICAgJ0VOQUJMRV9TVFlMRV9TQ09QRUQ9MScsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182946</attachid>
            <date>2013-01-16 02:43:22 -0800</date>
            <delta_ts>2013-01-16 02:45:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130116194024.patch</filename>
            <type>text/plain</type>
            <size>38816</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggODE0MWJmOWM3ZTQyMTk3ZTEzNGQ0MDU1ZjRmMzYyZWRmNzNjYzA4Ni4uOTdhMzgx
Mjg4Y2ZmZDc0YTI5M2NmNTEyMDk5MDFlZjUwMTE0MzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNzYwLDcgKzc2MCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1w
dAogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbWF0Y2hI
b3N0UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKKwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVs
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCBmZGVi
ZGE0Y2M4MDYwYmIxZmY5M2NlYWNlMjM5YTYyYWM1ZWQ0ZmE3Li40MmY5ZTQ0NTA3MTJjNzRiNWI3
MmQ1ZmRiZjM0ZjhkNGQ5NTM2YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJl
c29sdmVyLmNwcApAQCAtMTkyLDcgKzE5Miw2IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjph
ZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBob3N0UnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlCiAg
ICAgICAgICAgICBydWxlLT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4oaG9z
dFN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdzKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogYm9vbCBT
dHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKQEAgLTIzNyw2ICsyMzYsNyBAQCB2b2lkIFN0eWxl
U2NvcGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmVj
dG9yPFJ1bGVTZXQqPgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQorI2VuZGlmCiAKIHZv
aWQgU3R5bGVTY29wZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVS
ZXNvbHZlci5oCmluZGV4IDNiZTNmZjRmNzBjNzM3NWJkMDE0MjZhMDBiYTQyNDEyODQ2MmNjMGUu
LmM1Zjc3NmYzYWUxNDExNzQyNDg4OTdmNjk5ODgxM2U0Y2Y5MjQ4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKQEAgLTc1LDkgKzc1LDExIEBAIHB1YmxpYzoKICAg
ICBib29sIG1hdGNoZXNTdHlsZUJvdW5kcyhjb25zdCBTdGFja0ZyYW1lJiBmcmFtZSkgY29uc3Qg
eyByZXR1cm4gZnJhbWUubV9hdXRob3JTdHlsZUJvdW5kc0luZGV4ID09IG1fc3RhY2tQYXJlbnRC
b3VuZHNJbmRleDsgfQogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzVG8oUnVsZUZlYXR1cmVTZXQm
KTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgYWRkSG9zdFJ1bGUoU3R5bGVS
dWxlSG9zdCosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgY29uc3QgQ29udGFpbmVy
Tm9kZSogc2NvcGUpOwogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RS
dWxlcyhjb25zdCBFbGVtZW50Kik7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVt
ZW50KiwgVmVjdG9yPFJ1bGVTZXQqPiYgbWF0Y2hlZFJ1bGVzKTsKKyNlbmRpZgogCiAgICAgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAppbmRleCA5NzBjZGMyMDU5N2M1MGIy
MThkZjQzMTAzOGU2YzU4YjllYWJhYWU2Li41YjdjZWU4MmNkNTI1MTkzYTE0YTcwNTU1NWU5NDBm
NWJjZDhlMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldh
bGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3Bw
CkBAIC00NSw2ICs0NSw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKIHsK
ICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBBU1NFUlQobV9kaXN0cmlidXRlZE5vZGUpOworCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNo
YWRvd09mUGFyZW50KG1fbm9kZSkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Io
bV9kaXN0cmlidXRlZE5vZGUpKSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2lu
dDsKQEAgLTUyLDIwICs1NCwzMCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKKwogICAgIGlm
ICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBh
cmVudE5vZGUoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgaWYgKCEobV9ub2Rl
ICYmIG1fbm9kZS0+aXNTaGFkb3dSb290KCkgJiYgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjph
c3NpZ25lZFRvKHRvU2hhZG93Um9vdChtX25vZGUpKSkpCiAgICAgICAgICAgICBtX2Rpc3RyaWJ1
dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBm
YWxzZTsKKyNlbHNlCisgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgICAg
ICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFk
b3dSb290KG1fbm9kZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWdu
ZWRUbyhzaGFkb3dSb290KSkgewogICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKICAg
ICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSB0cnVlOwogICAgICAgICByZXR1cm47
CiAgICAgfQorI2VuZGlmCisKICAgICBtX25vZGUgPSBzaGFkb3dSb290LT5ob3N0KCk7CiAgICAg
bV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9p
bnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAKaW5kZXggYWI1OGQ2MTUyYmM2MGQ5MDUxN2FlNGFiOGNlZWEwN2I0OGZjYjE4Yy4u
ZDIzMGY4NjQ4NzgyNDZmNjkwMzhjNGRhN2JhMzE2YzlmZmQ0NGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTEsNCArMSwzIEBA
Ci0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC0yOCw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KwogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCkBAIC0zMTMsMyArMzE0LDUgQEAgdm9pZCBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UKKwor
I2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDgzNDllMjFhYTk4M2YwYTg0YTExM2MxNjc4MGU0
OWVjNjc2NjRmM2UuLjJmMDJhN2MzYmM0NTUwNWY1YjQyODI4NTNlYTZkMjgzZjM4ZmYxNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTMx
LDYgKzMxLDggQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsKQEAgLTE0Myw0ICsxNDUsNSBAQCBpbmxpbmUgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSog
bm9kZSwgUG9saQogCiB9IC8vIG5hbWVzcGFjZQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19E
T00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBhMzExMzY4N2E2N2MzODRlYTQ1
MGJjYzZjMDRmNmQwYzBjZTFlNzA0Li45YTMzMGEzMWRjYzgwMGRmMGFmNWI0OTMxYWQ1YWU4YWI2
YWRjNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03NzYsMTAgKzc3NiwxMiBAQCBzdGF0
aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZElkLCBjbwogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxl
bWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKSB7CiAgICAg
ICAgIGlmIChzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQo
cGFyZW50RWxlbWVudFNoYWRvdywgbmFtZSwgbmV3VmFsdWUpKQogICAgICAgICAgICAgcGFyZW50
RWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgIH0KKyNlbmRpZgog
CiAgICAgcGFyc2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCkBAIC05MTYsNiArOTE4LDcg
QEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdDbGFzc1N0cmluZykKIAogYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdywg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkK
IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBBU1NFUlQoZWxlbWVudFNoYWRvdyk7CiAg
ICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBlbGVtZW50U2hhZG93
LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRvdyk7CiAK
QEAgLTk0Nyw2ICs5NTAsMTIgQEAgYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWwKICAgICB9CiAKICAg
ICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1lLmxvY2FsTmFt
ZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnRTaGFkb3cpOworICAgIFVOVVNF
RF9QQVJBTShuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0obmV3VmFsdWUpOworICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0
ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpAQCAtMTQxMiw4ICsxNDIxLDEwIEBAIEVsZW1lbnRTaGFk
b3cqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvdygpCiB2b2lkIEVsZW1lbnQ6OmRpZEFmZmVjdFNlbGVj
dG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spCiB7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YygpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVt
ZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAgICAgICAg
IGVsZW1lbnRTaGFkb3ctPmRpZEFmZmVjdFNlbGVjdG9yKG1hc2spOworI2VuZGlmCiB9CiAKIFBh
c3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25D
b2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCA3MjAxZDMyNzUy
MjA3YTU1YjdhNzgwNWExOWY4NGI4NGVlNGRhZjZiLi5jN2E0NTI0NzNkMTUxYzlmNDA5NTY5NDYy
NTI4YzU0N2M4M2E0OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC04
Miw3ICs4Miw5IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBz
aGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0
SG9zdChzaGFkb3dIb3N0KTsKICAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hh
ZG93SG9zdC0+dHJlZVNjb3BlKCkpOwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290
LmdldCgpKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtX2Rpc3RyaWJ1dG9yLmRpZFNo
YWRvd0JvdW5kYXJ5Q2hhbmdlKHNoYWRvd0hvc3QpOworI2VuZGlmCiAgICAgQ2hpbGROb2RlSW5z
ZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAg
ICAgLy8gRXhpc3RlbmNlIG9mIHNoYWRvdyByb290cyByZXF1aXJlcyB0aGUgaG9zdCBhbmQgaXRz
IGNoaWxkcmVuIHRvIGRvIHRyYXZlcnNhbCB1c2luZyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
CkBAIC0xMTcsNyArMTE5LDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dS
b290cygpCiAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFkb3dIb3N0KS5ub3Rp
Znkob2xkUm9vdC5nZXQoKSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAg
bV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOworI2VuZGlm
CiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoKCkKQEAgLTE3Miw3ICsxNzYsMTAgQEAg
dm9pZCBFbGVtZW50U2hhZG93OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgICAgICBpbmZvLmFkZE1lbWJlcihzaGFkb3dSb290
KTsKICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm5leHQoKTsKICAgICB9CisKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3RyaWJ1dG9yKTsK
KyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgK
aW5kZXggOTFmNjc5MTY4ODZkNGE5MzRiMTNhZTc3NDk2YjcwMWI2ZDJlYTYyNi4uNTZiNDgwOWEz
MDQwOTQxZDNmNTU1ZWNkMGVhNmNiOGEzOGFmYWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5oCkBAIC02MywxOSArNjMsMjcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNTdHlsZVJl
Y2FsYygpOwogICAgIHZvaWQgcmVjYWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwogCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyBt
X2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQogICAgIHZvaWQg
ZW5zdXJlRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dG9yLmVuc3VyZURpc3RyaWJ1dGlvbiho
b3N0KCkpOyB9CiAgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFz
ayBtYXNrKSB7IG1fZGlzdHJpYnV0b3IuZGlkQWZmZWN0U2VsZWN0b3IoaG9zdCgpLCBtYXNrKTsg
fQogICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9yKCkgeyBtX2Rpc3RyaWJ1dG9yLndpbGxBZmZl
Y3RTZWxlY3Rvcihob3N0KCkpOyB9CiAKLSAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1
dG9yKCk7Ci0gICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0
OworICAgIENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSB7IHJldHVybiBtX2Rpc3Ry
aWJ1dG9yOyB9CisgICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KKyNlbHNlCisgICAgdm9pZCBpbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKCkgeyB9CisgICAgdm9pZCBlbnN1cmVEaXN0cmlidXRpb24oKSB7IH0KKyNl
bmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7Ci1wcml2YXRlOgogCitwcml2YXRlOgogICAgIERvdWJseUxpbmtlZExpc3Q8U2hhZG93Um9v
dD4gbV9zaGFkb3dSb290czsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbnRlbnRE
aXN0cmlidXRvciBtX2Rpc3RyaWJ1dG9yOworI2VuZGlmCiB9OwogCiBpbmxpbmUgU2hhZG93Um9v
dCogRWxlbWVudFNoYWRvdzo6eW91bmdlc3RTaGFkb3dSb290KCkgY29uc3QKQEAgLTg4LDE2ICs5
Niw2IEBAIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93OjpvbGRlc3RTaGFkb3dSb290
KCkgY29uc3QKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7CiB9CiAKLWlubGluZSBD
b250ZW50RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkKLXsKLSAgICBy
ZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQotaW5saW5lIGNvbnN0IENvbnRlbnREaXN0cmlidXRv
ciYgRWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX2Rp
c3RyaWJ1dG9yOwotfQotCiBpbmxpbmUgRWxlbWVudCogRWxlbWVudFNoYWRvdzo6aG9zdCgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKaW5kZXggODNiYjdlYzdlNzll
ZjJmMjE2M2VmMDc3NTM3OWQ3NzdlNjllZmZmMi4uY2QwZjY5NzhiNWQ3Yjk2MzllMjRhZmU1MjY2
ZjkyNTY1NDQ4N2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJh
dmVyc2FsLmNwcApAQCAtMjgsMTIgKzI4LDk5IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbC5oIgogCiAjaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5j
bHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CiAK
Ky8vIEEgc2ltcGxpZmllZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXItY29tcGF0aWJsZSB3YWxr
ZXIgaW1wbGVtZW50YXRpb24gZm9yIG5vbi1TSEFET1dfRE9NIGNvbmZpZ3VyYXRpb25zLgorY2xh
c3MgU2hhZG93VHJlZVdhbGtlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2hhZG93VHJlZVdh
bGtlcihjb25zdCBOb2RlKiBub2RlKQorICAgICAgICA6IG1fbm9kZShub2RlKQorICAgIHsgfQor
CisgICAgTm9kZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obV9ub2Rl
KTsgfQorCisgICAgdm9pZCBwYXJlbnQoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUGFyZW50KG1fbm9k
ZSk7IH0KKyAgICB2b2lkIG5leHRTaWJsaW5nKCkgeyBtX25vZGUgPSBtX25vZGUtPm5leHRTaWJs
aW5nKCk7IH0KKyAgICB2b2lkIHByZXZpb3VzU2libGluZygpIHsgbV9ub2RlID0gbV9ub2RlLT5w
cmV2aW91c1NpYmxpbmcoKTsgfQorICAgIHZvaWQgbGFzdENoaWxkKCkgeyBtX25vZGUgPSBtX25v
ZGUtPmxhc3RDaGlsZCgpOyB9CisgICAgdm9pZCBmaXJzdENoaWxkKCkgeyBtX25vZGUgPSBtX25v
ZGUtPmZpcnN0Q2hpbGQoKTsgfQorCisgICAgdm9pZCBuZXh0KCkgeyBtX25vZGUgPSB0cmF2ZXJz
ZU5leHQobV9ub2RlKTsgfQorICAgIHZvaWQgcHJldmlvdXMoKSB7IG1fbm9kZSA9IHRyYXZlcnNl
UHJldmlvdXMobV9ub2RlKTsgfQorCisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUGFyZW50KGNv
bnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKiA9IDApOworCitwcml2YXRlOgorICAgIHN0YXRpYyBO
b2RlKiB0cmF2ZXJzZU5leHQoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJz
ZVByZXZpb3VzKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dEluY2x1ZGluZ0Nv
bnRhaW5pbmdTY29wZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHByZXZpb3VzSW5j
bHVkaW5nQ29udGFpbmluZ1Njb3BlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgYm9vbCBpc1No
YWRvd0JvdW5kYXJ5KE5vZGUqIG5vZGUpIHsgcmV0dXJuIG5vZGUtPmlzU2hhZG93Um9vdCgpIHx8
IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKTsgfQorICAgIAorICAgIGNvbnN0IE5vZGUqIG1fbm9k
ZTsKK307CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChj
b25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKikKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsg
PSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHdhbGs7IHdhbGsgPSB3YWxrLT5wYXJlbnRPckhv
c3ROb2RlKCkpIHsKKyAgICAgICAgaWYgKCFpc1NoYWRvd0JvdW5kYXJ5KHdhbGspKQorICAgICAg
ICAgICAgcmV0dXJuIHdhbGs7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBO
b2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHQoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICBmb3IgKE5vZGUqIHdhbGsgPSBuZXh0SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKG5vZGUp
OyB3YWxrOyB3YWxrID0gbmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSh3YWxrKSkgeworICAg
ICAgICBpZiAoIWlzU2hhZG93Qm91bmRhcnkod2FsaykpCisgICAgICAgICAgICByZXR1cm4gd2Fs
azsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVX
YWxrZXI6OnRyYXZlcnNlUHJldmlvdXMoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5v
ZGUqIHdhbGsgPSBwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShub2RlKTsgd2Fsazsg
d2FsayA9IHByZXZpb3VzSW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKHdhbGspKSB7CisgICAgICAg
IGlmICghaXNTaGFkb3dCb3VuZGFyeSh3YWxrKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOwor
ICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtl
cjo6bmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2RlKiBub2RlKQoreworICAg
IGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKSkKKyAgICAgICAgcmV0
dXJuIHdhbGs7CisKKyAgICBmb3IgKG5vZGUgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsgbm9kZTsg
bm9kZSA9IHRyYXZlcnNlUGFyZW50KG5vZGUpKSB7CisgICAgICAgIGlmIChub2RlLT5uZXh0U2li
bGluZygpKQorICAgICAgICAgICAgcmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQor
CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2
aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlm
IChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSkpCisgICAgICAgIHJl
dHVybiB3YWxrOworICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChub2RlKTsKK30KKworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQordHlwZWRlZiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgV2Fsa2Vy
VHlwZTsKKyNlbHNlCit0eXBlZGVmIFNoYWRvd1RyZWVXYWxrZXIgV2Fsa2VyVHlwZTsKKyNlbmRp
ZgorCiB2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQogewogICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkg
ewpAQCAtNDksMTQgKzEzNiwxNSBAQCB2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlU2hh
ZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQogCiBDb250YWluZXJOb2RlKiBwYXJlbnRT
bG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCiB7Ci0gICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFy
dEZyb21TaGFkb3dCb3VuZGFyeSk7CisgICAgV2Fsa2VyVHlwZSB3YWxrZXIobm9kZSk7CiAgICAg
Q29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFy
ZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwotICAgIHJldHVybiBkZXRhaWxzLT5vdXRPZkNv
bXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CisgICAgcmV0dXJuIGRldGFpbHMgJiYgZGV0YWlscy0+
b3V0T2ZDb21wb3NpdGlvbigpID8gMCA6IGZvdW5kOwogfQogCiBOb2RlKiBuZXh0U2libGluZ1Ns
b3coY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fs
a2VyKG5vZGUpOworICAgIFdhbGtlclR5cGUgd2Fsa2VyKG5vZGUpOworCiAgICAgaWYgKG5vZGUt
PmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKICAg
ICAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsKQEAgLTY5LDEzICsxNTcsMTMgQEAgTm9kZSogbmV4
dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgTm9kZSogcGFyZW50ID0gd2Fsa2Vy
LnRyYXZlcnNlUGFyZW50KG5vZGUpOwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1l
bnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+cHNldWRvRWxlbWVu
dChBRlRFUik7Ci0KICAgICByZXR1cm4gMDsKIH0KIAogTm9kZSogcHJldmlvdXNTaWJsaW5nU2xv
dyhjb25zdCBOb2RlKiBub2RlKQogewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxr
ZXIobm9kZSk7CisgICAgV2Fsa2VyVHlwZSB3YWxrZXIobm9kZSk7CisKICAgICBpZiAobm9kZS0+
aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkgewogICAgICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAg
ICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKQEAgLTk0LDM0ICsxODIsNDYgQEAgTm9kZSogcHJldmlv
dXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogCiBOb2RlKiBuZXh0SW5TY29wZShjb25z
dCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
c2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91
bmRhcnkpOwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNl
bHNlCisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSk7CisjZW5kaWYKIH0KIAog
Tm9kZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUo
U0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMz
OQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3
YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7
CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5vZGVUcmF2ZXJz
YWw6OnByZXZpb3VzKG5vZGUpOworI2VuZGlmCiB9CiAKIE5vZGUqIHBhcmVudEluU2NvcGUoY29u
c3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJv
dW5kYXJ5KTsKICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsK
KyNlbHNlCisgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKKyNlbmRpZgogfQogCiBOb2Rl
KiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hB
RE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxr
ZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwog
ICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBub2RlLT5sYXN0Q2hp
bGQoKTsKKyNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdU
cmF2ZXJzYWwuaAppbmRleCAyZGIzZTc1OTVjYWNjMGY5YzA1Zjg2ZmZhMTE3YmFlNDg4ZDU4ODA0
Li40Y2I3N2NiMjY0NDhiMzkxM2NjNWEwMzY3MzBhZDAwMDc0ZTZmMTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKIH07CiAKK0NvbnRhaW5lck5vZGUq
IHBhcmVudChjb25zdCBOb2RlKik7CiBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSos
IFBhcmVudERldGFpbHMqKTsKIENvbnRhaW5lck5vZGUqIHBhcmVudFNsb3coY29uc3QgTm9kZSos
IFBhcmVudERldGFpbHMqKTsKIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKQEAgLTc2
LDYgKzc3LDEyIEBAIE5vZGUqIHByZXZpb3VzSW5TY29wZShjb25zdCBOb2RlKik7CiBOb2RlKiBw
YXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqKTsKIE5vZGUqIGxhc3RDaGlsZEluU2NvcGUoY29uc3Qg
Tm9kZSopOwogCitpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUp
Cit7CisgICAgUGFyZW50RGV0YWlscyBkZXRhaWxzOworICAgIHJldHVybiBwYXJlbnQobm9kZSwg
JmRldGFpbHMpOworfQorCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUq
IG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCiB7CiAgICAgaWYgKCFub2RlLT5uZWVkc1No
YWRvd1RyZWVXYWxrZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGUzYTQ4
MjIyYjkzZDM4ZDY3MGVjMmEyMzgxZjBiZjZkYTE1MTc0MmQuLmIzZTM3ODJiMWM0ZmM0NWU1MmFm
OTE5YmQ3MmUxNmEwYTNhNDJjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU3
LDcgKzU3LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzU2hh
ZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJs
aWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD4geworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIHZvaWQqIHBvaW50ZXJzWzNdOworI2Vsc2UKKyAgICB2b2lkKiBwb2ludGVyc1sy
XTsKKyNlbmRpZgogICAgIHVuc2lnbmVkIGNvdW50ZXJzQW5kRmxhZ3NbMV07CiB9OwogCkBAIC0y
NjYsNyArMjcwLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTaGFkb3dS
b290OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXIKIAogICAgIGlmICghaW5zZXJ0
aW9uUG9pbnQtPmluRG9jdW1lbnQoKSB8fCAhaXNPbGRlc3QoKSkKICAgICAgICAgcmV0dXJuIElu
c2VydGlvbkRvbmU7Ci0KKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAvLyBGSVhNRTogV2hl
biBwYXJzaW5nIDx2aWRlbyBjb250cm9scz4sIGluc2VydGVkSW50bygpIGlzIGNhbGxlZCBtYW55
IHRpbWVzIHdpdGhvdXQgaW52b2tpbmcgcmVtb3ZlZEZyb20uCiAgICAgLy8gRm9yIG5vdywgd2Ug
Y2hlY2sgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd3Jvb3QuIFdlIHdvdWxkIGxpa2UgdG8g
QVNTRVJUKCFtX3JlZ2lzdGVyZWRTaGFkb3dSb290KSBoZXJlLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNpZz9pZD0xMDEzMTYKQEAgLTI3NywxMiArMjgxLDEzIEBA
IE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqIGluc2VyCiAgICAgICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJp
YnV0aW9uKCktPnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpOwogICAgICAgICBtX3JlZ2lzdGVyZWRX
aXRoUGFyZW50U2hhZG93Um9vdCA9IHRydWU7CiAgICAgfQotCisjZW5kaWYKICAgICByZXR1cm4g
SW5zZXJ0aW9uRG9uZTsKIH0KIAogdm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBp
ZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50
U2hhZG93Um9vdCkgewogICAgICAgICBTaGFkb3dSb290KiByb290ID0gaG9zdCgpLT5jb250YWlu
aW5nU2hhZG93Um9vdCgpOwogICAgICAgICBpZiAoIXJvb3QpCkBAIC0yOTIsNyArMjk3LDcgQEAg
dm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKICAgICAgICAgICAgIHJvb3QtPnNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJFbGVt
ZW50U2hhZG93KCk7CiAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290ID0g
ZmFsc2U7CiAgICAgfQotCisjZW5kaWYKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJv
bShpbnNlcnRpb25Qb2ludCk7CiB9CiAKQEAgLTMxNyw2ICszMjIsNyBAQCB2b2lkIFNoYWRvd1Jv
b3Q6OnVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpCiAgICAgc2V0SGFzU2NvcGVkSFRN
TFN0eWxlQ2hpbGQobV9udW1iZXJPZlN0eWxlcyA+IDApOwogfQogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3Bl
RGlzdHJpYnV0aW9uKCkKIHsKICAgICBpZiAobV9zY29wZURpc3RyaWJ1dGlvbikKQEAgLTMyNCw3
ICszMzAsOCBAQCBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNj
b3BlRGlzdHJpYnV0aW9uKCkKIAogICAgIG1fc2NvcGVEaXN0cmlidXRpb24gPSBhZG9wdFB0cihu
ZXcgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKTsKICAgICByZXR1cm4gbV9zY29wZURpc3RyaWJ1
dGlvbi5nZXQoKTsKLX0gICAKK30KKyNlbmRpZgogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CkBA
IC0zMzMsNyArMzQwLDkgQEAgdm9pZCBTaGFkb3dSb290OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIFRyZWVTY29wZTo6cmVw
b3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9w
cmV2KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25leHQpOworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVEaXN0cmlidXRpb24pOworI2VuZGlmCiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDE1MjY5MzhlZGU1MDQwZGRjNDMzOWY1OGZm
ODY1MWEyYzcyNTlmNzkuLjg1OWYwZDIyZGVhZDgyYWQ4YzdkZTEwNTY0ZjI4MjIyOTE0MWNlNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtODgsOSArODgsMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURF
OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
KiBzY29wZURpc3RyaWJ1dGlvbigpIHsgcmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7
IH0KICAgICBjb25zdCBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQogICAgIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbiogZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgog
CiAgICAgU2hhZG93Um9vdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRob3JTaGFk
b3dSb290ID8gQXV0aG9yU2hhZG93Um9vdCA6IFVzZXJBZ2VudFNoYWRvd1Jvb3Q7IH0KICAgICBi
b29sIGlzQWNjZXNzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRob3JTaGFkb3dS
b290OyB9CkBAIC0xMTAsNyArMTEyLDkgQEAgcHJpdmF0ZToKIAogICAgIFNoYWRvd1Jvb3QqIG1f
cHJldjsKICAgICBTaGFkb3dSb290KiBtX25leHQ7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgT3duUHRyPFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbj4gbV9zY29wZURpc3RyaWJ1dGlvbjsK
KyNlbmRpZgogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25l
ZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhl
cml0YW5jZSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRl
eCA0YWNiNzZkZjc1MmY1NDY3OWYxZjE2NDdiZTg4ZjMyNzQzOGI2MThmLi4xMzA4OWY0MTFkYmQz
OGZiMTM5NWZhMWE2ZjFjZGI0NTA1NDAyZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTUzNiw4ICs1MzYsMTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgICAgIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZSh0cnVlKTsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyog
ZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKQogICAg
ICAgICBlbGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisjZW5kaWYKIAog
ICAgIHNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGZhbHNlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAK
aW5kZXggODY3YTE3NDU3YjUyOWVmMDg5ZDgwYjBmZDg4M2UxNGE2MmM3ZWUzOC4uMDhkZTNhY2Ux
Njk4MzhkMGQ0YTExNGU2ZjZlNDFlN2U3ZmIwM2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVu
dC5oIgpAQCAtNDMzLDMgKzQzNSw1IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaWRTaGFk
b3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KQogfQogCiB9CisKKyNlbmRpZiAvLyBFTkFC
TEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmgKaW5kZXggNDYwZDQxMzVkOTkwZThmZjY5Njc1N2Q1NjJhMGIwYjEzZWY3MzY4
Mi4uNGUxYzcwMmYxOWM4NDY3M2Y2YmVmMjUyZGJlOTcxYzkzMTMxZjdlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTM3LDYgKzM3
LDggQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENvbnRhaW5lck5vZGU7CkBAIC0xNjMsNCArMTY1LDUgQEAgaW5saW5lIGJvb2wgQ29udGVu
dERpc3RyaWJ1dG9yOjpuZWVkc0Rpc3RyaWJ1dGlvbigpIGNvbnN0CiAKIH0KIAorI2VuZGlmIC8v
IEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggMGNhYjMxMjhkZDA1NWM2MjM3
MjgzMzY0OTc2ZTg1MGNiNzQ1ZGUxOC4uMjQ4YzY1NTJlZGZmNGJlZWU3MWUzZDE1OWE2ZjdlNjcy
ZWRlNTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBv
aW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCkBAIC05MCwzICs5Miw1IEBAIGJv
b2wgQ29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+JiBzaWJsaW5ncywgaW50IG50CiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1df
RE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1
ZXJ5LmgKaW5kZXggNmE0ZjMzODE1NDZhYWEzYTMwOTg5NDYzNzUzNzhmMzYwNDVlMWMxYi4uYjcw
MzNlMTg3MDM2MjQyMjdlNTdlMjdhYWRlNzM5MGNmYjhjNzRlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCkBAIC0zNyw2ICszNyw4
IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
b2N1bWVudDsKQEAgLTc2LDQgKzc4LDUgQEAgcHJpdmF0ZToKIAogfQogCisjZW5kaWYgLy8gRU5B
QkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXggOWQwYzhmYzQzNTNiZjk2Y2UyNGQxYTI2ZjI1MWFk
YzNjOTgxYWQwOC4uY2EyNjllODYzOTBlNWViNDFmZDZjOWIzOTgzYjliY2MyMjI4NzQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKQEAg
LTg4LDcgKzg4LDYgQEAgY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50IDogcHVibGljIEluc2VydGlv
blBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGVu
dFRhZ05hbWUoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQ29udGVudEVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCiAgICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBv
aW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRlbnRJbnNlcnRpb25Qb2ludDsg
fQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHAKaW5kZXggOTZmYjI1MDBmMjBhYzdhZmM5M2M4YWU4ZTVmMmVjMjdiZWM3ZWRlZS4u
ZWEyOWVkOGYxZTE0ZTE0NWMyNGQxMGQ2NTc1OTliZDU5MWI2OGI3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtMzksMTAgKzM5LDM2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU2ltcGxlSW5zZXJ0aW9uUG9pbnQ6OlNpbXBsZUlu
c2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVJbnNlcnRp
b25Qb2ludCkKK3sKK30KKworYm9vbCBTaW1wbGVJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBj
b25zdAoreworICAgIGlmICghY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7CisgICAgd2hpbGUg
KG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTaW1wbGVJbnNlcnRpb25Qb2ludDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICByZXR1cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb250ZXh0KTsKK30KKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiBJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUluc2VydGlvblBvaW50KQorICAgIDog
U2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3JlZ2lzdGVy
ZWRXaXRoU2hhZG93Um9vdChmYWxzZSkKIHsKIH0KQEAgLTc4LDI1ICsxMDQsNiBAQCBib29sIElu
c2VydGlvblBvaW50OjpzaG91bGRVc2VGYWxsYmFja0VsZW1lbnRzKCkgY29uc3QKICAgICByZXR1
cm4gaXNBY3RpdmUoKSAmJiAhaGFzRGlzdHJpYnV0aW9uKCk7CiB9CiAKLWJvb2wgSW5zZXJ0aW9u
UG9pbnQ6OmlzU2hhZG93Qm91bmRhcnkoKSBjb25zdAotewotICAgIHJldHVybiB0cmVlU2NvcGUo
KS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkgJiYgaXNBY3RpdmUoKTsKLX0KLQotYm9vbCBJ
bnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIGlmICghY29udGFpbmluZ1No
YWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IE5vZGUqIG5vZGUg
PSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKG5vZGUtPmlz
SW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBu
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
UGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9kZXMo
KSBjb25zdAogewogICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJv
bURvY3VtZW50KGNvbnN0X2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPih0aGlzKSk7CkBAIC0xMDksMTEg
KzExNiw2IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEluc2VydGlvblBvaW50OjpnZXREaXN0cmli
dXRlZE5vZGVzKCkgY29uc3QKICAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVz
KTsKIH0KIAotYm9vbCBJbnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICByZXR1cm4gIWlzU2hhZG93Qm91bmRh
cnkoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKLX0KLQogdm9p
ZCBJbnNlcnRpb25Qb2ludDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBi
ZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpAQCAtMjI2LDQgKzIy
OCw2IEBAIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHBy
b2plY3RlZE5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCisjZW5kaWYgLy8g
RU5BQkxFKFNIQURPV19ET00pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDc0MjQzZTljYWE0NTM3YzU5
NGE5MjkwYjQ2ODExZTNiNjAwNWJjZTYuLmU0NjVlMzIzNjBkOGY2MDYxNjhkNDZmMjgzMmM3NTk4
MGM5YTc3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc2Vy
dGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIFNpbXBsZUluc2VydGlvblBv
aW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAg
ICAgICBTaGFkb3dJbnNlcnRpb25Qb2ludCwKQEAgLTU0LDE5ICs1NCwzNCBAQCBwdWJsaWM6CiAg
ICAgICAgIEhhc1RvTWF0Y2hTZWxlY3RvcgogICAgIH07CiAKKyAgICB2aXJ0dWFsIE1hdGNoVHlw
ZSBtYXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJuIEFsd2F5c01hdGNoZXM7IH0KKyAgICB2aXJ0
dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOworCisgICAgYm9vbCBpc1No
YWRvd0JvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlz
U2hhZG93Um9vdCgpICYmIGlzQWN0aXZlKCk7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7
CisKK3Byb3RlY3RlZDoKKyAgICBTaW1wbGVJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRp
b25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVS
UklERTsKK307CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKworY2xhc3MgSW5zZXJ0aW9uUG9p
bnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgeworcHVibGljOgorCiAgICAgdmlydHVh
bCB+SW5zZXJ0aW9uUG9pbnQoKTsKIAogICAgIGJvb2wgaGFzRGlzdHJpYnV0aW9uKCkgY29uc3Qg
eyByZXR1cm4gIW1fZGlzdHJpYnV0aW9uLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgc2V0RGlzdHJp
YnV0aW9uKENvbnRlbnREaXN0cmlidXRpb24mIGRpc3RyaWJ1dGlvbikgeyBtX2Rpc3RyaWJ1dGlv
bi5zd2FwKGRpc3RyaWJ1dGlvbik7IH0KICAgICB2b2lkIGNsZWFyRGlzdHJpYnV0aW9uKCkgeyBt
X2Rpc3RyaWJ1dGlvbi5jbGVhcigpOyB9Ci0gICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29u
c3Q7Ci0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlz
dD4gZ2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBNYXRjaFR5cGUg
bWF0Y2hUeXBlRm9yKE5vZGUqKSB7IHJldHVybiBBbHdheXNNYXRjaGVzOyB9CiAgICAgdmlydHVh
bCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpIHsgcmV0dXJuIGVtcHR5U2Vs
ZWN0b3JMaXN0KCk7IH0KLSAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5BZmZlY3RTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0OwpA
QCAtOTAsMTIgKzEwNSwxMSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Q
b2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFOwor
CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwg
Tm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0
YSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKIApAQCAtMTAzLDMwICsxMTcsMTQg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290OwogfTsKIAot
aW5saW5lIEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCi17Ci0g
ICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEluc2VydGlvblBvaW50Kj4obm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBJ
bnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQotewotICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2ludCo+KG5vZGUpOwotfQorSW5zZXJ0aW9uUG9p
bnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSopOworY29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRvSW5z
ZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSopOwogCiBpbmxpbmUgYm9vbCBpc0FjdGl2ZUluc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG5vZGUtPmlzSW5zZXJ0aW9u
UG9pbnQoKSAmJiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpOwogfQogCi1pbmxp
bmUgYm9vbCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUqIG5vZGUpCi17Ci0gICAg
aWYgKCFub2RlIHx8ICFub2RlLT5pc0luc2VydGlvblBvaW50KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNTaGFkb3dCb3VuZGFy
eSgpOwotfQotCiBpbmxpbmUgTm9kZSogcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjb25zdCBO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKQEAgLTE2MSw2ICsxNTksMzYgQEAgaW5s
aW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5v
ZGUqIG5vZGUpCiAKIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5v
ZGUqKTsKIAorI2Vsc2UKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5z
ZXJ0aW9uUG9pbnQgeworcHVibGljOgorICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK3Byb3RlY3RlZDoKKyAgICBJbnNlcnRpb25Qb2ludChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpIDogU2ltcGxl
SW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1lbnQpIHsgfQorfTsKKworI2VuZGlmIC8vIEVO
QUJMRShTSEFET1dfRE9NKQorCitpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9p
bnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Q
b2ludCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsK
K30KKworaW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0
IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9p
bnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9k
ZSk7Cit9CisKK2lubGluZSBib29sIGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSog
bm9kZSkKK3sKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5p
c1NoYWRvd0JvdW5kYXJ5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAppbmRleCA0NjUyMmM0NDUzYmMzZWIwMzYxZmQ0NjEx
YWQxOTY3MjI2Y2RkMWMwLi42ZTI3N2E0MGQ5NGYwOWE1MWYzNjBkNjBmOTVmN2M5ZDY5YTVjOTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVy
ZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1
cmVTZXQuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAj
aW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsMyAr
ODcsNCBAQCB2b2lkIFNlbGVjdFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2Vs
ZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUo
U0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVj
dFJ1bGVGZWF0dXJlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxl
RmVhdHVyZVNldC5oCmluZGV4IGQwZjJkZTY4MjFiMzI1MDkxNmM3ZWMxNmRlZDRkYjc1OTg0YTA4
MTcuLmIwMjA3M2Q0ZjJjMzc5NWQ3ODc1ZTRhZDVlZGQ4YzQ5Nzc3MTdjZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaApAQCAtMzEs
OSArMzEsMTIgQEAKICNpZm5kZWYgU2VsZWN0UnVsZUZlYXR1cmVTZXRfaAogI2RlZmluZSBTZWxl
Y3RSdWxlRmVhdHVyZVNldF9oCiAKKwogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJS
dWxlRmVhdHVyZS5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU2VsZWN0UnVsZUZlYXR1cmVTZXQgewpAQCAtODUsNCArODgsNSBAQCBp
bmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBhdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RP
TSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGQ0MmI3Mzhj
ZTdlNGVlNjFiODQyMTgwZDBlNTMwODczYzgyOTMyZmIuLmNiZjA4MmMxOWU4NWVhMDFlZDVkOTIw
NTMyNGNjMGNmY2ViOTk2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTM0OCw3ICszNDgsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9ySWRJblNoYWRv
dyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGlkVmFsdWUsIEUKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhvc3QtPnNo
YWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93
KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93
KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTM1OCw3ICszNjIsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xh
c3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGNsYXNzTmEKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhv
c3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+
c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0
dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlTmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNjgsNyArMzc2LDExIEBAIGJvb2wgSW50ZXJuYWxz
OjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0
cmluZyYgYXR0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxl
Y3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wg
SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9z
dCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFzcywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNzgs
NiArMzkwLDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNo
YWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHAKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1
cmVTZXQmIGZlYXR1cmVTZXQgPSBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0g
ImNoZWNrZWQiKQogICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNr
ZWQoKTsKQEAgLTM5NSw2ICs0MDgsNyBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQ
c2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAg
ICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvclZpc2l0ZWQoKTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDIs
OCArNDU2LDEwIEBAIGJvb2wgSW50ZXJuYWxzOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVk
b0VsZW1lbnQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91CiAKIGJvb2wgSW50ZXJuYWxzOjpo
YXNTaGFkb3dJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAocm9vdCAmJiByb290
LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bjo6aGFzU2hhZG93RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ1MSw4ICs0NjcsMTAg
QEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJv
b3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAogYm9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRF
bGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgp
KQogICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxl
bWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ2NSw3ICs0ODMsMTEgQEAgc2l6ZV90IEludGVy
bmFsczo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpjb3VudEVsZW1lbnRT
aGFkb3codG9TaGFkb3dSb290KHJvb3QpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYg
CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTQ4MCw2ICs1MDIsNyBAQCBib29sIEludGVybmFsczo6YXR0YWNoZWQoTm9kZSog
bm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIE5vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdC
eVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDg3LDEwICs1MTAsMTQgQEAgTm9kZSogSW50ZXJu
YWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLm5l
eHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9k
ZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKQEAgLTQ5OCwxMCArNTI1LDE0IEBAIE5vZGUqIEludGVybmFsczo6Zmlyc3RD
aGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsK
ICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgog
fQogCiBOb2RlKiBJbnRlcm5hbHM6Omxhc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC01MDksMTAgKzU0MCwxNCBAQCBOb2RlKiBJbnRlcm5hbHM6Omxhc3RDaGlsZEJ5V2Fsa2VyKE5v
ZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxr
ZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVy
bmFsczo6bmV4dE5vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTIwLDEwICs1NTUsMTQg
QEAgTm9kZSogSW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAg
ICAgd2Fsa2VyLm5leHQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBy
ZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fs
a2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC01MzEsNiArNTcwLDkgQEAgTm9kZSogSW50ZXJuYWxzOjpw
cmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5wcmV2aW91
cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1l
bnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJl
cy5neXBpCmluZGV4IGVkYzNjMjgwNTk3YjJlZGI4YWEzNmEzYzlhYjhkZDA0ZjQyYmMwNjkuLjY5
ZGE5YmQyNDlmYjA3OGMzYTBiMDk4NTkyNzM5OGY5ZDQ0M2ZmODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICAgJ0VOQUJMRV9SVUJZ
PTEnLAogICAgICAgJ0VOQUJMRV9TQU5EQk9YPTEnLAogICAgICAgJ0VOQUJMRV9TQ1JJUFRFRF9T
UEVFQ0g9MScsCi0gICAgICAnRU5BQkxFX1NIQURPV19ET009MScsCisgICAgICAnRU5BQkxFX1NI
QURPV19ET009MCcsCiAgICAgICAnRU5BQkxFX1NNT09USF9TQ1JPTExJTkc9MScsCiAgICAgICAn
RU5BQkxFX1NRTF9EQVRBQkFTRT0xJywKICAgICAgICdFTkFCTEVfU1RZTEVfU0NPUEVEPTEnLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182947</attachid>
            <date>2013-01-16 02:45:09 -0800</date>
            <delta_ts>2013-01-22 04:02:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130116194210.patch</filename>
            <type>text/plain</type>
            <size>38843</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggODE0MWJmOWM3ZTQyMTk3ZTEzNGQ0MDU1ZjRmMzYyZWRmNzNjYzA4Ni4uOTdhMzgx
Mjg4Y2ZmZDc0YTI5M2NmNTEyMDk5MDFlZjUwMTE0MzZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNzYwLDcgKzc2MCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1w
dAogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbWF0Y2hI
b3N0UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKKwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVs
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCBmZGVi
ZGE0Y2M4MDYwYmIxZmY5M2NlYWNlMjM5YTYyYWM1ZWQ0ZmE3Li40MmY5ZTQ0NTA3MTJjNzRiNWI3
MmQ1ZmRiZjM0ZjhkNGQ5NTM2YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJl
c29sdmVyLmNwcApAQCAtMTkyLDcgKzE5Miw2IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjph
ZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBob3N0UnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlCiAg
ICAgICAgICAgICBydWxlLT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4oaG9z
dFN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdzKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogYm9vbCBT
dHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKQEAgLTIzNyw2ICsyMzYsNyBAQCB2b2lkIFN0eWxl
U2NvcGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmVj
dG9yPFJ1bGVTZXQqPgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQorI2VuZGlmCiAKIHZv
aWQgU3R5bGVTY29wZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVS
ZXNvbHZlci5oCmluZGV4IDNiZTNmZjRmNzBjNzM3NWJkMDE0MjZhMDBiYTQyNDEyODQ2MmNjMGUu
LmM1Zjc3NmYzYWUxNDExNzQyNDg4OTdmNjk5ODgxM2U0Y2Y5MjQ4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKQEAgLTc1LDkgKzc1LDExIEBAIHB1YmxpYzoKICAg
ICBib29sIG1hdGNoZXNTdHlsZUJvdW5kcyhjb25zdCBTdGFja0ZyYW1lJiBmcmFtZSkgY29uc3Qg
eyByZXR1cm4gZnJhbWUubV9hdXRob3JTdHlsZUJvdW5kc0luZGV4ID09IG1fc3RhY2tQYXJlbnRC
b3VuZHNJbmRleDsgfQogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzVG8oUnVsZUZlYXR1cmVTZXQm
KTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgYWRkSG9zdFJ1bGUoU3R5bGVS
dWxlSG9zdCosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgY29uc3QgQ29udGFpbmVy
Tm9kZSogc2NvcGUpOwogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RS
dWxlcyhjb25zdCBFbGVtZW50Kik7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVt
ZW50KiwgVmVjdG9yPFJ1bGVTZXQqPiYgbWF0Y2hlZFJ1bGVzKTsKKyNlbmRpZgogCiAgICAgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAppbmRleCA5NzBjZGMyMDU5N2M1MGIy
MThkZjQzMTAzOGU2YzU4YjllYWJhYWU2Li41YjdjZWU4MmNkNTI1MTkzYTE0YTcwNTU1NWU5NDBm
NWJjZDhlMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldh
bGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3Bw
CkBAIC00NSw2ICs0NSw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKIHsK
ICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBBU1NFUlQobV9kaXN0cmlidXRlZE5vZGUpOworCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNo
YWRvd09mUGFyZW50KG1fbm9kZSkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Io
bV9kaXN0cmlidXRlZE5vZGUpKSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2lu
dDsKQEAgLTUyLDIwICs1NCwzMCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKKwogICAgIGlm
ICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBh
cmVudE5vZGUoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgaWYgKCEobV9ub2Rl
ICYmIG1fbm9kZS0+aXNTaGFkb3dSb290KCkgJiYgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjph
c3NpZ25lZFRvKHRvU2hhZG93Um9vdChtX25vZGUpKSkpCiAgICAgICAgICAgICBtX2Rpc3RyaWJ1
dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBm
YWxzZTsKKyNlbHNlCisgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgICAg
ICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFk
b3dSb290KG1fbm9kZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWdu
ZWRUbyhzaGFkb3dSb290KSkgewogICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKICAg
ICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSB0cnVlOwogICAgICAgICByZXR1cm47
CiAgICAgfQorI2VuZGlmCisKICAgICBtX25vZGUgPSBzaGFkb3dSb290LT5ob3N0KCk7CiAgICAg
bV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9p
bnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAKaW5kZXggYWI1OGQ2MTUyYmM2MGQ5MDUxN2FlNGFiOGNlZWEwN2I0OGZjYjE4Yy4u
ZDIzMGY4NjQ4NzgyNDZmNjkwMzhjNGRhN2JhMzE2YzlmZmQ0NGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTEsNCArMSwzIEBA
Ci0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC0yOCw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KwogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCkBAIC0zMTMsMyArMzE0LDUgQEAgdm9pZCBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UKKwor
I2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDgzNDllMjFhYTk4M2YwYTg0YTExM2MxNjc4MGU0
OWVjNjc2NjRmM2UuLjJmMDJhN2MzYmM0NTUwNWY1YjQyODI4NTNlYTZkMjgzZjM4ZmYxNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTMx
LDYgKzMxLDggQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsKQEAgLTE0Myw0ICsxNDUsNSBAQCBpbmxpbmUgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSog
bm9kZSwgUG9saQogCiB9IC8vIG5hbWVzcGFjZQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19E
T00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBhMzExMzY4N2E2N2MzODRlYTQ1
MGJjYzZjMDRmNmQwYzBjZTFlNzA0Li43OTRhYjAxZjk0NWExNTI4ZjQ2MTNjODljY2MwY2ExOWM1
NDVhNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03NzYsMTAgKzc3NiwxMiBAQCBzdGF0
aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZElkLCBjbwogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxl
bWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKSB7CiAgICAg
ICAgIGlmIChzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQo
cGFyZW50RWxlbWVudFNoYWRvdywgbmFtZSwgbmV3VmFsdWUpKQogICAgICAgICAgICAgcGFyZW50
RWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgIH0KKyNlbmRpZgog
CiAgICAgcGFyc2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCkBAIC05MTYsNiArOTE4LDcg
QEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdDbGFzc1N0cmluZykKIAogYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdywg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkK
IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBBU1NFUlQoZWxlbWVudFNoYWRvdyk7CiAg
ICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBlbGVtZW50U2hhZG93
LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRvdyk7CiAK
QEAgLTk0Nyw2ICs5NTAsMTIgQEAgYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWwKICAgICB9CiAKICAg
ICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1lLmxvY2FsTmFt
ZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnRTaGFkb3cpOworICAgIFVOVVNF
RF9QQVJBTShuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0obmV3VmFsdWUpOworICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0
ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpAQCAtMTQxMSw5ICsxNDIwLDEyIEBAIEVsZW1lbnRTaGFk
b3cqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvdygpCiAKIHZvaWQgRWxlbWVudDo6ZGlkQWZmZWN0U2Vs
ZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykKIHsKKyAgICBVTlVTRURfUEFSQU0obWFz
ayk7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JE
aXN0cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFkb3ctPmRpZEFmZmVjdFNlbGVj
dG9yKG1hc2spOworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6
Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmNwcAppbmRleCA3MjAxZDMyNzUyMjA3YTU1YjdhNzgwNWExOWY4NGI4NGVlNGRhZjZi
Li5jN2E0NTI0NzNkMTUxYzlmNDA5NTY5NDYyNTI4YzU0N2M4M2E0OTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC04Miw3ICs4Miw5IEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jv
b3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0SG9zdChzaGFkb3dIb3N0KTsKICAgICBzaGFkb3dS
b290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hhZG93SG9zdC0+dHJlZVNjb3BlKCkpOwogICAgIG1f
c2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgpKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBtX2Rpc3RyaWJ1dG9yLmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKHNoYWRvd0hvc3Qp
OworI2VuZGlmCiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90
aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgLy8gRXhpc3RlbmNlIG9mIHNoYWRvdyByb290
cyByZXF1aXJlcyB0aGUgaG9zdCBhbmQgaXRzIGNoaWxkcmVuIHRvIGRvIHRyYXZlcnNhbCB1c2lu
ZyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuCkBAIC0xMTcsNyArMTE5LDkgQEAgdm9pZCBFbGVt
ZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CiAgICAgfQogCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKHNoYWRvd0hvc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0
YWNoKCkKQEAgLTE3Miw3ICsxNzYsMTAgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgICAg
ICBpbmZvLmFkZE1lbWJlcihzaGFkb3dSb290KTsKICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRv
d1Jvb3QtPm5leHQoKTsKICAgICB9CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpbmZv
LmFkZE1lbWJlcihtX2Rpc3RyaWJ1dG9yKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKaW5kZXggOTFmNjc5MTY4ODZkNGE5MzRiMTNhZTc3
NDk2YjcwMWI2ZDJlYTYyNi4uNTZiNDgwOWEzMDQwOTQxZDNmNTU1ZWNkMGVhNmNiOGEzOGFmYWE3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC02MywxOSArNjMsMjcgQEAgcHVi
bGljOgogICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgcmVjYWxjU3R5bGUo
Tm9kZTo6U3R5bGVDaGFuZ2UpOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCBp
bnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0cmli
dXRpb24oaG9zdCgpKTsgfQogICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3Ry
aWJ1dG9yLmVuc3VyZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9CiAgICAgdm9pZCBkaWRBZmZlY3RT
ZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKSB7IG1fZGlzdHJpYnV0b3IuZGlkQWZm
ZWN0U2VsZWN0b3IoaG9zdCgpLCBtYXNrKTsgfQogICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9y
KCkgeyBtX2Rpc3RyaWJ1dG9yLndpbGxBZmZlY3RTZWxlY3Rvcihob3N0KCkpOyB9CiAKLSAgICBD
b250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCk7Ci0gICAgY29uc3QgQ29udGVudERpc3Ry
aWJ1dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0OworICAgIENvbnRlbnREaXN0cmlidXRvciYgZGlz
dHJpYnV0b3IoKSB7IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CisgICAgY29uc3QgQ29udGVudERp
c3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0K
KyNlbHNlCisgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyB9CisgICAgdm9pZCBl
bnN1cmVEaXN0cmlidXRpb24oKSB7IH0KKyNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci1wcml2YXRlOgogCitwcml2YXRlOgogICAg
IERvdWJseUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKKworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIENvbnRlbnREaXN0cmlidXRvciBtX2Rpc3RyaWJ1dG9yOworI2Vu
ZGlmCiB9OwogCiBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6eW91bmdlc3RTaGFk
b3dSb290KCkgY29uc3QKQEAgLTg4LDE2ICs5Niw2IEBAIGlubGluZSBTaGFkb3dSb290KiBFbGVt
ZW50U2hhZG93OjpvbGRlc3RTaGFkb3dSb290KCkgY29uc3QKICAgICByZXR1cm4gbV9zaGFkb3dS
b290cy50YWlsKCk7CiB9CiAKLWlubGluZSBDb250ZW50RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFk
b3c6OmRpc3RyaWJ1dG9yKCkKLXsKLSAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQotaW5s
aW5lIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3Io
KSBjb25zdAotewotICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwotfQotCiBpbmxpbmUgRWxlbWVu
dCogRWxlbWVudFNoYWRvdzo6aG9zdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX3NoYWRvd1Jv
b3RzLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbC5jcHAKaW5kZXggODNiYjdlYzdlNzllZjJmMjE2M2VmMDc3NTM3OWQ3NzdlNjllZmZmMi4u
Y2QwZjY5NzhiNWQ3Yjk2MzllMjRhZmU1MjY2ZjkyNTY1NDQ4N2RiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtMjgsMTIgKzI4LDk5IEBA
CiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogCiAjaW5jbHVkZSAiQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIlBzZXVkb0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2Ug
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CiAKKy8vIEEgc2ltcGxpZmllZCBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXItY29tcGF0aWJsZSB3YWxrZXIgaW1wbGVtZW50YXRpb24gZm9yIG5vbi1TSEFE
T1dfRE9NIGNvbmZpZ3VyYXRpb25zLgorY2xhc3MgU2hhZG93VHJlZVdhbGtlciB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgU2hhZG93VHJlZVdhbGtlcihjb25zdCBOb2RlKiBub2RlKQorICAgICAg
ICA6IG1fbm9kZShub2RlKQorICAgIHsgfQorCisgICAgTm9kZSogZ2V0KCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxOb2RlKj4obV9ub2RlKTsgfQorCisgICAgdm9pZCBwYXJlbnQoKSB7IG1f
bm9kZSA9IHRyYXZlcnNlUGFyZW50KG1fbm9kZSk7IH0KKyAgICB2b2lkIG5leHRTaWJsaW5nKCkg
eyBtX25vZGUgPSBtX25vZGUtPm5leHRTaWJsaW5nKCk7IH0KKyAgICB2b2lkIHByZXZpb3VzU2li
bGluZygpIHsgbV9ub2RlID0gbV9ub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsgfQorICAgIHZvaWQg
bGFzdENoaWxkKCkgeyBtX25vZGUgPSBtX25vZGUtPmxhc3RDaGlsZCgpOyB9CisgICAgdm9pZCBm
aXJzdENoaWxkKCkgeyBtX25vZGUgPSBtX25vZGUtPmZpcnN0Q2hpbGQoKTsgfQorCisgICAgdm9p
ZCBuZXh0KCkgeyBtX25vZGUgPSB0cmF2ZXJzZU5leHQobV9ub2RlKTsgfQorICAgIHZvaWQgcHJl
dmlvdXMoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUHJldmlvdXMobV9ub2RlKTsgfQorCisgICAgc3Rh
dGljIE5vZGUqIHRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKiA9IDAp
OworCitwcml2YXRlOgorICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHQoY29uc3QgTm9kZSop
OworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqKTsKKyAgICBz
dGF0aWMgTm9kZSogbmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2RlKik7Cisg
ICAgc3RhdGljIE5vZGUqIHByZXZpb3VzSW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKGNvbnN0IE5v
ZGUqKTsKKyAgICBzdGF0aWMgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KE5vZGUqIG5vZGUpIHsgcmV0
dXJuIG5vZGUtPmlzU2hhZG93Um9vdCgpIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKTsgfQor
ICAgIAorICAgIGNvbnN0IE5vZGUqIG1fbm9kZTsKK307CisKK2lubGluZSBOb2RlKiBTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxz
KikKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHdh
bGs7IHdhbGsgPSB3YWxrLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgaWYgKCFpc1No
YWRvd0JvdW5kYXJ5KHdhbGspKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7CisgICAgfQorCisg
ICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJz
ZU5leHQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBuZXh0SW5j
bHVkaW5nQ29udGFpbmluZ1Njb3BlKG5vZGUpOyB3YWxrOyB3YWxrID0gbmV4dEluY2x1ZGluZ0Nv
bnRhaW5pbmdTY29wZSh3YWxrKSkgeworICAgICAgICBpZiAoIWlzU2hhZG93Qm91bmRhcnkod2Fs
aykpCisgICAgICAgICAgICByZXR1cm4gd2FsazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K
KworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlvdXMoY29uc3Qg
Tm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBwcmV2aW91c0luY2x1ZGluZ0Nv
bnRhaW5pbmdTY29wZShub2RlKTsgd2Fsazsgd2FsayA9IHByZXZpb3VzSW5jbHVkaW5nQ29udGFp
bmluZ1Njb3BlKHdhbGspKSB7CisgICAgICAgIGlmICghaXNTaGFkb3dCb3VuZGFyeSh3YWxrKSkK
KyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitp
bmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6bmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29w
ZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNh
bDo6bmV4dChub2RlKSkKKyAgICAgICAgcmV0dXJuIHdhbGs7CisKKyAgICBmb3IgKG5vZGUgPSB0
cmF2ZXJzZVBhcmVudChub2RlKTsgbm9kZTsgbm9kZSA9IHRyYXZlcnNlUGFyZW50KG5vZGUpKSB7
CisgICAgICAgIGlmIChub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgcmV0dXJuIG5v
ZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBO
b2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShj
b25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNhbDo6
cHJldmlvdXMobm9kZSkpCisgICAgICAgIHJldHVybiB3YWxrOworICAgIHJldHVybiB0cmF2ZXJz
ZVBhcmVudChub2RlKTsKK30KKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQordHlwZWRlZiBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIgV2Fsa2VyVHlwZTsKKyNlbHNlCit0eXBlZGVmIFNoYWRvd1Ry
ZWVXYWxrZXIgV2Fsa2VyVHlwZTsKKyNlbmRpZgorCiB2b2lkIFBhcmVudERldGFpbHM6OmRpZFRy
YXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQogewog
ICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkgewpAQCAtNDksMTQgKzEzNiwxNSBAQCB2b2lkIFBh
cmVudERldGFpbHM6OmRpZFRyYXZlcnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290
KQogCiBDb250YWluZXJOb2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERl
dGFpbHMqIGRldGFpbHMpCiB7Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihu
b2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CisgICAgV2Fs
a2VyVHlwZSB3YWxrZXIobm9kZSk7CiAgICAgQ29udGFpbmVyTm9kZSogZm91bmQgPSB0b0NvbnRh
aW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdhbGtlci5nZXQoKSwgZGV0YWlscykpOwot
ICAgIHJldHVybiBkZXRhaWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CisgICAg
cmV0dXJuIGRldGFpbHMgJiYgZGV0YWlscy0+b3V0T2ZDb21wb3NpdGlvbigpID8gMCA6IGZvdW5k
OwogfQogCiBOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworICAgIFdhbGtlclR5cGUgd2Fs
a2VyKG5vZGUpOworCiAgICAgaWYgKG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7CiAg
ICAgICAgIHdhbGtlci5wYXJlbnQoKTsKICAgICAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsKQEAg
LTY5LDEzICsxNTcsMTMgQEAgTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUp
CiAgICAgTm9kZSogcGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOwogICAgIGlm
IChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0b0Vs
ZW1lbnQocGFyZW50KS0+cHNldWRvRWxlbWVudChBRlRFUik7Ci0KICAgICByZXR1cm4gMDsKIH0K
IAogTm9kZSogcHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogewotICAgIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisgICAgV2Fsa2VyVHlwZSB3YWxr
ZXIobm9kZSk7CisKICAgICBpZiAobm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkgewogICAg
ICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAgICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKQEAgLTk0
LDM0ICsxODIsNDYgQEAgTm9kZSogcHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2Rl
KQogCiBOb2RlKiBuZXh0SW5TY29wZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1F
OiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxF
KFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMz
MzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
d2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5uZXh0KCk7CiAg
ICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6
Om5leHQobm9kZSk7CisjZW5kaWYKIH0KIAogTm9kZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5v
ZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91
bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFy
eSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNl
bHNlCisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpOworI2VuZGlmCiB9
CiAKIE5vZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhN
RTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJM
RShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAz
MzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIucGFyZW50KCk7
CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIG5vZGUtPnBhcmVu
dE5vZGUoKTsKKyNlbmRpZgogfQogCiBOb2RlKiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUq
IG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRu
J3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIo
bm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7
CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxz
ZQorICAgIHJldHVybiBub2RlLT5sYXN0Q2hpbGQoKTsKKyNlbmRpZgogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaAppbmRleCAyZGIzZTc1OTVjYWNj
MGY5YzA1Zjg2ZmZhMTE3YmFlNDg4ZDU4ODA0Li40Y2I3N2NiMjY0NDhiMzkxM2NjNWEwMzY3MzBh
ZDAwMDc0ZTZmMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fb3V0T2ZDb21wb3Np
dGlvbjsKIH07CiAKK0NvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKik7CiBDb250YWlu
ZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKIENvbnRhaW5lck5v
ZGUqIHBhcmVudFNsb3coY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKIE5vZGUqIG5leHRT
aWJsaW5nKGNvbnN0IE5vZGUqKTsKQEAgLTc2LDYgKzc3LDEyIEBAIE5vZGUqIHByZXZpb3VzSW5T
Y29wZShjb25zdCBOb2RlKik7CiBOb2RlKiBwYXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqKTsKIE5v
ZGUqIGxhc3RDaGlsZEluU2NvcGUoY29uc3QgTm9kZSopOwogCitpbmxpbmUgQ29udGFpbmVyTm9k
ZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgUGFyZW50RGV0YWlscyBkZXRhaWxz
OworICAgIHJldHVybiBwYXJlbnQobm9kZSwgJmRldGFpbHMpOworfQorCiBpbmxpbmUgQ29udGFp
bmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMp
CiB7CiAgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCmluZGV4IGUzYTQ4MjIyYjkzZDM4ZDY3MGVjMmEyMzgxZjBiZjZkYTE1
MTc0MmQuLmIzZTM3ODJiMWM0ZmM0NWU1MmFmOTE5YmQ3MmUxNmEwYTNhNDJjNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU3LDcgKzU3LDExIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdt
ZW50LCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93
Um9vdD4geworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQqIHBvaW50ZXJzWzNdOwor
I2Vsc2UKKyAgICB2b2lkKiBwb2ludGVyc1syXTsKKyNlbmRpZgogICAgIHVuc2lnbmVkIGNvdW50
ZXJzQW5kRmxhZ3NbMV07CiB9OwogCkBAIC0yNjYsNyArMjcwLDcgQEAgTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCBTaGFkb3dSb290OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSogaW5zZXIKIAogICAgIGlmICghaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSB8fCAhaXNP
bGRlc3QoKSkKICAgICAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7Ci0KKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICAvLyBGSVhNRTogV2hlbiBwYXJzaW5nIDx2aWRlbyBjb250cm9scz4sIGlu
c2VydGVkSW50bygpIGlzIGNhbGxlZCBtYW55IHRpbWVzIHdpdGhvdXQgaW52b2tpbmcgcmVtb3Zl
ZEZyb20uCiAgICAgLy8gRm9yIG5vdywgd2UgY2hlY2sgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNo
YWRvd3Jvb3QuIFdlIHdvdWxkIGxpa2UgdG8gQVNTRVJUKCFtX3JlZ2lzdGVyZWRTaGFkb3dSb290
KSBoZXJlLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNpZz9pZD0x
MDEzMTYKQEAgLTI3NywxMiArMjgxLDEzIEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VyCiAgICAg
ICAgIHJvb3QtPmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCktPnJlZ2lzdGVyRWxlbWVudFNoYWRv
dygpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCA9IHRydWU7CiAg
ICAgfQotCisjZW5kaWYKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKIH0KIAogdm9pZCBTaGFk
b3dSb290OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQo
KSAmJiBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCkgewogICAgICAgICBTaGFkb3dS
b290KiByb290ID0gaG9zdCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgICAgICBpZiAo
IXJvb3QpCkBAIC0yOTIsNyArMjk3LDcgQEAgdm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShD
b250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgICAgIHJvb3QtPnNjb3BlRGlz
dHJpYnV0aW9uKCktPnVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CiAgICAgICAgIG1fcmVnaXN0
ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290ID0gZmFsc2U7CiAgICAgfQotCisjZW5kaWYKICAgICBE
b2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKQEAgLTMx
Nyw2ICszMjIsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVD
aGlsZCgpCiAgICAgc2V0SGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQobV9udW1iZXJPZlN0eWxlcyA+
IDApOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiBTY29wZUNvbnRlbnREaXN0cmlidXRp
b24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIHsKICAgICBpZiAobV9z
Y29wZURpc3RyaWJ1dGlvbikKQEAgLTMyNCw3ICszMzAsOCBAQCBTY29wZUNvbnRlbnREaXN0cmli
dXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIAogICAgIG1fc2Nv
cGVEaXN0cmlidXRpb24gPSBhZG9wdFB0cihuZXcgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKTsK
ICAgICByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsKLX0gICAKK30KKyNlbmRpZgog
CiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CkBAIC0zMzMsNyArMzQwLDkgQEAgdm9pZCBTaGFkb3dS
b290OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAogICAgIFRyZWVTY29wZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25l
eHQpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVE
aXN0cmlidXRpb24pOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4
IDE1MjY5MzhlZGU1MDQwZGRjNDMzOWY1OGZmODY1MWEyYzcyNTlmNzkuLjg1OWYwZDIyZGVhZDgy
YWQ4YzdkZTEwNTY0ZjI4MjIyOTE0MWNlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAt
ODgsOSArODgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhU
TUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29w
ZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURFOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIHsgcmV0dXJu
IG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7IH0KICAgICBjb25zdCBTY29wZUNvbnRlbnREaXN0
cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZURpc3Ry
aWJ1dGlvbi5nZXQoKTsgfQogICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogZW5zdXJlU2Nv
cGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgogCiAgICAgU2hhZG93Um9vdFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBdXRob3JTaGFkb3dSb290ID8gQXV0aG9yU2hhZG93Um9vdCA6IFVz
ZXJBZ2VudFNoYWRvd1Jvb3Q7IH0KICAgICBib29sIGlzQWNjZXNzaWJsZSgpIGNvbnN0IHsgcmV0
dXJuIHR5cGUoKSA9PSBBdXRob3JTaGFkb3dSb290OyB9CkBAIC0xMTAsNyArMTEyLDkgQEAgcHJp
dmF0ZToKIAogICAgIFNoYWRvd1Jvb3QqIG1fcHJldjsKICAgICBTaGFkb3dSb290KiBtX25leHQ7
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgT3duUHRyPFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbj4gbV9zY29wZURpc3RyaWJ1dGlvbjsKKyNlbmRpZgogICAgIHVuc2lnbmVkIG1fbnVtYmVy
T2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25lZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDogMTsKICAg
ICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA0YWNiNzZkZjc1MmY1NDY3OWYxZjE2NDdiZTg4
ZjMyNzQzOGI2MThmLi4xMzA4OWY0MTFkYmQzOGZiMTM5NWZhMWE2ZjFjZGI0NTA1NDAyZmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTUzNiw4ICs1MzYs
MTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgICAgIHVw
ZGF0ZUZvY3VzQXBwZWFyYW5jZSh0cnVlKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50
Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKQogICAgICAgICBlbGVtZW50U2hhZG93LT5pbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKCk7CisjZW5kaWYKIAogICAgIHNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29u
dHJvbENoYW5nZUV2ZW50KGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggODY3YTE3NDU3YjUyOWVmMDg5ZDgwYjBm
ZDg4M2UxNGE2MmM3ZWUzOC4uMDhkZTNhY2UxNjk4MzhkMGQ0YTExNGU2ZjZlNDFlN2U3ZmIwM2I0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0
b3IuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29udGVudERpc3RyaWJ1dG9yLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1
ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgog
I2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgpAQCAtNDMzLDMgKzQzNSw1IEBAIHZvaWQg
Q29udGVudERpc3RyaWJ1dG9yOjpkaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0
KQogfQogCiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggNDYwZDQxMzVkOTkw
ZThmZjY5Njc1N2Q1NjJhMGIwYjEzZWY3MzY4Mi4uNGUxYzcwMmYxOWM4NDY3M2Y2YmVmMjUyZGJl
OTcxYzkzMTMxZjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dERpc3RyaWJ1dG9yLmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CkBAIC0xNjMsNCAr
MTY1LDUgQEAgaW5saW5lIGJvb2wgQ29udGVudERpc3RyaWJ1dG9yOjpuZWVkc0Rpc3RyaWJ1dGlv
bigpIGNvbnN0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5j
cHAKaW5kZXggMGNhYjMxMjhkZDA1NWM2MjM3MjgzMzY0OTc2ZTg1MGNiNzQ1ZGUxOC4uMjQ4YzY1
NTJlZGZmNGJlZWU3MWUzZDE1OWE2ZjdlNjcyZWRlNTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtMjcsNiArMjcs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5
LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlz
dC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVj
a2VyLmgiCkBAIC05MCwzICs5Miw1IEBAIGJvb2wgQ29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNo
ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBzaWJsaW5ncywgaW50IG50CiB9CiAKIH0K
KworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKaW5kZXggNmE0ZjMzODE1NDZhYWEzYTMw
OTg5NDYzNzUzNzhmMzYwNDVlMWMxYi4uYjcwMzNlMTg3MDM2MjQyMjdlNTdlMjdhYWRlNzM5MGNm
YjhjNzRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5oCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKQEAgLTc2LDQgKzc4LDUgQEAgcHJp
dmF0ZToKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXggOWQw
YzhmYzQzNTNiZjk2Y2UyNGQxYTI2ZjI1MWFkYzNjOTgxYWQwOC4uY2EyNjllODYzOTBlNWViNDFm
ZDZjOWIzOTgzYjliY2MyMjI4NzQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRFbGVtZW50LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3MgSFRNTENvbnRl
bnRFbGVtZW50IDogcHVibGljIEluc2VydGlvblBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGVudFRhZ05hbWUoRG9jdW1lbnQqKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MQ29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCiAg
ICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIENvbnRlbnRJbnNlcnRpb25Qb2ludDsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggOTZmYjI1MDBmMjBhYzdh
ZmM5M2M4YWU4ZTVmMmVjMjdiZWM3ZWRlZS4uZWEyOWVkOGYxZTE0ZTE0NWMyNGQxMGQ2NTc1OTli
ZDU5MWI2OGI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmNwcApAQCAtMzksMTAgKzM5LDM2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU2lt
cGxlSW5zZXJ0aW9uUG9pbnQ6OlNpbXBsZUluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBDcmVhdGVJbnNlcnRpb25Qb2ludCkKK3sKK30KKworYm9vbCBTaW1wbGVJ
bnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIGlmICghY29udGFpbmluZ1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IE5vZGUqIG5vZGUg
PSBwYXJlbnROb2RlKCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlz
SW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBu
b2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBTaW1wbGVJbnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gIWlzU2hhZG93Qm91bmRhcnko
KSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKK30KKworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBJbnNlcnRp
b25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENy
ZWF0ZUluc2VydGlvblBvaW50KQorICAgIDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiAgICAgLCBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdChmYWxzZSkKIHsKIH0K
QEAgLTc4LDI1ICsxMDQsNiBAQCBib29sIEluc2VydGlvblBvaW50OjpzaG91bGRVc2VGYWxsYmFj
a0VsZW1lbnRzKCkgY29uc3QKICAgICByZXR1cm4gaXNBY3RpdmUoKSAmJiAhaGFzRGlzdHJpYnV0
aW9uKCk7CiB9CiAKLWJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzU2hhZG93Qm91bmRhcnkoKSBjb25z
dAotewotICAgIHJldHVybiB0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkg
JiYgaXNBY3RpdmUoKTsKLX0KLQotYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBjb25z
dAotewotICAgIGlmICghY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKG5v
ZGUpIHsKLSAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9u
UG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdAogewogICAgIENvbnRlbnREaXN0cmli
dXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uRnJvbURvY3VtZW50KGNvbnN0X2Nhc3Q8SW5zZXJ0aW9u
UG9pbnQqPih0aGlzKSk7CkBAIC0xMDksMTEgKzExNiw2IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IEluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29uc3QKICAgICByZXR1cm4g
U3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVzKTsKIH0KIAotYm9vbCBJbnNlcnRpb25Qb2ludDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKLXsK
LSAgICByZXR1cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChjb250ZXh0KTsKLX0KLQogdm9pZCBJbnNlcnRpb25Qb2ludDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVy
Q2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGls
ZENvdW50RGVsdGEpOwpAQCAtMjI2LDQgKzIyOCw2IEBAIEluc2VydGlvblBvaW50KiByZXNvbHZl
UmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUpCiAgICAgcmV0dXJuIGluc2Vy
dGlvblBvaW50OwogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oCmluZGV4IDc0MjQzZTljYWE0NTM3YzU5NGE5MjkwYjQ2ODExZTNiNjAwNWJjZTYuLmU0NjVl
MzIzNjBkOGY2MDYxNjhkNDZmMjgzMmM3NTk4MGM5YTc3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50
IHsKK2NsYXNzIFNpbXBsZUluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1
YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBTaGFkb3dJbnNlcnRpb25Qb2ludCwKQEAg
LTU0LDE5ICs1NCwzNCBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1RvTWF0Y2hTZWxlY3RvcgogICAg
IH07CiAKKyAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJu
IEFsd2F5c01hdGNoZXM7IH0KKyAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkg
Y29uc3QgPSAwOworCisgICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4g
dHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpICYmIGlzQWN0aXZlKCk7IH0K
KyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTaW1wbGVJbnNl
cnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERTsKK307CisKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9p
bnQgeworcHVibGljOgorCiAgICAgdmlydHVhbCB+SW5zZXJ0aW9uUG9pbnQoKTsKIAogICAgIGJv
b2wgaGFzRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gIW1fZGlzdHJpYnV0aW9uLmlzRW1w
dHkoKTsgfQogICAgIHZvaWQgc2V0RGlzdHJpYnV0aW9uKENvbnRlbnREaXN0cmlidXRpb24mIGRp
c3RyaWJ1dGlvbikgeyBtX2Rpc3RyaWJ1dGlvbi5zd2FwKGRpc3RyaWJ1dGlvbik7IH0KICAgICB2
b2lkIGNsZWFyRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dGlvbi5jbGVhcigpOyB9Ci0gICAg
Ym9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
OwogCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqKSB7IHJldHVybiBB
bHdheXNNYXRjaGVzOyB9CiAgICAgdmlydHVhbCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVj
dG9yTGlzdCgpIHsgcmV0dXJuIGVtcHR5U2VsZWN0b3JMaXN0KCk7IH0KLSAgICB2aXJ0dWFsIFR5
cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5B
ZmZlY3RTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJlc2V0
U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0OwpAQCAtOTAsMTIgKzEwNSwxMSBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRl
ckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc0lu
c2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogcHJp
dmF0ZToKIApAQCAtMTAzLDMwICsxMTcsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVnaXN0
ZXJlZFdpdGhTaGFkb3dSb290OwogfTsKIAotaW5saW5lIEluc2VydGlvblBvaW50KiB0b0luc2Vy
dGlvblBvaW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5z
ZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc2VydGlvblBvaW50Kj4o
bm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2lu
dChjb25zdCBOb2RlKiBub2RlKQotewotICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0luc2Vy
dGlvblBvaW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2lu
dCo+KG5vZGUpOwotfQorSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSopOwor
Y29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSopOwogCiBp
bmxpbmUgYm9vbCBpc0FjdGl2ZUluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAg
ICAgcmV0dXJuIG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlvblBvaW50KG5v
ZGUpLT5pc0FjdGl2ZSgpOwogfQogCi1pbmxpbmUgYm9vbCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJv
dW5kYXJ5KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0luc2VydGlv
blBvaW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdG9JbnNlcnRpb25Q
b2ludChub2RlKS0+aXNTaGFkb3dCb3VuZGFyeSgpOwotfQotCiBpbmxpbmUgTm9kZSogcGFyZW50
Tm9kZUZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2Rl
KTsKQEAgLTE2MSw2ICsxNTksMzYgQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFy
ZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2VydGlvblBvaW50KiBy
ZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAorI2Vsc2UKKworY2xhc3MgSW5zZXJ0
aW9uUG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgeworcHVibGljOgorICAgIGJv
b2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK3Byb3Rl
Y3RlZDoKKyAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpIDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1l
bnQpIHsgfQorfTsKKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorCitpbmxpbmUgSW5z
ZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKworaW5saW5lIGNvbnN0IEluc2VydGlvblBv
aW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFu
b2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBib29sIGlzTG93ZXJF
bmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUgfHwgIW5v
ZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAppbmRl
eCA0NjUyMmM0NDUzYmMzZWIwMzYxZmQ0NjExYWQxOTY3MjI2Y2RkMWMwLi42ZTI3N2E0MGQ5NGYw
OWE1MWYzNjBkNjBmOTVmN2M5ZDY5YTVjOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKIAor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsMyArODcsNCBAQCB2b2lkIFNlbGVjdFJ1bGVGZWF0dXJl
U2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCmluZGV4IGQwZjJkZTY4MjFi
MzI1MDkxNmM3ZWMxNmRlZDRkYjc1OTg0YTA4MTcuLmIwMjA3M2Q0ZjJjMzc5NWQ3ODc1ZTRhZDVl
ZGQ4YzQ5Nzc3MTdjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nl
bGVjdFJ1bGVGZWF0dXJlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2Vs
ZWN0UnVsZUZlYXR1cmVTZXQuaApAQCAtMzEsOSArMzEsMTIgQEAKICNpZm5kZWYgU2VsZWN0UnVs
ZUZlYXR1cmVTZXRfaAogI2RlZmluZSBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCiAKKwogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VsZWN0UnVsZUZlYXR1
cmVTZXQgewpAQCAtODUsNCArODgsNSBAQCBpbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNl
dDo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdAogCiB9CiAK
KyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGQ0MmI3MzhjZTdlNGVlNjFiODQyMTgwZDBlNTMwODczYzgyOTMy
ZmIuLmNiZjA4MmMxOWU4NWVhMDFlZDVkOTIwNTMyNGNjMGNmY2ViOTk2ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0OCw3ICszNDgsMTEgQEAgYm9vbCBJbnRlcm5h
bHM6Omhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcm
IGlkVmFsdWUsIEUKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNl
bGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEludGVybmFsczo6
aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYg
Y2xhc3NOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM1OCw3ICszNjIsMTEgQEAgYm9vbCBJ
bnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25z
dCBTdHJpbmcmIGNsYXNzTmEKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVu
c3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yQ2xhc3Mo
Y2xhc3NOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wg
SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3Qs
IGNvbnN0IFN0cmluZyYgYXR0cmlidXRlTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNjgs
NyArMzc2LDExIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hh
ZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBob3N0LT5zaGFkb3co
KS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5o
YXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVk
b0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFzcywg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNzgsNiArMzkwLDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhh
c1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJp
bmcmIHAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBob3N0LT5zaGFk
b3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygp
KTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0gImNoZWNrZWQiKQogICAgICAgICByZXR1cm4gZmVh
dHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNrZWQoKTsKQEAgLTM5NSw2ICs0MDgsNyBAQCBib29s
IEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhv
c3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3Rv
ckZvclZpc2l0ZWQoKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDIsOCArNDU2LDEwIEBAIGJvb2wgSW50ZXJuYWxzOjpw
YXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eSwgZG91CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludChjb25zdCBO
b2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0
dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCh0b1NoYWRvd1Jv
b3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICBy
ZXR1cm4gMDsKQEAgLTQ1MSw4ICs0NjcsMTAgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0lu
c2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAog
Ym9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChy
b290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOworI2Vu
ZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ2
NSw3ICs0ODMsMTEgQEAgc2l6ZV90IEludGVybmFsczo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0
IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gU2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJvb3QpKTsKKyNl
bHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYgCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hl
ZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ4MCw2ICs1MDIsNyBAQCBib29s
IEludGVybmFsczo6YXR0YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIE5v
ZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDg3
LDEwICs1MTAsMTQgQEAgTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKE5vZGUq
IG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3
YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLm5leHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIHdhbGtl
ci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJu
YWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ5OCwxMCArNTI1LDE0
IEBAIE5vZGUqIEludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7
CiAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6Omxhc3RDaGls
ZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MDksMTAgKzU0MCwxNCBAQCBOb2RlKiBJbnRl
cm5hbHM6Omxhc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLmxh
c3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdhbGtlcihOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBp
ZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJl
dHVybiAwOwpAQCAtNTIwLDEwICs1NTUsMTQgQEAgTm9kZSogSW50ZXJuYWxzOjpuZXh0Tm9kZUJ5
V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLm5leHQoKTsKICAgICByZXR1cm4g
d2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJ
bnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MzEsNiAr
NTcwLDkgQEAgTm9kZSogSW50ZXJuYWxzOjpwcmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2Vy
KG5vZGUpOwogICAgIHdhbGtlci5wcmV2aW91cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7
CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OmVs
ZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IGVkYzNjMjgwNTk3YjJlZGI4
YWEzNmEzYzlhYjhkZDA0ZjQyYmMwNjkuLjY5ZGE5YmQyNDlmYjA3OGMzYTBiMDk4NTkyNzM5OGY5
ZDQ0M2ZmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTEwNyw3ICsx
MDcsNyBAQAogICAgICAgJ0VOQUJMRV9SVUJZPTEnLAogICAgICAgJ0VOQUJMRV9TQU5EQk9YPTEn
LAogICAgICAgJ0VOQUJMRV9TQ1JJUFRFRF9TUEVFQ0g9MScsCi0gICAgICAnRU5BQkxFX1NIQURP
V19ET009MScsCisgICAgICAnRU5BQkxFX1NIQURPV19ET009MCcsCiAgICAgICAnRU5BQkxFX1NN
T09USF9TQ1JPTExJTkc9MScsCiAgICAgICAnRU5BQkxFX1NRTF9EQVRBQkFTRT0xJywKICAgICAg
ICdFTkFCTEVfU1RZTEVfU0NPUEVEPTEnLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183960</attachid>
            <date>2013-01-22 04:02:51 -0800</date>
            <delta_ts>2013-01-22 18:26:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130122205945.patch</filename>
            <type>text/plain</type>
            <size>47058</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggZDhkNjljMzJmYzUxY2I2ZjRhYmU4OGYwMTJkZmMyYTk1ZjA2ZDdkOS4uMDBhNmMx
MGIxNTcwNjJkZWVmMDE4N2I2MDEwYmVjY2QxMmUzMWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNzYxLDcgKzc2MSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1w
dAogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbWF0Y2hI
b3N0UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKKwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVs
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCA4YWNh
YmU1MGFlNzJkMWJlMTdkNGEzNWY3YjM2Y2YzNjRkYWYyMmI3Li5hNjM1NzBhNDNiNTUzYzExZWM1
YTI3Mzg4ZGE5MmExODA4MTdmNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJl
c29sdmVyLmNwcApAQCAtMTkyLDcgKzE5Miw2IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjph
ZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBob3N0UnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlCiAg
ICAgICAgICAgICBydWxlLT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4oaG9z
dFN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdzKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogYm9vbCBT
dHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKQEAgLTIzNyw2ICsyMzYsNyBAQCB2b2lkIFN0eWxl
U2NvcGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmVj
dG9yPFJ1bGVTZXQqPgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQorI2VuZGlmCiAKIHZv
aWQgU3R5bGVTY29wZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVS
ZXNvbHZlci5oCmluZGV4IDNiZTNmZjRmNzBjNzM3NWJkMDE0MjZhMDBiYTQyNDEyODQ2MmNjMGUu
LmM1Zjc3NmYzYWUxNDExNzQyNDg4OTdmNjk5ODgxM2U0Y2Y5MjQ4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKQEAgLTc1LDkgKzc1LDExIEBAIHB1YmxpYzoKICAg
ICBib29sIG1hdGNoZXNTdHlsZUJvdW5kcyhjb25zdCBTdGFja0ZyYW1lJiBmcmFtZSkgY29uc3Qg
eyByZXR1cm4gZnJhbWUubV9hdXRob3JTdHlsZUJvdW5kc0luZGV4ID09IG1fc3RhY2tQYXJlbnRC
b3VuZHNJbmRleDsgfQogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzVG8oUnVsZUZlYXR1cmVTZXQm
KTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgYWRkSG9zdFJ1bGUoU3R5bGVS
dWxlSG9zdCosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgY29uc3QgQ29udGFpbmVy
Tm9kZSogc2NvcGUpOwogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RS
dWxlcyhjb25zdCBFbGVtZW50Kik7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVt
ZW50KiwgVmVjdG9yPFJ1bGVTZXQqPiYgbWF0Y2hlZFJ1bGVzKTsKKyNlbmRpZgogCiAgICAgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAppbmRleCA5NzBjZGMyMDU5N2M1MGIy
MThkZjQzMTAzOGU2YzU4YjllYWJhYWU2Li41YjdjZWU4MmNkNTI1MTkzYTE0YTcwNTU1NWU5NDBm
NWJjZDhlMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldh
bGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3Bw
CkBAIC00NSw2ICs0NSw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKIHsK
ICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBBU1NFUlQobV9kaXN0cmlidXRlZE5vZGUpOworCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNo
YWRvd09mUGFyZW50KG1fbm9kZSkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Io
bV9kaXN0cmlidXRlZE5vZGUpKSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2lu
dDsKQEAgLTUyLDIwICs1NCwzMCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKKwogICAgIGlm
ICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBh
cmVudE5vZGUoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgaWYgKCEobV9ub2Rl
ICYmIG1fbm9kZS0+aXNTaGFkb3dSb290KCkgJiYgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjph
c3NpZ25lZFRvKHRvU2hhZG93Um9vdChtX25vZGUpKSkpCiAgICAgICAgICAgICBtX2Rpc3RyaWJ1
dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBm
YWxzZTsKKyNlbHNlCisgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgICAg
ICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFk
b3dSb290KG1fbm9kZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWdu
ZWRUbyhzaGFkb3dSb290KSkgewogICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKICAg
ICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSB0cnVlOwogICAgICAgICByZXR1cm47
CiAgICAgfQorI2VuZGlmCisKICAgICBtX25vZGUgPSBzaGFkb3dSb290LT5ob3N0KCk7CiAgICAg
bV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9p
bnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAKaW5kZXggYWI1OGQ2MTUyYmM2MGQ5MDUxN2FlNGFiOGNlZWEwN2I0OGZjYjE4Yy4u
ZDIzMGY4NjQ4NzgyNDZmNjkwMzhjNGRhN2JhMzE2YzlmZmQ0NGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTEsNCArMSwzIEBA
Ci0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC0yOCw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KwogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCkBAIC0zMTMsMyArMzE0LDUgQEAgdm9pZCBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UKKwor
I2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDgzNDllMjFhYTk4M2YwYTg0YTExM2MxNjc4MGU0
OWVjNjc2NjRmM2UuLjJmMDJhN2MzYmM0NTUwNWY1YjQyODI4NTNlYTZkMjgzZjM4ZmYxNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTMx
LDYgKzMxLDggQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsKQEAgLTE0Myw0ICsxNDUsNSBAQCBpbmxpbmUgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSog
bm9kZSwgUG9saQogCiB9IC8vIG5hbWVzcGFjZQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19E
T00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAwMGFmNGI2ODk0ZGE0MjU4Y2Nk
NGViODBhNjM2ODBhNDVmOTk3M2M4Li42YjA1ZjU0OTk5MTQ5MmVjYTg4MjhkYjVlNDUyYjBkMjdi
ZTRjZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04MDgsMTAgKzgwOCwxMiBAQCBzdGF0
aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZElkLCBjbwogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxl
bWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKSB7CiAgICAg
ICAgIGlmIChzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQo
cGFyZW50RWxlbWVudFNoYWRvdywgbmFtZSwgbmV3VmFsdWUpKQogICAgICAgICAgICAgcGFyZW50
RWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgIH0KKyNlbmRpZgog
CiAgICAgcGFyc2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCkBAIC05NDgsNiArOTUwLDcg
QEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdDbGFzc1N0cmluZykKIAogYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdywg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkK
IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBBU1NFUlQoZWxlbWVudFNoYWRvdyk7CiAg
ICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBlbGVtZW50U2hhZG93
LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRvdyk7CiAK
QEAgLTk3OSw2ICs5ODIsMTIgQEAgYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWwKICAgICB9CiAKICAg
ICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1lLmxvY2FsTmFt
ZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnRTaGFkb3cpOworICAgIFVOVVNF
RF9QQVJBTShuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0obmV3VmFsdWUpOworICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0
ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpAQCAtMTQ0Myw5ICsxNDUyLDEyIEBAIEVsZW1lbnRTaGFk
b3cqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvdygpCiAKIHZvaWQgRWxlbWVudDo6ZGlkQWZmZWN0U2Vs
ZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykKIHsKKyAgICBVTlVTRURfUEFSQU0obWFz
ayk7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JE
aXN0cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFkb3ctPmRpZEFmZmVjdFNlbGVj
dG9yKG1hc2spOworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6
Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmNwcAppbmRleCAzMmRkNGYwNGQ1N2FlYWM0MDMyZWVhZjJmZDFlZmNjZjUyNjhhZTRk
Li5jNGNlNjI0Nzc1MGZhZjM5MjMwYTZiN2VkOTVkNWFjZDkyNmY1ZDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC04Miw3ICs4Miw5IEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jv
b3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0SG9zdChzaGFkb3dIb3N0KTsKICAgICBzaGFkb3dS
b290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hhZG93SG9zdC0+dHJlZVNjb3BlKCkpOwogICAgIG1f
c2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgpKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBtX2Rpc3RyaWJ1dG9yLmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKHNoYWRvd0hvc3Qp
OworI2VuZGlmCiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90
aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgLy8gRXhpc3RlbmNlIG9mIHNoYWRvdyByb290
cyByZXF1aXJlcyB0aGUgaG9zdCBhbmQgaXRzIGNoaWxkcmVuIHRvIGRvIHRyYXZlcnNhbCB1c2lu
ZyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuCkBAIC0xMTcsMTMgKzExOSwxNiBAQCB2b2lkIEVs
ZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKICAgICAgICAgQ2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKICAgICB9CiAK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtX2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0
cmlidXRpb24oc2hhZG93SG9zdCk7CisjZW5kaWYKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93Ojph
dHRhY2goKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbnRlbnREaXN0cmlidXRv
cjo6ZW5zdXJlRGlzdHJpYnV0aW9uKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKLQorI2VuZGlmCiAg
ICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJv
b3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoIXJvb3QtPmF0dGFj
aGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKQEAgLTE3Myw3ICsxNzgsMTAgQEAg
dm9pZCBFbGVtZW50U2hhZG93OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgICAgICBpbmZvLmFkZE1lbWJlcihzaGFkb3dSb290
KTsKICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm5leHQoKTsKICAgICB9CisKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3RyaWJ1dG9yKTsK
KyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgK
aW5kZXggODkzMzYzYmJhODdiNDg4ZTdhZmQxMmQwMjg1Y2Q0YTU0NDQxZWE3My4uMDA1MmVjZDZh
ZmU5YWJkNjlhOGQ0NGQyNGZhN2Q5ZmFkOTMzNDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5oCkBAIC02MywxOCArNjMsMjYgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNTdHlsZVJl
Y2FsYygpOwogICAgIHZvaWQgcmVjYWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwogCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyBt
X2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQogICAgIHZvaWQg
ZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykgeyBtX2Rpc3RyaWJ1
dG9yLmRpZEFmZmVjdFNlbGVjdG9yKGhvc3QoKSwgbWFzayk7IH0KICAgICB2b2lkIHdpbGxBZmZl
Y3RTZWxlY3RvcigpIHsgbV9kaXN0cmlidXRvci53aWxsQWZmZWN0U2VsZWN0b3IoaG9zdCgpKTsg
fQogCi0gICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpOwotICAgIGNvbnN0IENv
bnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKKyAgICBDb250ZW50RGlzdHJp
YnV0b3ImIGRpc3RyaWJ1dG9yKCkgeyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQorICAgIGNvbnN0
IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Ry
aWJ1dG9yOyB9CisjZWxzZQorICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgfQor
ICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uKCkgeyB9CisjZW5kaWYKIAogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwotcHJpdmF0ZToKIAorcHJp
dmF0ZToKICAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7CisK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb250ZW50RGlzdHJpYnV0b3IgbV9kaXN0cmli
dXRvcjsKKyNlbmRpZgogfTsKIAogaW5saW5lIFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFkb3c6Onlv
dW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CkBAIC04NywxNiArOTUsNiBAQCBpbmxpbmUgU2hhZG93
Um9vdCogRWxlbWVudFNoYWRvdzo6b2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQogCi1pbmxpbmUgQ29udGVudERpc3RyaWJ1dG9yJiBF
bGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpCi17Ci0gICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7
Ci19Ci0KLWlubGluZSBjb25zdCBDb250ZW50RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRp
c3RyaWJ1dG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQogaW5s
aW5lIEVsZW1lbnQqIEVsZW1lbnRTaGFkb3c6Omhvc3QoKSBjb25zdAogewogICAgIEFTU0VSVCgh
bV9zaGFkb3dSb290cy5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWwuY3BwCmluZGV4IDgzYmI3ZWM3ZTc5ZWYyZjIxNjNlZjA3NzUzNzlkNzc3
ZTY5ZWZmZjIuLjU0ZGRhZjA0ODRjNjdhNjI2OTdiOTMyYWNmMWMwN2Y4MGE0MGU3YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKQEAgLTI4LDEy
ICsyOCwyMDMgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAKICNpbmNs
dWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
IHsKIAorLy8gQSBzaW1wbGlmaWVkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci1jb21wYXRpYmxl
IHdhbGtlciBpbXBsZW1lbnRhdGlvbiBmb3Igbm9uLVNIQURPV19ET00gY29uZmlndXJhdGlvbnMu
CitjbGFzcyBTaGFkb3dUcmVlV2Fsa2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFkb3dU
cmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAg
eyB9CisKKyAgICBOb2RlKiBnZXQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPiht
X25vZGUpOyB9CisKKyAgICB2b2lkIHBhcmVudCgpIHsgbV9ub2RlID0gdHJhdmVyc2VQYXJlbnQo
bV9ub2RlKTsgfQorICAgIHZvaWQgbmV4dFNpYmxpbmcoKSB7IG1fbm9kZSA9IHRyYXZlcnNlTmV4
dFNpYmxpbmcobV9ub2RlKTsgfQorICAgIHZvaWQgcHJldmlvdXNTaWJsaW5nKCkgeyBtX25vZGUg
PSB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhtX25vZGUpOyB9CisgICAgdm9pZCBsYXN0Q2hpbGQo
KSB7IG1fbm9kZSA9IG1fbm9kZS0+bGFzdENoaWxkKCk7IH0KKyAgICB2b2lkIGZpcnN0Q2hpbGQo
KSB7IG1fbm9kZSA9IG1fbm9kZS0+Zmlyc3RDaGlsZCgpOyB9CisKKyAgICB2b2lkIG5leHQoKSB7
IG1fbm9kZSA9IHRyYXZlcnNlTmV4dChtX25vZGUpOyB9CisgICAgdm9pZCBwcmV2aW91cygpIHsg
bV9ub2RlID0gdHJhdmVyc2VQcmV2aW91cyhtX25vZGUpOyB9CisKKyAgICBzdGF0aWMgTm9kZSog
dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqID0gMCk7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dChjb25zdCBOb2RlKik7CisgICAgc3Rh
dGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXMoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2Rl
KiB0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJh
dmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBuZXh0
SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSog
cHJldmlvdXNJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29uc3QgTm9kZSopOworICAgIHN0YXRp
YyBib29sIGlzU2hhZG93Qm91bmRhcnkoTm9kZSogbm9kZSkgeyByZXR1cm4gbm9kZS0+aXNTaGFk
b3dSb290KCkgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpOyB9CisKKyAgICBjb25zdCBOb2Rl
KiBtX25vZGU7Cit9OworCisjaWYgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKKworc3RhdGljIElu
c2VydGlvblBvaW50KiBmaW5kSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgU2hhZG93Um9vdCogcm9v
dCA9IHBhcmVudC0+eW91bmdlc3RTaGFkb3dSb290KCk7CisgICAgaWYgKCFyb290KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGJvb2wgaGFzSW5zZXJldGlvblBvaW50ID0gcGFyZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6ZGV0YWlsc1RhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6c3VtbWFyeVRhZyk7CisgICAgaWYgKCFoYXNJbnNlcmV0aW9uUG9pbnQpCisgICAgICAg
IHJldHVybiAwOworCisgICAgZm9yIChOb2RlKiBtYXlJbnNlcnRpb25Qb2ludCA9IHJvb3QtPmZp
cnN0Q2hpbGQoKTsgbWF5SW5zZXJ0aW9uUG9pbnQ7IG1heUluc2VydGlvblBvaW50ID0gbWF5SW5z
ZXJ0aW9uUG9pbnQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKG1heUluc2VydGlvblBv
aW50LT5pc0luc2VydGlvblBvaW50KCkgJiYgdG9JbnNlcnRpb25Qb2ludChtYXlJbnNlcnRpb25Q
b2ludCktPmFsd2F5c01hdGNoZXMoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpKQorICAgICAgICAg
ICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQobWF5SW5zZXJ0aW9uUG9pbnQpOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBWZWN0b3I8Tm9kZSo+IGdldERpc3RyaWJ1dGVk
Tm9kZShJbnNlcnRpb25Qb2ludCogcGFyZW50KQoreworICAgIFZlY3RvcjxOb2RlKj4gbm9kZXM7
CisgICAgRWxlbWVudCogaG9zdCA9IHBhcmVudC0+c2hhZG93SG9zdCgpOworICAgIEFTU0VSVCho
b3N0KTsKKyAgICBpZiAoIWhvc3QpCisgICAgICAgIHJldHVybiBub2RlczsKKworICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBob3N0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmFsd2F5c01hdGNoZXMoY2hpbGQp
KQorICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGNoaWxkKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bm9kZXM7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorCitpbmxpbmUg
Tm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwg
UGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQor
ICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9p
bnQobm9kZSkpIHsKKyAgICAgICAgLy8gWFhYOiBTaG91bGQgYmUgaGlkZSBpbnNlcnRpb24gcG9p
bnQgYmVoaW5kIHRoZSB3YWxrZXIgLSBOZWVkcyBtb3JlIGlmL2RlZiBpbiBOb2RlUmVuZGVyaW5n
Q29udGV4dAorICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgIGRldGFpbHMtPmRpZFRy
YXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICByZXR1cm4gbm9k
ZS0+cGFyZW50Tm9kZSgpOworICAgIH0KKyNlbmRpZgorCisgICAgZm9yIChOb2RlKiB3YWxrID0g
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyB3YWxrOyB3YWxrID0gd2Fsay0+cGFyZW50T3JIb3N0
Tm9kZSgpKSB7CisgICAgICAgIGlmICghaXNTaGFkb3dCb3VuZGFyeSh3YWxrKSkKKyAgICAgICAg
ICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgTm9k
ZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0KGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgZm9yIChOb2RlKiB3YWxrID0gbmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShub2RlKTsg
d2Fsazsgd2FsayA9IG5leHRJbmNsdWRpbmdDb250YWluaW5nU2NvcGUod2FsaykpIHsKKyAgICAg
ICAgaWYgKCFpc1NoYWRvd0JvdW5kYXJ5KHdhbGspKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fs
a2VyOjp0cmF2ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2Rl
KiB3YWxrID0gcHJldmlvdXNJbmNsdWRpbmdDb250YWluaW5nU2NvcGUobm9kZSk7IHdhbGs7IHdh
bGsgPSBwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSh3YWxrKSkgeworICAgICAgICBp
ZiAoIWlzU2hhZG93Qm91bmRhcnkod2FsaykpCisgICAgICAgICAgICByZXR1cm4gd2FsazsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6
OnRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoREVU
QUlMU19FTEVNRU5UKQorICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBm
aW5kSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmli
dXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICAvLyBTdGF5aW5nIGluc2lkZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBpZiAoZGlz
dHJpYnV0aW9uW2ldID09IG5vZGUgJiYgZGlzdHJpYnV0aW9uLmxhc3QoKSAhPSBub2RlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRpb25baSArIDFdOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICAvLyBTdGVwcGluZyBvdXQgZnJvbSBkaXN0cmlidXRlZCBsb2NhdGlvbgor
ICAgICAgICBub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
U3RlcHBpbmcgaW50byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChub2RlLT5pc0luc2VydGlv
blBvaW50KCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0aW9uID0gZ2V0
RGlzdHJpYnV0ZWROb2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkp
KTsKKyAgICAgICAgICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZGlzdHJpYnV0aW9uLmZpcnN0KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYKKworICAgIHJldHVybiBub2RlLT5uZXh0U2libGluZygpOworfQorCitpbmxpbmUgTm9kZSog
U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9k
ZSkKK3sKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorICAgIGlmIChJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAg
VmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9u
UG9pbnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlzdHJpYnV0aW9uLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICAvLyBTdGF5aW5nIGluc2lkZSBkaXN0cmlidXRpb24u
CisgICAgICAgICAgICBpZiAoZGlzdHJpYnV0aW9uW2ldID09IG5vZGUgJiYgZGlzdHJpYnV0aW9u
LmZpcnN0KCkgIT0gbm9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0aW9uW2kg
LSAxXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU3RlcHBpbmcgb3V0IGZyb20g
ZGlzdHJpYnV0ZWQgbG9jYXRpb24KKyAgICAgICAgbm9kZSA9IGluc2VydGlvblBvaW50OworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXBwaW5nIGludG8gZGlzdHJpYnV0aW9uLgorICAgICAg
ICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKSB7CisgICAgICAgICAgICBWZWN0b3I8Tm9k
ZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9kZSh0b0luc2VydGlvblBvaW50KGNv
bnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSk7CisgICAgICAgICAgICBpZiAoIWRpc3RyaWJ1dGlvbi5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3RyaWJ1dGlvbi5sYXN0KCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBub2RlLT5wcmV2aW91c1NpYmxp
bmcoKTsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6Om5leHRJbmNsdWRpbmdD
b250YWluaW5nU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogd2FsayA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkpCisgICAgICAgIHJldHVybiB3YWxrOworCisgICAg
Zm9yIChub2RlID0gdHJhdmVyc2VQYXJlbnQobm9kZSk7IG5vZGU7IG5vZGUgPSB0cmF2ZXJzZVBh
cmVudChub2RlKSkgeworICAgICAgICBpZiAobm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAg
ICAgIHJldHVybiBub2RlLT5uZXh0U2libGluZygpOworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNJbmNsdWRpbmdDb250
YWluaW5nU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogd2FsayA9IE5v
ZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpKQorICAgICAgICByZXR1cm4gd2FsazsKKyAgICBy
ZXR1cm4gdHJhdmVyc2VQYXJlbnQobm9kZSk7Cit9CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
K3R5cGVkZWYgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIFdhbGtlclR5cGU7CisjZWxzZQordHlw
ZWRlZiBTaGFkb3dUcmVlV2Fsa2VyIFdhbGtlclR5cGU7CisjZW5kaWYKKwogdm9pZCBQYXJlbnRE
ZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCkKIHsKICAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKQEAgLTQ5LDE0ICsyNDAs
MjAgQEAgdm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hh
ZG93Um9vdCogcm9vdCkKIAogQ29udGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiBu
b2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQogewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDcm9zc1VwcGVyQm91
bmRhcnksIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q2FuU3RhcnRGcm9tU2hhZG93Qm91bmRh
cnkpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIFdhbGtlclR5cGUgd2Fsa2VyKG5vZGUs
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q3Jvc3NVcHBlckJvdW5kYXJ5LCBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OkNhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKKyNlbHNlICAgICAg
ICAgICAgICAgICAgICAgIAorICAgIFdhbGtlclR5cGUgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisK
ICAgICBDb250YWluZXJOb2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVy
c2VQYXJlbnQod2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm91
dE9mQ29tcG9zaXRpb24oKSA/IDAgOiBmb3VuZDsKKyAgICByZXR1cm4gZGV0YWlscyAmJiBkZXRh
aWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CiB9CiAKIE5vZGUqIG5leHRTaWJs
aW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIobm9kZSk7CisgICAgV2Fsa2VyVHlwZSB3YWxrZXIobm9kZSk7CisKICAgICBpZiAo
bm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgd2Fsa2VyLnBhcmVudCgp
OwogICAgICAgICB3YWxrZXIuZmlyc3RDaGlsZCgpOwpAQCAtNjksMTMgKzI2NiwxMyBAQCBOb2Rl
KiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKICAgICBOb2RlKiBwYXJlbnQgPSB3
YWxrZXIudHJhdmVyc2VQYXJlbnQobm9kZSk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5wc2V1ZG9F
bGVtZW50KEFGVEVSKTsKLQogICAgIHJldHVybiAwOwogfQogCiBOb2RlKiBwcmV2aW91c1NpYmxp
bmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlcihub2RlKTsKKyAgICBXYWxrZXJUeXBlIHdhbGtlcihub2RlKTsKKwogICAgIGlmIChu
b2RlLT5pc0FmdGVyUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIHdhbGtlci5wYXJlbnQoKTsK
ICAgICAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwpAQCAtOTQsMzQgKzI5MSw0NiBAQCBOb2RlKiBw
cmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiAKIE5vZGUqIG5leHRJblNjb3Bl
KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBw
ZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLm5leHQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgp
OworI2Vsc2UKKyAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKTsKKyNlbmRpZgog
fQogCiBOb2RlKiBwcmV2aW91c0luU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBG
SVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVO
QUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIucHJldmlv
dXMoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gTm9kZVRy
YXZlcnNhbDo6cHJldmlvdXMobm9kZSk7CisjZW5kaWYKIH0KIAogTm9kZSogcGFyZW50SW5TY29w
ZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1Vw
cGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5wYXJlbnQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdl
dCgpOworI2Vsc2UKKyAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworI2VuZGlmCiB9CiAK
IE5vZGUqIGxhc3RDaGlsZEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhN
RTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJM
RShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAz
MzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIubGFzdENoaWxk
KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIG5vZGUtPmxh
c3RDaGlsZCgpOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5oCmluZGV4IDJkYjNlNzU5NWNhY2MwZjljMDVmODZmZmExMTdiYWU0ODhk
NTg4MDQuLjRjYjc3Y2IyNjQ0OGIzOTEzY2M1YTAzNjczMGFkMDAwNzRlNmYxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApAQCAtNjQsNiArNjQsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9vdXRPZkNvbXBvc2l0aW9uOwogfTsKIAorQ29udGFpbmVy
Tm9kZSogcGFyZW50KGNvbnN0IE5vZGUqKTsKIENvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBO
b2RlKiwgUGFyZW50RGV0YWlscyopOwogQ29udGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBO
b2RlKiwgUGFyZW50RGV0YWlscyopOwogTm9kZSogbmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOwpA
QCAtNzYsNiArNzcsMTIgQEAgTm9kZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUqKTsKIE5v
ZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9kZSopOwogTm9kZSogbGFzdENoaWxkSW5TY29wZShj
b25zdCBOb2RlKik7CiAKK2lubGluZSBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSog
bm9kZSkKK3sKKyAgICBQYXJlbnREZXRhaWxzIGRldGFpbHM7CisgICAgcmV0dXJuIHBhcmVudChu
b2RlLCAmZGV0YWlscyk7Cit9CisKIGlubGluZSBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3Qg
Tm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKIHsKICAgICBpZiAoIW5vZGUtPm5l
ZWRzU2hhZG93VHJlZVdhbGtlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXgg
ZTNhNDgyMjJiOTNkMzhkNjcwZWMyYTIzODFmMGJmNmRhMTUxNzQyZC4uYjNlMzc4MmIxYzRmYzQ1
ZTUyYWY5MTliZDcyZTE2YTBhM2E0MmM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApA
QCAtNTcsNyArNTcsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXpl
QXNTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUs
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PiB7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgdm9pZCogcG9pbnRlcnNbM107CisjZWxzZQorICAgIHZvaWQqIHBvaW50
ZXJzWzJdOworI2VuZGlmCiAgICAgdW5zaWduZWQgY291bnRlcnNBbmRGbGFnc1sxXTsKIH07CiAK
QEAgLTI2Niw3ICsyNzAsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNo
YWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcgogCiAgICAgaWYgKCFp
bnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8ICFpc09sZGVzdCgpKQogICAgICAgICByZXR1
cm4gSW5zZXJ0aW9uRG9uZTsKLQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIC8vIEZJWE1F
OiBXaGVuIHBhcnNpbmcgPHZpZGVvIGNvbnRyb2xzPiwgaW5zZXJ0ZWRJbnRvKCkgaXMgY2FsbGVk
IG1hbnkgdGltZXMgd2l0aG91dCBpbnZva2luZyByZW1vdmVkRnJvbS4KICAgICAvLyBGb3Igbm93
LCB3ZSBjaGVjayBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93cm9vdC4gV2Ugd291bGQgbGlr
ZSB0byBBU1NFUlQoIW1fcmVnaXN0ZXJlZFNoYWRvd1Jvb3QpIGhlcmUuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2lnP2lkPTEwMTMxNgpAQCAtMjc3LDEyICsyODEs
MTMgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTaGFkb3dSb290OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXIKICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVE
aXN0cmlidXRpb24oKS0+cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CiAgICAgICAgIG1fcmVnaXN0
ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290ID0gdHJ1ZTsKICAgICB9Ci0KKyNlbmRpZgogICAgIHJl
dHVybiBJbnNlcnRpb25Eb25lOwogfQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmIG1fcmVnaXN0ZXJlZFdpdGhQ
YXJlbnRTaGFkb3dSb290KSB7CiAgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNv
bnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAgICAgIGlmICghcm9vdCkKQEAgLTI5Miw3ICsyOTcs
NyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlv
blBvaW50KQogICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3Rl
ckVsZW1lbnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jv
b3QgPSBmYWxzZTsKICAgICB9Ci0KKyNlbmRpZgogICAgIERvY3VtZW50RnJhZ21lbnQ6OnJlbW92
ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KIApAQCAtMzE3LDYgKzMyMiw3IEBAIHZvaWQgU2hh
ZG93Um9vdDo6dW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkKICAgICBzZXRIYXNTY29w
ZWRIVE1MU3R5bGVDaGlsZChtX251bWJlck9mU3R5bGVzID4gMCk7CiB9CiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJl
U2NvcGVEaXN0cmlidXRpb24oKQogewogICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQpAQCAt
MzI0LDcgKzMzMCw4IEBAIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5z
dXJlU2NvcGVEaXN0cmlidXRpb24oKQogCiAgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0
UHRyKG5ldyBTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOwogICAgIHJldHVybiBtX3Njb3BlRGlz
dHJpYnV0aW9uLmdldCgpOwotfSAgIAorfQorI2VuZGlmCiAKIHZvaWQgU2hhZG93Um9vdDo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKQEAgLTMzMyw3ICszNDAsOSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgVHJlZVNjb3Bl
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3ByZXYpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbmV4dCk7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgaW5mby5hZGRNZW1iZXIobV9zY29wZURpc3RyaWJ1dGlvbik7CisjZW5kaWYK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggMTUyNjkzOGVkZTUwNDBkZGM0MzM5
ZjU4ZmY4NjUxYTJjNzI1OWY3OS4uODU5ZjBkMjJkZWFkODJhZDhjN2RlMTA1NjRmMjgyMjI5MTQx
Y2U1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC04OCw5ICs4OCwxMSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZF
UlJJREU7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBTY29wZUNvbnRlbnREaXN0cmli
dXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5n
ZXQoKTsgfQogICAgIGNvbnN0IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmli
dXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAg
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBlbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpOworI2Vu
ZGlmCiAKICAgICBTaGFkb3dSb290VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhv
clNoYWRvd1Jvb3QgPyBBdXRob3JTaGFkb3dSb290IDogVXNlckFnZW50U2hhZG93Um9vdDsgfQog
ICAgIGJvb2wgaXNBY2Nlc3NpYmxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dGhvclNo
YWRvd1Jvb3Q7IH0KQEAgLTExMCw3ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgU2hhZG93Um9v
dCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBPd25QdHI8U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0
aW9uOworI2VuZGlmCiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlN0eWxlcyA6IDI4OwogICAgIHVu
c2lnbmVkIG1fYXBwbHlBdXRob3JTdHlsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcAppbmRleCAwNWVlYmFiNDEwZDg4YjQxZWI4MTE5MzEyYWQ5ZDkxYzI1ZDQxZWMyLi42OGUw
Nzk3MjI4N2IwMDUzMDZjYmRjODI5MWU4YjFmM2YyYTMyMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC01MSw2ICs1MSwxNCBAQCBwcml2YXRlOgog
ICAgICAgICA6IEhUTUxDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRl
bnRUYWcsIGRvY3VtZW50KQogICAgIHsKICAgICB9CisKKyAgICAvLyBUaGlzIG1hdGNoIHNob3Vs
ZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgdG8gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjptYXRjaFR5
cGVGb3IoKQorICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKiBub2RlKSBP
VkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgbm9k
ZSAhPSBub2RlLT5wYXJlbnROb2RlKCktPnF1ZXJ5U2VsZWN0b3Ioc3VtbWFyeVF1ZXJ5U2VsZWN0
b3IoKSwgQVNTRVJUX05PX0VYQ0VQVElPTikpCisgICAgICAgICAgICByZXR1cm4gQWx3YXlzTWF0
Y2hlczsKKyAgICAgICAgcmV0dXJuIE5ldmVyTWF0Y2hlczsKKyAgICB9CiB9OwogCiBQYXNzUmVm
UHRyPERldGFpbHNDb250ZW50RWxlbWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTIwLDYgKzEyOCwxMSBAQCB2b2lkIEhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoRGV0
YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJ
T04sIHRydWUpOwogfQogCitFbGVtZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZhbGxiYWNrU3Vt
bWFyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxl
bWVudCo+KHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1t
YXJ5KCk7Cit9CisKIEVsZW1lbnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5
KCkgY29uc3QKIHsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTI3LDcgKzE0MCw3IEBAIEVsZW1l
bnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKICAgICAgICAg
ICAgIHJldHVybiB0b0VsZW1lbnQoY2hpbGQpOwogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1lbnQqPih1c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0
Q2hpbGQoKSktPmZhbGxiYWNrU3VtbWFyeSgpOworICAgIHJldHVybiBmYWxsYmFja1N1bW1hcnko
KTsKIH0KIAogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNDYsOCAr
MTU5LDE4IEBAIGJvb2wgSFRNTERldGFpbHNFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjCiAgICAgaWYgKCFjaGlsZENvbnRleHQu
aXNPbkVuY2Fwc3VsYXRpb25Cb3VuZGFyeSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAobV9pc09wZW4pCisgICAgaWYgKG1faXNPcGVuKSB7CisjaWYgIUVOQUJMRShTSEFET1df
RE9NKQorICAgICAgICAvLyBUaGUgZmFsbGJhY2sgPHN1bW1hcnk+IHNob3VsZG4ndCBiZSB2aXNp
YmxlIHVubGVzcyBpdCBpcyB1c2VkIGFzIGEgbWFpbiBzdW1tYXJ5LgorICAgICAgICAvLyBXaXRo
IFNIQURPV19ET00sIDxkZXRhaWxzPiBjYW4ganVzdCBsZXQgPGNvbnRlbnQ+IGZhbGxiYWNrIHN5
c3RlbSB0YWtlIGNhcmUgb2YgdGhpcy4KKyAgICAgICAgaWYgKGNoaWxkQ29udGV4dC5ub2RlKCkt
Pmhhc1RhZ05hbWUoc3VtbWFyeVRhZykpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGZhbGxiYWNr
ID0gZmFsbGJhY2tTdW1tYXJ5KCk7CisgICAgICAgICAgICBpZiAoZmFsbGJhY2sgIT0gZmluZE1h
aW5TdW1tYXJ5KCkgJiYgZmFsbGJhY2sgPT0gY2hpbGRDb250ZXh0Lm5vZGUoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4g
SFRNTEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKKyAg
ICB9CiAKICAgICBpZiAoIWNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFyeVRh
ZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NSw2ICsxNzgsMjAgQEAgYm9vbCBIVE1M
RGV0YWlsc0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmIGMKICAgICByZXR1cm4gY2hpbGRDb250ZXh0Lm5vZGUoKSA9PSBmaW5kTWFp
blN1bW1hcnkoKSAmJiBIVE1MRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGls
ZENvbnRleHQpOwogfQogCit2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hh
bmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQoreworI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIENvbnRlbnREaXN0cmlidXRvcjo6
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpCisgICAgLy8gd2hpY2ggcmVhdHRhY2hlcyBjaGlsZHJl
biB0byBtYWtlIHRoZW0gYmVpbmcgcmUtZGlzdHJpYnV0ZWQgdG8gYXBwcm9wcmlhdGUgaW5zZXJ0
aW9uIHBvaW50cy4KKyAgICBpZiAoYXR0YWNoZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIG4g
PSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgbi0+
bGF6eVJlYXR0YWNoKCk7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKK30KKwogdm9pZCBI
VE1MRGV0YWlsc0VsZW1lbnQ6OnRvZ2dsZU9wZW4oKQogewogICAgIHNldEF0dHJpYnV0ZShvcGVu
QXR0ciwgbV9pc09wZW4gPyBudWxsQXRvbSA6IGVtcHR5QXRvbSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuaAppbmRleCA5ZGE5Njk4ODYxNDY0Y2QzZDBlNzJmMjE0NzY4
MDczYTIzYmQzNmJhLi4yNjY0ZDI1YzJkODMzNDllZjg1YjkzMDI0Y2JhZDQ5N2FlZjZkZmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKQEAgLTM4LDcgKzM4LDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLQorICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCwgTm9kZSosIE5vZGUqLCBpbnQpOworICAgIEVsZW1lbnQqIGZhbGxiYWNr
U3VtbWFyeSgpIGNvbnN0OwogICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpOwogCiAgICAg
Ym9vbCBtX2lzT3BlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IDFkN2ZlYmY1YzliODdjOWE1OWRlYTVmNGQ1MzU0NDAwZDY2NTE2M2MuLjdiZWIyYmQwNTc4
N2YwNWRiMzU4Yzk0Njg3YjQ3YTQ4ZWQxYTIxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcApAQCAtNTM2LDggKzUzNiwxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnVwZGF0ZVR5cGUoKQogICAgICAgICAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUp
OwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93
KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAg
ICAgICAgIGVsZW1lbnRTaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgog
CiAgICAgc2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNw
cAppbmRleCAzMzQ1ZDdhMDFlOGEzMGE1NWI0MDVkZjk4N2RlNDIyMjk1YTNhZjYyLi5lY2MzYjVh
ZjZiMGE0MTc5MTIxODdmYzc0ZGQ0MWVkYzFmMDUxZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKIAor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnku
aCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVt
ZW50LmgiCkBAIC00NDEsMyArNDQzLDUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZFNo
YWRvd0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQqIGhvc3QpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVO
QUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuaAppbmRleCBkZmVhYjhjYzdmZGJlNTBhZGY2MTA3ZThkNjBhMGRmMjI4NDE2
ZDBiLi45NTUzMWI0YjRjNTY1OGYxYzU2OGUxZmQ2NzM0NGMxNjhlMDA1NzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzcsNiAr
MzcsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29udGFpbmVyTm9kZTsKQEAgLTE2Myw0ICsxNjUsNSBAQCBpbmxpbmUgYm9vbCBDb250
ZW50RGlzdHJpYnV0b3I6Om5lZWRzRGlzdHJpYnV0aW9uKCkgY29uc3QKIAogfQogCisjZW5kaWYg
Ly8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAppbmRleCAyNGIzNzJhOWUyMDM4ODQ3
OThmZDY4YjU1ODhmYmEyMGNlYTIyYWQyLi5jNGNlYTRlOGE1MjQ5MzNhZGEzZmFkZGIyODBhNmMz
NWYyMGJkZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
U2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dFNlbGVjdG9yUXVlcnkuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9u
UG9pbnQuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKQEAgLTkxLDMgKzkzLDUgQEAg
Ym9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4mIHNpYmxpbmdzLCBpbnQgbnQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURP
V19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9y
UXVlcnkuaAppbmRleCA2YTRmMzM4MTU0NmFhYTNhMzA5ODk0NjM3NTM3OGYzNjA0NWUxYzFiLi5i
NzAzM2UxODcwMzYyNDIyN2U1N2UyN2FhZGU3MzkwY2ZiOGM3NGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3
LDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwpAQCAtNzYsNCArNzgsNSBAQCBwcml2YXRlOgogCiB9CiAKKyNlbmRpZiAvLyBF
TkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuaAppbmRleCA5ZDBjOGZjNDM1M2JmOTZjZTI0ZDFhMjZmMjUx
YWRjM2M5ODFhZDA4Li5jYTI2OWU4NjM5MGU1ZWI0MWZkNmM5YjM5ODNiOWJjYzIyMjg3NDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaApA
QCAtODgsNyArODgsNiBAQCBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0
aW9uUG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250
ZW50VGFnTmFtZShEb2N1bWVudCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KICAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9u
UG9pbnRUeXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ29udGVudEluc2VydGlvblBvaW50
OyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcAppbmRleCBlMDgzMThiZmY1YThlMGJiYzA0NDRmYzg3ODZkMzkxM2Y5OGM3Yzk2
Li4yNDRlODFiODk5YmRkZmVkOTBiZWQ4MWExZmVhYWE2ZTM0M2U1ZGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0zOSwxMCArMzksMzYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTaW1wbGVJbnNlcnRpb25Qb2ludDo6U2ltcGxl
SW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUluc2Vy
dGlvblBvaW50KQoreworfQorCitib29sIFNpbXBsZUluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgp
IGNvbnN0Cit7CisgICAgaWYgKCFjb250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY29uc3QgTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKKyAgICB3aGls
ZSAobm9kZSkgeworICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNpbXBsZUluc2VydGlvblBvaW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQor
eworICAgIHJldHVybiAhaXNTaGFkb3dCb3VuZGFyeSgpICYmIEhUTUxFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGNvbnRleHQpOworfQorCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQpCisgICAg
OiBTaW1wbGVJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fcmVnaXN0
ZXJlZFdpdGhTaGFkb3dSb290KGZhbHNlKQogewogfQpAQCAtNzksMjUgKzEwNSw2IEBAIGJvb2wg
SW5zZXJ0aW9uUG9pbnQ6OnNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdAogICAgIHJl
dHVybiBpc0FjdGl2ZSgpICYmICFoYXNEaXN0cmlidXRpb24oKTsKIH0KIAotYm9vbCBJbnNlcnRp
b25Qb2ludDo6aXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRyZWVTY29w
ZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBpc0FjdGl2ZSgpOwotfQotCi1ib29s
IEluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFjb250YWluaW5n
U2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgTm9kZSogbm9k
ZSA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBpZiAobm9kZS0+
aXNJbnNlcnRpb25Qb2ludCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
CiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2Rl
cygpIGNvbnN0CiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBjb250YWluaW5n
U2hhZG93Um9vdCgpKQpAQCAtMTExLDExICsxMTgsNiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJ
bnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0CiAgICAgcmV0dXJuIFN0
YXRpY05vZGVMaXN0OjphZG9wdChub2Rlcyk7CiB9CiAKLWJvb2wgSW5zZXJ0aW9uUG9pbnQ6OnJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCi17Ci0g
ICAgcmV0dXJuICFpc1NoYWRvd0JvdW5kYXJ5KCkgJiYgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29udGV4dCk7Ci19Ci0KIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNo
YW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRD
b3VudERlbHRhKTsKQEAgLTIyOSw0ICsyMzEsNiBAQCBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRp
b25Qb2ludDsKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aAppbmRleCA3NDI0M2U5Y2FhNDUzN2M1OTRhOTI5MGI0NjgxMWUzYjYwMDViY2U2Li5kMWQ1NjI2
MDU4OTFmYTM5ZTFhMTc0YjhiMWMwYTU3OTRlMDRmYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CitjbGFzcyBTaW1wbGVJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJs
aWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgU2hhZG93SW5zZXJ0aW9uUG9pbnQsCkBAIC01
NCwxOSArNTQsMzcgQEAgcHVibGljOgogICAgICAgICBIYXNUb01hdGNoU2VsZWN0b3IKICAgICB9
OwogCisgICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqKSB7IHJldHVybiBB
bHdheXNNYXRjaGVzOyB9CisgICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNv
bnN0ID0gMDsKKworICAgIGJvb2wgYWx3YXlzTWF0Y2hlcyhOb2RlKiBub2RlKSB7IHJldHVybiBt
YXRjaFR5cGVGb3Iobm9kZSkgPT0gQWx3YXlzTWF0Y2hlczsgfQorCisgICAgLy8gWFhYOiBTaG91
bGQgYmUgcHVzaGVkIGJlaGluZCB0aGUgZmxhZyAtIGJ1aWx0LWlucyBhcmUgYWx3YXlzIGFjdGl2
ZSBhbmQgYm91bmRhcnkuCisgICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QgeyByZXR1
cm4gdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpICYmIGlzQWN0aXZlKCk7
IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBTaW1wbGVJ
bnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworcHJpdmF0
ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERTsKK307CisKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9u
UG9pbnQgeworcHVibGljOgorCiAgICAgdmlydHVhbCB+SW5zZXJ0aW9uUG9pbnQoKTsKIAogICAg
IGJvb2wgaGFzRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gIW1fZGlzdHJpYnV0aW9uLmlz
RW1wdHkoKTsgfQogICAgIHZvaWQgc2V0RGlzdHJpYnV0aW9uKENvbnRlbnREaXN0cmlidXRpb24m
IGRpc3RyaWJ1dGlvbikgeyBtX2Rpc3RyaWJ1dGlvbi5zd2FwKGRpc3RyaWJ1dGlvbik7IH0KICAg
ICB2b2lkIGNsZWFyRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dGlvbi5jbGVhcigpOyB9Ci0g
ICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0FjdGl2ZSgpIGNv
bnN0OwogCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RGlzdHJpYnV0ZWROb2RlcygpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqKSB7IHJldHVy
biBBbHdheXNNYXRjaGVzOyB9CiAgICAgdmlydHVhbCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNl
bGVjdG9yTGlzdCgpIHsgcmV0dXJuIGVtcHR5U2VsZWN0b3JMaXN0KCk7IH0KLSAgICB2aXJ0dWFs
IFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBj
YW5BZmZlY3RTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIHJl
c2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0OwpAQCAtOTAsMTIgKzEwOCwxMSBAQCBwdWJsaWM6
CiAKIHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBh
ZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBp
c0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAog
cHJpdmF0ZToKIApAQCAtMTAzLDMwICsxMjAsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVn
aXN0ZXJlZFdpdGhTaGFkb3dSb290OwogfTsKIAotaW5saW5lIEluc2VydGlvblBvaW50KiB0b0lu
c2VydGlvblBvaW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlz
SW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc2VydGlvblBvaW50
Kj4obm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Q
b2ludChjb25zdCBOb2RlKiBub2RlKQotewotICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0lu
c2VydGlvblBvaW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Q
b2ludCo+KG5vZGUpOwotfQorSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSop
OworY29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSopOwog
CiBpbmxpbmUgYm9vbCBpc0FjdGl2ZUluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7
CiAgICAgcmV0dXJuIG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlvblBvaW50
KG5vZGUpLT5pc0FjdGl2ZSgpOwogfQogCi1pbmxpbmUgYm9vbCBpc0xvd2VyRW5jYXBzdWxhdGlv
bkJvdW5kYXJ5KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0luc2Vy
dGlvblBvaW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdG9JbnNlcnRp
b25Qb2ludChub2RlKS0+aXNTaGFkb3dCb3VuZGFyeSgpOwotfQotCiBpbmxpbmUgTm9kZSogcGFy
ZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChu
b2RlKTsKQEAgLTE2MSw2ICsxNjIsMzYgQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09m
UGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2VydGlvblBvaW50
KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAorI2Vsc2UKKworY2xhc3MgSW5z
ZXJ0aW9uUG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgeworcHVibGljOgorICAg
IGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK3By
b3RlY3RlZDoKKyAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpIDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9j
dW1lbnQpIHsgfQorfTsKKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorCitpbmxpbmUg
SW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NF
UlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKworaW5saW5lIGNvbnN0IEluc2VydGlv
blBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJU
KCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBib29sIGlzTG93
ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUgfHwg
IW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcApp
bmRleCA0NjUyMmM0NDUzYmMzZWIwMzYxZmQ0NjExYWQxOTY3MjI2Y2RkMWMwLi42ZTI3N2E0MGQ5
NGYwOWE1MWYzNjBkNjBmOTVmN2M5ZDY5YTVjOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCkBAIC0zMSw2ICszMSw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIK
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsMyArODcsNCBAQCB2b2lkIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNl
bGVjdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCmluZGV4IGQwZjJkZTY4
MjFiMzI1MDkxNmM3ZWMxNmRlZDRkYjc1OTg0YTA4MTcuLmIwMjA3M2Q0ZjJjMzc5NWQ3ODc1ZTRh
ZDVlZGQ4YzQ5Nzc3MTdjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2VsZWN0UnVsZUZlYXR1cmVTZXQuaApAQCAtMzEsOSArMzEsMTIgQEAKICNpZm5kZWYgU2VsZWN0
UnVsZUZlYXR1cmVTZXRfaAogI2RlZmluZSBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCiAKKwogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VsZWN0UnVsZUZl
YXR1cmVTZXQgewpAQCAtODUsNCArODgsNSBAQCBpbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVy
ZVNldDo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdAogCiB9
CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGJlZTgyMDQzYWE4MDY2MzM2MDE5ZmRhNGI5NGRlY2ZkMzRk
YTRiMWYuLjE1ZWM1MWZhY2FmOGU1NDY2Mjk2NGRiYWE0OTU2YThiMjVlZGRiZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0OCw3ICszNDgsMTEgQEAgYm9vbCBJbnRl
cm5hbHM6Omhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJp
bmcmIGlkVmFsdWUsIEUKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3Vy
ZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1
ZSk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEludGVybmFs
czo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmlu
ZyYgY2xhc3NOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM1OCw3ICszNjIsMTEgQEAgYm9v
bCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBj
b25zdCBTdHJpbmcmIGNsYXNzTmEKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigp
LmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yQ2xh
c3MoY2xhc3NOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJv
b2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhv
c3QsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0z
NjgsNyArMzc2LDExIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUlu
U2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBob3N0LT5zaGFk
b3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygp
KS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBz
ZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFz
cywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNzgsNiArMzkwLDcgQEAgYm9vbCBJbnRlcm5hbHM6
Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBT
dHJpbmcmIHAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBob3N0LT5z
aGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRv
dygpKTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0gImNoZWNrZWQiKQogICAgICAgICByZXR1cm4g
ZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNrZWQoKTsKQEAgLTM5NSw2ICs0MDgsNyBAQCBi
b29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQq
IGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxl
Y3RvckZvclZpc2l0ZWQoKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDIsOCArNDU2LDEwIEBAIGJvb2wgSW50ZXJuYWxz
OjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eSwgZG91CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludChjb25z
dCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAg
cmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCh0b1NoYWRv
d1Jvb3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAg
ICByZXR1cm4gMDsKQEAgLTQ1MSw4ICs0NjcsMTAgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRv
d0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24K
IAogYm9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlm
IChyb290ICYmIHJvb3QtPmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gU2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjpoYXNDb250ZW50RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOwor
I2VuZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAg
LTQ2NSw3ICs0ODMsMTEgQEAgc2l6ZV90IEludGVybmFsczo6Y291bnRFbGVtZW50U2hhZG93KGNv
bnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gU2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjpjb3VudEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJvb3QpKTsK
KyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYgCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjphdHRh
Y2hlZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ4MCw2ICs1MDIsNyBAQCBi
b29sIEludGVybmFsczo6YXR0YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAK
IE5vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAt
NDg3LDEwICs1MTAsMTQgQEAgTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKE5v
ZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLm5leHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIHdh
bGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50
ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ5OCwxMCArNTI1
LDE0IEBAIE5vZGUqIEludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9k
ZSk7CiAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOwor
I2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6Omxhc3RD
aGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MDksMTAgKzU0MCwxNCBAQCBOb2RlKiBJ
bnRlcm5hbHM6Omxhc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2Vy
Lmxhc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdhbGtlcihOb2Rl
KiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAg
IHJldHVybiAwOwpAQCAtNTIwLDEwICs1NTUsMTQgQEAgTm9kZSogSW50ZXJuYWxzOjpuZXh0Tm9k
ZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLm5leHQoKTsKICAgICByZXR1
cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2Rl
KiBJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MzEs
NiArNTcwLDkgQEAgTm9kZSogSW50ZXJuYWxzOjpwcmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fs
a2VyKG5vZGUpOwogICAgIHdhbGtlci5wcmV2aW91cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0
KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6
OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IGI1ODc1YjExMDZkOGQ1
NTJlNzg0MzQxMjc5YzkxNGIxYjY3MmJiYjMuLjFiMTEzMjkzOGMxMGU4YmViYjc2MGVlNzEyMmIw
Y2Y4NjQ3NmQ0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTEwOCw3
ICsxMDgsNyBAQAogICAgICAgJ0VOQUJMRV9SVUJZPTEnLAogICAgICAgJ0VOQUJMRV9TQU5EQk9Y
PTEnLAogICAgICAgJ0VOQUJMRV9TQ1JJUFRFRF9TUEVFQ0g9MScsCi0gICAgICAnRU5BQkxFX1NI
QURPV19ET009MScsCisgICAgICAnRU5BQkxFX1NIQURPV19ET009MCcsCiAgICAgICAnRU5BQkxF
X1NNT09USF9TQ1JPTExJTkc9MScsCiAgICAgICAnRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM9MCcs
CiAgICAgICAnRU5BQkxFX1NRTF9EQVRBQkFTRT0xJywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184099</attachid>
            <date>2013-01-22 18:26:51 -0800</date>
            <delta_ts>2013-01-22 20:29:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130123112344.patch</filename>
            <type>text/plain</type>
            <size>47366</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggZDhkNjljMzJmYzUxY2I2ZjRhYmU4OGYwMTJkZmMyYTk1ZjA2ZDdkOS4uMDBhNmMx
MGIxNTcwNjJkZWVmMDE4N2I2MDEwYmVjY2QxMmUzMWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNzYxLDcgKzc2MSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1w
dAogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbWF0Y2hI
b3N0UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKKwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVs
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCA4YWNh
YmU1MGFlNzJkMWJlMTdkNGEzNWY3YjM2Y2YzNjRkYWYyMmI3Li5hNjM1NzBhNDNiNTUzYzExZWM1
YTI3Mzg4ZGE5MmExODA4MTdmNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJl
c29sdmVyLmNwcApAQCAtMTkyLDcgKzE5Miw2IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjph
ZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBob3N0UnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlCiAg
ICAgICAgICAgICBydWxlLT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4oaG9z
dFN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdzKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogYm9vbCBT
dHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKQEAgLTIzNyw2ICsyMzYsNyBAQCB2b2lkIFN0eWxl
U2NvcGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmVj
dG9yPFJ1bGVTZXQqPgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQorI2VuZGlmCiAKIHZv
aWQgU3R5bGVTY29wZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVS
ZXNvbHZlci5oCmluZGV4IDNiZTNmZjRmNzBjNzM3NWJkMDE0MjZhMDBiYTQyNDEyODQ2MmNjMGUu
LmM1Zjc3NmYzYWUxNDExNzQyNDg4OTdmNjk5ODgxM2U0Y2Y5MjQ4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKQEAgLTc1LDkgKzc1LDExIEBAIHB1YmxpYzoKICAg
ICBib29sIG1hdGNoZXNTdHlsZUJvdW5kcyhjb25zdCBTdGFja0ZyYW1lJiBmcmFtZSkgY29uc3Qg
eyByZXR1cm4gZnJhbWUubV9hdXRob3JTdHlsZUJvdW5kc0luZGV4ID09IG1fc3RhY2tQYXJlbnRC
b3VuZHNJbmRleDsgfQogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVzVG8oUnVsZUZlYXR1cmVTZXQm
KTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQgYWRkSG9zdFJ1bGUoU3R5bGVS
dWxlSG9zdCosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgY29uc3QgQ29udGFpbmVy
Tm9kZSogc2NvcGUpOwogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RS
dWxlcyhjb25zdCBFbGVtZW50Kik7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVt
ZW50KiwgVmVjdG9yPFJ1bGVTZXQqPiYgbWF0Y2hlZFJ1bGVzKTsKKyNlbmRpZgogCiAgICAgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAppbmRleCA5NzBjZGMyMDU5N2M1MGIy
MThkZjQzMTAzOGU2YzU4YjllYWJhYWU2Li41YjdjZWU4MmNkNTI1MTkzYTE0YTcwNTU1NWU5NDBm
NWJjZDhlMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldh
bGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3Bw
CkBAIC00NSw2ICs0NSw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKIHsK
ICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBBU1NFUlQobV9kaXN0cmlidXRlZE5vZGUpOworCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNo
YWRvd09mUGFyZW50KG1fbm9kZSkpIHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNl
cnRpb25Qb2ludCA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3Io
bV9kaXN0cmlidXRlZE5vZGUpKSB7CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2lu
dDsKQEAgLTUyLDIwICs1NCwzMCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKKwogICAgIGlm
ICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBh
cmVudE5vZGUoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgaWYgKCEobV9ub2Rl
ICYmIG1fbm9kZS0+aXNTaGFkb3dSb290KCkgJiYgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjph
c3NpZ25lZFRvKHRvU2hhZG93Um9vdChtX25vZGUpKSkpCiAgICAgICAgICAgICBtX2Rpc3RyaWJ1
dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBm
YWxzZTsKKyNlbHNlCisgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgICAg
ICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFk
b3dSb290KG1fbm9kZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWdu
ZWRUbyhzaGFkb3dSb290KSkgewogICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKICAg
ICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSB0cnVlOwogICAgICAgICByZXR1cm47
CiAgICAgfQorI2VuZGlmCisKICAgICBtX25vZGUgPSBzaGFkb3dSb290LT5ob3N0KCk7CiAgICAg
bV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9p
bnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAKaW5kZXggYWI1OGQ2MTUyYmM2MGQ5MDUxN2FlNGFiOGNlZWEwN2I0OGZjYjE4Yy4u
ZDIzMGY4NjQ4NzgyNDZmNjkwMzhjNGRhN2JhMzE2YzlmZmQ0NGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTEsNCArMSwzIEBA
Ci0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCkBAIC0yOCw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KwogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCkBAIC0zMTMsMyArMzE0LDUgQEAgdm9pZCBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UKKwor
I2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDgzNDllMjFhYTk4M2YwYTg0YTExM2MxNjc4MGU0
OWVjNjc2NjRmM2UuLjJmMDJhN2MzYmM0NTUwNWY1YjQyODI4NTNlYTZkMjgzZjM4ZmYxNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTMx
LDYgKzMxLDggQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsKQEAgLTE0Myw0ICsxNDUsNSBAQCBpbmxpbmUgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSog
bm9kZSwgUG9saQogCiB9IC8vIG5hbWVzcGFjZQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19E
T00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjMjAzMWRhNTM5Mzg1NmY4YzMz
MjdiN2U3MWFlN2RiYTBjZmQ4OWUzLi40MTA5ZGNlMTYzY2MxNGI3ZTc4Mjg1NWUxMDJjYmQwOGE1
MmRjYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04MDgsMTAgKzgwOCwxMiBAQCBzdGF0
aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZElkLCBjbwogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxl
bWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKSB7CiAgICAg
ICAgIGlmIChzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQo
cGFyZW50RWxlbWVudFNoYWRvdywgbmFtZSwgbmV3VmFsdWUpKQogICAgICAgICAgICAgcGFyZW50
RWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgIH0KKyNlbmRpZgog
CiAgICAgcGFyc2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCkBAIC05NDgsNiArOTUwLDcg
QEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5n
JiBuZXdDbGFzc1N0cmluZykKIAogYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdywg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkK
IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBBU1NFUlQoZWxlbWVudFNoYWRvdyk7CiAg
ICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBlbGVtZW50U2hhZG93
LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRvdyk7CiAK
QEAgLTk3OSw2ICs5ODIsMTIgQEAgYm9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJp
YnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRvdyogZWwKICAgICB9CiAKICAg
ICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1lLmxvY2FsTmFt
ZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnRTaGFkb3cpOworICAgIFVOVVNF
RF9QQVJBTShuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0obmV3VmFsdWUpOworICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0
ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpAQCAtMTQ1Niw5ICsxNDY1LDEyIEBAIEVsZW1lbnRTaGFk
b3cqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvdygpCiAKIHZvaWQgRWxlbWVudDo6ZGlkQWZmZWN0U2Vs
ZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykKIHsKKyAgICBVTlVTRURfUEFSQU0obWFz
ayk7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JE
aXN0cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFkb3ctPmRpZEFmZmVjdFNlbGVj
dG9yKG1hc2spOworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6
Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmNwcAppbmRleCAzMmRkNGYwNGQ1N2FlYWM0MDMyZWVhZjJmZDFlZmNjZjUyNjhhZTRk
Li5jNGNlNjI0Nzc1MGZhZjM5MjMwYTZiN2VkOTVkNWFjZDkyNmY1ZDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC04Miw3ICs4Miw5IEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jv
b3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0SG9zdChzaGFkb3dIb3N0KTsKICAgICBzaGFkb3dS
b290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hhZG93SG9zdC0+dHJlZVNjb3BlKCkpOwogICAgIG1f
c2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgpKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBtX2Rpc3RyaWJ1dG9yLmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKHNoYWRvd0hvc3Qp
OworI2VuZGlmCiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90
aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgLy8gRXhpc3RlbmNlIG9mIHNoYWRvdyByb290
cyByZXF1aXJlcyB0aGUgaG9zdCBhbmQgaXRzIGNoaWxkcmVuIHRvIGRvIHRyYXZlcnNhbCB1c2lu
ZyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuCkBAIC0xMTcsMTMgKzExOSwxNiBAQCB2b2lkIEVs
ZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKICAgICAgICAgQ2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKICAgICB9CiAK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtX2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0
cmlidXRpb24oc2hhZG93SG9zdCk7CisjZW5kaWYKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93Ojph
dHRhY2goKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbnRlbnREaXN0cmlidXRv
cjo6ZW5zdXJlRGlzdHJpYnV0aW9uKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKLQorI2VuZGlmCiAg
ICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJv
b3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoIXJvb3QtPmF0dGFj
aGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKQEAgLTE3Myw3ICsxNzgsMTAgQEAg
dm9pZCBFbGVtZW50U2hhZG93OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgICAgICBpbmZvLmFkZE1lbWJlcihzaGFkb3dSb290
KTsKICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm5leHQoKTsKICAgICB9CisKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3RyaWJ1dG9yKTsK
KyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgK
aW5kZXggODkzMzYzYmJhODdiNDg4ZTdhZmQxMmQwMjg1Y2Q0YTU0NDQxZWE3My4uMDA1MmVjZDZh
ZmU5YWJkNjlhOGQ0NGQyNGZhN2Q5ZmFkOTMzNDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5oCkBAIC02MywxOCArNjMsMjYgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNTdHlsZVJl
Y2FsYygpOwogICAgIHZvaWQgcmVjYWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwogCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyBt
X2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQogICAgIHZvaWQg
ZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykgeyBtX2Rpc3RyaWJ1
dG9yLmRpZEFmZmVjdFNlbGVjdG9yKGhvc3QoKSwgbWFzayk7IH0KICAgICB2b2lkIHdpbGxBZmZl
Y3RTZWxlY3RvcigpIHsgbV9kaXN0cmlidXRvci53aWxsQWZmZWN0U2VsZWN0b3IoaG9zdCgpKTsg
fQogCi0gICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpOwotICAgIGNvbnN0IENv
bnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsKKyAgICBDb250ZW50RGlzdHJp
YnV0b3ImIGRpc3RyaWJ1dG9yKCkgeyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQorICAgIGNvbnN0
IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Ry
aWJ1dG9yOyB9CisjZWxzZQorICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgfQor
ICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uKCkgeyB9CisjZW5kaWYKIAogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwotcHJpdmF0ZToKIAorcHJp
dmF0ZToKICAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7CisK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb250ZW50RGlzdHJpYnV0b3IgbV9kaXN0cmli
dXRvcjsKKyNlbmRpZgogfTsKIAogaW5saW5lIFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFkb3c6Onlv
dW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CkBAIC04NywxNiArOTUsNiBAQCBpbmxpbmUgU2hhZG93
Um9vdCogRWxlbWVudFNoYWRvdzo6b2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQogCi1pbmxpbmUgQ29udGVudERpc3RyaWJ1dG9yJiBF
bGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpCi17Ci0gICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7
Ci19Ci0KLWlubGluZSBjb25zdCBDb250ZW50RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRp
c3RyaWJ1dG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQogaW5s
aW5lIEVsZW1lbnQqIEVsZW1lbnRTaGFkb3c6Omhvc3QoKSBjb25zdAogewogICAgIEFTU0VSVCgh
bV9zaGFkb3dSb290cy5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWwuY3BwCmluZGV4IDgzYmI3ZWM3ZTc5ZWYyZjIxNjNlZjA3NzUzNzlkNzc3
ZTY5ZWZmZjIuLjU0ZGRhZjA0ODRjNjdhNjI2OTdiOTMyYWNmMWMwN2Y4MGE0MGU3YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKQEAgLTI4LDEy
ICsyOCwyMDMgQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAKICNpbmNs
dWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
IHsKIAorLy8gQSBzaW1wbGlmaWVkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci1jb21wYXRpYmxl
IHdhbGtlciBpbXBsZW1lbnRhdGlvbiBmb3Igbm9uLVNIQURPV19ET00gY29uZmlndXJhdGlvbnMu
CitjbGFzcyBTaGFkb3dUcmVlV2Fsa2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTaGFkb3dU
cmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAg
eyB9CisKKyAgICBOb2RlKiBnZXQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPiht
X25vZGUpOyB9CisKKyAgICB2b2lkIHBhcmVudCgpIHsgbV9ub2RlID0gdHJhdmVyc2VQYXJlbnQo
bV9ub2RlKTsgfQorICAgIHZvaWQgbmV4dFNpYmxpbmcoKSB7IG1fbm9kZSA9IHRyYXZlcnNlTmV4
dFNpYmxpbmcobV9ub2RlKTsgfQorICAgIHZvaWQgcHJldmlvdXNTaWJsaW5nKCkgeyBtX25vZGUg
PSB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhtX25vZGUpOyB9CisgICAgdm9pZCBsYXN0Q2hpbGQo
KSB7IG1fbm9kZSA9IG1fbm9kZS0+bGFzdENoaWxkKCk7IH0KKyAgICB2b2lkIGZpcnN0Q2hpbGQo
KSB7IG1fbm9kZSA9IG1fbm9kZS0+Zmlyc3RDaGlsZCgpOyB9CisKKyAgICB2b2lkIG5leHQoKSB7
IG1fbm9kZSA9IHRyYXZlcnNlTmV4dChtX25vZGUpOyB9CisgICAgdm9pZCBwcmV2aW91cygpIHsg
bV9ub2RlID0gdHJhdmVyc2VQcmV2aW91cyhtX25vZGUpOyB9CisKKyAgICBzdGF0aWMgTm9kZSog
dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqID0gMCk7CisKK3ByaXZh
dGU6CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dChjb25zdCBOb2RlKik7CisgICAgc3Rh
dGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXMoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2Rl
KiB0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJh
dmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBuZXh0
SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSog
cHJldmlvdXNJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29uc3QgTm9kZSopOworICAgIHN0YXRp
YyBib29sIGlzU2hhZG93Qm91bmRhcnkoTm9kZSogbm9kZSkgeyByZXR1cm4gbm9kZS0+aXNTaGFk
b3dSb290KCkgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpOyB9CisKKyAgICBjb25zdCBOb2Rl
KiBtX25vZGU7Cit9OworCisjaWYgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKKworc3RhdGljIElu
c2VydGlvblBvaW50KiBmaW5kSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAg
ICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgU2hhZG93Um9vdCogcm9v
dCA9IHBhcmVudC0+eW91bmdlc3RTaGFkb3dSb290KCk7CisgICAgaWYgKCFyb290KQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGJvb2wgaGFzSW5zZXJldGlvblBvaW50ID0gcGFyZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6ZGV0YWlsc1RhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6c3VtbWFyeVRhZyk7CisgICAgaWYgKCFoYXNJbnNlcmV0aW9uUG9pbnQpCisgICAgICAg
IHJldHVybiAwOworCisgICAgZm9yIChOb2RlKiBtYXlJbnNlcnRpb25Qb2ludCA9IHJvb3QtPmZp
cnN0Q2hpbGQoKTsgbWF5SW5zZXJ0aW9uUG9pbnQ7IG1heUluc2VydGlvblBvaW50ID0gbWF5SW5z
ZXJ0aW9uUG9pbnQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKG1heUluc2VydGlvblBv
aW50LT5pc0luc2VydGlvblBvaW50KCkgJiYgdG9JbnNlcnRpb25Qb2ludChtYXlJbnNlcnRpb25Q
b2ludCktPmFsd2F5c01hdGNoZXMoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpKQorICAgICAgICAg
ICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQobWF5SW5zZXJ0aW9uUG9pbnQpOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBWZWN0b3I8Tm9kZSo+IGdldERpc3RyaWJ1dGVk
Tm9kZShJbnNlcnRpb25Qb2ludCogcGFyZW50KQoreworICAgIFZlY3RvcjxOb2RlKj4gbm9kZXM7
CisgICAgRWxlbWVudCogaG9zdCA9IHBhcmVudC0+c2hhZG93SG9zdCgpOworICAgIEFTU0VSVCho
b3N0KTsKKyAgICBpZiAoIWhvc3QpCisgICAgICAgIHJldHVybiBub2RlczsKKworICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBob3N0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmFsd2F5c01hdGNoZXMoY2hpbGQp
KQorICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGNoaWxkKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bm9kZXM7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorCitpbmxpbmUg
Tm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9kZSwg
UGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQor
ICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9p
bnQobm9kZSkpIHsKKyAgICAgICAgLy8gWFhYOiBTaG91bGQgYmUgaGlkZSBpbnNlcnRpb24gcG9p
bnQgYmVoaW5kIHRoZSB3YWxrZXIgLSBOZWVkcyBtb3JlIGlmL2RlZiBpbiBOb2RlUmVuZGVyaW5n
Q29udGV4dAorICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgIGRldGFpbHMtPmRpZFRy
YXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICByZXR1cm4gbm9k
ZS0+cGFyZW50Tm9kZSgpOworICAgIH0KKyNlbmRpZgorCisgICAgZm9yIChOb2RlKiB3YWxrID0g
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyB3YWxrOyB3YWxrID0gd2Fsay0+cGFyZW50T3JIb3N0
Tm9kZSgpKSB7CisgICAgICAgIGlmICghaXNTaGFkb3dCb3VuZGFyeSh3YWxrKSkKKyAgICAgICAg
ICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgTm9k
ZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0KGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgZm9yIChOb2RlKiB3YWxrID0gbmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShub2RlKTsg
d2Fsazsgd2FsayA9IG5leHRJbmNsdWRpbmdDb250YWluaW5nU2NvcGUod2FsaykpIHsKKyAgICAg
ICAgaWYgKCFpc1NoYWRvd0JvdW5kYXJ5KHdhbGspKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fs
a2VyOjp0cmF2ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2Rl
KiB3YWxrID0gcHJldmlvdXNJbmNsdWRpbmdDb250YWluaW5nU2NvcGUobm9kZSk7IHdhbGs7IHdh
bGsgPSBwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSh3YWxrKSkgeworICAgICAgICBp
ZiAoIWlzU2hhZG93Qm91bmRhcnkod2FsaykpCisgICAgICAgICAgICByZXR1cm4gd2FsazsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6
OnRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoREVU
QUlMU19FTEVNRU5UKQorICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBm
aW5kSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmli
dXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICAvLyBTdGF5aW5nIGluc2lkZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBpZiAoZGlz
dHJpYnV0aW9uW2ldID09IG5vZGUgJiYgZGlzdHJpYnV0aW9uLmxhc3QoKSAhPSBub2RlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRpb25baSArIDFdOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICAvLyBTdGVwcGluZyBvdXQgZnJvbSBkaXN0cmlidXRlZCBsb2NhdGlvbgor
ICAgICAgICBub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
U3RlcHBpbmcgaW50byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChub2RlLT5pc0luc2VydGlv
blBvaW50KCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0aW9uID0gZ2V0
RGlzdHJpYnV0ZWROb2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkp
KTsKKyAgICAgICAgICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZGlzdHJpYnV0aW9uLmZpcnN0KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYKKworICAgIHJldHVybiBub2RlLT5uZXh0U2libGluZygpOworfQorCitpbmxpbmUgTm9kZSog
U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9k
ZSkKK3sKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorICAgIGlmIChJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAg
VmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9u
UG9pbnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlzdHJpYnV0aW9uLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICAvLyBTdGF5aW5nIGluc2lkZSBkaXN0cmlidXRpb24u
CisgICAgICAgICAgICBpZiAoZGlzdHJpYnV0aW9uW2ldID09IG5vZGUgJiYgZGlzdHJpYnV0aW9u
LmZpcnN0KCkgIT0gbm9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0aW9uW2kg
LSAxXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU3RlcHBpbmcgb3V0IGZyb20g
ZGlzdHJpYnV0ZWQgbG9jYXRpb24KKyAgICAgICAgbm9kZSA9IGluc2VydGlvblBvaW50OworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXBwaW5nIGludG8gZGlzdHJpYnV0aW9uLgorICAgICAg
ICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKSB7CisgICAgICAgICAgICBWZWN0b3I8Tm9k
ZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9kZSh0b0luc2VydGlvblBvaW50KGNv
bnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSk7CisgICAgICAgICAgICBpZiAoIWRpc3RyaWJ1dGlvbi5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3RyaWJ1dGlvbi5sYXN0KCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBub2RlLT5wcmV2aW91c1NpYmxp
bmcoKTsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6Om5leHRJbmNsdWRpbmdD
b250YWluaW5nU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogd2FsayA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkpCisgICAgICAgIHJldHVybiB3YWxrOworCisgICAg
Zm9yIChub2RlID0gdHJhdmVyc2VQYXJlbnQobm9kZSk7IG5vZGU7IG5vZGUgPSB0cmF2ZXJzZVBh
cmVudChub2RlKSkgeworICAgICAgICBpZiAobm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAg
ICAgIHJldHVybiBub2RlLT5uZXh0U2libGluZygpOworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNJbmNsdWRpbmdDb250
YWluaW5nU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogd2FsayA9IE5v
ZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpKQorICAgICAgICByZXR1cm4gd2FsazsKKyAgICBy
ZXR1cm4gdHJhdmVyc2VQYXJlbnQobm9kZSk7Cit9CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
K3R5cGVkZWYgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIFdhbGtlclR5cGU7CisjZWxzZQordHlw
ZWRlZiBTaGFkb3dUcmVlV2Fsa2VyIFdhbGtlclR5cGU7CisjZW5kaWYKKwogdm9pZCBQYXJlbnRE
ZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCkKIHsKICAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKQEAgLTQ5LDE0ICsyNDAs
MjAgQEAgdm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hh
ZG93Um9vdCogcm9vdCkKIAogQ29udGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiBu
b2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQogewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDcm9zc1VwcGVyQm91
bmRhcnksIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q2FuU3RhcnRGcm9tU2hhZG93Qm91bmRh
cnkpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIFdhbGtlclR5cGUgd2Fsa2VyKG5vZGUs
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q3Jvc3NVcHBlckJvdW5kYXJ5LCBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OkNhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKKyNlbHNlICAgICAg
ICAgICAgICAgICAgICAgIAorICAgIFdhbGtlclR5cGUgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisK
ICAgICBDb250YWluZXJOb2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVy
c2VQYXJlbnQod2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm91
dE9mQ29tcG9zaXRpb24oKSA/IDAgOiBmb3VuZDsKKyAgICByZXR1cm4gZGV0YWlscyAmJiBkZXRh
aWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CiB9CiAKIE5vZGUqIG5leHRTaWJs
aW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogewotICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIobm9kZSk7CisgICAgV2Fsa2VyVHlwZSB3YWxrZXIobm9kZSk7CisKICAgICBpZiAo
bm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgd2Fsa2VyLnBhcmVudCgp
OwogICAgICAgICB3YWxrZXIuZmlyc3RDaGlsZCgpOwpAQCAtNjksMTMgKzI2NiwxMyBAQCBOb2Rl
KiBuZXh0U2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKICAgICBOb2RlKiBwYXJlbnQgPSB3
YWxrZXIudHJhdmVyc2VQYXJlbnQobm9kZSk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5wc2V1ZG9F
bGVtZW50KEFGVEVSKTsKLQogICAgIHJldHVybiAwOwogfQogCiBOb2RlKiBwcmV2aW91c1NpYmxp
bmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlcihub2RlKTsKKyAgICBXYWxrZXJUeXBlIHdhbGtlcihub2RlKTsKKwogICAgIGlmIChu
b2RlLT5pc0FmdGVyUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIHdhbGtlci5wYXJlbnQoKTsK
ICAgICAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwpAQCAtOTQsMzQgKzI5MSw0NiBAQCBOb2RlKiBw
cmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiAKIE5vZGUqIG5leHRJblNjb3Bl
KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBw
ZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLm5leHQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgp
OworI2Vsc2UKKyAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKTsKKyNlbmRpZgog
fQogCiBOb2RlKiBwcmV2aW91c0luU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBG
SVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVO
QUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIucHJldmlv
dXMoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gTm9kZVRy
YXZlcnNhbDo6cHJldmlvdXMobm9kZSk7CisjZW5kaWYKIH0KIAogTm9kZSogcGFyZW50SW5TY29w
ZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1Vw
cGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5wYXJlbnQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdl
dCgpOworI2Vsc2UKKyAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworI2VuZGlmCiB9CiAK
IE5vZGUqIGxhc3RDaGlsZEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhN
RTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJM
RShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAz
MzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIubGFzdENoaWxk
KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIG5vZGUtPmxh
c3RDaGlsZCgpOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5oCmluZGV4IDJkYjNlNzU5NWNhY2MwZjljMDVmODZmZmExMTdiYWU0ODhk
NTg4MDQuLjRjYjc3Y2IyNjQ0OGIzOTEzY2M1YTAzNjczMGFkMDAwNzRlNmYxMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaApAQCAtNjQsNiArNjQsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9vdXRPZkNvbXBvc2l0aW9uOwogfTsKIAorQ29udGFpbmVy
Tm9kZSogcGFyZW50KGNvbnN0IE5vZGUqKTsKIENvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBO
b2RlKiwgUGFyZW50RGV0YWlscyopOwogQ29udGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBO
b2RlKiwgUGFyZW50RGV0YWlscyopOwogTm9kZSogbmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOwpA
QCAtNzYsNiArNzcsMTIgQEAgTm9kZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUqKTsKIE5v
ZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9kZSopOwogTm9kZSogbGFzdENoaWxkSW5TY29wZShj
b25zdCBOb2RlKik7CiAKK2lubGluZSBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSog
bm9kZSkKK3sKKyAgICBQYXJlbnREZXRhaWxzIGRldGFpbHM7CisgICAgcmV0dXJuIHBhcmVudChu
b2RlLCAmZGV0YWlscyk7Cit9CisKIGlubGluZSBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3Qg
Tm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKIHsKICAgICBpZiAoIW5vZGUtPm5l
ZWRzU2hhZG93VHJlZVdhbGtlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXgg
ZTNhNDgyMjJiOTNkMzhkNjcwZWMyYTIzODFmMGJmNmRhMTUxNzQyZC4uYjNlMzc4MmIxYzRmYzQ1
ZTUyYWY5MTliZDcyZTE2YTBhM2E0MmM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApA
QCAtNTcsNyArNTcsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXpl
QXNTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUs
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PiB7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgdm9pZCogcG9pbnRlcnNbM107CisjZWxzZQorICAgIHZvaWQqIHBvaW50
ZXJzWzJdOworI2VuZGlmCiAgICAgdW5zaWduZWQgY291bnRlcnNBbmRGbGFnc1sxXTsKIH07CiAK
QEAgLTI2Niw3ICsyNzAsNyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNo
YWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcgogCiAgICAgaWYgKCFp
bnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8ICFpc09sZGVzdCgpKQogICAgICAgICByZXR1
cm4gSW5zZXJ0aW9uRG9uZTsKLQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIC8vIEZJWE1F
OiBXaGVuIHBhcnNpbmcgPHZpZGVvIGNvbnRyb2xzPiwgaW5zZXJ0ZWRJbnRvKCkgaXMgY2FsbGVk
IG1hbnkgdGltZXMgd2l0aG91dCBpbnZva2luZyByZW1vdmVkRnJvbS4KICAgICAvLyBGb3Igbm93
LCB3ZSBjaGVjayBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93cm9vdC4gV2Ugd291bGQgbGlr
ZSB0byBBU1NFUlQoIW1fcmVnaXN0ZXJlZFNoYWRvd1Jvb3QpIGhlcmUuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2lnP2lkPTEwMTMxNgpAQCAtMjc3LDEyICsyODEs
MTMgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTaGFkb3dSb290OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXIKICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVE
aXN0cmlidXRpb24oKS0+cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CiAgICAgICAgIG1fcmVnaXN0
ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290ID0gdHJ1ZTsKICAgICB9Ci0KKyNlbmRpZgogICAgIHJl
dHVybiBJbnNlcnRpb25Eb25lOwogfQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmIG1fcmVnaXN0ZXJlZFdpdGhQ
YXJlbnRTaGFkb3dSb290KSB7CiAgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNv
bnRhaW5pbmdTaGFkb3dSb290KCk7CiAgICAgICAgIGlmICghcm9vdCkKQEAgLTI5Miw3ICsyOTcs
NyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlv
blBvaW50KQogICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3Rl
ckVsZW1lbnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jv
b3QgPSBmYWxzZTsKICAgICB9Ci0KKyNlbmRpZgogICAgIERvY3VtZW50RnJhZ21lbnQ6OnJlbW92
ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KIApAQCAtMzE3LDYgKzMyMiw3IEBAIHZvaWQgU2hh
ZG93Um9vdDo6dW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkKICAgICBzZXRIYXNTY29w
ZWRIVE1MU3R5bGVDaGlsZChtX251bWJlck9mU3R5bGVzID4gMCk7CiB9CiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJl
U2NvcGVEaXN0cmlidXRpb24oKQogewogICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQpAQCAt
MzI0LDcgKzMzMCw4IEBAIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5z
dXJlU2NvcGVEaXN0cmlidXRpb24oKQogCiAgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0
UHRyKG5ldyBTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOwogICAgIHJldHVybiBtX3Njb3BlRGlz
dHJpYnV0aW9uLmdldCgpOwotfSAgIAorfQorI2VuZGlmCiAKIHZvaWQgU2hhZG93Um9vdDo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKQEAgLTMzMyw3ICszNDAsOSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgVHJlZVNjb3Bl
OjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3ByZXYpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbmV4dCk7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgaW5mby5hZGRNZW1iZXIobV9zY29wZURpc3RyaWJ1dGlvbik7CisjZW5kaWYK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggMTUyNjkzOGVkZTUwNDBkZGM0MzM5
ZjU4ZmY4NjUxYTJjNzI1OWY3OS4uODU5ZjBkMjJkZWFkODJhZDhjN2RlMTA1NjRmMjgyMjI5MTQx
Y2U1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC04OCw5ICs4OCwxMSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZF
UlJJREU7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBTY29wZUNvbnRlbnREaXN0cmli
dXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5n
ZXQoKTsgfQogICAgIGNvbnN0IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmli
dXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAg
U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBlbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpOworI2Vu
ZGlmCiAKICAgICBTaGFkb3dSb290VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhv
clNoYWRvd1Jvb3QgPyBBdXRob3JTaGFkb3dSb290IDogVXNlckFnZW50U2hhZG93Um9vdDsgfQog
ICAgIGJvb2wgaXNBY2Nlc3NpYmxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dGhvclNo
YWRvd1Jvb3Q7IH0KQEAgLTExMCw3ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgU2hhZG93Um9v
dCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBPd25QdHI8U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0
aW9uOworI2VuZGlmCiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlN0eWxlcyA6IDI4OwogICAgIHVu
c2lnbmVkIG1fYXBwbHlBdXRob3JTdHlsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcAppbmRleCAwNWVlYmFiNDEwZDg4YjQxZWI4MTE5MzEyYWQ5ZDkxYzI1ZDQxZWMyLi42OGUw
Nzk3MjI4N2IwMDUzMDZjYmRjODI5MWU4YjFmM2YyYTMyMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC01MSw2ICs1MSwxNCBAQCBwcml2YXRlOgog
ICAgICAgICA6IEhUTUxDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRl
bnRUYWcsIGRvY3VtZW50KQogICAgIHsKICAgICB9CisKKyAgICAvLyBUaGlzIG1hdGNoIHNob3Vs
ZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgdG8gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjptYXRjaFR5
cGVGb3IoKQorICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKiBub2RlKSBP
VkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgbm9k
ZSAhPSBub2RlLT5wYXJlbnROb2RlKCktPnF1ZXJ5U2VsZWN0b3Ioc3VtbWFyeVF1ZXJ5U2VsZWN0
b3IoKSwgQVNTRVJUX05PX0VYQ0VQVElPTikpCisgICAgICAgICAgICByZXR1cm4gQWx3YXlzTWF0
Y2hlczsKKyAgICAgICAgcmV0dXJuIE5ldmVyTWF0Y2hlczsKKyAgICB9CiB9OwogCiBQYXNzUmVm
UHRyPERldGFpbHNDb250ZW50RWxlbWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTIwLDYgKzEyOCwxMSBAQCB2b2lkIEhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoRGV0
YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJ
T04sIHRydWUpOwogfQogCitFbGVtZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZhbGxiYWNrU3Vt
bWFyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxl
bWVudCo+KHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1t
YXJ5KCk7Cit9CisKIEVsZW1lbnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5
KCkgY29uc3QKIHsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTI3LDcgKzE0MCw3IEBAIEVsZW1l
bnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKICAgICAgICAg
ICAgIHJldHVybiB0b0VsZW1lbnQoY2hpbGQpOwogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1lbnQqPih1c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0
Q2hpbGQoKSktPmZhbGxiYWNrU3VtbWFyeSgpOworICAgIHJldHVybiBmYWxsYmFja1N1bW1hcnko
KTsKIH0KIAogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNDYsOCAr
MTU5LDE4IEBAIGJvb2wgSFRNTERldGFpbHNFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjCiAgICAgaWYgKCFjaGlsZENvbnRleHQu
aXNPbkVuY2Fwc3VsYXRpb25Cb3VuZGFyeSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAobV9pc09wZW4pCisgICAgaWYgKG1faXNPcGVuKSB7CisjaWYgIUVOQUJMRShTSEFET1df
RE9NKQorICAgICAgICAvLyBUaGUgZmFsbGJhY2sgPHN1bW1hcnk+IHNob3VsZG4ndCBiZSB2aXNp
YmxlIHVubGVzcyBpdCBpcyB1c2VkIGFzIGEgbWFpbiBzdW1tYXJ5LgorICAgICAgICAvLyBXaXRo
IFNIQURPV19ET00sIDxkZXRhaWxzPiBjYW4ganVzdCBsZXQgPGNvbnRlbnQ+IGZhbGxiYWNrIHN5
c3RlbSB0YWtlIGNhcmUgb2YgdGhpcy4KKyAgICAgICAgaWYgKGNoaWxkQ29udGV4dC5ub2RlKCkt
Pmhhc1RhZ05hbWUoc3VtbWFyeVRhZykpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGZhbGxiYWNr
ID0gZmFsbGJhY2tTdW1tYXJ5KCk7CisgICAgICAgICAgICBpZiAoZmFsbGJhY2sgIT0gZmluZE1h
aW5TdW1tYXJ5KCkgJiYgZmFsbGJhY2sgPT0gY2hpbGRDb250ZXh0Lm5vZGUoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4g
SFRNTEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKKyAg
ICB9CiAKICAgICBpZiAoIWNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFyeVRh
ZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NSw2ICsxNzgsMjAgQEAgYm9vbCBIVE1M
RGV0YWlsc0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmIGMKICAgICByZXR1cm4gY2hpbGRDb250ZXh0Lm5vZGUoKSA9PSBmaW5kTWFp
blN1bW1hcnkoKSAmJiBIVE1MRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGls
ZENvbnRleHQpOwogfQogCit2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hh
bmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQoreworI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAvLyBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIENvbnRlbnREaXN0cmlidXRvcjo6
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpCisgICAgLy8gd2hpY2ggcmVhdHRhY2hlcyBjaGlsZHJl
biB0byBtYWtlIHRoZW0gYmVpbmcgcmUtZGlzdHJpYnV0ZWQgdG8gYXBwcm9wcmlhdGUgaW5zZXJ0
aW9uIHBvaW50cy4KKyAgICBpZiAoYXR0YWNoZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIG4g
PSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgbi0+
bGF6eVJlYXR0YWNoKCk7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKK30KKwogdm9pZCBI
VE1MRGV0YWlsc0VsZW1lbnQ6OnRvZ2dsZU9wZW4oKQogewogICAgIHNldEF0dHJpYnV0ZShvcGVu
QXR0ciwgbV9pc09wZW4gPyBudWxsQXRvbSA6IGVtcHR5QXRvbSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuaAppbmRleCA5ZGE5Njk4ODYxNDY0Y2QzZDBlNzJmMjE0NzY4
MDczYTIzYmQzNmJhLi4yNjY0ZDI1YzJkODMzNDllZjg1YjkzMDI0Y2JhZDQ5N2FlZjZkZmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKQEAgLTM4LDcgKzM4LDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLQorICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCwgTm9kZSosIE5vZGUqLCBpbnQpOworICAgIEVsZW1lbnQqIGZhbGxiYWNr
U3VtbWFyeSgpIGNvbnN0OwogICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpOwogCiAgICAg
Ym9vbCBtX2lzT3BlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IDFkN2ZlYmY1YzliODdjOWE1OWRlYTVmNGQ1MzU0NDAwZDY2NTE2M2MuLjdiZWIyYmQwNTc4
N2YwNWRiMzU4Yzk0Njg3YjQ3YTQ4ZWQxYTIxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcApAQCAtNTM2LDggKzUzNiwxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnVwZGF0ZVR5cGUoKQogICAgICAgICAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUp
OwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93
KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAg
ICAgICAgIGVsZW1lbnRTaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgog
CiAgICAgc2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNw
cAppbmRleCAzMzQ1ZDdhMDFlOGEzMGE1NWI0MDVkZjk4N2RlNDIyMjk1YTNhZjYyLi5lY2MzYjVh
ZjZiMGE0MTc5MTIxODdmYzc0ZGQ0MWVkYzFmMDUxZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKIAor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnku
aCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVt
ZW50LmgiCkBAIC00NDEsMyArNDQzLDUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZFNo
YWRvd0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQqIGhvc3QpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVO
QUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuaAppbmRleCBkZmVhYjhjYzdmZGJlNTBhZGY2MTA3ZThkNjBhMGRmMjI4NDE2
ZDBiLi45NTUzMWI0YjRjNTY1OGYxYzU2OGUxZmQ2NzM0NGMxNjhlMDA1NzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzcsNiAr
MzcsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ29udGFpbmVyTm9kZTsKQEAgLTE2Myw0ICsxNjUsNSBAQCBpbmxpbmUgYm9vbCBDb250
ZW50RGlzdHJpYnV0b3I6Om5lZWRzRGlzdHJpYnV0aW9uKCkgY29uc3QKIAogfQogCisjZW5kaWYg
Ly8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAppbmRleCAyNGIzNzJhOWUyMDM4ODQ3
OThmZDY4YjU1ODhmYmEyMGNlYTIyYWQyLi5jNGNlYTRlOGE1MjQ5MzNhZGEzZmFkZGIyODBhNmMz
NWYyMGJkZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
U2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dFNlbGVjdG9yUXVlcnkuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9u
UG9pbnQuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKQEAgLTkxLDMgKzkzLDUgQEAg
Ym9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4mIHNpYmxpbmdzLCBpbnQgbnQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURP
V19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9y
UXVlcnkuaAppbmRleCA2YTRmMzM4MTU0NmFhYTNhMzA5ODk0NjM3NTM3OGYzNjA0NWUxYzFiLi5i
NzAzM2UxODcwMzYyNDIyN2U1N2UyN2FhZGU3MzkwY2ZiOGM3NGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3
LDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwpAQCAtNzYsNCArNzgsNSBAQCBwcml2YXRlOgogCiB9CiAKKyNlbmRpZiAvLyBF
TkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuaAppbmRleCA5ZDBjOGZjNDM1M2JmOTZjZTI0ZDFhMjZmMjUx
YWRjM2M5ODFhZDA4Li5jYTI2OWU4NjM5MGU1ZWI0MWZkNmM5YjM5ODNiOWJjYzIyMjg3NDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaApA
QCAtODgsNyArODgsNiBAQCBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0
aW9uUG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250
ZW50VGFnTmFtZShEb2N1bWVudCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KICAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9u
UG9pbnRUeXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ29udGVudEluc2VydGlvblBvaW50
OyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcAppbmRleCBlMDgzMThiZmY1YThlMGJiYzA0NDRmYzg3ODZkMzkxM2Y5OGM3Yzk2
Li5mOTA2NDIzNDE5Yjc3NDhlM2I3MDViN2EzNTQ0ZDBmM2ZmMGJiNTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0zOSwxMCArMzksMTcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTaW1wbGVJbnNlcnRpb25Qb2ludDo6U2ltcGxl
SW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUluc2Vy
dGlvblBvaW50KQoreworfQorCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKIEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQpCisgICAgOiBTaW1w
bGVJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fcmVnaXN0ZXJlZFdp
dGhTaGFkb3dSb290KGZhbHNlKQogewogfQpAQCAtNzksMjUgKzg2LDYgQEAgYm9vbCBJbnNlcnRp
b25Qb2ludDo6c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIGlz
QWN0aXZlKCkgJiYgIWhhc0Rpc3RyaWJ1dGlvbigpOwogfQogCi1ib29sIEluc2VydGlvblBvaW50
Ojppc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCktPnJv
b3ROb2RlKCktPmlzU2hhZG93Um9vdCgpICYmIGlzQWN0aXZlKCk7Ci19Ci0KLWJvb2wgSW5zZXJ0
aW9uUG9pbnQ6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICBpZiAoIWNvbnRhaW5pbmdTaGFkb3dS
b290KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25zdCBOb2RlKiBub2RlID0gcGFy
ZW50Tm9kZSgpOwotICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgIGlmIChub2RlLT5pc0luc2Vy
dGlvblBvaW50KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbm9kZSA9
IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IEluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29u
c3QKIHsKICAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dS
b290KCkpCkBAIC0xMTEsMTEgKzk5LDYgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9u
UG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdAogICAgIHJldHVybiBTdGF0aWNOb2Rl
TGlzdDo6YWRvcHQobm9kZXMpOwogfQogCi1ib29sIEluc2VydGlvblBvaW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVy
biAhaXNTaGFkb3dCb3VuZGFyeSgpICYmIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNv
bnRleHQpOwotfQotCiB2b2lkIEluc2VydGlvblBvaW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGlu
dCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0
YSk7CkBAIC0yMjksNCArMjEyLDIwIEBAIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0
aW9uKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50
OwogfQogCitib29sIEluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgaWYg
KCFjb250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29u
c3QgTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAg
ICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CmluZGV4IDc0MjQzZTljYWE0NTM3YzU5NGE5MjkwYjQ2ODExZTNiNjAwNWJjZTYuLmJkZGQyNTgx
ZDU2MmNjZmZlMzRjNDY1MmJlNjM1OWQ1M2JiYzY1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsK
K2NsYXNzIFNpbXBsZUluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1Ymxp
YzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBTaGFkb3dJbnNlcnRpb25Qb2ludCwKQEAgLTU0
LDE5ICs1NCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIEhhc1RvTWF0Y2hTZWxlY3RvcgogICAgIH07
CiAKKyAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJuIEFs
d2F5c01hdGNoZXM7IH0KKyAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29u
c3QgPSAwOworCisgICAgYm9vbCBhbHdheXNNYXRjaGVzKE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1h
dGNoVHlwZUZvcihub2RlKSA9PSBBbHdheXNNYXRjaGVzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBT
aW1wbGVJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKwor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9Cit9OworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisK
K2NsYXNzIEluc2VydGlvblBvaW50IDogcHVibGljIFNpbXBsZUluc2VydGlvblBvaW50IHsKK3B1
YmxpYzoKKwogICAgIHZpcnR1YWwgfkluc2VydGlvblBvaW50KCk7CiAKICAgICBib29sIGhhc0Rp
c3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuICFtX2Rpc3RyaWJ1dGlvbi5pc0VtcHR5KCk7IH0K
ICAgICB2b2lkIHNldERpc3RyaWJ1dGlvbihDb250ZW50RGlzdHJpYnV0aW9uJiBkaXN0cmlidXRp
b24pIHsgbV9kaXN0cmlidXRpb24uc3dhcChkaXN0cmlidXRpb24pOyB9CiAgICAgdm9pZCBjbGVh
ckRpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRpb24uY2xlYXIoKTsgfQotICAgIGJvb2wgaXNT
aGFkb3dCb3VuZGFyeSgpIGNvbnN0OwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAg
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKikgeyByZXR1cm4gQWx3YXlzTWF0
Y2hlczsgfQogICAgIHZpcnR1YWwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3Qo
KSB7IHJldHVybiBlbXB0eVNlbGVjdG9yTGlzdCgpOyB9Ci0gICAgdmlydHVhbCBUeXBlIGluc2Vy
dGlvblBvaW50VHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWZmZWN0U2Vs
ZWN0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCByZXNldFN0eWxlSW5o
ZXJpdGFuY2UoKSBjb25zdDsKQEAgLTc2LDYgKzg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2goKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpIGNv
bnN0OworICAgIGJvb2wgaXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIHRyZWVTY29w
ZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBpc0FjdGl2ZSgpOyB9CisgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgc2l6ZV90IGluZGV4T2YoTm9kZSogbm9kZSkgY29u
c3QgeyByZXR1cm4gbV9kaXN0cmlidXRpb24uZmluZChub2RlKTsgfQogICAgIGJvb2wgY29udGFp
bnMoY29uc3QgTm9kZSopIGNvbnN0OwpAQCAtOTAsMTIgKzEwNSwxMiBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNo
YW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc0luc2Vy
dGlvblBvaW50Tm9kZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCkgT1ZFUlJJREUgeyByZXR1cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1MRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsgfQogCiBwcml2YXRlOgogCkBAIC0xMDMsMzAg
KzExOCwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Q7
CiB9OwogCi1pbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9k
ZSkKLXsKLSAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKLX0KLQotaW5saW5l
IGNvbnN0IEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUp
Ci17Ci0gICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Ci19CitJbnNl
cnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChOb2RlKik7Citjb25zdCBJbnNlcnRpb25Qb2lu
dCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKik7CiAKIGlubGluZSBib29sIGlzQWN0aXZl
SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gbm9kZS0+aXNJ
bnNlcnRpb25Qb2ludCgpICYmIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCk7CiB9
CiAKLWlubGluZSBib29sIGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkK
LXsKLSAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRv
d0JvdW5kYXJ5KCk7Ci19Ci0KIGlubGluZSBOb2RlKiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9u
KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwpAQCAtMTYxLDYgKzE2MCw0
NSBAQCBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24o
Y29uc3QgTm9kZSogbm9kZSkKIAogSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24o
Y29uc3QgTm9kZSopOwogCisjZWxzZQorCitjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBT
aW1wbGVJbnNlcnRpb25Qb2ludCB7CitwdWJsaWM6CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJp
dGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorcHJvdGVjdGVkOgorICAgIEluc2VydGlv
blBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkg
OiBTaW1wbGVJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkgeyB9CisKK3ByaXZhdGU6
CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorfTsKKworI2VuZGlmIC8vIEVOQUJM
RShTSEFET1dfRE9NKQorCitpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQo
Tm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2lu
dCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30K
KworaW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7
Cit9CisKK2lubGluZSBib29sIGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHJldHVybiB0b0lu
c2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7CisjZWxzZQorICAgIC8vIGlu
IG5vbi1TSEFPRFdfRE9NIHdvcmxkLCBJbnNlcnRpb25Qb2ludCBpcyB1c2VkIG9ubHkgaW50ZXJu
YWxseSBhbmQKKyAgICAvLyBzaG91bGQgYWx3YXN5IGJlIGEgYm91bmRhcnkuCisgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
SW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2Vs
ZWN0UnVsZUZlYXR1cmVTZXQuY3BwCmluZGV4IDQ2NTIyYzQ0NTNiYzNlYjAzNjFmZDQ2MTFhZDE5
NjcyMjZjZGQxYzAuLjZlMjc3YTQwZDk0ZjA5YTUxZjM2MGQ2MGY5NWY3YzlkNjlhNWM5NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNl
dC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJT
ZWxlY3RSdWxlRmVhdHVyZVNldC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNs
dWRlICJDU1NTZWxlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwzICs4Nyw0
IEBAIHZvaWQgU2VsZWN0UnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rv
cihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFE
T1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVs
ZUZlYXR1cmVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0
dXJlU2V0LmgKaW5kZXggZDBmMmRlNjgyMWIzMjUwOTE2YzdlYzE2ZGVkNGRiNzU5ODRhMDgxNy4u
YjAyMDczZDRmMmMzNzk1ZDc4NzVlNGFkNWVkZDhjNDk3NzcxN2NmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCkBAIC0zMSw5ICsz
MSwxMiBAQAogI2lmbmRlZiBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCiAjZGVmaW5lIFNlbGVjdFJ1
bGVGZWF0dXJlU2V0X2gKIAorCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlJ1bGVG
ZWF0dXJlLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTZWxlY3RSdWxlRmVhdHVyZVNldCB7CkBAIC04NSw0ICs4OCw1IEBAIGlubGlu
ZSBib29sIFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25z
dCBBdG9taWNTdHJpbmcmIGF0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYmVlODIwNDNhYTgw
NjYzMzYwMTlmZGE0Yjk0ZGVjZmQzNGRhNGIxZi4uMTVlYzUxZmFjYWY4ZTU0NjYyOTY0ZGJhYTQ5
NTZhOGIyNWVkZGJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzQ4
LDcgKzM0OCwxMSBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KEVs
ZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgaWRWYWx1ZSwgRQogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93
KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSku
aGFzU2VsZWN0b3JGb3JJZChpZFZhbHVlKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxl
bWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpA
QCAtMzU4LDcgKzM2MiwxMSBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0lu
U2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYQogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+
c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFk
b3coKSkuaGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmli
dXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTM2OCw3ICszNzYsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhh
c1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5n
JiBhdHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZl
YXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBJbnRl
cm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBj
b25zdCBTdHJpbmcmIHBzZXVkb0NsYXNzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM3OCw2ICsz
OTAsNyBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93
KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNl
dCYgZmVhdHVyZVNldCA9IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVj
dEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiY2hl
Y2tlZCIpCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgp
OwpAQCAtMzk1LDYgKzQwOCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVk
b0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIHJl
dHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yVmlzaXRlZCgpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0Miw4ICs0
NTYsMTAgQEAgYm9vbCBJbnRlcm5hbHM6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudChjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3UKIAogYm9vbCBJbnRlcm5hbHM6Omhhc1No
YWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChyb290ICYmIHJvb3QtPmlz
U2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpo
YXNTaGFkb3dFbGVtZW50KHRvU2hhZG93Um9vdChyb290KSk7CisjZW5kaWYKIAogICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgIHJldHVybiAwOwpAQCAtNDUxLDggKzQ2NywxMCBAQCBi
b29sIEludGVybmFsczo6aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogcm9vdCwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbgogCiBib29sIEludGVybmFsczo6aGFzQ29udGVudEVsZW1l
bnQoY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkpCiAg
ICAgICAgIHJldHVybiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0NvbnRlbnRFbGVtZW50
KHRvU2hhZG93Um9vdChyb290KSk7CisjZW5kaWYKIAogICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOwogICAgIHJldHVybiAwOwpAQCAtNDY1LDcgKzQ4MywxMSBAQCBzaXplX3QgSW50ZXJuYWxz
Ojpjb3VudEVsZW1lbnRTaGFkb3coY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIHJldHVybiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmNvdW50RWxlbWVudFNoYWRv
dyh0b1NoYWRvd1Jvb3Qocm9vdCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZiAKIH0K
IAogYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtNDgwLDYgKzUwMiw3IEBAIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKIAogTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fs
a2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC00ODcsMTAgKzUxMCwxNCBAQCBOb2RlKiBJbnRlcm5hbHM6
Om5leHRTaWJsaW5nQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIubmV4dFNp
YmxpbmcoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsK
KyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBp
ZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJl
dHVybiAwOwpAQCAtNDk4LDEwICs1MjUsMTQgQEAgTm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxk
QnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIuZmlyc3RDaGlsZCgpOwogICAg
IHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAK
IE5vZGUqIEludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTUw
OSwxMCArNTQwLDE0IEBAIE5vZGUqIEludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIoTm9kZSog
bm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlcihub2RlKTsKICAgICB3YWxrZXIubGFzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdhbGtlci5n
ZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxz
OjpuZXh0Tm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MjAsMTAgKzU1NSwxNCBAQCBO
b2RlKiBJbnRlcm5hbHM6Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3
YWxrZXIubmV4dCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxrZXIo
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKQEAgLTUzMSw2ICs1NzAsOSBAQCBOb2RlKiBJbnRlcm5hbHM6OnByZXZp
b3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7
CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
IH0KIAogU3RyaW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVudCog
ZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkKaW5kZXggYjU4NzViMTEwNmQ4ZDU1MmU3ODQzNDEyNzljOTE0YjFiNjcyYmJiMy4uMWIxMTMy
OTM4YzEwZThiZWJiNzYwZWU3MTIyYjBjZjg2NDc2ZDQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAnRU5BQkxFX1JVQlk9MScs
CiAgICAgICAnRU5BQkxFX1NBTkRCT1g9MScsCiAgICAgICAnRU5BQkxFX1NDUklQVEVEX1NQRUVD
SD0xJywKLSAgICAgICdFTkFCTEVfU0hBRE9XX0RPTT0xJywKKyAgICAgICdFTkFCTEVfU0hBRE9X
X0RPTT0wJywKICAgICAgICdFTkFCTEVfU01PT1RIX1NDUk9MTElORz0xJywKICAgICAgICdFTkFC
TEVfU1BFRUNIX1NZTlRIRVNJUz0wJywKICAgICAgICdFTkFCTEVfU1FMX0RBVEFCQVNFPTEnLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184117</attachid>
            <date>2013-01-22 20:29:15 -0800</date>
            <delta_ts>2013-01-22 21:16:31 -0800</delta_ts>
            <desc>Fixing Mac and Win build</desc>
            <filename>bug-106643-20130123132608.patch</filename>
            <type>text/plain</type>
            <size>61349</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGMzNDZl
MDIzZDIzYjAxZTEzZjNkOTU3NDljOThiZTc0ZDI5MDBlMWYuLjNiZTM3Y2QzMWI5Y2U1ZmJlM2Qw
Nzk2MzA0MGVmOWIwZGJhMGIxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01MTYsNyArNTE2
LDYgQEAgX19aTjdXZWJDb3JlMTd1c2VyVmlzaWJsZVN0cmluZ0VQNU5TVVJMCiBfX1pON1dlYkNv
cmUxOERPTVdpbmRvd0V4dGVuc2lvbkMxRVBOU181RnJhbWVFUE5TXzE1RE9NV3JhcHBlcldvcmxk
RQogX19aTjdXZWJDb3JlMTBQYXN0ZWJvYXJkMTdnZW5lcmFsUGFzdGVib2FyZEV2CiBfX1pON1dl
YkNvcmUxMFBhc3RlYm9hcmQxNHdyaXRlUGxhaW5UZXh0RVJLTjNXVEY2U3RyaW5nRU5TMF8xOFNt
YXJ0UmVwbGFjZU9wdGlvbkUKLV9fWk43V2ViQ29yZTE4Q29udGVudERpc3RyaWJ1dG9yMjJlbnN1
cmVTZWxlY3RGZWF0dXJlU2V0RVBOU18xM0VsZW1lbnRTaGFkb3dFCiBfX1pON1dlYkNvcmUxOFBs
YXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFz
dGVib2FyZDEzYnVmZmVyRm9yVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4UGxh
dGZvcm1QYXN0ZWJvYXJkMTNzdHJpbmdGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQpAQCAtNjU1LDEx
ICs2NTQsNiBAQCBfX1pON1dlYkNvcmUyM2VuY29kZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJp
bmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNFUktOU18y
MU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSTjNXVEY3SGFzaFNldElOUzNfNlN0cmluZ0VOUzNfMTBT
dHJpbmdIYXNoRU5TM18xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQ
cm9wZXJ0eUxpc3RXcml0ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYKIF9fWk43V2ViQ29yZTI0Q2Fj
aGVkUmVzb3VyY2VIYW5kbGVCYXNlMTFzZXRSZXNvdXJjZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUUK
LV9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyMTBmaXJzdENoaWxkRXYKLV9f
Wk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyMTFuZXh0U2libGluZ0V2Ci1fX1pO
N1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjRuZXh0RXYKLV9fWk43V2ViQ29yZTI0
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOHByZXZpb3VzRXYKLV9fWk43V2ViQ29yZTI0Q29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOWxhc3RDaGlsZEV2CiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjEx
TWFya2VyVHlwZXNFCiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEzcmVt
b3ZlTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTFNYXJrZXJUeXBlc0UKIF9fWk43V2ViQ29y
ZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMThhZGRUZXh0TWF0Y2hNYXJrZXJFUEtOU181UmFu
Z2VFYgpAQCAtNjY5LDkgKzY2Myw2IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyMTRmcmFtZURlc3Ryb3llZEV2CiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlcjE0d2lsbERldGFjaFBhZ2VFdgogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXJDMkVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXJEMkV2Ci1fX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hh
ZG93RWxlbWVudEVQS05TXzEwU2hhZG93Um9vdEUKLV9fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uMThjb3VudEVsZW1lbnRTaGFkb3dFUEtOU18xMFNoYWRvd1Jvb3RFCi1fX1pO
N1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE3aGFzQ29udGVudEVsZW1lbnRFUEtO
U18xMFNoYWRvd1Jvb3RFCiBfX1pON1dlYkNvcmUyNGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVQ
TlNfOERvY3VtZW50RVJLTjNXVEY2U3RyaW5nRVM1X05TXzI3RnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uRQogX19aTjdXZWJDb3JlMjRkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTjNXVEY2U3RyaW5nRQpAQCAtMTI0OCw4ICsxMjM5LDYgQEAg
X19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xOGlzRm9jdXNlZEFuZEFjdGl2ZUV2CiBfX1pO
SzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xl
c0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFJlY3RFTG0wRUVFCiBfX1pOSzdXZWJDb3JlMTRGcmFt
ZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5L
N1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0ViCi1fX1pOSzdXZWJDb3JlMTRJbnNlcnRp
b25Qb2ludDE5Z2V0RGlzdHJpYnV0ZWROb2Rlc0V2Ci1fX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Q
b2ludDhpc0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4
dEV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRkYXRhRXYKIF9fWk5LN1dlYkNvcmUx
NFJlc291cmNlQnVmZmVyNHNpemVFdgpAQCAtMjUzNSw2ICsyNTI0LDE4IEBAIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcyNXNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnNFZAogX19aTjdXZWJDb3JlMjJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFCiBfX1pON1dlYkNvcmUy
MlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMzN2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVu
YWJsZWRFCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUxOENvbnRlbnREaXN0cmli
dXRvcjIyZW5zdXJlU2VsZWN0RmVhdHVyZVNldEVQTlNfMTNFbGVtZW50U2hhZG93RQorX19aTjdX
ZWJDb3JlMjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xNmhhc1NoYWRvd0VsZW1lbnRFUEtOU18x
MFNoYWRvd1Jvb3RFCitfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDE5Z2V0RGlzdHJpYnV0
ZWROb2Rlc0V2CitfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CitfX1pO
N1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE4Y291bnRFbGVtZW50U2hhZG93RVBL
TlNfMTBTaGFkb3dSb290RQorX19aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24x
N2hhc0NvbnRlbnRFbGVtZW50RVBLTlNfMTBTaGFkb3dSb290RQorX19aTjdXZWJDb3JlMjRDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgorX19aTjdXZWJDb3JlMjRDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyNG5leHRFdgorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXI4cHJldmlvdXNFdgorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI5
bGFzdENoaWxkRXYKK19fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNf
OERvY3VtZW50RQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCkBAIC0yNzMy
LDEwICsyNzMzLDYgQEAgX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlCiBfd2tD
YXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbgogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLV9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50
NmNyZWF0ZUVQTlNfOERvY3VtZW50RQotI2VuZGlmCi0KICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMp
CiBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOWlzQ1NTUmVnaW9uc0VuYWJs
ZWRFCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBkOGQ2OWMz
MmZjNTFjYjZmNGFiZTg4ZjAxMmRmYzJhOTVmMDZkN2Q5Li4wMGE2YzEwYjE1NzA2MmRlZWYwMTg3
YjYwMTBiZWNjZDEyZTMxYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC03NjEsNyArNzYxLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JS
dWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0CiAgICAgICAgIH0KICAg
ICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtYXRjaEhvc3RSdWxlcyhyZXN1bHQs
IGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOwogICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlRW1wdHlSdWxlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCmluZGV4IDhhY2FiZTUwYWU3MmQxYmUxN2Q0
YTM1ZjdiMzZjZjM2NGRhZjIyYjcuLmE2MzU3MGE0M2I1NTNjMTFlYzVhMjczODhkYTkyYTE4MDgx
N2Y0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCkBAIC0x
OTIsNyArMTkyLDYgQEAgdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmFkZEhvc3RSdWxlKFN0eWxl
UnVsZUhvc3QqIGhvc3RSdWxlLCBib29sIGhhc0RvY3VtZW50U2UKICAgICAgICAgICAgIHJ1bGUt
PmFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihob3N0U3R5bGluZ1J1bGUpLCBh
ZGRSdWxlRmxhZ3MpOwogICAgIH0KIH0KLSNlbmRpZgogCiBib29sIFN0eWxlU2NvcGVSZXNvbHZl
cjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBl
bGVtZW50KQogewpAQCAtMjM3LDYgKzIzNiw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjpt
YXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+CiAg
ICAgICAgICAgICBicmVhazsKICAgICB9CiB9CisjZW5kaWYKIAogdm9pZCBTdHlsZVNjb3BlUmVz
b2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKaW5kZXgg
M2JlM2ZmNGY3MGM3Mzc1YmQwMTQyNmEwMGJhNDI0MTI4NDYyY2MwZS4uYzVmNzc2ZjNhZTE0MTE3
NDI0ODg5N2Y2OTk4ODEzZTRjZjkyNDgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2NvcGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3Bl
UmVzb2x2ZXIuaApAQCAtNzUsOSArNzUsMTEgQEAgcHVibGljOgogICAgIGJvb2wgbWF0Y2hlc1N0
eWxlQm91bmRzKGNvbnN0IFN0YWNrRnJhbWUmIGZyYW1lKSBjb25zdCB7IHJldHVybiBmcmFtZS5t
X2F1dGhvclN0eWxlQm91bmRzSW5kZXggPT0gbV9zdGFja1BhcmVudEJvdW5kc0luZGV4OyB9CiAg
ICAgdm9pZCBjb2xsZWN0RmVhdHVyZXNUbyhSdWxlRmVhdHVyZVNldCYpOwogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgdm9pZCBhZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiwgYm9vbCBo
YXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7CiAg
ICAgYm9vbCBzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0IEVsZW1l
bnQqKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqLCBWZWN0b3I8UnVs
ZVNldCo+JiBtYXRjaGVkUnVsZXMpOworI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2Vz
dG9yQ2hhaW5XYWxrZXIuY3BwCmluZGV4IDk3MGNkYzIwNTk3YzUwYjIxOGRmNDMxMDM4ZTZjNThi
OWVhYmFhZTYuLjViN2NlZTgyY2Q1MjUxOTNhMTRhNzA1NTU1ZTk0MGY1YmNkOGUzMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAKQEAgLTQ1LDYgKzQ1LDgg
QEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogewogICAgIEFTU0VSVChtX25v
ZGUpOwogICAgIEFTU0VSVChtX2Rpc3RyaWJ1dGVkTm9kZSk7CisKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobV9u
b2RlKSkgewogICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hh
ZG93LT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihtX2Rpc3RyaWJ1dGVkTm9k
ZSkpIHsKICAgICAgICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OwpAQCAtNTIsMjAgKzU0
LDMwIEBAIHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFtX25vZGUtPmlzU2hh
ZG93Um9vdCgpKSB7CiAgICAgICAgIG1fbm9kZSA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgICAgICBpZiAoIShtX25vZGUgJiYgbV9ub2RlLT5pc1No
YWRvd1Jvb3QoKSAmJiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFk
b3dSb290KG1fbm9kZSkpKSkKICAgICAgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2Rl
OwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOworI2Vsc2UKKyAg
ICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CisgICAgICAgIG1faXNDcm9zc2luZ0lu
c2VydGlvblBvaW50ID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3QobV9ub2RlKTsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3Qp
KSB7CiAgICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OwogICAgICAgICBtX2lzQ3Jvc3Np
bmdJbnNlcnRpb25Qb2ludCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYK
KwogICAgIG1fbm9kZSA9IHNoYWRvd1Jvb3QtPmhvc3QoKTsKICAgICBtX2Rpc3RyaWJ1dGVkTm9k
ZSA9IG1fbm9kZTsKICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBh
YjU4ZDYxNTJiYzYwZDkwNTE3YWU0YWI4Y2VlYTA3YjQ4ZmNiMThjLi5kMjMwZjg2NDg3ODI0NmY2
OTAzOGM0ZGE3YmEzMTZjOWZmZDQ0ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI4
LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ29u
dGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1l
bnRTaGFkb3cuaCIKQEAgLTMxMywzICszMTQsNSBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjo6cHJldmlvdXMoKQogfQogCiB9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyLmgKaW5kZXggODM0OWUyMWFhOTgzZjBhODRhMTEzYzE2NzgwZTQ5ZWM2NzY2NGYzZS4uMmYw
MmE3YzNiYzQ1NTA1ZjViNDI4Mjg1M2VhNmQyODNmMzhmZjE0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaApAQCAtMzEsNiArMzEsOCBAQAogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBOb2RlOwpAQCAtMTQzLDQgKzE0NSw1IEBAIGlubGluZSBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihjb25zdCBOb2RlKiBub2RlLCBQb2xpCiAKIH0g
Ly8gbmFtZXNwYWNlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IGMyMDMxZGE1MzkzODU2ZjhjMzMyN2I3ZTcxYWU3ZGJhMGNm
ZDg5ZTMuLjQxMDlkY2UxNjNjYzE0YjdlNzgyODU1ZTEwMmNiZDA4YTUyZGNhYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTgwOCwxMCArODA4LDEyIEBAIHN0YXRpYyBib29sIGNoZWNrTmVl
ZHNTdHlsZUludmFsaWRhdGlvbkZvcklkQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQs
IGNvCiAKIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogeworI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBwYXJlbnRFbGVtZW50U2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpIHsKICAgICAgICAgaWYgKHNob3VsZElu
dmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChwYXJlbnRFbGVtZW50U2hh
ZG93LCBuYW1lLCBuZXdWYWx1ZSkpCiAgICAgICAgICAgICBwYXJlbnRFbGVtZW50U2hhZG93LT5p
bnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAgICAgfQorI2VuZGlmCiAKICAgICBwYXJzZUF0dHJp
YnV0ZShuYW1lLCBuZXdWYWx1ZSk7CiAKQEAgLTk0OCw2ICs5NTAsNyBAQCB2b2lkIEVsZW1lbnQ6
OmNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5n
KQogCiBib29sIEVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmli
dXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogeworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIEFTU0VSVChlbGVtZW50U2hhZG93KTsKICAgICBjb25zdCBTZWxlY3RS
dWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9IGVsZW1lbnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCku
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldChlbGVtZW50U2hhZG93KTsKIApAQCAtOTc5LDYgKzk4Miwx
MiBAQCBib29sIEVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmli
dXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBlbAogICAgIH0KIAogICAgIHJldHVybiBmZWF0dXJl
U2V0Lmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oZWxlbWVudFNoYWRvdyk7CisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOwor
ICAgIFVOVVNFRF9QQVJBTShuZXdWYWx1ZSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKIC8vIFJldHVybnMgdHJ1ZSBpcyB0aGUgZ2l2ZW4gYXR0cmlidXRlIGlzIGFuIGV2ZW50IGhh
bmRsZXIuCkBAIC0xNDU2LDkgKzE0NjUsMTIgQEAgRWxlbWVudFNoYWRvdyogRWxlbWVudDo6ZW5z
dXJlU2hhZG93KCkKIAogdm9pZCBFbGVtZW50OjpkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNl
bGVjdG9yTWFzayBtYXNrKQogeworICAgIFVOVVNFRF9QQVJBTShtYXNrKTsKICAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRT
aGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlz
KSkKICAgICAgICAgZWxlbWVudFNoYWRvdy0+ZGlkQWZmZWN0U2VsZWN0b3IobWFzayk7CisjZW5k
aWYKIH0KIAogUGFzc1JlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290
KEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4
IDMyZGQ0ZjA0ZDU3YWVhYzQwMzJlZWFmMmZkMWVmY2NmNTI2OGFlNGQuLmM0Y2U2MjQ3NzUwZmFm
MzkyMzBhNmI3ZWQ5NWQ1YWNkOTI2ZjVkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRv
dy5jcHAKQEAgLTgyLDcgKzgyLDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290
KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAgICBzaGFk
b3dSb290LT5zZXRIb3N0KHNoYWRvd0hvc3QpOwogICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudFRy
ZWVTY29wZShzaGFkb3dIb3N0LT50cmVlU2NvcGUoKSk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNo
KHNoYWRvd1Jvb3QuZ2V0KCkpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIG1fZGlzdHJp
YnV0b3IuZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2Uoc2hhZG93SG9zdCk7CisjZW5kaWYKICAgICBD
aGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkoc2hhZG93Um9vdC5n
ZXQoKSk7CiAKICAgICAvLyBFeGlzdGVuY2Ugb2Ygc2hhZG93IHJvb3RzIHJlcXVpcmVzIHRoZSBo
b3N0IGFuZCBpdHMgY2hpbGRyZW4gdG8gZG8gdHJhdmVyc2FsIHVzaW5nIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci4KQEAgLTExNywxMyArMTE5LDE2IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVt
b3ZlQWxsU2hhZG93Um9vdHMoKQogICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoc2hh
ZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogICAgIG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dI
b3N0KTsKKyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmF0dGFjaCgpCiB7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmli
dXRpb24oeW91bmdlc3RTaGFkb3dSb290KCkpOwotCisjZW5kaWYKICAgICBmb3IgKFNoYWRvd1Jv
b3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlmICghcm9vdC0+YXR0YWNoZWQoKSkKICAgICAgICAg
ICAgIHJvb3QtPmF0dGFjaCgpOwpAQCAtMTczLDcgKzE3OCwxMCBAQCB2b2lkIEVsZW1lbnRTaGFk
b3c6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiAgICAgICAgIGluZm8uYWRkTWVtYmVyKHNoYWRvd1Jvb3QpOwogICAgICAgICBzaGFk
b3dSb290ID0gc2hhZG93Um9vdC0+bmV4dCgpOwogICAgIH0KKworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGluZm8uYWRkTWVtYmVyKG1fZGlzdHJpYnV0b3IpOworI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRv
dy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAppbmRleCA4OTMzNjNiYmE4
N2I0ODhlN2FmZDEyZDAyODVjZDRhNTQ0NDFlYTczLi4wMDUyZWNkNmFmZTlhYmQ2OWE4ZDQ0ZDI0
ZmE3ZDlmYWQ5MzM0MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKQEAgLTYzLDE4
ICs2MywyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgdm9p
ZCByZWNhbGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSk7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0b3IuaW52
YWxpZGF0ZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9CiAgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3Rv
cihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKSB7IG1fZGlzdHJpYnV0b3IuZGlkQWZmZWN0U2Vs
ZWN0b3IoaG9zdCgpLCBtYXNrKTsgfQogICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9yKCkgeyBt
X2Rpc3RyaWJ1dG9yLndpbGxBZmZlY3RTZWxlY3Rvcihob3N0KCkpOyB9CiAKLSAgICBDb250ZW50
RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCk7Ci0gICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9y
JiBkaXN0cmlidXRvcigpIGNvbnN0OworICAgIENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0
b3IoKSB7IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CisgICAgY29uc3QgQ29udGVudERpc3RyaWJ1
dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KKyNlbHNl
CisgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyB9CisgICAgdm9pZCBlbnN1cmVE
aXN0cmlidXRpb24oKSB7IH0KKyNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci1wcml2YXRlOgogCitwcml2YXRlOgogICAgIERvdWJs
eUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKKworI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogICAgIENvbnRlbnREaXN0cmlidXRvciBtX2Rpc3RyaWJ1dG9yOworI2VuZGlmCiB9
OwogCiBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6eW91bmdlc3RTaGFkb3dSb290
KCkgY29uc3QKQEAgLTg3LDE2ICs5NSw2IEBAIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hh
ZG93OjpvbGRlc3RTaGFkb3dSb290KCkgY29uc3QKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy50
YWlsKCk7CiB9CiAKLWlubGluZSBDb250ZW50RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRp
c3RyaWJ1dG9yKCkKLXsKLSAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQotaW5saW5lIGNv
bnN0IENvbnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IoKSBjb25z
dAotewotICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwotfQotCiBpbmxpbmUgRWxlbWVudCogRWxl
bWVudFNoYWRvdzo6aG9zdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX3NoYWRvd1Jvb3RzLmlz
RW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5j
cHAKaW5kZXggODNiYjdlYzdlNzllZjJmMjE2M2VmMDc3NTM3OWQ3NzdlNjllZmZmMi4uNTBiNmVm
ZDA4ZTIxNjJkYzA3NjViZDVmMDYzZWFmYjg3Y2M0MTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtMjgsMTIgKzI4LDIwNiBAQAogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKIAogI2luY2x1ZGUgIkNvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogbmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwgewogCisvLyBBIHNpbXBs
aWZpZWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLWNvbXBhdGlibGUgd2Fsa2VyIGltcGxlbWVu
dGF0aW9uIGZvciBub24tU0hBRE9XX0RPTSBjb25maWd1cmF0aW9ucy4KK2NsYXNzIFNoYWRvd1Ry
ZWVXYWxrZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYWRvd1RyZWVXYWxrZXIoY29uc3Qg
Tm9kZSogbm9kZSkKKyAgICAgICAgOiBtX25vZGUobm9kZSkKKyAgICB7IH0KKworICAgIE5vZGUq
IGdldCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KKworICAg
IHZvaWQgcGFyZW50KCkgeyBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudChtX25vZGUpOyB9CisgICAg
dm9pZCBuZXh0U2libGluZygpIHsgbV9ub2RlID0gdHJhdmVyc2VOZXh0U2libGluZyhtX25vZGUp
OyB9CisgICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUHJldmlv
dXNTaWJsaW5nKG1fbm9kZSk7IH0KKyAgICB2b2lkIGxhc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9u
b2RlLT5sYXN0Q2hpbGQoKTsgfQorICAgIHZvaWQgZmlyc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9u
b2RlLT5maXJzdENoaWxkKCk7IH0KKworICAgIHZvaWQgbmV4dCgpIHsgbV9ub2RlID0gdHJhdmVy
c2VOZXh0KG1fbm9kZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzKCkgeyBtX25vZGUgPSB0cmF2ZXJz
ZVByZXZpb3VzKG1fbm9kZSk7IH0KKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBhcmVudChj
b25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyogPSAwKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMg
Tm9kZSogdHJhdmVyc2VOZXh0KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVy
c2VQcmV2aW91cyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dFNp
YmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2li
bGluZyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIG5leHRJbmNsdWRpbmdDb250YWlu
aW5nU2NvcGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBwcmV2aW91c0luY2x1ZGlu
Z0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIGJvb2wgaXNTaGFkb3dC
b3VuZGFyeShOb2RlKiBub2RlKSB7IHJldHVybiBub2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBub2Rl
LT5pc0luc2VydGlvblBvaW50KCk7IH0KKworICAgIGNvbnN0IE5vZGUqIG1fbm9kZTsKK307CisK
KyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorCitzdGF0aWMgSW5zZXJ0aW9uUG9pbnQqIGZp
bmRJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQoreworICAgIE5vZGUqIHBhcmVudCA9
IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBTaGFkb3dSb290KiByb290ID0gcGFyZW50LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsK
KyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBoYXNJbnNlcmV0
aW9uUG9pbnQgPSBwYXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpkZXRhaWxzVGFnKSB8fCBw
YXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdW1tYXJ5VGFnKTsKKyAgICBpZiAoIWhhc0lu
c2VyZXRpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKE5vZGUqIG1heUlu
c2VydGlvblBvaW50ID0gcm9vdC0+Zmlyc3RDaGlsZCgpOyBtYXlJbnNlcnRpb25Qb2ludDsgbWF5
SW5zZXJ0aW9uUG9pbnQgPSBtYXlJbnNlcnRpb25Qb2ludC0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBpZiAobWF5SW5zZXJ0aW9uUG9pbnQtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2Vy
dGlvblBvaW50KG1heUluc2VydGlvblBvaW50KS0+YWx3YXlzTWF0Y2hlcyhjb25zdF9jYXN0PE5v
ZGUqPihub2RlKSkpCisgICAgICAgICAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChtYXlJbnNl
cnRpb25Qb2ludCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFZlY3Rv
cjxOb2RlKj4gZ2V0RGlzdHJpYnV0ZWROb2RlKEluc2VydGlvblBvaW50KiBwYXJlbnQpCit7Cisg
ICAgVmVjdG9yPE5vZGUqPiBub2RlczsKKyAgICBFbGVtZW50KiBob3N0ID0gcGFyZW50LT5zaGFk
b3dIb3N0KCk7CisgICAgQVNTRVJUKGhvc3QpOworICAgIGlmICghaG9zdCkKKyAgICAgICAgcmV0
dXJuIG5vZGVzOworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHBhcmVu
dC0+YWx3YXlzTWF0Y2hlcyhjaGlsZCkpCisgICAgICAgICAgICBub2Rlcy5hcHBlbmQoY2hpbGQp
OworICAgIH0KKworICAgIHJldHVybiBub2RlczsKK30KKworI2VuZGlmIC8vIEVOQUJMRShERVRB
SUxTX0VMRU1FTlQpCisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBh
cmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQoreworI2lmIEVO
QUJMRShERVRBSUxTX0VMRU1FTlQpCisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICAvLyBYWFg6IFNob3Vs
ZCBiZSBoaWRlIGluc2VydGlvbiBwb2ludCBiZWhpbmQgdGhlIHdhbGtlciAtIE5lZWRzIG1vcmUg
aWYvZGVmIGluIE5vZGVSZW5kZXJpbmdDb250ZXh0CisgICAgICAgIGlmIChkZXRhaWxzKQorICAg
ICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2lu
dCk7CisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorI2VuZGlmCisK
KyAgICBmb3IgKE5vZGUqIHdhbGsgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHdhbGs7IHdh
bGsgPSB3YWxrLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgaWYgKCFpc1NoYWRvd0Jv
dW5kYXJ5KHdhbGspKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7CisgICAgfQorCisgICAgcmV0
dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHQo
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBuZXh0SW5jbHVkaW5n
Q29udGFpbmluZ1Njb3BlKG5vZGUpOyB3YWxrOyB3YWxrID0gbmV4dEluY2x1ZGluZ0NvbnRhaW5p
bmdTY29wZSh3YWxrKSkgeworICAgICAgICBpZiAoIWlzU2hhZG93Qm91bmRhcnkod2FsaykpCisg
ICAgICAgICAgICByZXR1cm4gd2FsazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5s
aW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlvdXMoY29uc3QgTm9kZSog
bm9kZSkKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5p
bmdTY29wZShub2RlKTsgd2Fsazsgd2FsayA9IHByZXZpb3VzSW5jbHVkaW5nQ29udGFpbmluZ1Nj
b3BlKHdhbGspKSB7CisgICAgICAgIGlmICghaXNTaGFkb3dCb3VuZGFyeSh3YWxrKSkKKyAgICAg
ICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbmxpbmUg
Tm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyhjb25zdCBOb2RlKiBu
b2RlKQoreworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCisgICAgaWYgKEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAg
ICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9kZShpbnNlcnRp
b25Qb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaXN0cmlidXRpb24u
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIC8vIFN0YXlpbmcgaW5zaWRlIGRpc3RyaWJ1dGlv
bi4KKyAgICAgICAgICAgIGlmIChkaXN0cmlidXRpb25baV0gPT0gbm9kZSAmJiBkaXN0cmlidXRp
b24ubGFzdCgpICE9IG5vZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3RyaWJ1dGlvbltp
ICsgMV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFN0ZXBwaW5nIG91dCBmcm9t
IGRpc3RyaWJ1dGVkIGxvY2F0aW9uCisgICAgICAgIG5vZGUgPSBpbnNlcnRpb25Qb2ludDsKKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBTdGVwcGluZyBpbnRvIGRpc3RyaWJ1dGlvbi4KKyAgICAg
ICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkgeworICAgICAgICAgICAgVmVjdG9yPE5v
ZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUodG9JbnNlcnRpb25Qb2ludChj
b25zdF9jYXN0PE5vZGUqPihub2RlKSkpOworICAgICAgICAgICAgaWYgKCFkaXN0cmlidXRpb24u
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRpb24uZmlyc3QoKTsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIG5vZGUtPm5leHRTaWJsaW5n
KCk7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3Vz
U2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQp
CisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Q
b2ludChub2RlKSkgeworICAgICAgICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERp
c3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkaXN0cmlidXRpb24uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIC8vIFN0YXlp
bmcgaW5zaWRlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIGlmIChkaXN0cmlidXRpb25baV0g
PT0gbm9kZSAmJiBkaXN0cmlidXRpb24uZmlyc3QoKSAhPSBub2RlKQorICAgICAgICAgICAgICAg
IHJldHVybiBkaXN0cmlidXRpb25baSAtIDFdOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAvLyBTdGVwcGluZyBvdXQgZnJvbSBkaXN0cmlidXRlZCBsb2NhdGlvbgorICAgICAgICBub2Rl
ID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU3RlcHBpbmcgaW50
byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50KCkpIHsK
KyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0aW9uID0gZ2V0RGlzdHJpYnV0ZWRO
b2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpKTsKKyAgICAgICAg
ICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZGlzdHJpYnV0aW9uLmxhc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0
dXJuIG5vZGUtPnByZXZpb3VzU2libGluZygpOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJl
ZVdhbGtlcjo6bmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2RlKiBub2RlKQor
eworICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKSkKKyAgICAg
ICAgcmV0dXJuIHdhbGs7CisKKyAgICBmb3IgKG5vZGUgPSB0cmF2ZXJzZVBhcmVudChub2RlKTsg
bm9kZTsgbm9kZSA9IHRyYXZlcnNlUGFyZW50KG5vZGUpKSB7CisgICAgICAgIGlmIChub2RlLT5u
ZXh0U2libGluZygpKQorICAgICAgICAgICAgcmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2Vy
OjpwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSkpCisgICAg
ICAgIHJldHVybiB3YWxrOworICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChub2RlKTsKK30KKwor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQordHlwZWRlZiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIg
V2Fsa2VyVHlwZTsKKyNlbHNlCit0eXBlZGVmIFNoYWRvd1RyZWVXYWxrZXIgV2Fsa2VyVHlwZTsK
KyNlbmRpZgorCiB2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQo
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQogewogICAgIGlmICghbV9pbnNlcnRpb25Q
b2ludCkgewpAQCAtNDksMTQgKzI0MywyMCBAQCB2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZl
cnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQogCiBDb250YWluZXJOb2RlKiBw
YXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCiB7Ci0g
ICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpD
YW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
V2Fsa2VyVHlwZSB3YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDcm9zc1Vw
cGVyQm91bmRhcnksIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q2FuU3RhcnRGcm9tU2hhZG93
Qm91bmRhcnkpOworI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgCisgICAgV2Fsa2VyVHlwZSB3
YWxrZXIobm9kZSk7CisjZW5kaWYKKwogICAgIENvbnRhaW5lck5vZGUqIGZvdW5kID0gdG9Db250
YWluZXJOb2RlKHdhbGtlci50cmF2ZXJzZVBhcmVudCh3YWxrZXIuZ2V0KCksIGRldGFpbHMpKTsK
LSAgICByZXR1cm4gZGV0YWlscy0+b3V0T2ZDb21wb3NpdGlvbigpID8gMCA6IGZvdW5kOworICAg
IHJldHVybiBkZXRhaWxzICYmIGRldGFpbHMtPm91dE9mQ29tcG9zaXRpb24oKSA/IDAgOiBmb3Vu
ZDsKIH0KIAogTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKKyAgICBXYWxrZXJUeXBlIHdh
bGtlcihub2RlKTsKKwogICAgIGlmIChub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkgewog
ICAgICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAgICAgIHdhbGtlci5maXJzdENoaWxkKCk7CkBA
IC02OSwxMyArMjY5LDEzIEBAIE5vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2Rl
KQogICAgIE5vZGUqIHBhcmVudCA9IHdhbGtlci50cmF2ZXJzZVBhcmVudChub2RlKTsKICAgICBp
ZiAocGFyZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gdG9F
bGVtZW50KHBhcmVudCktPnBzZXVkb0VsZW1lbnQoQUZURVIpOwotCiAgICAgcmV0dXJuIDA7CiB9
CiAKIE5vZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworICAgIFdhbGtlclR5cGUgd2Fs
a2VyKG5vZGUpOworCiAgICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsKICAg
ICAgICAgd2Fsa2VyLnBhcmVudCgpOwogICAgICAgICB3YWxrZXIubGFzdENoaWxkKCk7CkBAIC05
NCwzNCArMjk0LDQ2IEBAIE5vZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9k
ZSkKIAogTm9kZSogbmV4dEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhN
RTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJM
RShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAz
MzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIubmV4dCgpOwog
ICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBOb2RlVHJhdmVyc2Fs
OjpuZXh0KG5vZGUpOworI2VuZGlmCiB9CiAKIE5vZGUqIHByZXZpb3VzSW5TY29wZShjb25zdCBO
b2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hv
dWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRh
cnkpOwogICAgIHdhbGtlci5wcmV2aW91cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7Cisj
ZWxzZQorICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlKTsKKyNlbmRpZgog
fQogCiBOb2RlKiBwYXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklY
TUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFC
TEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MzMzOQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLnBhcmVudCgp
OwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBub2RlLT5wYXJl
bnROb2RlKCk7CisjZW5kaWYKIH0KIAogTm9kZSogbGFzdENoaWxkSW5TY29wZShjb25zdCBOb2Rl
KiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxk
bid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
KG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkp
OwogICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vs
c2UKKyAgICByZXR1cm4gbm9kZS0+bGFzdENoaWxkKCk7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKaW5kZXggMmRiM2U3NTk1Y2Fj
YzBmOWMwNWY4NmZmYTExN2JhZTQ4OGQ1ODgwNC4uNGNiNzdjYjI2NDQ4YjM5MTNjYzVhMDM2NzMw
YWQwMDA3NGU2ZjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZl
cnNhbC5oCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX291dE9mQ29tcG9z
aXRpb247CiB9OwogCitDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSopOwogQ29udGFp
bmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CiBDb250YWluZXJO
b2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CiBOb2RlKiBuZXh0
U2libGluZyhjb25zdCBOb2RlKik7CkBAIC03Niw2ICs3NywxMiBAQCBOb2RlKiBwcmV2aW91c0lu
U2NvcGUoY29uc3QgTm9kZSopOwogTm9kZSogcGFyZW50SW5TY29wZShjb25zdCBOb2RlKik7CiBO
b2RlKiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqKTsKIAoraW5saW5lIENvbnRhaW5lck5v
ZGUqIHBhcmVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIFBhcmVudERldGFpbHMgZGV0YWls
czsKKyAgICByZXR1cm4gcGFyZW50KG5vZGUsICZkZXRhaWxzKTsKK30KKwogaW5saW5lIENvbnRh
aW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxz
KQogewogICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAppbmRleCBlM2E0ODIyMmI5M2QzOGQ2NzBlYzJhMjM4MWYwYmY2ZGEx
NTE3NDJkLi5iM2UzNzgyYjFjNGZjNDVlNTJhZjkxOWJkNzJlMTZhMGEzYTQyYzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01Nyw3ICs1NywxMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc1NoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFn
bWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRv
d1Jvb3Q+IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkKiBwb2ludGVyc1szXTsK
KyNlbHNlCisgICAgdm9pZCogcG9pbnRlcnNbMl07CisjZW5kaWYKICAgICB1bnNpZ25lZCBjb3Vu
dGVyc0FuZEZsYWdzWzFdOwogfTsKIApAQCAtMjY2LDcgKzI3MCw3IEBAIE5vZGU6Okluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUqIGluc2VyCiAKICAgICBpZiAoIWluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkgfHwgIWlz
T2xkZXN0KCkpCiAgICAgICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwotCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgLy8gRklYTUU6IFdoZW4gcGFyc2luZyA8dmlkZW8gY29udHJvbHM+LCBp
bnNlcnRlZEludG8oKSBpcyBjYWxsZWQgbWFueSB0aW1lcyB3aXRob3V0IGludm9raW5nIHJlbW92
ZWRGcm9tLgogICAgIC8vIEZvciBub3csIHdlIGNoZWNrIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRT
aGFkb3dyb290LiBXZSB3b3VsZCBsaWtlIHRvIEFTU0VSVCghbV9yZWdpc3RlcmVkU2hhZG93Um9v
dCkgaGVyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jaWc/aWQ9
MTAxMzE2CkBAIC0yNzcsMTIgKzI4MSwxMyBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcgogICAg
ICAgICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5yZWdpc3RlckVsZW1lbnRTaGFk
b3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSB0cnVlOwog
ICAgIH0KLQorI2VuZGlmCiAgICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CiB9CiAKIHZvaWQgU2hh
ZG93Um9vdDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50
KCkgJiYgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QpIHsKICAgICAgICAgU2hhZG93
Um9vdCogcm9vdCA9IGhvc3QoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKTsKICAgICAgICAgaWYg
KCFyb290KQpAQCAtMjkyLDcgKzI5Nyw3IEBAIHZvaWQgU2hhZG93Um9vdDo6cmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgICAgICByb290LT5zY29wZURp
c3RyaWJ1dGlvbigpLT51bnJlZ2lzdGVyRWxlbWVudFNoYWRvdygpOwogICAgICAgICBtX3JlZ2lz
dGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCA9IGZhbHNlOwogICAgIH0KLQorI2VuZGlmCiAgICAg
RG9jdW1lbnRGcmFnbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogfQogCkBAIC0z
MTcsNiArMzIyLDcgQEAgdm9pZCBTaGFkb3dSb290Ojp1bnJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxl
Q2hpbGQoKQogICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKG1fbnVtYmVyT2ZTdHlsZXMg
PiAwKTsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uKiBTaGFkb3dSb290OjplbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpCiB7CiAgICAgaWYgKG1f
c2NvcGVEaXN0cmlidXRpb24pCkBAIC0zMjQsNyArMzMwLDggQEAgU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uKiBTaGFkb3dSb290OjplbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpCiAKICAgICBtX3Nj
b3BlRGlzdHJpYnV0aW9uID0gYWRvcHRQdHIobmV3IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbik7
CiAgICAgcmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7Ci19ICAgCit9CisjZW5kaWYK
IAogdm9pZCBTaGFkb3dSb290OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewpAQCAtMzMzLDcgKzM0MCw5IEBAIHZvaWQgU2hhZG93
Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKICAgICBUcmVlU2NvcGU6OnJlcG9ydE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdElu
Zm8pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9u
ZXh0KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpbmZvLmFkZE1lbWJlcihtX3Njb3Bl
RGlzdHJpYnV0aW9uKTsKKyNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRl
eCAxNTI2OTM4ZWRlNTA0MGRkYzQzMzlmNThmZjg2NTFhMmM3MjU5Zjc5Li44NTlmMGQyMmRlYWQ4
MmFkOGM3ZGUxMDU2NGYyODIyMjkxNDFjZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAg
LTg4LDkgKzg4LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY29wZWRI
VE1MU3R5bGVDaGlsZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nv
cGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklERTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmlidXRpb24oKSB7IHJldHVy
biBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAgY29uc3QgU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVEaXN0
cmlidXRpb24uZ2V0KCk7IH0KICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIGVuc3VyZVNj
b3BlRGlzdHJpYnV0aW9uKCk7CisjZW5kaWYKIAogICAgIFNoYWRvd1Jvb3RUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2lzQXV0aG9yU2hhZG93Um9vdCA/IEF1dGhvclNoYWRvd1Jvb3QgOiBV
c2VyQWdlbnRTaGFkb3dSb290OyB9CiAgICAgYm9vbCBpc0FjY2Vzc2libGUoKSBjb25zdCB7IHJl
dHVybiB0eXBlKCkgPT0gQXV0aG9yU2hhZG93Um9vdDsgfQpAQCAtMTEwLDcgKzExMiw5IEBAIHBy
aXZhdGU6CiAKICAgICBTaGFkb3dSb290KiBtX3ByZXY7CiAgICAgU2hhZG93Um9vdCogbV9uZXh0
OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIE93blB0cjxTY29wZUNvbnRlbnREaXN0cmli
dXRpb24+IG1fc2NvcGVEaXN0cmlidXRpb247CisjZW5kaWYKICAgICB1bnNpZ25lZCBtX251bWJl
ck9mU3R5bGVzIDogMjg7CiAgICAgdW5zaWduZWQgbV9hcHBseUF1dGhvclN0eWxlcyA6IDE7CiAg
ICAgdW5zaWduZWQgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IDA1ZWViYWI0MTBkODhiNDFlYjgxMTkz
MTJhZDlkOTFjMjVkNDFlYzIuLjY4ZTA3OTcyMjg3YjAwNTMwNmNiZGM4MjkxZThiMWYzZjJhMzIw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTUx
LDYgKzUxLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIDogSFRNTENvbnRlbnRFbGVtZW50KEhUTUxO
YW1lczo6d2Via2l0U2hhZG93Q29udGVudFRhZywgZG9jdW1lbnQpCiAgICAgewogICAgIH0KKwor
ICAgIC8vIFRoaXMgbWF0Y2ggc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSB0byBEZXRhaWxz
U3VtbWFyeUVsZW1lbnQ6Om1hdGNoVHlwZUZvcigpCisgICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0
Y2hUeXBlRm9yKE5vZGUqIG5vZGUpIE9WRVJSSURFCisgICAgeworICAgICAgICBpZiAoIW5vZGUt
PmlzRWxlbWVudE5vZGUoKSB8fCBub2RlICE9IG5vZGUtPnBhcmVudE5vZGUoKS0+cXVlcnlTZWxl
Y3RvcihzdW1tYXJ5UXVlcnlTZWxlY3RvcigpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSkKKyAgICAg
ICAgICAgIHJldHVybiBBbHdheXNNYXRjaGVzOworICAgICAgICByZXR1cm4gTmV2ZXJNYXRjaGVz
OworICAgIH0KIH07CiAKIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxz
Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMjAsNiArMTI4
LDExIEBAIHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAg
ICByb290LT5hcHBlbmRDaGlsZChEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCgpKSwgQVNTRVJUX05PX0VYQ0VQVElPTiwgdHJ1ZSk7CiB9CiAKK0VsZW1lbnQqIEhUTUxEZXRh
aWxzRWxlbWVudDo6ZmFsbGJhY2tTdW1tYXJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RGV0YWlsc1N1bW1hcnlFbGVtZW50Kj4odXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJz
dENoaWxkKCkpLT5mYWxsYmFja1N1bW1hcnkoKTsKK30KKwogRWxlbWVudCogSFRNTERldGFpbHNF
bGVtZW50OjpmaW5kTWFpblN1bW1hcnkoKSBjb25zdAogewogICAgIGZvciAoTm9kZSogY2hpbGQg
PSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CkBA
IC0xMjcsNyArMTQwLDcgQEAgRWxlbWVudCogSFRNTERldGFpbHNFbGVtZW50OjpmaW5kTWFpblN1
bW1hcnkoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChjaGlsZCk7CiAgICAg
fQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxlbWVudCo+KHVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1tYXJ5KCk7CisgICAg
cmV0dXJuIGZhbGxiYWNrU3VtbWFyeSgpOwogfQogCiB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKQEAgLTE0Niw4ICsxNTksMTggQEAgYm9vbCBIVE1MRGV0YWlsc0VsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGMK
ICAgICBpZiAoIWNoaWxkQ29udGV4dC5pc09uRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX2lzT3BlbikKKyAgICBpZiAobV9pc09wZW4p
IHsKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIC8vIFRoZSBmYWxsYmFjayA8c3Vt
bWFyeT4gc2hvdWxkbid0IGJlIHZpc2libGUgdW5sZXNzIGl0IGlzIHVzZWQgYXMgYSBtYWluIHN1
bW1hcnkuCisgICAgICAgIC8vIFdpdGggU0hBRE9XX0RPTSwgPGRldGFpbHM+IGNhbiBqdXN0IGxl
dCA8Y29udGVudD4gZmFsbGJhY2sgc3lzdGVtIHRha2UgY2FyZSBvZiB0aGlzLgorICAgICAgICBp
ZiAoY2hpbGRDb250ZXh0Lm5vZGUoKS0+aGFzVGFnTmFtZShzdW1tYXJ5VGFnKSkgeworICAgICAg
ICAgICAgRWxlbWVudCogZmFsbGJhY2sgPSBmYWxsYmFja1N1bW1hcnkoKTsKKyAgICAgICAgICAg
IGlmIChmYWxsYmFjayAhPSBmaW5kTWFpblN1bW1hcnkoKSAmJiBmYWxsYmFjayA9PSBjaGlsZENv
bnRleHQubm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
I2VuZGlmCiAgICAgICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihjaGlsZENvbnRleHQpOworICAgIH0KIAogICAgIGlmICghY2hpbGRDb250ZXh0Lm5vZGUo
KS0+aGFzVGFnTmFtZShzdW1tYXJ5VGFnKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU1
LDYgKzE3OCwyMCBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgYwogICAgIHJldHVybiBjaGlsZENv
bnRleHQubm9kZSgpID09IGZpbmRNYWluU3VtbWFyeSgpICYmIEhUTUxFbGVtZW50OjpjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCk7CiB9CiAKK3ZvaWQgSFRNTERldGFpbHNF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCit7CisjaWYg
IUVOQUJMRShTSEFET1dfRE9NKQorICAgIC8vIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24g
b2YgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkKKyAgICAvLyB3
aGljaCByZWF0dGFjaGVzIGNoaWxkcmVuIHRvIG1ha2UgdGhlbSBiZWluZyByZS1kaXN0cmlidXRl
ZCB0byBhcHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnRzLgorICAgIGlmIChhdHRhY2hlZCgpKSB7
CisgICAgICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJs
aW5nKCkpCisgICAgICAgICAgICBuLT5sYXp5UmVhdHRhY2goKTsKKyAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOworICAgIH0KKyNlbmRpZgorICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOworfQorCiB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6dG9nZ2xlT3BlbigpCiB7
CiAgICAgc2V0QXR0cmlidXRlKG9wZW5BdHRyLCBtX2lzT3BlbiA/IG51bGxBdG9tIDogZW1wdHlB
dG9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCmluZGV4IDlkYTk2
OTg4NjE0NjRjZDNkMGU3MmYyMTQ3NjgwNzNhMjNiZDM2YmEuLjI2NjRkMjVjMmQ4MzM0OWVmODVi
OTMwMjRjYmFkNDk3YWVmNmRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuaApAQCAtMzgsNyArMzgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotCisg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sLCBOb2RlKiwgTm9kZSosIGludCk7
CisgICAgRWxlbWVudCogZmFsbGJhY2tTdW1tYXJ5KCkgY29uc3Q7CiAgICAgdm9pZCBjcmVhdGVT
aGFkb3dTdWJ0cmVlKCk7CiAKICAgICBib29sIG1faXNPcGVuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMWQ3ZmViZjVjOWI4N2M5YTU5ZGVhNWY0ZDUzNTQ0
MDBkNjY1MTYzYy4uN2JlYjJiZDA1Nzg3ZjA1ZGIzNThjOTQ2ODdiNDdhNDhlZDFhMjEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MzYsOCArNTM2LDEw
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiAgICAgICAgICAgICB1cGRh
dGVGb2N1c0FwcGVhcmFuY2UodHJ1ZSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZv
ckRpc3RyaWJ1dGlvbih0aGlzKSkKICAgICAgICAgZWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURp
c3RyaWJ1dGlvbigpOworI2VuZGlmCiAKICAgICBzZXRDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRy
b2xDaGFuZ2VFdmVudChmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCmluZGV4IDMzNDVkN2EwMWU4YTMwYTU1YjQwNWRmOTg3
ZGU0MjIyOTVhM2FmNjIuLmVjYzNiNWFmNmIwYTQxNzkxMjE4N2ZjNzRkZDQxZWRjMWYwNTFmOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNv
bnRlbnREaXN0cmlidXRvci5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRl
ICJDb250ZW50U2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNp
bmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKQEAgLTQ0MSwzICs0NDMsNSBAQCB2b2lkIENv
bnRlbnREaXN0cmlidXRvcjo6ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVudCogaG9zdCkK
IH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oCmluZGV4IGRmZWFiOGNjN2ZkYmU1
MGFkZjYxMDdlOGQ2MGEwZGYyMjg0MTZkMGIuLjk1NTMxYjRiNGM1NjU4ZjFjNTY4ZTFmZDY3MzQ0
YzE2OGUwMDU3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5oCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250YWluZXJOb2RlOwpAQCAtMTYzLDQgKzE2
NSw1IEBAIGlubGluZSBib29sIENvbnRlbnREaXN0cmlidXRvcjo6bmVlZHNEaXN0cmlidXRpb24o
KSBjb25zdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
CmluZGV4IDI0YjM3MmE5ZTIwMzg4NDc5OGZkNjhiNTU4OGZiYTIwY2VhMjJhZDIuLmM0Y2VhNGU4
YTUyNDkzM2FkYTNmYWRkYjI4MGE2YzM1ZjIwYmRlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTI3LDYgKzI3LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZW50U2VsZWN0b3JRdWVyeS5o
IgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3Qu
aCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tl
ci5oIgpAQCAtOTEsMyArOTMsNSBAQCBib29sIENvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3MsIGludCBudAogfQogCiB9CisK
KyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCmluZGV4IDZhNGYzMzgxNTQ2YWFhM2EzMDk4
OTQ2Mzc1Mzc4ZjM2MDQ1ZTFjMWIuLmI3MDMzZTE4NzAzNjI0MjI3ZTU3ZTI3YWFkZTczOTBjZmI4
Yzc0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuaApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC03Niw0ICs3OCw1IEBAIHByaXZh
dGU6CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCmluZGV4IDlkMGM4
ZmM0MzUzYmY5NmNlMjRkMWEyNmYyNTFhZGMzYzk4MWFkMDguLmNhMjY5ZTg2MzkwZTVlYjQxZmQ2
YzliMzk4M2I5YmNjMjIyODc0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5oCkBAIC04OCw3ICs4OCw2IEBAIGNsYXNzIEhUTUxDb250ZW50
RWxlbWVudCA6IHB1YmxpYyBJbnNlcnRpb25Qb2ludCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGNvbnRlbnRUYWdOYW1lKERvY3VtZW50Kik7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRNTENvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQogICAg
IHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBDb250ZW50SW5zZXJ0aW9uUG9pbnQ7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IGUwODMxOGJmZjVhOGUwYmJj
MDQ0NGZjODc4NmQzOTEzZjk4YzdjOTYuLmY5MDY0MjM0MTliNzc0OGUzYjcwNWI3YTM1NDRkMGYz
ZmYwYmI1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5jcHAKQEAgLTM5LDEwICszOSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1NpbXBs
ZUluc2VydGlvblBvaW50OjpTaW1wbGVJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQpCit7Cit9CisKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogSW5zZXJ0aW9uUG9pbnQ6
Okluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVJbnNl
cnRpb25Qb2ludCkKKyAgICA6IFNpbXBsZUluc2VydGlvblBvaW50KHRhZ05hbWUsIGRvY3VtZW50
KQogICAgICwgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3QoZmFsc2UpCiB7CiB9CkBAIC03OSwy
NSArODYsNiBAQCBib29sIEluc2VydGlvblBvaW50OjpzaG91bGRVc2VGYWxsYmFja0VsZW1lbnRz
KCkgY29uc3QKICAgICByZXR1cm4gaXNBY3RpdmUoKSAmJiAhaGFzRGlzdHJpYnV0aW9uKCk7CiB9
CiAKLWJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzU2hhZG93Qm91bmRhcnkoKSBjb25zdAotewotICAg
IHJldHVybiB0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkgJiYgaXNBY3Rp
dmUoKTsKLX0KLQotYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBjb25zdAotewotICAg
IGlmICghY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGNvbnN0IE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAg
ICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6Omdl
dERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdAogewogICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dS
b290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKQEAgLTExMSwxMSArOTksNiBAQCBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0
CiAgICAgcmV0dXJuIFN0YXRpY05vZGVMaXN0OjphZG9wdChub2Rlcyk7CiB9CiAKLWJvb2wgSW5z
ZXJ0aW9uUG9pbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
IGNvbnRleHQpCi17Ci0gICAgcmV0dXJuICFpc1NoYWRvd0JvdW5kYXJ5KCkgJiYgSFRNTEVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7Ci19Ci0KIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBIVE1MRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRl
ckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKQEAgLTIyOSw0ICsyMTIsMjAgQEAgSW5zZXJ0aW9u
UG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKICAg
ICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiB9CiAKK2Jvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzQWN0
aXZlKCkgY29uc3QKK3sKKyAgICBpZiAoIWNvbnRhaW5pbmdTaGFkb3dSb290KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOworICAg
IHdoaWxlIChub2RlKSB7CisgICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50KCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hB
RE9XX0RPTSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggNzQyNDNlOWNhYTQ1MzdjNTk0YTkyOTBiNDY4
MTFlM2I2MDA1YmNlNi4uYmRkZDI1ODFkNTYyY2NmZmUzNGM0NjUyYmU2MzU5ZDUzYmJjNjViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC00MSw3
ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zZXJ0aW9uUG9pbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFNoYWRv
d0luc2VydGlvblBvaW50LApAQCAtNTQsMTkgKzU0LDMyIEBAIHB1YmxpYzoKICAgICAgICAgSGFz
VG9NYXRjaFNlbGVjdG9yCiAgICAgfTsKIAorICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlw
ZUZvcihOb2RlKikgeyByZXR1cm4gQWx3YXlzTWF0Y2hlczsgfQorICAgIHZpcnR1YWwgVHlwZSBp
bnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBib29sIGFsd2F5c01hdGNoZXMo
Tm9kZSogbm9kZSkgeyByZXR1cm4gbWF0Y2hUeXBlRm9yKG5vZGUpID09IEFsd2F5c01hdGNoZXM7
IH0KKworcHJvdGVjdGVkOgorICAgIFNpbXBsZUluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc0luc2Vy
dGlvblBvaW50Tm9kZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KK307CisKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMgU2lt
cGxlSW5zZXJ0aW9uUG9pbnQgeworcHVibGljOgorCiAgICAgdmlydHVhbCB+SW5zZXJ0aW9uUG9p
bnQoKTsKIAogICAgIGJvb2wgaGFzRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gIW1fZGlz
dHJpYnV0aW9uLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgc2V0RGlzdHJpYnV0aW9uKENvbnRlbnRE
aXN0cmlidXRpb24mIGRpc3RyaWJ1dGlvbikgeyBtX2Rpc3RyaWJ1dGlvbi5zd2FwKGRpc3RyaWJ1
dGlvbik7IH0KICAgICB2b2lkIGNsZWFyRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dGlvbi5j
bGVhcigpOyB9Ci0gICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3Q7Ci0gICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RGlzdHJpYnV0
ZWROb2RlcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5v
ZGUqKSB7IHJldHVybiBBbHdheXNNYXRjaGVzOyB9CiAgICAgdmlydHVhbCBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpIHsgcmV0dXJuIGVtcHR5U2VsZWN0b3JMaXN0KCk7IH0K
LSAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBjYW5BZmZlY3RTZWxlY3RvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0OwpAQCAtNzYsNiArODksOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCiAgICAgYm9vbCBzaG91bGRV
c2VGYWxsYmFja0VsZW1lbnRzKCkgY29uc3Q7CisgICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkg
Y29uc3QgeyByZXR1cm4gdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpICYm
IGlzQWN0aXZlKCk7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKICAgICBzaXplX3Qg
aW5kZXhPZihOb2RlKiBub2RlKSBjb25zdCB7IHJldHVybiBtX2Rpc3RyaWJ1dGlvbi5maW5kKG5v
ZGUpOyB9CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlKikgY29uc3Q7CkBAIC05MCwxMiAr
MTA1LDEyIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEluc2VydGlvblBvaW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7CisKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZv
cmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KSBPVkVSUklERSB7IHJldHVybiAhaXNTaGFkb3dC
b3VuZGFyeSgpICYmIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOyB9CiAK
IHByaXZhdGU6CiAKQEAgLTEwMywzMCArMTE4LDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jl
Z2lzdGVyZWRXaXRoU2hhZG93Um9vdDsKIH07CiAKLWlubGluZSBJbnNlcnRpb25Qb2ludCogdG9J
bnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQotewotICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5p
c0luc2VydGlvblBvaW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNlcnRpb25Qb2lu
dCo+KG5vZGUpOwotfQotCi1pbmxpbmUgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9u
UG9pbnQoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJ
bnNlcnRpb25Qb2ludCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSW5zZXJ0aW9u
UG9pbnQqPihub2RlKTsKLX0KK0luc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUq
KTsKK2NvbnN0IEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqKTsK
IAogaW5saW5lIGJvb2wgaXNBY3RpdmVJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQog
ewogICAgIHJldHVybiBub2RlLT5pc0luc2VydGlvblBvaW50KCkgJiYgdG9JbnNlcnRpb25Qb2lu
dChub2RlKS0+aXNBY3RpdmUoKTsKIH0KIAotaW5saW5lIGJvb2wgaXNMb3dlckVuY2Fwc3VsYXRp
b25Cb3VuZGFyeShOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNJbnNl
cnRpb25Qb2ludCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRvSW5zZXJ0
aW9uUG9pbnQobm9kZSktPmlzU2hhZG93Qm91bmRhcnkoKTsKLX0KLQogaW5saW5lIE5vZGUqIHBh
cmVudE5vZGVGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQo
bm9kZSk7CkBAIC0xNjEsNiArMTYwLDQ1IEBAIGlubGluZSBFbGVtZW50U2hhZG93KiBzaGFkb3dP
ZlBhcmVudEZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogCiBJbnNlcnRpb25Qb2lu
dCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKik7CiAKKyNlbHNlCisKK2NsYXNzIElu
c2VydGlvblBvaW50IDogcHVibGljIFNpbXBsZUluc2VydGlvblBvaW50IHsKK3B1YmxpYzoKKyAg
ICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Citw
cm90ZWN0ZWQ6CisgICAgSW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KSA6IFNpbXBsZUluc2VydGlvblBvaW50KHRhZ05hbWUsIGRv
Y3VtZW50KSB7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKK2lubGluZSBJbnNlcnRpb25Q
b2ludCogdG9JbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZSB8
fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNl
cnRpb25Qb2ludCo+KG5vZGUpOworfQorCitpbmxpbmUgY29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRv
SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwg
bm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKworaW5saW5lIGJvb2wgaXNMb3dlckVuY2Fwc3Vs
YXRpb25Cb3VuZGFyeShOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNJ
bnNlcnRpb25Qb2ludCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisgICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzU2hhZG93Qm91bmRh
cnkoKTsKKyNlbHNlCisgICAgLy8gaW4gbm9uLVNIQU9EV19ET00gd29ybGQsIEluc2VydGlvblBv
aW50IGlzIHVzZWQgb25seSBpbnRlcm5hbGx5IGFuZAorICAgIC8vIHNob3VsZCBhbHdhc3kgYmUg
YSBib3VuZGFyeS4KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKaW5kZXggNDY1MjJj
NDQ1M2JjM2ViMDM2MWZkNDYxMWFkMTk2NzIyNmNkZDFjMC4uNmUyNzdhNDBkOTRmMDlhNTFmMzYw
ZDYwZjk1ZjdjOWQ2OWE1Yzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0LmgiCiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTg1LDMgKzg3LDQgQEAgdm9pZCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6Y29s
bGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3QKIAogfQog
CisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAppbmRleCBkMGYyZGU2ODIxYjMyNTA5MTZj
N2VjMTZkZWQ0ZGI3NTk4NGEwODE3Li5iMDIwNzNkNGYyYzM3OTVkNzg3NWU0YWQ1ZWRkOGM0OTc3
NzE3Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxl
RmVhdHVyZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVG
ZWF0dXJlU2V0LmgKQEAgLTMxLDkgKzMxLDEyIEBACiAjaWZuZGVmIFNlbGVjdFJ1bGVGZWF0dXJl
U2V0X2gKICNkZWZpbmUgU2VsZWN0UnVsZUZlYXR1cmVTZXRfaAogCisKICNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlbGVjdFJ1bGVGZWF0dXJlU2V0IHsK
QEAgLTg1LDQgKzg4LDUgQEAgaW5saW5lIGJvb2wgU2VsZWN0UnVsZUZlYXR1cmVTZXQ6Omhhc1Nl
bGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXQKIAogfQogCisjZW5kaWYg
Ly8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBiZWU4MjA0M2FhODA2NjMzNjAxOWZkYTRiOTRkZWNmZDM0ZGE0YjFmLi4zNWJl
YzY0YTM1ODMxY2UzZTg1YzlmNjg5NDJmYWE2ZmJiNmIyZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0zNDgsNyArMzQ4LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNT
ZWxlY3RvckZvcklkSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBpZFZhbHVl
LCBFCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFVOVVNFRF9QQVJBTShpZFZhbHVl
KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRp
c3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2Vs
ZWN0b3JGb3JJZChpZFZhbHVlKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCog
aG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzU4
LDcgKzM2MywxMiBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93
KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYQogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKKyAgICBVTlVTRURfUEFSQU0oY2xhc3NOYW1lKTsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05h
bWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBJbnRlcm5h
bHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3Qg
U3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM2OCw3ICszNzgs
MTIgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxl
bWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CisgICAgVU5VU0VEX1BBUkFNKGF0dHJpYnV0ZU5hbWUpOworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RG
ZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50
ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwg
Y29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFzcywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNzgsNiAr
MzkzLDggQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRv
dyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHAKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCisgICAgVU5VU0VEX1BBUkFNKHBzZXVkb0NsYXNzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9IGhvc3QtPnNo
YWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93
KCkpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiY2hlY2tlZCIpCiAgICAgICAgIHJldHVybiBm
ZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgpOwpAQCAtMzk1LDYgKzQxMiw3IEBAIGJv
b2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCog
aG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVj
dG9yRm9yVmlzaXRlZCgpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0Miw4ICs0NjAsMTEgQEAgYm9vbCBJbnRlcm5hbHM6
OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChjb25zdCBTdHJpbmcmIHByb3Bl
cnR5LCBkb3UKIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0
IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJB
TShyb290KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5p
c1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6
aGFzU2hhZG93RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ1MSw4ICs0NzIsMTEgQEAg
Ym9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3Qs
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAogYm9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVt
ZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworICAgIFVO
VVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAocm9vdCAm
JiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQodG9TaGFkb3dSb290KHJvb3QpKTsKKyNlbmRpZgog
CiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJuIDA7CkBAIC00NjUsNyAr
NDg5LDExIEBAIHNpemVfdCBJbnRlcm5hbHM6OmNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBOb2Rl
KiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6Y291bnRFbGVtZW50U2hhZG93KHRvU2hhZG93Um9vdChyb290KSk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmIAogfQogCiBib29sIEludGVybmFsczo6YXR0YWNoZWQoTm9k
ZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00ODAsNiArNTA4LDcgQEAgYm9vbCBJbnRl
cm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBOb2RlKiBJ
bnRlcm5hbHM6Om5leHRTaWJsaW5nQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ4NywxMCAr
NTE2LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcihOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2Vy
KG5vZGUpOwogICAgIHdhbGtlci5uZXh0U2libGluZygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFSQU0oZWMp
OworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6Zmlyc3RDaGls
ZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC00OTgsMTAgKzUzMywxNiBAQCBOb2RlKiBJbnRl
cm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5m
aXJzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5k
aWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5v
ZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAw
OwpAQCAtNTA5LDEwICs1NTAsMTYgQEAgTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtl
cihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKICAgICByZXR1cm4g
d2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm9kZSk7CisgICAgVU5VU0VE
X1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6
Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTUyMCwxMCArNTY3LDE2IEBAIE5v
ZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdh
bGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5k
aWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpwcmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAo
IW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVy
biAwOwpAQCAtNTMxLDYgKzU4NCwxMSBAQCBOb2RlKiBJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5
V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0
dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVO
VVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogU3RyaW5nIEludGVy
bmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9u
Q29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggMTcxYWYxYjM0
M2ViZDY0MjYzZjcwZmJiZDEzNTNiMzkzY2M1Zjc5NC4uMDNhNzNkNzcyYzc0MWI1MzgzMWRmMjBm
YWZjYmU4YjUwMjg2Mzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0
dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAt
MTA5LDcgKzEwOSw3IEBACiAgICAgICAnRU5BQkxFX1JVQlk9MScsCiAgICAgICAnRU5BQkxFX1NB
TkRCT1g9MScsCiAgICAgICAnRU5BQkxFX1NDUklQVEVEX1NQRUVDSD0xJywKLSAgICAgICdFTkFC
TEVfU0hBRE9XX0RPTT0xJywKKyAgICAgICdFTkFCTEVfU0hBRE9XX0RPTT0wJywKICAgICAgICdF
TkFCTEVfU01PT1RIX1NDUk9MTElORz0xJywKICAgICAgICdFTkFCTEVfU1BFRUNIX1NZTlRIRVNJ
Uz0wJywKICAgICAgICdFTkFCTEVfU1FMX0RBVEFCQVNFPTEnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggYzk4MzYy
MGUxNDBjM2I4NWE2N2JhMDdmMWUxODc2NjkxY2UyOTQyYy4uODM0ODMxODczY2E5YzQ0MTNmMDcx
MWY1N2JlZTAyNTkzM2Q3MTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0
LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0yMTgsMTggKzIxOCwxMiBAQCBFWFBP
UlRTCiAgICAgICAgID9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJD
b3JlQEBRQUVYX05AWgogICAgICAgICA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRy
b2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAjZW5kaWYKLSAgICAgICAgP2lzQWN0aXZlSW5zZXJ0aW9u
UG9pbnRAV2ViQ29yZUBAWUFfTlBCVk5vZGVAMUBAWgogICAgICAgICA/aXNDU1NFeGNsdXNpb25z
RW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKICAgICAgICAgP2lz
UHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdU
RkBAQFoKICAgICAgICAgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhl
Y1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdM
aXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RG
QEBYWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBB
Vk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgotICAgICAgICA/bmV4dFNp
YmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/
Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAg
ICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgot
ICAgICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0g
ICAgICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1i
ZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfS0BaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBA
U0E/QVYxMkBIQFoKQEAgLTMxNyw3ICszMTEsNiBAQCBFWFBPUlRTCiAgICAgICAgID9jb21wdXRl
Vmlld3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVAQFlBP0FVVmlld3BvcnRBdHRyaWJ1dGVzQDFAVVZp
ZXdwb3J0QXJndW1lbnRzQDFASEhITVZJbnRTaXplQDFAQFoKICAgICAgICAgP3ZpZXdwb3J0QXJn
dW1lbnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FVVmlld3BvcnRBcmd1bWVudHNAMkBYWgogICAgICAg
ICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVudEBXZWJDb3JlQEBRQUVfTkhAWgotICAgICAgICA/
aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/c3VzcGVu
ZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAg
P3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAg
ICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCkBA
IC02MDQsMTggKzU5NywxMiBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRQcm9maWxlckVuYWJsZWRA
SW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/ZGlzY29ubmVj
dEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAjZW5kaWYKLSAg
ICAgICAgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBCVk5vZGVAMUBAWgog
ICAgICAgICA/aXNDU1NFeGNsdXNpb25zRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdl
YkNvcmVAQDBfTkEKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdl
YkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pzQXJyYXlAV2ViQ29yZUBA
WUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBW
PyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAgICAgICAgID9s
YXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBA
UUJFX05YWgogICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRAUGFnZUBX
ZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJr
ZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJr
ZXJAMkBAWgotICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdl
YkNvcmVAQFFBRVhYWgotICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/
QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfS0BaCiAgICAg
ICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBIQFoKQEAgLTcwMyw3ICs2OTAsNiBAQCBF
WFBPUlRTCiAgICAgICAgID9jb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVAQFlBP0FV
Vmlld3BvcnRBdHRyaWJ1dGVzQDFAVVZpZXdwb3J0QXJndW1lbnRzQDFASEhITVZJbnRTaXplQDFA
QFoKICAgICAgICAgP3ZpZXdwb3J0QXJndW1lbnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FVVmlld3Bv
cnRBcmd1bWVudHNAMkBYWgogICAgICAgICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVudEBXZWJD
b3JlQEBRQUVfTkhAWgotICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBA
UUJFX05YWgogICAgICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBX
ZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJv
bGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4
dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCkBAIC05OTAsMTggKzk3NiwxMiBAQCBFWFBPUlRTCiAgICAg
ICAgID9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
X05AWgogICAgICAgICA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUFFWFhaCiAjZW5kaWYKLSAgICAgICAgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2Vi
Q29yZUBAWUFfTlBCVk5vZGVAMUBAWgogICAgICAgICA/aXNDU1NFeGNsdXNpb25zRW5hYmxlZEBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKICAgICAgICAgP2lzUHJlbG9hZGVk
QENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAg
ICAgICAgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNA
UEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNv
cmVAQEBXVEZAQEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAg
ICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FW
PyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBW
TWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgotICAgICAgICA/bmV4dFNpYmxpbmdAQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/Zmlyc3RDaGls
ZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9sYXN0
Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/
bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9w
cmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAg
ID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5n
QFdURkBAU0E/QVYxMkBfS0BaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBI
QFoKQEAgLTEwODksNyArMTA2OSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9y
dEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRB
cmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNA
UGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1Bh
Z2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2
ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0
aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1l
QW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/
c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKQEAgLTEzNDIs
MTAgKzEzMjEsNiBAQCBFWFBPUlRTCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJ
bXBsQDFAMEBaCiAgICAgICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJ
bXBsQDFAUEJFQFoKICAgICAgICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2ViQ29yZUBAWUE/
QVZTdHJpbmdAV1RGQEBQQVZFbGVtZW50QDFASUBaCi0gICAgICAgID9lbnN1cmVTZWxlY3RGZWF0
dXJlU2V0QENvbnRlbnREaXN0cmlidXRvckBXZWJDb3JlQEBRQUVBQlZTZWxlY3RSdWxlRmVhdHVy
ZVNldEAyQFBBVkVsZW1lbnRTaGFkb3dAMkBAWgotICAgICAgICA/aGFzU2hhZG93RWxlbWVudEBT
Y29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBAWgot
ICAgICAgICA/aGFzQ29udGVudEVsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNv
cmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKLSAgICAgICAgP2NvdW50RWxlbWVudFNoYWRvd0BT
Y29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FJUEJWU2hhZG93Um9vdEAyQEBaCiAg
ICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJASUBaCiAgICAgICAgID9maW5k
QFN0cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJAQFoKICAgICAgICAgP2Fic29sdXRlQ2FyZXRCb3Vu
ZHNARnJhbWVTZWxlY3Rpb25AV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAyQFhaCkBAIC0xMzgwLDE4
ICsxMzU1LDI0IEBAIEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0
b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRl
bmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/
aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAg
ID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBA
MF9OQQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBA
UUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpT
VmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NS
ZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFu
Z2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlha
CiAgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVA
QFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2Vy
Q29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJD
b3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBa
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9maXJzdENoaWxkQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2xhc3RDaGlsZEBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9uZXh0QENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3ByZXZpb3Vz
QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP2lzQWN0
aXZlQEluc2VydGlvblBvaW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP2Vuc3VyZVNlbGVj
dEZlYXR1cmVTZXRAQ29udGVudERpc3RyaWJ1dG9yQFdlYkNvcmVAQFFBRUFCVlNlbGVjdFJ1bGVG
ZWF0dXJlU2V0QDJAUEFWRWxlbWVudFNoYWRvd0AyQEBaCisgICAgICAgID9oYXNTaGFkb3dFbGVt
ZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAy
QEBaCisgICAgICAgID9oYXNDb250ZW50RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25A
V2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBAWgorICAgICAgICA/Y291bnRFbGVtZW50U2hh
ZG93QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQUlQQlZTaGFkb3dSb290QDJA
QFoKKyNlbmRpZgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAg
ICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVyQFN0
cmluZ0BXVEZAQFNBP0FWMTJASEBaCkBAIC0xNDc5LDcgKzE0NjAsNiBAQCBFWFBPUlRTCiAgICAg
ICAgID9jb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVAQFlBP0FVVmlld3BvcnRBdHRy
aWJ1dGVzQDFAVVZpZXdwb3J0QXJndW1lbnRzQDFASEhITVZJbnRTaXplQDFAQFoKICAgICAgICAg
P3ZpZXdwb3J0QXJndW1lbnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FVVmlld3BvcnRBcmd1bWVudHNA
MkBYWgogICAgICAgICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVudEBXZWJDb3JlQEBRQUVfTkhA
WgotICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgogICAg
ICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
WFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3Jl
QEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3Jl
QEBTQVhfTkBaCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1s
L2RldGFpbHMtbmVzdGVkLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvaHRtbC9kZXRhaWxzLW5lc3RlZC0yLWV4cGVjdGVkLnR4dAppbmRleCBjMWZjNDdmZWFi
NTdkNzU3ZDVlNTk5NTk5MDFmYTBiMTFhMjNlNGJlLi4yYjkyYjBiOTk3MDc0YzlmNDc5MDMwMWY0
NDc4NWMwZWViMDk1ZDhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9odG1sL2RldGFpbHMtbmVzdGVkLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0YWlscy1uZXN0ZWQtMi1leHBlY3RlZC50eHQKQEAgLTks
NyArOSw2IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMjQsOCkgc2l6ZSA2M3gxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDI0LDgpIHdpZHRoIDU6ICIgIgogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI4LDgpIHdpZHRo
IDU5OiAic3VtbWFyeSIKLSAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDgsNDIp
IHNpemUgNzY4eDAKICAgICAgICAgUmVuZGVyQmxvY2sge0RFVEFJTFN9IGF0ICg4LDQyKSBzaXpl
IDc2OHg2OCBbYm9yZGVyOiAoOHB4IHNvbGlkICM5OTU1NTUpXQogICAgICAgICAgIFJlbmRlckJs
b2NrIHtTVU1NQVJZfSBhdCAoOCw4KSBzaXplIDc1MngzNCBbYm9yZGVyOiAoOHB4IHNvbGlkICND
Qzk5OTkpXQogICAgICAgICAgICAgUmVuZGVyRGV0YWlsc01hcmtlciB7RElWfSBhdCAoOCwxMikg
c2l6ZSAxMXgxMTogZG93bgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184129</attachid>
            <date>2013-01-22 21:16:36 -0800</date>
            <delta_ts>2013-01-24 01:37:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130123141330.patch</filename>
            <type>text/plain</type>
            <size>69789</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAxMmQ2N2IwZGFkNDNj
YTgwNjVmOGE2MzgwNmUwNmE0MjVmYzA1ZC4uOTY0ZDMyNmViMGNkYmMwYmQ1NTRiYTcyN2UzODA4
Y2JkOTQ1NDllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMy0wMS0yMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGhpZGVzIG9uZSBvZiB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJ0IG9mIFNoYWRvdworICAgICAg
ICBET00gc3RhbmRhcmQsIHRoYXQgaXMgbm9kZSBkaXN0cmlidXRpb24uIFR3byBtYWpvciBjbGFz
c2VzCisgICAgICAgIENvbnRlbnREaXN0cmlidXRvciBhbmQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIGFyZSBtb3ZlZCBiZWhpbmQKKyAgICAgICAgRU5BQkxFX1NIQURPV19ET00gZmxhZy4KKwor
ICAgICAgICBTaW5jZSA8ZGV0YWlscz4gYW5kIDxzdW1tYXJ5PiB1c2VzIHRoaXMgbWVjaGFuaXNt
IGludGVybmFsbHksCisgICAgICAgIHRoaXMgY2hhbmdlIG5lZWRzIHRvIGNvbXBlbnNhdGUgdGhl
bS4gU2hhZG93VHJlZVdhbGtlciBpcyBpbnRyb2R1Y2VkCisgICAgICAgIGZvciB0aGF0IHB1cnBv
c2UuIFNoYWRvd1RyZWVXYWxrZXIgaXMgYSBzaW1wbGlmaWVkIGltcGxlbWVudGF0aW9uIG9mCisg
ICAgICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciwgd2hpY2ggaGFzIGEgc3Vic2V0IG9mIENT
VFcgQVBJLgorICAgICAgICBUaGUgYWxnb3JpdGhtIGltcGxlbWVudGVkIGJ5IFNoYWRvd1RyZWVX
YWxrZXIgc2hvdWxkIGJlIHNpbXBsZXIKKyAgICAgICAgYmVjYXVzZSBpdCBuZWVkcyBubyBleHRy
YSBwZXJzaXN0ZW50IHN0YXRlcyB0byBET00gb2JqZWN0cy4KKworICAgICAgICBJbnNlcnRpb25Q
b2ludCBpcyBhbm90aGVyIHBpZWNlIHdoaWNoIGlzIG9ubHkgdXNlZCBieSBTSEFET1dfRE9NIGFu
ZAorICAgICAgICBERVRBSUxTX0VMRU1FTlQgYW5kIGl0IHNob3VsZCBiZSBtb3ZlZCBiZWhpbmQg
dGhlIGZsYWcgdG9vLiBUaGF0IHdpbGwKKyAgICAgICAgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIGNo
YWduZSAoQnVnIDEwNzYyMSkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRj
aFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkSG9zdFJ1bGUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOgor
ICAgICAgICAoU3R5bGVTY29wZVJlc29sdmVyKToKKyAgICAgICAgKiBkb20vQW5jZXN0b3JDaGFp
bldhbGtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJl
bnQpOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgorICAgICAg
ICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVu
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaWRBZmZlY3RT
ZWxlY3Rvcik6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50U2hhZG93OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAg
ICAgIChFbGVtZW50U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmRp
c3RyaWJ1dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmludmFsaWRhdGVE
aXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlz
dHJpYnV0aW9uKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA6Cisg
ICAgICAgIChTaGFkb3dUcmVlV2Fsa2VyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpTaGFkb3dUcmVlV2Fsa2VyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxr
ZXI6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFk
b3dUcmVlV2Fsa2VyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJs
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1Ry
ZWVXYWxrZXI6Omxhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6Om5leHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJl
dmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93
VHJlZVdhbGtlcjo6aXNTaGFkb3dCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpmaW5kSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6Z2V0RGlzdHJpYnV0ZWROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNl
UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRv
d1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6bmV4
dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5p
bmdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJl
bnRTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRT
aWJsaW5nU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpw
cmV2aW91c1NpYmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6Om5leHRJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnByZXZpb3VzSW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsOjpwYXJlbnRJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWw6Omxhc3RDaGlsZEluU2NvcGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmg6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2FsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudCk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoU2FtZVNpemVBc1NoYWRvd1Jvb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChEZXRhaWxzQ29udGVudEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpmYWxsYmFja1N1bW1hcnkpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6
OmZpbmRNYWluU3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFp
bHNFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNF
bGVtZW50Lmg6CisgICAgICAgIChIVE1MRGV0YWlsc0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
Y3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5oOgorICAgICAgICAoSFRNTENvbnRlbnRFbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVJbnNlcnRpb25Qb2ludDo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQp
OiBQdXNoZWQgZG93biBmcm9tIFNpbXBsZUluc2VydGlvblBvaW50CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9uUG9p
bnQ6Om1hdGNoVHlwZUZvcik6CisgICAgICAgIChTaW1wbGVJbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVJbnNlcnRpb25Qb2ludDo6YWx3YXlzTWF0Y2hlcyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydGlvblBvaW50Ojppc1NoYWRvd0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydGlvblBvaW50OjpyZXNldFN0eWxlSW5oZXJpdGFuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRv
SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNMb3dlckVuY2Fwc3VsYXRpb25C
b3VuZGFyeSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3Bw
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0Lmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBEaXNhYmxlZCBTSEFET1dfRE9NIHNwZWNpZmljIGZ1
bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZElu
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFz
c0luU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGVJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVj
dG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omhhc1NoYWRvd0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb3VudEVs
ZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2libGluZ0J5
V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxrZXIpOgorCiAyMDEzLTAxLTIyICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGEgcGxh
dGZvcm0gc3RyYXRlZ3kgZm9yIGxvY2FsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2Yjky
YWE2MjkzMWJmNDNiYzU0MGIzODc5NzY0NTk1OWVkMTUwYTgwLi4wZGZlOGNjZTdmYzY2NTBlZGNj
MWJmNTdhZjRmOWQ1YWNkYzhhNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMDEtMjIgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFtTaGFkb3cgRE9NXSBQdXQgbm9kZSByZXByb2plY3Rpb24gY29kZSBiZWhpbmQgRU5BQkxF
KFNIQURPV19ET00pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDY2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW46IE1vdmVkIHNvbWUgc3lt
Ym9scyBiZWhpbmQgRU5BQkxFKFNIQURPV19ET00pIGZsYWcuCisKIDIwMTMtMDEtMjIgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBwbGF0Zm9y
b20gc3RyYXRlZ3kgZm9yIGxvY2FsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMzQ0
YWJhYTc5NGIzY2RmZjc5MTliYjI2ODdiODA0NWRhYTYxZWZhYi4uMDhiOTAxM2JlYzhkZTMyZTZk
YzdhNDMwMGFmYWQ5N2I5YTI1M2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTUxNyw3ICs1
MTcsNiBAQCBfX1pON1dlYkNvcmUxN3VzZXJWaXNpYmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2Vi
Q29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29y
bGRFCiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxN2dlbmVyYWxQYXN0ZWJvYXJkRXYKIF9fWk43
V2ViQ29yZTEwUGFzdGVib2FyZDE0d3JpdGVQbGFpblRleHRFUktOM1dURjZTdHJpbmdFTlMwXzE4
U21hcnRSZXBsYWNlT3B0aW9uRQotX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3IyMmVu
c3VyZVNlbGVjdEZlYXR1cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKIF9fWk43V2ViQ29yZTE4
UGxhdGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1Q
YXN0ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThQ
bGF0Zm9ybVBhc3RlYm9hcmQxM3N0cmluZ0ZvclR5cGVFUktOM1dURjZTdHJpbmdFCkBAIC02NTYs
MTEgKzY1NSw2IEBAIF9fWk43V2ViQ29yZTIzZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0
cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05T
XzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18x
MFN0cmluZ0hhc2hFTlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFy
eVByb3BlcnR5TGlzdFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRD
YWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNl
RQotX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgot
X19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYKLV9f
Wk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyNG5leHRFdgotX19aTjdXZWJDb3Jl
MjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI4cHJldmlvdXNFdgotX19aTjdXZWJDb3JlMjRDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI5bGFzdENoaWxkRXYKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUVOU18xNERvY3VtZW50TWFya2Vy
MTFNYXJrZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMTNy
ZW1vdmVNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQogX19aTjdXZWJD
b3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxOGFkZFRleHRNYXRjaE1hcmtlckVQS05TXzVS
YW5nZUViCkBAIC02NzAsOSArNjY0LDYgQEAgX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIxNGZyYW1lRGVzdHJveWVkRXYKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyMTR3aWxsRGV0YWNoUGFnZUV2CiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlckMyRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlckQyRXYKLV9fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTZoYXNT
aGFkb3dFbGVtZW50RVBLTlNfMTBTaGFkb3dSb290RQotX19aTjdXZWJDb3JlMjRTY29wZUNvbnRl
bnREaXN0cmlidXRpb24xOGNvdW50RWxlbWVudFNoYWRvd0VQS05TXzEwU2hhZG93Um9vdEUKLV9f
Wk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTdoYXNDb250ZW50RWxlbWVudEVQ
S05TXzEwU2hhZG93Um9vdEUKIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3Vw
RVBOU184RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFUzVfTlNfMjdGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb25FCiBfX1pON1dlYkNvcmUyNGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lRVJLTlNfMjFO
ZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOM1dURjZTdHJpbmdFCkBAIC0xMjQ5LDggKzEyNDAsNiBA
QCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE4aXNGb2N1c2VkQW5kQWN0aXZlRXYKIF9f
Wk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5n
bGVzRVJOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFRUUKIF9fWk5LN1dlYkNvcmUxNEZy
YW1lU2VsZWN0aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19a
Tks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKLV9fWk5LN1dlYkNvcmUxNEluc2Vy
dGlvblBvaW50MTlnZXREaXN0cmlidXRlZE5vZGVzRXYKLV9fWk5LN1dlYkNvcmUxNEluc2VydGlv
blBvaW50OGlzQWN0aXZlRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJU
ZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29y
ZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBAIC0yNTM3LDYgKzI1MjYsMTggQEAgX19aTjdXZWJD
b3JlOUZyYW1lVmlldzI1c2VydmljZVNjcmlwdGVkQW5pbWF0aW9uc0VkCiBfX1pON1dlYkNvcmUy
MlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOGlzU2hhZG93RE9NRW5hYmxlZEUKIF9fWk43V2ViQ29y
ZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50
RW5hYmxlZEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01H
bG9iYWxPYmplY3RFUE5TXzEwU2hhZG93Um9vdEUKK19fWk43V2ViQ29yZTE4Q29udGVudERpc3Ry
aWJ1dG9yMjJlbnN1cmVTZWxlY3RGZWF0dXJlU2V0RVBOU18xM0VsZW1lbnRTaGFkb3dFCitfX1pO
N1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hhZG93RWxlbWVudEVQS05T
XzEwU2hhZG93Um9vdEUKK19fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50MTlnZXREaXN0cmli
dXRlZE5vZGVzRXYKK19fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYKK19f
Wk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMThjb3VudEVsZW1lbnRTaGFkb3dF
UEtOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bjE3aGFzQ29udGVudEVsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUyNENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjEwZmlyc3RDaGlsZEV2CitfX1pON1dlYkNvcmUyNENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjExbmV4dFNpYmxpbmdFdgorX19aTjdXZWJDb3JlMjRDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXI0bmV4dEV2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjhwcmV2aW91c0V2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjlsYXN0Q2hpbGRFdgorX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBO
U184RG9jdW1lbnRFCiAjZW5kaWYKIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKQEAgLTI3
MzQsMTAgKzI3MzUsNiBAQCBfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUKIF93
a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uCiAjZW5kaWYK
IAotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1l
bnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFCi0jZW5kaWYKLQogI2lmIEVOQUJMRShDU1NfUkVHSU9O
UykKIF9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE5aXNDU1NSZWdpb25zRW5h
YmxlZEUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQ4ZDY5
YzMyZmM1MWNiNmY0YWJlODhmMDEyZGZjMmE5NWYwNmQ3ZDkuLjAwYTZjMTBiMTU3MDYyZGVlZjAx
ODdiNjAxMGJlY2NkMTJlMzFiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
QEAgLTc2MSw3ICs3NjEsMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhv
clJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICAgICAgfQog
ICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIG1hdGNoSG9zdFJ1bGVzKHJlc3Vs
dCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHJlc3VsdCk7CiAgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKaW5kZXggOGFjYWJlNTBhZTcyZDFiZTE3
ZDRhMzVmN2IzNmNmMzY0ZGFmMjJiNy4uYTYzNTcwYTQzYjU1M2MxMWVjNWEyNzM4OGRhOTJhMTgw
ODE3ZjRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKQEAg
LTE5Miw3ICsxOTIsNiBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkSG9zdFJ1bGUoU3R5
bGVSdWxlSG9zdCogaG9zdFJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZQogICAgICAgICAgICAgcnVs
ZS0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KGhvc3RTdHlsaW5nUnVsZSks
IGFkZFJ1bGVGbGFncyk7CiAgICAgfQogfQotI2VuZGlmCiAKIGJvb2wgU3R5bGVTY29wZVJlc29s
dmVyOjpzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQpCiB7CkBAIC0yMzcsNiArMjM2LDcgQEAgdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6
Om1hdGNoSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFZlY3RvcjxSdWxlU2V0Kj4K
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KKyNlbmRpZgogCiB2b2lkIFN0eWxlU2NvcGVS
ZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3Bl
UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAppbmRl
eCAzYmUzZmY0ZjcwYzczNzViZDAxNDI2YTAwYmE0MjQxMjg0NjJjYzBlLi5jNWY3NzZmM2FlMTQx
MTc0MjQ4ODk3ZjY5OTg4MTNlNGNmOTI0ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTY29wZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2Nv
cGVSZXNvbHZlci5oCkBAIC03NSw5ICs3NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXRjaGVz
U3R5bGVCb3VuZHMoY29uc3QgU3RhY2tGcmFtZSYgZnJhbWUpIGNvbnN0IHsgcmV0dXJuIGZyYW1l
Lm1fYXV0aG9yU3R5bGVCb3VuZHNJbmRleCA9PSBtX3N0YWNrUGFyZW50Qm91bmRzSW5kZXg7IH0K
ICAgICB2b2lkIGNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVGZWF0dXJlU2V0Jik7CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICB2b2lkIGFkZEhvc3RSdWxlKFN0eWxlUnVsZUhvc3QqLCBib29s
IGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsK
ICAgICBib29sIHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3QgRWxl
bWVudCopOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCosIFZlY3RvcjxS
dWxlU2V0Kj4mIG1hdGNoZWRSdWxlcyk7CisjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQW5j
ZXN0b3JDaGFpbldhbGtlci5jcHAKaW5kZXggOTcwY2RjMjA1OTdjNTBiMjE4ZGY0MzEwMzhlNmM1
OGI5ZWFiYWFlNi4uNWI3Y2VlODJjZDUyNTE5M2ExNGE3MDU1NTVlOTQwZjViY2Q4ZTMxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcApAQCAtNDUsNiArNDUs
OCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiB7CiAgICAgQVNTRVJUKG1f
bm9kZSk7CiAgICAgQVNTRVJUKG1fZGlzdHJpYnV0ZWROb2RlKTsKKworI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudCht
X25vZGUpKSB7CiAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBz
aGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKG1fZGlzdHJpYnV0ZWRO
b2RlKSkgewogICAgICAgICAgICAgbV9ub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CkBAIC01MiwyMCAr
NTQsMzAgQEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCisKICAgICBpZiAoIW1fbm9kZS0+aXNT
aGFkb3dSb290KCkpIHsKICAgICAgICAgbV9ub2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUtPmlz
U2hhZG93Um9vdCgpICYmIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1No
YWRvd1Jvb3QobV9ub2RlKSkpKQogICAgICAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25v
ZGU7CiAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CisjZWxzZQor
ICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKKyAgICAgICAgbV9pc0Nyb3NzaW5n
SW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChtX25vZGUp
OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQgPSBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8oc2hhZG93Um9v
dCkpIHsKICAgICAgICAgbV9ub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CiAgICAgICAgIG1faXNDcm9z
c2luZ0luc2VydGlvblBvaW50ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRp
ZgorCiAgICAgbV9ub2RlID0gc2hhZG93Um9vdC0+aG9zdCgpOwogICAgIG1fZGlzdHJpYnV0ZWRO
b2RlID0gbV9ub2RlOwogICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4
IGFiNThkNjE1MmJjNjBkOTA1MTdhZTRhYjhjZWVhMDdiNDhmY2IxOGMuLmQyMzBmODY0ODc4MjQ2
ZjY5MDM4YzRkYTdiYTMxNmM5ZmZkNDRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0xLDQgKzEsMyBAQAotCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAt
MjgsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlci5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJD
b250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudFNoYWRvdy5oIgpAQCAtMzEzLDMgKzMxNCw1IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpwcmV2aW91cygpCiB9CiAKIH0gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFC
TEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuaAppbmRleCA4MzQ5ZTIxYWE5ODNmMGE4NGExMTNjMTY3ODBlNDllYzY3NjY0ZjNlLi4y
ZjAyYTdjM2JjNDU1MDVmNWI0MjgyODUzZWE2ZDI4M2YzOGZmMTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCkBAIC0zMSw2ICszMSw4IEBACiAj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE5vZGU7CkBAIC0xNDMsNCArMTQ1LDUgQEAgaW5saW5lIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUsIFBvbGkKIAog
fSAvLyBuYW1lc3BhY2UKIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzIwMzFkYTUzOTM4NTZmOGMzMzI3YjdlNzFhZTdkYmEw
Y2ZkODllMy4uNDEwOWRjZTE2M2NjMTRiN2U3ODI4NTVlMTAyY2JkMDhhNTJkY2FjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtODA4LDEwICs4MDgsMTIgQEAgc3RhdGljIGJvb2wgY2hlY2tO
ZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9ySWRDaGFuZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJ
ZCwgY28KIAogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHBhcmVudEVsZW1lbnRTaGFkb3cgPSBz
aGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKSkgewogICAgICAgICBpZiAoc2hvdWxk
SW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKHBhcmVudEVsZW1lbnRT
aGFkb3csIG5hbWUsIG5ld1ZhbHVlKSkKICAgICAgICAgICAgIHBhcmVudEVsZW1lbnRTaGFkb3ct
PmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKICAgICB9CisjZW5kaWYKIAogICAgIHBhcnNlQXR0
cmlidXRlKG5hbWUsIG5ld1ZhbHVlKTsKIApAQCAtOTQ4LDYgKzk1MCw3IEBAIHZvaWQgRWxlbWVu
dDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJp
bmcpCiAKIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRy
aWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3csIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgQVNTRVJUKGVsZW1lbnRTaGFkb3cpOwogICAgIGNvbnN0IFNlbGVj
dFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gZWxlbWVudFNoYWRvdy0+ZGlzdHJpYnV0b3Io
KS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGVsZW1lbnRTaGFkb3cpOwogCkBAIC05NzksNiArOTgy
LDEyIEBAIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRy
aWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsCiAgICAgfQogCiAgICAgcmV0dXJuIGZlYXR1
cmVTZXQuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFtZS5sb2NhbE5hbWUoKSk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShlbGVtZW50U2hhZG93KTsKKyAgICBVTlVTRURfUEFSQU0obmFtZSk7
CisgICAgVU5VU0VEX1BBUkFNKG5ld1ZhbHVlKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
IH0KIAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQg
aGFuZGxlci4KQEAgLTE0NTYsOSArMTQ2NSwxMiBAQCBFbGVtZW50U2hhZG93KiBFbGVtZW50Ojpl
bnN1cmVTaGFkb3coKQogCiB2b2lkIEVsZW1lbnQ6OmRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVk
U2VsZWN0b3JNYXNrIG1hc2spCiB7CisgICAgVU5VU0VEX1BBUkFNKG1hc2spOwogICAgIHNldE5l
ZWRzU3R5bGVSZWNhbGMoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVu
dFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRo
aXMpKQogICAgICAgICBlbGVtZW50U2hhZG93LT5kaWRBZmZlY3RTZWxlY3RvcihtYXNrKTsKKyNl
bmRpZgogfQogCiBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jv
b3QoRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5k
ZXggMzJkZDRmMDRkNTdhZWFjNDAzMmVlYWYyZmQxZWZjY2Y1MjY4YWU0ZC4uYzRjZTYyNDc3NTBm
YWYzOTIzMGE2YjdlZDk1ZDVhY2Q5MjZmNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmNwcApAQCAtODIsNyArODIsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jv
b3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogICAgIHNo
YWRvd1Jvb3QtPnNldEhvc3Qoc2hhZG93SG9zdCk7CiAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50
VHJlZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29wZSgpKTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1
c2goc2hhZG93Um9vdC5nZXQoKSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbV9kaXN0
cmlidXRvci5kaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShzaGFkb3dIb3N0KTsKKyNlbmRpZgogICAg
IENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290
LmdldCgpKTsKIAogICAgIC8vIEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMgdGhl
IGhvc3QgYW5kIGl0cyBjaGlsZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLgpAQCAtMTE3LDEzICsxMTksMTYgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpy
ZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihz
aGFkb3dIb3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRv
d0hvc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoKCkKIHsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3Ry
aWJ1dGlvbih5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0KKyNlbmRpZgogICAgIGZvciAoU2hhZG93
Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xk
ZXJTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAg
ICAgICAgcm9vdC0+YXR0YWNoKCk7CkBAIC0xNzMsNyArMTc4LDEwIEBAIHZvaWQgRWxlbWVudFNo
YWRvdzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKICAgICAgICAgaW5mby5hZGRNZW1iZXIoc2hhZG93Um9vdCk7CiAgICAgICAgIHNo
YWRvd1Jvb3QgPSBzaGFkb3dSb290LT5uZXh0KCk7CiAgICAgfQorCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgaW5mby5hZGRNZW1iZXIobV9kaXN0cmlidXRvcik7CisjZW5kaWYKIH0KIAog
fSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmluZGV4IDg5MzM2M2Ji
YTg3YjQ4OGU3YWZkMTJkMDI4NWNkNGE1NDQ0MWVhNzMuLjAwNTJlY2Q2YWZlOWFiZDY5YThkNDRk
MjRmYTdkOWZhZDkzMzQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaApAQCAtNjMs
MTggKzYzLDI2IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB2
b2lkIHJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlKTsKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRvci5p
bnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KICAgICB2b2lkIGRpZEFmZmVjdFNlbGVj
dG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spIHsgbV9kaXN0cmlidXRvci5kaWRBZmZlY3RT
ZWxlY3Rvcihob3N0KCksIG1hc2spOyB9CiAgICAgdm9pZCB3aWxsQWZmZWN0U2VsZWN0b3IoKSB7
IG1fZGlzdHJpYnV0b3Iud2lsbEFmZmVjdFNlbGVjdG9yKGhvc3QoKSk7IH0KIAotICAgIENvbnRl
bnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKTsKLSAgICBjb25zdCBDb250ZW50RGlzdHJpYnV0
b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3Q7CisgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmli
dXRvcigpIHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KKyAgICBjb25zdCBDb250ZW50RGlzdHJp
YnV0b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQorI2Vs
c2UKKyAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IH0KKyAgICB2b2lkIGVuc3Vy
ZURpc3RyaWJ1dGlvbigpIHsgfQorI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKLXByaXZhdGU6CiAKK3ByaXZhdGU6CiAgICAgRG91
Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOworCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgQ29udGVudERpc3RyaWJ1dG9yIG1fZGlzdHJpYnV0b3I7CisjZW5kaWYK
IH07CiAKIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93Ojp5b3VuZ2VzdFNoYWRvd1Jv
b3QoKSBjb25zdApAQCAtODcsMTYgKzk1LDYgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIEVsZW1lbnRT
aGFkb3c6Om9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBtX3NoYWRvd1Jvb3Rz
LnRhaWwoKTsKIH0KIAotaW5saW5lIENvbnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6
ZGlzdHJpYnV0b3IoKQotewotICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwotfQotCi1pbmxpbmUg
Y29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7Ci19Ci0KIGlubGluZSBFbGVtZW50KiBF
bGVtZW50U2hhZG93Ojpob3N0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fc2hhZG93Um9vdHMu
aXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmNwcAppbmRleCA4M2JiN2VjN2U3OWVmMmYyMTYzZWYwNzc1Mzc5ZDc3N2U2OWVmZmYyLi5jN2Fl
MDBhZDFhMTEyNjk0NzFhNzVhNTdlZjU5NmU5MzU3ZDY0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCkBAIC0yOCwxMiArMjgsMjAwIEBACiAj
aW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogCiAjaW5jbHVkZSAiQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTm9k
ZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBuYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CiAKKy8vIEEgc2lt
cGxpZmllZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXItY29tcGF0aWJsZSB3YWxrZXIgaW1wbGVt
ZW50YXRpb24gZm9yIG5vbi1TSEFET1dfRE9NIGNvbmZpZ3VyYXRpb25zLgorY2xhc3MgU2hhZG93
VHJlZVdhbGtlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2hhZG93VHJlZVdhbGtlcihjb25z
dCBOb2RlKiBub2RlKQorICAgICAgICA6IG1fbm9kZShub2RlKQorICAgIHsgfQorCisgICAgTm9k
ZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obV9ub2RlKTsgfQorCisg
ICAgdm9pZCBwYXJlbnQoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUGFyZW50KG1fbm9kZSk7IH0KKyAg
ICB2b2lkIG5leHRTaWJsaW5nKCkgeyBtX25vZGUgPSB0cmF2ZXJzZU5leHRTaWJsaW5nKG1fbm9k
ZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzU2libGluZygpIHsgbV9ub2RlID0gdHJhdmVyc2VQcmV2
aW91c1NpYmxpbmcobV9ub2RlKTsgfQorICAgIHZvaWQgbGFzdENoaWxkKCkgeyBtX25vZGUgPSBt
X25vZGUtPmxhc3RDaGlsZCgpOyB9CisgICAgdm9pZCBmaXJzdENoaWxkKCkgeyBtX25vZGUgPSBt
X25vZGUtPmZpcnN0Q2hpbGQoKTsgfQorCisgICAgdm9pZCBuZXh0KCkgeyBtX25vZGUgPSB0cmF2
ZXJzZU5leHQobV9ub2RlKTsgfQorICAgIHZvaWQgcHJldmlvdXMoKSB7IG1fbm9kZSA9IHRyYXZl
cnNlUHJldmlvdXMobV9ub2RlKTsgfQorCisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUGFyZW50
KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKiA9IDApOworCitwcml2YXRlOgorICAgIHN0YXRp
YyBOb2RlKiB0cmF2ZXJzZU5leHQoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2
ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0
U2libGluZyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNT
aWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dEluY2x1ZGluZ0NvbnRh
aW5pbmdTY29wZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHByZXZpb3VzSW5jbHVk
aW5nQ29udGFpbmluZ1Njb3BlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgYm9vbCBpc1NoYWRv
d0JvdW5kYXJ5KE5vZGUqIG5vZGUpIHsgcmV0dXJuIG5vZGUtPmlzU2hhZG93Um9vdCgpIHx8IG5v
ZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKTsgfQorCisgICAgY29uc3QgTm9kZSogbV9ub2RlOworfTsK
KworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCisKK3N0YXRpYyBJbnNlcnRpb25Qb2ludCog
ZmluZEluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgTm9kZSogcGFyZW50
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4g
MDsKKworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBwYXJlbnQtPnlvdW5nZXN0U2hhZG93Um9vdCgp
OworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGhhc0luc2Vy
ZXRpb25Qb2ludCA9IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmRldGFpbHNUYWcpIHx8
IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnN1bW1hcnlUYWcpOworICAgIGlmICghaGFz
SW5zZXJldGlvblBvaW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoTm9kZSogbWF5
SW5zZXJ0aW9uUG9pbnQgPSByb290LT5maXJzdENoaWxkKCk7IG1heUluc2VydGlvblBvaW50OyBt
YXlJbnNlcnRpb25Qb2ludCA9IG1heUluc2VydGlvblBvaW50LT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmIChtYXlJbnNlcnRpb25Qb2ludC0+aXNJbnNlcnRpb25Qb2ludCgpICYmIHRvSW5z
ZXJ0aW9uUG9pbnQobWF5SW5zZXJ0aW9uUG9pbnQpLT5hbHdheXNNYXRjaGVzKGNvbnN0X2Nhc3Q8
Tm9kZSo+KG5vZGUpKSkKKyAgICAgICAgICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG1heUlu
c2VydGlvblBvaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgVmVj
dG9yPE5vZGUqPiBnZXREaXN0cmlidXRlZE5vZGUoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkKK3sK
KyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVzOworICAgIEVsZW1lbnQqIGhvc3QgPSBwYXJlbnQtPnNo
YWRvd0hvc3QoKTsKKyAgICBBU1NFUlQoaG9zdCk7CisgICAgaWYgKCFob3N0KQorICAgICAgICBy
ZXR1cm4gbm9kZXM7CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaG9zdC0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAocGFy
ZW50LT5hbHdheXNNYXRjaGVzKGNoaWxkKSkKKyAgICAgICAgICAgIG5vZGVzLmFwcGVuZChjaGls
ZCk7CisgICAgfQorCisgICAgcmV0dXJuIG5vZGVzOworfQorCisjZW5kaWYgLy8gRU5BQkxFKERF
VEFJTFNfRUxFTUVOVCkKKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNl
UGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7CisjaWYg
RU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gZmluZEluc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIGlmIChkZXRhaWxz
KQorICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChpbnNlcnRp
b25Qb2ludCk7CisgICAgICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpkZXRhaWxzVGFnKSB8fCBub2RlLT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjpzdW1tYXJ5VGFnKSk7CisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2Rl
KCk7CisgICAgfQorI2VuZGlmCisKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBub2RlLT5wYXJlbnRP
ckhvc3ROb2RlKCk7IHdhbGs7IHdhbGsgPSB3YWxrLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAg
ICAgICAgaWYgKCFpc1NoYWRvd0JvdW5kYXJ5KHdhbGspKQorICAgICAgICAgICAgcmV0dXJuIHdh
bGs7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVl
V2Fsa2VyOjp0cmF2ZXJzZU5leHQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5vZGUq
IHdhbGsgPSBuZXh0SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKG5vZGUpOyB3YWxrOyB3YWxrID0g
bmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSh3YWxrKSkgeworICAgICAgICBpZiAoIWlzU2hh
ZG93Qm91bmRhcnkod2FsaykpCisgICAgICAgICAgICByZXR1cm4gd2FsazsKKyAgICB9CisKKyAg
ICByZXR1cm4gMDsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNl
UHJldmlvdXMoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBwcmV2
aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShub2RlKTsgd2Fsazsgd2FsayA9IHByZXZpb3Vz
SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKHdhbGspKSB7CisgICAgICAgIGlmICghaXNTaGFkb3dC
b3VuZGFyeSh3YWxrKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJl
dHVybiAwOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0
U2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQp
CisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Q
b2ludChub2RlKSkgeworICAgICAgICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERp
c3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkaXN0cmlidXRpb24uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIC8vIFN0YXlp
bmcgaW5zaWRlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIGlmIChkaXN0cmlidXRpb25baV0g
PT0gbm9kZSAmJiBkaXN0cmlidXRpb24ubGFzdCgpICE9IG5vZGUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGRpc3RyaWJ1dGlvbltpICsgMV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIFN0ZXBwaW5nIG91dCBmcm9tIGRpc3RyaWJ1dGVkIGxvY2F0aW9uCisgICAgICAgIG5vZGUg
PSBpbnNlcnRpb25Qb2ludDsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTdGVwcGluZyBpbnRv
IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkgewor
ICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRlZE5v
ZGUodG9JbnNlcnRpb25Qb2ludChjb25zdF9jYXN0PE5vZGUqPihub2RlKSkpOworICAgICAgICAg
ICAgaWYgKCFkaXN0cmlidXRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBk
aXN0cmlidXRpb24uZmlyc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0
dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fs
a2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworI2lmIEVO
QUJMRShERVRBSUxTX0VMRU1FTlQpCisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICBWZWN0b3I8Tm9kZSo+
IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludCk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaXN0cmlidXRpb24uc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIC8vIFN0YXlpbmcgaW5zaWRlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAg
IGlmIChkaXN0cmlidXRpb25baV0gPT0gbm9kZSAmJiBkaXN0cmlidXRpb24uZmlyc3QoKSAhPSBu
b2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRpb25baSAtIDFdOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICAvLyBTdGVwcGluZyBvdXQgZnJvbSBkaXN0cmlidXRlZCBs
b2NhdGlvbgorICAgICAgICBub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gU3RlcHBpbmcgaW50byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChub2RlLT5p
c0luc2VydGlvblBvaW50KCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0
aW9uID0gZ2V0RGlzdHJpYnV0ZWROb2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxOb2Rl
Kj4obm9kZSkpKTsKKyAgICAgICAgICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0aW9uLmxhc3QoKTsKKyAgICAgICAgfQorICAg
IH0KKyNlbmRpZgorCisgICAgcmV0dXJuIG5vZGUtPnByZXZpb3VzU2libGluZygpOworfQorCitp
bmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6bmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29w
ZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNh
bDo6bmV4dChub2RlKSkKKyAgICAgICAgcmV0dXJuIHdhbGs7CisKKyAgICBmb3IgKG5vZGUgPSB0
cmF2ZXJzZVBhcmVudChub2RlKTsgbm9kZTsgbm9kZSA9IHRyYXZlcnNlUGFyZW50KG5vZGUpKSB7
CisgICAgICAgIGlmIChub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgcmV0dXJuIG5v
ZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBO
b2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShj
b25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNhbDo6
cHJldmlvdXMobm9kZSkpCisgICAgICAgIHJldHVybiB3YWxrOworICAgIHJldHVybiB0cmF2ZXJz
ZVBhcmVudChub2RlKTsKK30KKwogdm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2Vy
dGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBpZiAoIW1f
aW5zZXJ0aW9uUG9pbnQpIHsKQEAgLTQ5LDE0ICsyMzcsMjQgQEAgdm9pZCBQYXJlbnREZXRhaWxz
OjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogcm9vdCkKIAogQ29udGFp
bmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRh
aWxzKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDcm9zc1VwcGVyQm91
bmRhcnksIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q2FuU3RhcnRGcm9tU2hhZG93Qm91bmRh
cnkpOworI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgCisgICAgU2hhZG93VHJlZVdhbGtlciB3
YWxrZXIobm9kZSk7CisjZW5kaWYKKwogICAgIENvbnRhaW5lck5vZGUqIGZvdW5kID0gdG9Db250
YWluZXJOb2RlKHdhbGtlci50cmF2ZXJzZVBhcmVudCh3YWxrZXIuZ2V0KCksIGRldGFpbHMpKTsK
LSAgICByZXR1cm4gZGV0YWlscy0+b3V0T2ZDb21wb3NpdGlvbigpID8gMCA6IGZvdW5kOworICAg
IHJldHVybiBkZXRhaWxzICYmIGRldGFpbHMtPm91dE9mQ29tcG9zaXRpb24oKSA/IDAgOiBmb3Vu
ZDsKIH0KIAogTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihu
b2RlKTsKKyNlbHNlICAgICAgICAgICAgICAgICAgICAgIAorICAgIFNoYWRvd1RyZWVXYWxrZXIg
d2Fsa2VyKG5vZGUpOworI2VuZGlmCisKICAgICBpZiAobm9kZS0+aXNCZWZvcmVQc2V1ZG9FbGVt
ZW50KCkpIHsKICAgICAgICAgd2Fsa2VyLnBhcmVudCgpOwogICAgICAgICB3YWxrZXIuZmlyc3RD
aGlsZCgpOwpAQCAtNjksMTMgKzI2NywxNyBAQCBOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3Qg
Tm9kZSogbm9kZSkKICAgICBOb2RlKiBwYXJlbnQgPSB3YWxrZXIudHJhdmVyc2VQYXJlbnQobm9k
ZSk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAg
cmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKTsKLQogICAgIHJl
dHVybiAwOwogfQogCiBOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUp
CiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlcihub2RlKTsKKyNlbHNlICAgICAgICAgICAgICAgICAgICAgIAorICAgIFNoYWRvd1Ry
ZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisKICAgICBpZiAobm9kZS0+aXNBZnRlclBz
ZXVkb0VsZW1lbnQoKSkgewogICAgICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAgICAgIHdhbGtl
ci5sYXN0Q2hpbGQoKTsKQEAgLTk0LDM0ICsyOTYsNDYgQEAgTm9kZSogcHJldmlvdXNTaWJsaW5n
U2xvdyhjb25zdCBOb2RlKiBub2RlKQogCiBOb2RlKiBuZXh0SW5TY29wZShjb25zdCBOb2RlKiBu
b2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0
IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5v
ZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwog
ICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAg
cmV0dXJuIE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSk7CisjZW5kaWYKIH0KIAogTm9kZSogcHJl
dmlvdXNJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RP
TSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpE
b05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0
dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6OnByZXZp
b3VzKG5vZGUpOworI2VuZGlmCiB9CiAKIE5vZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9kZSog
bm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4n
dCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihu
b2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsK
ICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKKyNlbmRpZgogfQogCiBOb2RlKiBsYXN0Q2hp
bGRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05v
dENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJldHVy
biB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBub2RlLT5sYXN0Q2hpbGQoKTsKKyNl
bmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwu
aAppbmRleCAyZGIzZTc1OTVjYWNjMGY5YzA1Zjg2ZmZhMTE3YmFlNDg4ZDU4ODA0Li40Y2I3N2Ni
MjY0NDhiMzkxM2NjNWEwMzY3MzBhZDAwMDc0ZTZmMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKIH07CiAKK0NvbnRhaW5lck5vZGUqIHBhcmVudChj
b25zdCBOb2RlKik7CiBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudERl
dGFpbHMqKTsKIENvbnRhaW5lck5vZGUqIHBhcmVudFNsb3coY29uc3QgTm9kZSosIFBhcmVudERl
dGFpbHMqKTsKIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKQEAgLTc2LDYgKzc3LDEy
IEBAIE5vZGUqIHByZXZpb3VzSW5TY29wZShjb25zdCBOb2RlKik7CiBOb2RlKiBwYXJlbnRJblNj
b3BlKGNvbnN0IE5vZGUqKTsKIE5vZGUqIGxhc3RDaGlsZEluU2NvcGUoY29uc3QgTm9kZSopOwog
CitpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
UGFyZW50RGV0YWlscyBkZXRhaWxzOworICAgIHJldHVybiBwYXJlbnQobm9kZSwgJmRldGFpbHMp
OworfQorCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBh
cmVudERldGFpbHMqIGRldGFpbHMpCiB7CiAgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVX
YWxrZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGUzYTQ4MjIyYjkzZDM4
ZDY3MGVjMmEyMzgxZjBiZjZkYTE1MTc0MmQuLmZmYjQxMWVhNzM2NDFlNzU3Nzc2ZGRiNDJhNzBi
MDY5Y2VjNDRmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU3LDcgKzU3LDEx
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzU2hhZG93Um9vdCA6
IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD4geworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IHZvaWQqIHBvaW50ZXJzWzNdOworI2Vsc2UKKyAgICB2b2lkKiBwb2ludGVyc1syXTsKKyNlbmRp
ZgogICAgIHVuc2lnbmVkIGNvdW50ZXJzQW5kRmxhZ3NbMV07CiB9OwogCkBAIC0yNjIsMTEgKzI2
NiwxMSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCiAKIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGlu
c2VydGlvblBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIERvY3VtZW50RnJh
Z21lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAKICAgICBpZiAoIWluc2VydGlv
blBvaW50LT5pbkRvY3VtZW50KCkgfHwgIWlzT2xkZXN0KCkpCiAgICAgICAgIHJldHVybiBJbnNl
cnRpb25Eb25lOwotCiAgICAgLy8gRklYTUU6IFdoZW4gcGFyc2luZyA8dmlkZW8gY29udHJvbHM+
LCBpbnNlcnRlZEludG8oKSBpcyBjYWxsZWQgbWFueSB0aW1lcyB3aXRob3V0IGludm9raW5nIHJl
bW92ZWRGcm9tLgogICAgIC8vIEZvciBub3csIHdlIGNoZWNrIG1fcmVnaXN0ZXJlZFdpdGhQYXJl
bnRTaGFkb3dyb290LiBXZSB3b3VsZCBsaWtlIHRvIEFTU0VSVCghbV9yZWdpc3RlcmVkU2hhZG93
Um9vdCkgaGVyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jaWc/
aWQ9MTAxMzE2CkBAIC0yNzcsMTIgKzI4MSwxNSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcgog
ICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5yZWdpc3RlckVsZW1lbnRT
aGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSB0cnVl
OwogICAgIH0KLQogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOworI2Vsc2UKKyAgICByZXR1cm4g
RG9jdW1lbnRGcmFnbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKKyNlbmRpZgog
fQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlv
blBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChpbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpICYmIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290KSB7CiAg
ICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290KCk7
CiAgICAgICAgIGlmICghcm9vdCkKQEAgLTI5Miw3ICsyOTksNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6
OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICAgICAg
cm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1lbnRTaGFkb3coKTsKICAg
ICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBmYWxzZTsKICAgICB9Ci0K
KyNlbmRpZgogICAgIERvY3VtZW50RnJhZ21lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50
KTsKIH0KIApAQCAtMzE3LDYgKzMyNCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6dW5yZWdpc3RlclNj
b3BlZEhUTUxTdHlsZUNoaWxkKCkKICAgICBzZXRIYXNTY29wZWRIVE1MU3R5bGVDaGlsZChtX251
bWJlck9mU3R5bGVzID4gMCk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKQog
ewogICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQpAQCAtMzI0LDcgKzMzMiw4IEBAIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24o
KQogCiAgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNvbnRlbnRE
aXN0cmlidXRpb24pOwogICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOwotfSAg
IAorfQorI2VuZGlmCiAKIHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKQEAgLTMzMyw3ICszNDIsOSBA
QCB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgVHJlZVNjb3BlOjpyZXBvcnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZXYpOwogICAgIGluZm8u
YWRkTWVtYmVyKG1fbmV4dCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaW5mby5hZGRN
ZW1iZXIobV9zY29wZURpc3RyaWJ1dGlvbik7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKaW5kZXggMTUyNjkzOGVkZTUwNDBkZGM0MzM5ZjU4ZmY4NjUxYTJjNzI1OWY3OS4u
ODU5ZjBkMjJkZWFkODJhZDhjN2RlMTA1NjRmMjgyMjI5MTQxY2U1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oCkBAIC04OCw5ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0
aW9uKCkgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQogICAgIGNvbnN0IFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uKiBlbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpOworI2VuZGlmCiAKICAgICBTaGFkb3dSb290
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhvclNoYWRvd1Jvb3QgPyBBdXRob3JT
aGFkb3dSb290IDogVXNlckFnZW50U2hhZG93Um9vdDsgfQogICAgIGJvb2wgaXNBY2Nlc3NpYmxl
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dGhvclNoYWRvd1Jvb3Q7IH0KQEAgLTExMCw3
ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgU2hhZG93Um9vdCogbV9wcmV2OwogICAgIFNoYWRv
d1Jvb3QqIG1fbmV4dDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBPd25QdHI8U2NvcGVD
b250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOworI2VuZGlmCiAgICAgdW5z
aWduZWQgbV9udW1iZXJPZlN0eWxlcyA6IDI4OwogICAgIHVuc2lnbmVkIG1fYXBwbHlBdXRob3JT
dHlsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIDogMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCAwNWVlYmFiNDEw
ZDg4YjQxZWI4MTE5MzEyYWQ5ZDkxYzI1ZDQxZWMyLi42OGUwNzk3MjI4N2IwMDUzMDZjYmRjODI5
MWU4YjFmM2YyYTMyMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwCkBAIC01MSw2ICs1MSwxNCBAQCBwcml2YXRlOgogICAgICAgICA6IEhUTUxDb250ZW50
RWxlbWVudChIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRvY3VtZW50KQogICAg
IHsKICAgICB9CisKKyAgICAvLyBUaGlzIG1hdGNoIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNp
dmUgdG8gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjptYXRjaFR5cGVGb3IoKQorICAgIHZpcnR1YWwg
TWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKiBub2RlKSBPVkVSUklERQorICAgIHsKKyAgICAg
ICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgbm9kZSAhPSBub2RlLT5wYXJlbnROb2Rl
KCktPnF1ZXJ5U2VsZWN0b3Ioc3VtbWFyeVF1ZXJ5U2VsZWN0b3IoKSwgQVNTRVJUX05PX0VYQ0VQ
VElPTikpCisgICAgICAgICAgICByZXR1cm4gQWx3YXlzTWF0Y2hlczsKKyAgICAgICAgcmV0dXJu
IE5ldmVyTWF0Y2hlczsKKyAgICB9CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50RWxl
bWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtMTIwLDYgKzEyOCwxMSBAQCB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoRGV0YWlsc0NvbnRlbnRFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04sIHRydWUpOwogfQogCitFbGVt
ZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZhbGxiYWNrU3VtbWFyeSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxlbWVudCo+KHVzZXJBZ2VudFNoYWRv
d1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1tYXJ5KCk7Cit9CisKIEVsZW1lbnQq
IEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKIHsKICAgICBmb3Ig
KE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewpAQCAtMTI3LDcgKzE0MCw3IEBAIEVsZW1lbnQqIEhUTUxEZXRhaWxzRWxlbWVu
dDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQo
Y2hpbGQpOwogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQqPih1c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxiYWNrU3Vt
bWFyeSgpOworICAgIHJldHVybiBmYWxsYmFja1N1bW1hcnkoKTsKIH0KIAogdm9pZCBIVE1MRGV0
YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNDYsOCArMTU5LDE4IEBAIGJvb2wgSFRNTERl
dGFpbHNFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JiBjCiAgICAgaWYgKCFjaGlsZENvbnRleHQuaXNPbkVuY2Fwc3VsYXRpb25Cb3Vu
ZGFyeSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9pc09wZW4pCisgICAg
aWYgKG1faXNPcGVuKSB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAvLyBUaGUg
ZmFsbGJhY2sgPHN1bW1hcnk+IHNob3VsZG4ndCBiZSB2aXNpYmxlIHVubGVzcyBpdCBpcyB1c2Vk
IGFzIGEgbWFpbiBzdW1tYXJ5LgorICAgICAgICAvLyBXaXRoIFNIQURPV19ET00sIDxkZXRhaWxz
PiBjYW4ganVzdCBsZXQgPGNvbnRlbnQ+IGZhbGxiYWNrIHN5c3RlbSB0YWtlIGNhcmUgb2YgdGhp
cy4KKyAgICAgICAgaWYgKGNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFyeVRh
ZykpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGZhbGxiYWNrID0gZmFsbGJhY2tTdW1tYXJ5KCk7
CisgICAgICAgICAgICBpZiAoZmFsbGJhY2sgIT0gZmluZE1haW5TdW1tYXJ5KCkgJiYgZmFsbGJh
Y2sgPT0gY2hpbGRDb250ZXh0Lm5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKKyAgICB9CiAKICAgICBpZiAoIWNoaWxk
Q29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFyeVRhZykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE1NSw2ICsxNzgsMjAgQEAgYm9vbCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGMKICAgICBy
ZXR1cm4gY2hpbGRDb250ZXh0Lm5vZGUoKSA9PSBmaW5kTWFpblN1bW1hcnkoKSAmJiBIVE1MRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOwogfQogCit2b2lk
IEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
LCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERl
bHRhKQoreworI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAvLyBUaGlzIGlzIGEgc2ltcGxp
ZmllZCB2ZXJzaW9uIG9mIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1dGlv
bigpCisgICAgLy8gd2hpY2ggcmVhdHRhY2hlcyBjaGlsZHJlbiB0byBtYWtlIHRoZW0gYmVpbmcg
cmUtZGlzdHJpYnV0ZWQgdG8gYXBwcm9wcmlhdGUgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICBpZiAo
YXR0YWNoZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4g
PSBuLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgbi0+bGF6eVJlYXR0YWNoKCk7CisgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9CisjZW5kaWYKKyAgICBIVE1MRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNo
YW5nZSwgY2hpbGRDb3VudERlbHRhKTsKK30KKwogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnRv
Z2dsZU9wZW4oKQogewogICAgIHNldEF0dHJpYnV0ZShvcGVuQXR0ciwgbV9pc09wZW4gPyBudWxs
QXRvbSA6IGVtcHR5QXRvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
aAppbmRleCA5ZGE5Njk4ODYxNDY0Y2QzZDBlNzJmMjE0NzY4MDczYTIzYmQzNmJhLi4yNjY0ZDI1
YzJkODMzNDllZjg1YjkzMDI0Y2JhZDQ5N2FlZjZkZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERldGFpbHNFbGVtZW50LmgKQEAgLTM4LDcgKzM4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBP
VkVSUklERTsKLQorICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCwgTm9kZSos
IE5vZGUqLCBpbnQpOworICAgIEVsZW1lbnQqIGZhbGxiYWNrU3VtbWFyeSgpIGNvbnN0OwogICAg
IHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpOwogCiAgICAgYm9vbCBtX2lzT3BlbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDFkN2ZlYmY1YzliODdjOWE1
OWRlYTVmNGQ1MzU0NDAwZDY2NTE2M2MuLjdiZWIyYmQwNTc4N2YwNWRiMzU4Yzk0Njg3YjQ3YTQ4
ZWQxYTIxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAt
NTM2LDggKzUzNiwxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAg
ICAgICAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUpOwogICAgIH0KIAorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hh
ZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFkb3ct
PmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgogCiAgICAgc2V0Q2hhbmdlZFNpbmNl
TGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCAzMzQ1ZDdhMDFlOGEz
MGE1NWI0MDVkZjk4N2RlNDIyMjk1YTNhZjYyLi5lY2MzYjVhZjZiMGE0MTc5MTIxODdmYzc0ZGQ0
MWVkYzFmMDUxZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJFbGVtZW50
U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCkBAIC00NDEsMyArNDQz
LDUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKEVs
ZW1lbnQqIGhvc3QpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRleCBk
ZmVhYjhjYzdmZGJlNTBhZGY2MTA3ZThkNjBhMGRmMjI4NDE2ZDBiLi45NTUzMWI0YjRjNTY1OGYx
YzU2OGUxZmQ2NzM0NGMxNjhlMDA1NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZTsK
QEAgLTE2Myw0ICsxNjUsNSBAQCBpbmxpbmUgYm9vbCBDb250ZW50RGlzdHJpYnV0b3I6Om5lZWRz
RGlzdHJpYnV0aW9uKCkgY29uc3QKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00p
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmNwcAppbmRleCAyNGIzNzJhOWUyMDM4ODQ3OThmZDY4YjU1ODhmYmEyMGNlYTIy
YWQyLi5jNGNlYTRlOGE1MjQ5MzNhZGEzZmFkZGIyODBhNmMzNWYyMGJkZWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCkBA
IC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudFNl
bGVjdG9yUXVlcnkuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NT
U2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJT
ZWxlY3RvckNoZWNrZXIuaCIKQEAgLTkxLDMgKzkzLDUgQEAgYm9vbCBDb250ZW50U2VsZWN0b3JR
dWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdzLCBpbnQg
bnQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAppbmRleCA2YTRmMzM4
MTU0NmFhYTNhMzA5ODk0NjM3NTM3OGYzNjA0NWUxYzFiLi5iNzAzM2UxODcwMzYyNDIyN2U1N2Uy
N2FhZGU3MzkwY2ZiOGM3NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpAQCAtNzYsNCAr
NzgsNSBAQCBwcml2YXRlOgogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
aAppbmRleCA5ZDBjOGZjNDM1M2JmOTZjZTI0ZDFhMjZmMjUxYWRjM2M5ODFhZDA4Li5jYTI2OWU4
NjM5MGU1ZWI0MWZkNmM5YjM5ODNiOWJjYzIyMjg3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaApAQCAtODgsNyArODgsNiBAQCBjbGFz
cyBIVE1MQ29udGVudEVsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZW50VGFnTmFtZShEb2N1bWVudCop
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50RWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50Kik7Ci0KICAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQ29udGVudEluc2VydGlvblBvaW50OyB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCBlMDgz
MThiZmY1YThlMGJiYzA0NDRmYzg3ODZkMzkxM2Y5OGM3Yzk2Li5mOTA2NDIzNDE5Yjc3NDhlM2I3
MDViN2EzNTQ0ZDBmM2ZmMGJiNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0zOSwxMCArMzksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitTaW1wbGVJbnNlcnRpb25Qb2ludDo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRNTEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUluc2VydGlvblBvaW50KQoreworfQorCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIElu
c2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCwgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQpCisgICAgOiBTaW1wbGVJbnNlcnRpb25Qb2ludCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290KGZhbHNlKQog
ewogfQpAQCAtNzksMjUgKzg2LDYgQEAgYm9vbCBJbnNlcnRpb25Qb2ludDo6c2hvdWxkVXNlRmFs
bGJhY2tFbGVtZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIGlzQWN0aXZlKCkgJiYgIWhhc0Rpc3Ry
aWJ1dGlvbigpOwogfQogCi1ib29sIEluc2VydGlvblBvaW50Ojppc1NoYWRvd0JvdW5kYXJ5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93Um9v
dCgpICYmIGlzQWN0aXZlKCk7Ci19Ci0KLWJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKCkg
Y29uc3QKLXsKLSAgICBpZiAoIWNvbnRhaW5pbmdTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBjb25zdCBOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxl
IChub2RlKSB7Ci0gICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEluc2Vy
dGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29uc3QKIHsKICAgICBpZiAoU2hhZG93
Um9vdCogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCkBAIC0xMTEsMTEgKzk5
LDYgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1dGVk
Tm9kZXMoKSBjb25zdAogICAgIHJldHVybiBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobm9kZXMpOwog
fQogCi1ib29sIEluc2VydGlvblBvaW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVybiAhaXNTaGFkb3dCb3VuZGFyeSgp
ICYmIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwotfQotCiB2b2lkIElu
c2VydGlvblBvaW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUq
IGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7
CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9y
ZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yMjksNCArMjEyLDIw
IEBAIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHByb2pl
Y3RlZE5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCitib29sIEluc2VydGlv
blBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFjb250YWluaW5nU2hhZG93Um9v
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgTm9kZSogbm9kZSA9IHBhcmVu
dE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRp
b25Qb2ludCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG5vZGUgPSBu
b2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNIQURPV19ET00pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDc0MjQzZTljYWE0NTM3
YzU5NGE5MjkwYjQ2ODExZTNiNjAwNWJjZTYuLjMwMDBlM2JjNjlkMmExZmEyY2U1ODg0Y2IyNmFi
ZDM2MmEwNjIwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuaApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElu
c2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIFNpbXBsZUluc2VydGlv
blBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewog
ICAgICAgICBTaGFkb3dJbnNlcnRpb25Qb2ludCwKQEAgLTU0LDE5ICs1NCwzMiBAQCBwdWJsaWM6
CiAgICAgICAgIEhhc1RvTWF0Y2hTZWxlY3RvcgogICAgIH07CiAKKyAgICB2aXJ0dWFsIE1hdGNo
VHlwZSBtYXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJuIEFsd2F5c01hdGNoZXM7IH0KKyAgICB2
aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOworCisgICAgYm9vbCBh
bHdheXNNYXRjaGVzKE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1hdGNoVHlwZUZvcihub2RlKSA9PSBB
bHdheXNNYXRjaGVzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTaW1wbGVJbnNlcnRpb25Qb2ludChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9Cit9OworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKK2NsYXNzIEluc2VydGlvblBvaW50
IDogcHVibGljIFNpbXBsZUluc2VydGlvblBvaW50IHsKK3B1YmxpYzoKKwogICAgIHZpcnR1YWwg
fkluc2VydGlvblBvaW50KCk7CiAKICAgICBib29sIGhhc0Rpc3RyaWJ1dGlvbigpIGNvbnN0IHsg
cmV0dXJuICFtX2Rpc3RyaWJ1dGlvbi5pc0VtcHR5KCk7IH0KICAgICB2b2lkIHNldERpc3RyaWJ1
dGlvbihDb250ZW50RGlzdHJpYnV0aW9uJiBkaXN0cmlidXRpb24pIHsgbV9kaXN0cmlidXRpb24u
c3dhcChkaXN0cmlidXRpb24pOyB9CiAgICAgdm9pZCBjbGVhckRpc3RyaWJ1dGlvbigpIHsgbV9k
aXN0cmlidXRpb24uY2xlYXIoKTsgfQotICAgIGJvb2wgaXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0
OwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IGdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1h
dGNoVHlwZUZvcihOb2RlKikgeyByZXR1cm4gQWx3YXlzTWF0Y2hlczsgfQogICAgIHZpcnR1YWwg
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSB7IHJldHVybiBlbXB0eVNlbGVj
dG9yTGlzdCgpOyB9Ci0gICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWZmZWN0U2VsZWN0b3IoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdDsKQEAg
LTc2LDYgKzg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAogICAg
IGJvb2wgc2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpIGNvbnN0OworICAgIGJvb2wgaXNTaGFk
b3dCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIHRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5pc1No
YWRvd1Jvb3QoKSAmJiBpc0FjdGl2ZSgpOyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0Owog
CiAgICAgc2l6ZV90IGluZGV4T2YoTm9kZSogbm9kZSkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmli
dXRpb24uZmluZChub2RlKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0
OwpAQCAtOTAsMTIgKzEwNSwxMiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBJbnNlcnRp
b25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURF
OworCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnRE
ZWx0YSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkgT1ZFUlJJREUgeyByZXR1
cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChj
b250ZXh0KTsgfQogCiBwcml2YXRlOgogCkBAIC0xMDMsMzAgKzExOCwxNCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Q7CiB9OwogCi1pbmxpbmUgSW5zZXJ0
aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQoIW5v
ZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKLX0KLQotaW5saW5lIGNvbnN0IEluc2VydGlvblBvaW50
KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFub2Rl
IHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Ci19CitJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRp
b25Qb2ludChOb2RlKik7Citjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChj
b25zdCBOb2RlKik7CiAKIGlubGluZSBib29sIGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
Tm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpICYmIHRv
SW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCk7CiB9CiAKLWlubGluZSBib29sIGlzTG93
ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUgfHwg
IW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7Ci19Ci0KIGlu
bGluZSBOb2RlKiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUKG5vZGUpOwpAQCAtMTYxLDYgKzE2MCw0NSBAQCBpbmxpbmUgRWxlbWVudFNo
YWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKIAog
SW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSopOwogCisjZWxz
ZQorCitjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBTaW1wbGVJbnNlcnRpb25Qb2ludCB7
CitwdWJsaWM6CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorcHJvdGVjdGVkOgorICAgIEluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkgOiBTaW1wbGVJbnNlcnRpb25Qb2lu
dCh0YWdOYW1lLCBkb2N1bWVudCkgeyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorfTsKKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorCitpbmxp
bmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK3sKKyAgICBB
U1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKworaW5saW5lIGNvbnN0IEluc2Vy
dGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBib29sIGlz
TG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5p
c1NoYWRvd0JvdW5kYXJ5KCk7CisjZWxzZQorICAgIC8vIGluIG5vbi1TSEFPRFdfRE9NIHdvcmxk
LCBJbnNlcnRpb25Qb2ludCBpcyB1c2VkIG9ubHkgaW50ZXJuYWxseSBhbmQKKyAgICAvLyBzaG91
bGQgYmUgYWx3YXlzIGEgYm91bmRhcnkuCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3Bw
CmluZGV4IDQ2NTIyYzQ0NTNiYzNlYjAzNjFmZDQ2MTFhZDE5NjcyMjZjZGQxYzAuLjZlMjc3YTQw
ZDk0ZjA5YTUxZjM2MGQ2MGY5NWY3YzlkNjlhNWM5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKQEAgLTMxLDYgKzMxLDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNldC5o
IgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwzICs4Nyw0IEBAIHZvaWQgU2VsZWN0UnVsZUZl
YXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKaW5kZXggZDBmMmRl
NjgyMWIzMjUwOTE2YzdlYzE2ZGVkNGRiNzU5ODRhMDgxNy4uYjAyMDczZDRmMmMzNzk1ZDc4NzVl
NGFkNWVkZDhjNDk3NzcxN2NmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCkBAIC0zMSw5ICszMSwxMiBAQAogI2lmbmRlZiBTZWxl
Y3RSdWxlRmVhdHVyZVNldF9oCiAjZGVmaW5lIFNlbGVjdFJ1bGVGZWF0dXJlU2V0X2gKIAorCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWxlY3RSdWxl
RmVhdHVyZVNldCB7CkBAIC04NSw0ICs4OCw1IEBAIGlubGluZSBib29sIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0OjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0CiAK
IH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggYmVlODIwNDNhYTgwNjYzMzYwMTlmZGE0Yjk0ZGVjZmQz
NGRhNGIxZi4uMzViZWM2NGEzNTgzMWNlM2U4NWM5ZjY4OTQyZmFhNmZiYjZiMmUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzQ4LDcgKzM0OCwxMiBAQCBib29sIElu
dGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0
cmluZyYgaWRWYWx1ZSwgRQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBVTlVTRURf
UEFSQU0oaWRWYWx1ZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhvc3Qt
PnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hh
ZG93KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7CisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgogfQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hh
ZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTM1OCw3ICszNjMsMTIgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9y
Q2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGNsYXNzTmEKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKGNsYXNzTmFtZSk7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRv
cigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9y
Q2xhc3MoY2xhc3NOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAK
IGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQq
IGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0zNjgsNyArMzc4LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0
ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAorICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGVOYW1lKTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCku
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JBdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgog
fQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVs
ZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcHNldWRvQ2xhc3MsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtMzc4LDYgKzM5Myw4IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVk
b0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAorICAgIFVOVVNFRF9QQVJBTShwc2V1ZG9DbGFzcyk7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVT
ZXQgPSBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0
KGhvc3QtPnNoYWRvdygpKTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0gImNoZWNrZWQiKQogICAg
ICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNrZWQoKTsKQEAgLTM5NSw2
ICs0MTIsNyBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hh
ZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICByZXR1cm4gZmVhdHVy
ZVNldC5oYXNTZWxlY3RvckZvclZpc2l0ZWQoKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDIsOCArNDYwLDExIEBAIGJv
b2wgSW50ZXJuYWxzOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eSwgZG91CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTaGFkb3dJbnNlcnRp
b25Qb2ludChjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKKyAg
ICBVTlVTRURfUEFSQU0ocm9vdCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKHJv
b3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBTY29wZUNvbnRlbnRE
aXN0cmlidXRpb246Omhhc1NoYWRvd0VsZW1lbnQodG9TaGFkb3dSb290KHJvb3QpKTsKKyNlbmRp
ZgogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJuIDA7CkBAIC00NTEs
OCArNDcyLDExIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludChjb25z
dCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uCiAKIGJvb2wgSW50ZXJuYWxzOjpo
YXNDb250ZW50RWxlbWVudChjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKKyAgICBVTlVTRURfUEFSQU0ocm9vdCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0NvbnRlbnRFbGVtZW50KHRvU2hhZG93Um9vdChyb290
KSk7CisjZW5kaWYKIAogICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgIHJldHVybiAw
OwpAQCAtNDY1LDcgKzQ4OSwxMSBAQCBzaXplX3QgSW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFk
b3coY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb246OmNvdW50RWxlbWVudFNoYWRvdyh0b1NoYWRvd1Jvb3Qocm9v
dCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZiAKIH0KIAogYm9vbCBJbnRlcm5hbHM6
OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDgwLDYgKzUwOCw3
IEBAIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBl
YykKIAogTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9k
ZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CkBAIC00ODcsMTAgKzUxNiwxNiBAQCBOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nQnlXYWxr
ZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIubmV4dFNpYmxpbmcoKTsKICAgICByZXR1
cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm9kZSk7CisgICAgVU5V
U0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5h
bHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDk4LDEwICs1MzMsMTYg
QEAgTm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsK
ICAgICB3YWxrZXIuZmlyc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIHJl
dHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIo
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKQEAgLTUwOSwxMCArNTUwLDE2IEBAIE5vZGUqIEludGVybmFsczo6bGFz
dENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIubGFzdENoaWxkKCk7
CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUp
OworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9k
ZSogSW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01MjAsMTAg
KzU2NywxNiBAQCBOb2RlKiBJbnRlcm5hbHM6Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihu
b2RlKTsKICAgICB3YWxrZXIubmV4dCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIHJl
dHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxr
ZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTUzMSw2ICs1ODQsMTEgQEAgTm9kZSogSW50ZXJuYWxzOjpw
cmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5wcmV2aW91
cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShu
b2RlKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAK
IFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1lbnQqIGVsZW1l
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
S2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktp
dC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggYzk4MzYyMGUxNDBjM2I4NWE2N2Jh
MDdmMWUxODc2NjkxY2UyOTQyYy4uODM0ODMxODczY2E5YzQ0MTNmMDcxMWY1N2JlZTAyNTkzM2Q3
MTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRF
eHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktp
dEV4cG9ydHMuZGVmLmluCkBAIC0yMTgsMTggKzIxOCwxMiBAQCBFWFBPUlRTCiAgICAgICAgID9z
ZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgog
ICAgICAgICA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBA
UUFFWFhaCiAjZW5kaWYKLSAgICAgICAgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBA
WUFfTlBCVk5vZGVAMUBAWgogICAgICAgICA/aXNDU1NFeGNsdXNpb25zRW5hYmxlZEBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hl
ZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAg
P2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNE
T01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBX
VEZAQEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/
bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0
b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2Vy
VHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgotICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/Zmlyc3RDaGlsZEBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9sYXN0Q2hpbGRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bmV4dEBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9wcmV2aW91
c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9udW1i
ZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBA
U0E/QVYxMkBfS0BaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBIQFoKQEAg
LTMxNyw3ICszMTEsNiBAQCBFWFBPUlRTCiAgICAgICAgID9jb21wdXRlVmlld3BvcnRBdHRyaWJ1
dGVzQFdlYkNvcmVAQFlBP0FVVmlld3BvcnRBdHRyaWJ1dGVzQDFAVVZpZXdwb3J0QXJndW1lbnRz
QDFASEhITVZJbnRTaXplQDFAQFoKICAgICAgICAgP3ZpZXdwb3J0QXJndW1lbnRzQFBhZ2VAV2Vi
Q29yZUBAUUJFP0FVVmlld3BvcnRBcmd1bWVudHNAMkBYWgogICAgICAgICA/aXNQYWdlQm94Vmlz
aWJsZUBEb2N1bWVudEBXZWJDb3JlQEBRQUVfTkhAWgotICAgICAgICA/aXNBY3RpdmVASW5zZXJ0
aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5p
bWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlv
bnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93
c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCkBAIC02MDQsMTggKzU5Nywx
MiBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRQcm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJv
bGxlckBXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3Bl
Y3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAjZW5kaWYKLSAgICAgICAgP2lzQWN0aXZl
SW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBCVk5vZGVAMUBAWgogICAgICAgICA/aXNDU1NF
eGNsdXNpb25zRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKICAg
ICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJW
U3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpT
Q0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZE
T01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNl
ckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAg
ICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZT
dHJpbmdAV1RGQEBYWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBB
QEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgotICAgICAg
ICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgot
ICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCi0gICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgotICAgICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBA
UUFFWFhaCi0gICAgICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29y
ZUBAUUFFWFhaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAg
ICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfS0BaCiAgICAgICAgID9udW1iZXJAU3Ry
aW5nQFdURkBAU0E/QVYxMkBIQFoKQEAgLTcwMyw3ICs2OTAsNiBAQCBFWFBPUlRTCiAgICAgICAg
ID9jb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVAQFlBP0FVVmlld3BvcnRBdHRyaWJ1
dGVzQDFAVVZpZXdwb3J0QXJndW1lbnRzQDFASEhITVZJbnRTaXplQDFAQFoKICAgICAgICAgP3Zp
ZXdwb3J0QXJndW1lbnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FVVmlld3BvcnRBcmd1bWVudHNAMkBY
WgogICAgICAgICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVudEBXZWJDb3JlQEBRQUVfTkhAWgot
ICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAg
ICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoK
ICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBR
QUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBT
QVhfTkBaCkBAIC05OTAsMTggKzk3NiwxMiBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRQcm9maWxl
ckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/
ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAj
ZW5kaWYKLSAgICAgICAgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBCVk5v
ZGVAMUBAWgogICAgICAgICA/aXNDU1NFeGNsdXNpb25zRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzQFdlYkNvcmVAQDBfTkEKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNl
TG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pzQXJyYXlA
V2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxP
YmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaCiAg
ICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRA
V2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1Rl
eHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/bWFya2Vyc0Zv
ckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9j
dW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9j
dW1lbnRNYXJrZXJAMkBAWgotICAgICAgICA/bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bmV4dEBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9wcmV2aW91c0BDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9udW1iZXJAU3RyaW5n
QFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBf
S0BaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBIQFoKQEAgLTEwODksNyAr
MTA2OSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2Vi
Q29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBISEhN
VkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBR
QkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERv
Y3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2lu
dEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25D
b250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmlt
YXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91bmRp
bmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKQEAgLTEzNDIsMTAgKzEzMjEsNiBAQCBF
WFBPUlRTCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAMEBaCiAgICAg
ICAgID9lcXVhbElnbm9yaW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBsQDFAUEJFQFoKICAg
ICAgICAgP2V4dGVybmFsUmVwcmVzZW50YXRpb25AV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBQ
QVZFbGVtZW50QDFASUBaCi0gICAgICAgID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0QENvbnRlbnRE
aXN0cmlidXRvckBXZWJDb3JlQEBRQUVBQlZTZWxlY3RSdWxlRmVhdHVyZVNldEAyQFBBVkVsZW1l
bnRTaGFkb3dAMkBAWgotICAgICAgICA/aGFzU2hhZG93RWxlbWVudEBTY29wZUNvbnRlbnREaXN0
cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBAWgotICAgICAgICA/aGFzQ29u
dGVudEVsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFk
b3dSb290QDJAQFoKLSAgICAgICAgP2NvdW50RWxlbWVudFNoYWRvd0BTY29wZUNvbnRlbnREaXN0
cmlidXRpb25AV2ViQ29yZUBAU0FJUEJWU2hhZG93Um9vdEAyQEBaCiAgICAgICAgID9maW5kQFN0
cmluZ0ltcGxAV1RGQEBRQUVJUEFWMTJASUBaCiAgICAgICAgID9maW5kQFN0cmluZ0ltcGxAV1RG
QEBRQUVJUEFWMTJAQFoKICAgICAgICAgP2Fic29sdXRlQ2FyZXRCb3VuZHNARnJhbWVTZWxlY3Rp
b25AV2ViQ29yZUBAUUFFP0FWSW50UmVjdEAyQFhaCkBAIC0xMzgwLDE4ICsxMzU1LDI0IEBAIEVY
UE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdl
YkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29u
dHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRp
b25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lv
bnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/
aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdA
V1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZF
eGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmlu
Z0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BX
VEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJD
b3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBA
UEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJA
V2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBv
aW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRAQ29u
dGVudERpc3RyaWJ1dG9yQFdlYkNvcmVAQFFBRUFCVlNlbGVjdFJ1bGVGZWF0dXJlU2V0QDJAUEFW
RWxlbWVudFNoYWRvd0AyQEBaCisgICAgICAgID9oYXNTaGFkb3dFbGVtZW50QFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCisgICAgICAgID9o
YXNDb250ZW50RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FfTlBC
VlNoYWRvd1Jvb3RAMkBAWgorICAgICAgICA/Y291bnRFbGVtZW50U2hhZG93QFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQUlQQlZTaGFkb3dSb290QDJAQFoKKyNlbmRpZgogICAg
ICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAgICA/bnVtYmVyQFN0
cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FW
MTJASEBaCkBAIC0xNDc5LDcgKzE0NjAsNiBAQCBFWFBPUlRTCiAgICAgICAgID9jb21wdXRlVmll
d3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVAQFlBP0FVVmlld3BvcnRBdHRyaWJ1dGVzQDFAVVZpZXdw
b3J0QXJndW1lbnRzQDFASEhITVZJbnRTaXplQDFAQFoKICAgICAgICAgP3ZpZXdwb3J0QXJndW1l
bnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FVVmlld3BvcnRBcmd1bWVudHNAMkBYWgogICAgICAgICA/
aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVudEBXZWJDb3JlQEBRQUVfTkhAWgotICAgICAgICA/aXNB
Y3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/c3VzcGVuZEFu
aW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3Jl
c3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAg
ICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOGI0MGFlYTczMWFjYmVhNjdiMmJlOTY4ZjliMjRhNjc2NjFiMWViOC4uZmMwZjY2OGNkMjI0
YTQ3ODY2ZDYyODJiODYzZDAwNmI0MWUyMmY4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEz
LTAxLTIyICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBb
U2hhZG93IERPTV0gUHV0IG5vZGUgcmVwcm9qZWN0aW9uIGNvZGUgYmVoaW5kIEVOQUJMRShTSEFE
T1dfRE9NKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA2NjQzCisKKyAgICAgICAgUmViYXNlbGluZXMgdGlueSBkaWZmZXJlbmNlIGhhcHBlbmVkIGlu
IG5vbi1TSEFET1dfRE9NCisgICAgICAgIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZHVlIHRvIGRp
ZmZlcmVuY2Ugb2YgaW1wbGVtZW50YXRpb24gZGV0YWlsCisgICAgICAgIGJ1dCBoYXMgbm8gdXNl
ciBvYnNlcnZhYmxlIGRpZmZlcmVuY2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVk
LTItZXhwZWN0ZWQudHh0OgorCiAyMDEzLTAxLTIyICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpeCBjYWxlbmRhci1waWNrZXIta2V5LW9w
ZXJhdGlvbnMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
aHRtbC9kZXRhaWxzLW5lc3RlZC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2h0bWwvZGV0YWlscy1uZXN0ZWQtMi1leHBlY3RlZC50eHQKaW5kZXggYzFmYzQ3
ZmVhYjU3ZDc1N2Q1ZTU5OTU5OTAxZmEwYjExYTIzZTRiZS4uMmI5MmIwYjk5NzA3NGM5ZjQ3OTAz
MDFmNDQ3ODVjMGVlYjA5NWQ4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvaHRtbC9kZXRhaWxzLW5lc3RlZC0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVkLTItZXhwZWN0ZWQudHh0CkBA
IC05LDcgKzksNiBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDI0LDgpIHNpemUgNjN4MTgKICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgyNCw4KSB3aWR0aCA1OiAiICIKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyOCw4KSB3
aWR0aCA1OTogInN1bW1hcnkiCi0gICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg4
LDQyKSBzaXplIDc2OHgwCiAgICAgICAgIFJlbmRlckJsb2NrIHtERVRBSUxTfSBhdCAoOCw0Mikg
c2l6ZSA3Njh4NjggW2JvcmRlcjogKDhweCBzb2xpZCAjOTk1NTU1KV0KICAgICAgICAgICBSZW5k
ZXJCbG9jayB7U1VNTUFSWX0gYXQgKDgsOCkgc2l6ZSA3NTJ4MzQgW2JvcmRlcjogKDhweCBzb2xp
ZCAjQ0M5OTk5KV0KICAgICAgICAgICAgIFJlbmRlckRldGFpbHNNYXJrZXIge0RJVn0gYXQgKDgs
MTIpIHNpemUgMTF4MTE6IGRvd24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184437</attachid>
            <date>2013-01-24 01:37:29 -0800</date>
            <delta_ts>2013-01-24 03:01:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130124183421.patch</filename>
            <type>text/plain</type>
            <size>71465</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMxMWRkZDExODYwMzZk
YmI0MzIwZTIyODMxOWYxNGEwM2U3ODRmOC4uNTc2MjI5MmM3YThkZjkzYjY4ZDc1N2VkNzFhZTQz
ZTU0NWUxNzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAxMy0wMS0yMiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGhpZGVzIG9uZSBvZiB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJ0IG9mIFNoYWRvdworICAgICAg
ICBET00gc3RhbmRhcmQsIHRoYXQgaXMgbm9kZSBkaXN0cmlidXRpb24uIFR3byBtYWpvciBjbGFz
c2VzCisgICAgICAgIENvbnRlbnREaXN0cmlidXRvciBhbmQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIGFyZSBtb3ZlZCBiZWhpbmQKKyAgICAgICAgRU5BQkxFX1NIQURPV19ET00gZmxhZy4KKwor
ICAgICAgICBTaW5jZSA8ZGV0YWlscz4gYW5kIDxzdW1tYXJ5PiB1c2VzIHRoaXMgbWVjaGFuaXNt
IGludGVybmFsbHksCisgICAgICAgIHRoaXMgY2hhbmdlIG5lZWRzIHRvIGNvbXBlbnNhdGUgdGhl
bS4gU2hhZG93VHJlZVdhbGtlciBpcyBpbnRyb2R1Y2VkCisgICAgICAgIGZvciB0aGF0IHB1cnBv
c2UuIFNoYWRvd1RyZWVXYWxrZXIgaXMgYSBzaW1wbGlmaWVkIGltcGxlbWVudGF0aW9uIG9mCisg
ICAgICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciwgd2hpY2ggaGFzIGEgc3Vic2V0IG9mIENT
VFcgQVBJLgorICAgICAgICBUaGUgYWxnb3JpdGhtIGltcGxlbWVudGVkIGJ5IFNoYWRvd1RyZWVX
YWxrZXIgc2hvdWxkIGJlIHNpbXBsZXIKKyAgICAgICAgYmVjYXVzZSBpdCBuZWVkcyBubyBleHRy
YSBwZXJzaXN0ZW50IHN0YXRlcyB0byBET00gb2JqZWN0cy4KKworICAgICAgICBJbnNlcnRpb25Q
b2ludCBpcyBhbm90aGVyIHBpZWNlIHdoaWNoIGlzIG9ubHkgdXNlZCBieSBTSEFET1dfRE9NIGFu
ZAorICAgICAgICBERVRBSUxTX0VMRU1FTlQgYW5kIGl0IHNob3VsZCBiZSBtb3ZlZCBiZWhpbmQg
dGhlIGZsYWcgdG9vLiBUaGF0IHdpbGwKKyAgICAgICAgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIGNo
YWduZSAoQnVnIDEwNzYyMSkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRj
aFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkSG9zdFJ1bGUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOgor
ICAgICAgICAoU3R5bGVTY29wZVJlc29sdmVyKToKKyAgICAgICAgKiBkb20vQW5jZXN0b3JDaGFp
bldhbGtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJl
bnQpOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgorICAgICAg
ICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVu
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaWRBZmZlY3RT
ZWxlY3Rvcik6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50U2hhZG93OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAg
ICAgIChFbGVtZW50U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmRp
c3RyaWJ1dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmludmFsaWRhdGVE
aXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlz
dHJpYnV0aW9uKToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHA6Cisg
ICAgICAgIChTaGFkb3dUcmVlV2Fsa2VyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpTaGFkb3dUcmVlV2Fsa2VyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxr
ZXI6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFk
b3dUcmVlV2Fsa2VyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJs
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1Ry
ZWVXYWxrZXI6Omxhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6Om5leHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJl
dmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93
VHJlZVdhbGtlcjo6aXNTaGFkb3dCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpmaW5kSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6Z2V0RGlzdHJpYnV0ZWROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNl
UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRv
d1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6bmV4
dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5p
bmdTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJl
bnRTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRT
aWJsaW5nU2xvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpw
cmV2aW91c1NpYmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6Om5leHRJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnByZXZpb3VzSW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsOjpwYXJlbnRJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWw6Omxhc3RDaGlsZEluU2NvcGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmg6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2FsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudCk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoU2FtZVNpemVBc1NoYWRvd1Jvb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChEZXRhaWxzQ29udGVudEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpmYWxsYmFja1N1bW1hcnkpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6
OmZpbmRNYWluU3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFp
bHNFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNF
bGVtZW50Lmg6CisgICAgICAgIChIVE1MRGV0YWlsc0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
Y3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5oOgorICAgICAgICAoSFRNTENvbnRlbnRFbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVJbnNlcnRpb25Qb2ludDo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQp
OiBQdXNoZWQgZG93biBmcm9tIFNpbXBsZUluc2VydGlvblBvaW50CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9uUG9p
bnQ6Om1hdGNoVHlwZUZvcik6CisgICAgICAgIChTaW1wbGVJbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVJbnNlcnRpb25Qb2ludDo6YWx3YXlzTWF0Y2hlcyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc2VydGlvblBvaW50Ojppc1NoYWRvd0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc2VydGlvblBvaW50OjpyZXNldFN0eWxlSW5oZXJpdGFuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRv
SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNMb3dlckVuY2Fwc3VsYXRpb25C
b3VuZGFyeSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3Bw
OgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0Lmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOiBEaXNhYmxlZCBTSEFET1dfRE9NIHNwZWNpZmljIGZ1
bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZElu
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFz
c0luU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGVJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVj
dG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omhhc1NoYWRvd0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aGFzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb3VudEVs
ZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2libGluZ0J5
V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxrZXIpOgorCiAyMDEzLTAxLTI0ICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGJyZWFrcG9pbnRzIGFyZSBub3QgcmVzdG9yZWQgdXBvbiByZWxvYWQgZm9yIHNjcmlw
dHMgd2l0aCBzY3JpcHQgbWFwcGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA3MDI5Yzg1MDg2ZDVm
YmM1ZTIxZDc3MzlmZGEwNzMwOWJlMGY2NzQwLi41ZmMwYjMzYmVhYjY0MDQ5MDdhNzc4NDFhZTJi
MDIyYzk0ZWVhZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEt
MjIgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtTaGFk
b3cgRE9NXSBQdXQgbm9kZSByZXByb2plY3Rpb24gY29kZSBiZWhpbmQgRU5BQkxFKFNIQURPV19E
T00pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW46IE1vdmVkIHNvbWUgc3ltYm9scyBiZWhp
bmQgRU5BQkxFKFNIQURPV19ET00pIGZsYWcuCisKIDIwMTMtMDEtMjMgIFRvbnkgQ2hhbmcgIDx0
b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBzZXQgc3ZuOmVvbC1zdHls
ZSB0byBDUkxGIG9uIFdpbmRvd3MgLnNsbiBmaWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
ODRjYjRmOWE5NGJkNjcwZmE3Y2MwNGE0YWJkMjQ3YjFkMzVmYTNlNS4uM2ZmNDFjMDIxY2JjYjRj
OGI2ODkxMWNkYzFhNjM3MDA4YWNiMGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTUxOCw3
ICs1MTgsNiBAQCBfX1pON1dlYkNvcmUxN3VzZXJWaXNpYmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43
V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVy
V29ybGRFCiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxN2dlbmVyYWxQYXN0ZWJvYXJkRXYKIF9f
Wk43V2ViQ29yZTEwUGFzdGVib2FyZDE0d3JpdGVQbGFpblRleHRFUktOM1dURjZTdHJpbmdFTlMw
XzE4U21hcnRSZXBsYWNlT3B0aW9uRQotX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3Iy
MmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKIF9fWk43V2ViQ29y
ZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk43V2ViQ29yZTE4UGxhdGZv
cm1QYXN0ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MThQbGF0Zm9ybVBhc3RlYm9hcmQxM3N0cmluZ0ZvclR5cGVFUktOM1dURjZTdHJpbmdFCkBAIC02
NTcsMTEgKzY1Niw2IEBAIF9fWk43V2ViQ29yZTIzZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VS
S05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5T
M18xMFN0cmluZ0hhc2hFTlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJp
bmFyeVByb3BlcnR5TGlzdFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3Jl
MjRDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291
cmNlRQotX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRF
dgotX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYK
LV9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyNG5leHRFdgotX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI4cHJldmlvdXNFdgotX19aTjdXZWJDb3JlMjRD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI5bGFzdENoaWxkRXYKIF9fWk43V2ViQ29yZTI0RG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUVOU18xNERvY3VtZW50TWFy
a2VyMTFNYXJrZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
MTNyZW1vdmVNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQogX19aTjdX
ZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxOGFkZFRleHRNYXRjaE1hcmtlckVQS05T
XzVSYW5nZUViCkBAIC02NzEsOSArNjY1LDYgQEAgX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIxNGZyYW1lRGVzdHJveWVkRXYKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyMTR3aWxsRGV0YWNoUGFnZUV2CiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlckMyRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlckQyRXYKLV9fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTZo
YXNTaGFkb3dFbGVtZW50RVBLTlNfMTBTaGFkb3dSb290RQotX19aTjdXZWJDb3JlMjRTY29wZUNv
bnRlbnREaXN0cmlidXRpb24xOGNvdW50RWxlbWVudFNoYWRvd0VQS05TXzEwU2hhZG93Um9vdEUK
LV9fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTdoYXNDb250ZW50RWxlbWVu
dEVQS05TXzEwU2hhZG93Um9vdEUKIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFy
a3VwRVBOU184RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFUzVfTlNfMjdGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb25FCiBfX1pON1dlYkNvcmUyNGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0VSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lRVJLTlNf
MjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOM1dURjZTdHJpbmdFCkBAIC0xMjUwLDggKzEyNDEs
NiBAQCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE4aXNGb2N1c2VkQW5kQWN0aXZlRXYK
IF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0
YW5nbGVzRVJOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFRUUKIF9fWk5LN1dlYkNvcmUx
NEZyYW1lU2VsZWN0aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgog
X19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKLV9fWk5LN1dlYkNvcmUxNElu
c2VydGlvblBvaW50MTlnZXREaXN0cmlidXRlZE5vZGVzRXYKLV9fWk5LN1dlYkNvcmUxNEluc2Vy
dGlvblBvaW50OGlzQWN0aXZlRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJr
ZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2Vi
Q29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBAIC0yNTM5LDYgKzI1MjgsMTggQEAgX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzI1c2VydmljZVNjcmlwdGVkQW5pbWF0aW9uc0VkCiBfX1pON1dlYkNv
cmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOGlzU2hhZG93RE9NRW5hYmxlZEUKIF9fWk43V2Vi
Q29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVt
ZW50RW5hYmxlZEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNE
T01HbG9iYWxPYmplY3RFUE5TXzEwU2hhZG93Um9vdEUKK19fWk43V2ViQ29yZTE4Q29udGVudERp
c3RyaWJ1dG9yMjJlbnN1cmVTZWxlY3RGZWF0dXJlU2V0RVBOU18xM0VsZW1lbnRTaGFkb3dFCitf
X1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hhZG93RWxlbWVudEVQ
S05TXzEwU2hhZG93Um9vdEUKK19fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50MTlnZXREaXN0
cmlidXRlZE5vZGVzRXYKK19fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYK
K19fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMThjb3VudEVsZW1lbnRTaGFk
b3dFUEtOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjE3aGFzQ29udGVudEVsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUy
NENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjEwZmlyc3RDaGlsZEV2CitfX1pON1dlYkNvcmUyNENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjExbmV4dFNpYmxpbmdFdgorX19aTjdXZWJDb3JlMjRDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI0bmV4dEV2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjhwcmV2aW91c0V2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjlsYXN0Q2hpbGRFdgorX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRl
RVBOU184RG9jdW1lbnRFCiAjZW5kaWYKIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKQEAg
LTI3MzYsMTAgKzI3MzcsNiBAQCBfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUK
IF93a0NhcHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uCiAjZW5k
aWYKIAotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVs
ZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFCi0jZW5kaWYKLQogI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKIF9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE5aXNDU1NSZWdpb25z
RW5hYmxlZEUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGIy
NjNkODA2Yjg1OTU4NmM3YzE0Y2ZmMzFmOTgwYTQzMjUyMzY1YmEuLjIyMTMxOGE3MGQ5MzljYzYw
NDFiMmJmYWNmYTljMTZjMTdkMzkxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTc2Miw3ICs3NjIsMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1
dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICAgICAg
fQogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIG1hdGNoSG9zdFJ1bGVzKHJl
c3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHJlc3VsdCk7CiAgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKaW5kZXggOGFjYWJlNTBhZTcyZDFi
ZTE3ZDRhMzVmN2IzNmNmMzY0ZGFmMjJiNy4uYTYzNTcwYTQzYjU1M2MxMWVjNWEyNzM4OGRhOTJh
MTgwODE3ZjRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAK
QEAgLTE5Miw3ICsxOTIsNiBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkSG9zdFJ1bGUo
U3R5bGVSdWxlSG9zdCogaG9zdFJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZQogICAgICAgICAgICAg
cnVsZS0+YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KGhvc3RTdHlsaW5nUnVs
ZSksIGFkZFJ1bGVGbGFncyk7CiAgICAgfQogfQotI2VuZGlmCiAKIGJvb2wgU3R5bGVTY29wZVJl
c29sdmVyOjpzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQpCiB7CkBAIC0yMzcsNiArMjM2LDcgQEAgdm9pZCBTdHlsZVNjb3BlUmVzb2x2
ZXI6Om1hdGNoSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFZlY3RvcjxSdWxlU2V0
Kj4KICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KKyNlbmRpZgogCiB2b2lkIFN0eWxlU2Nv
cGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNj
b3BlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaApp
bmRleCAzYmUzZmY0ZjcwYzczNzViZDAxNDI2YTAwYmE0MjQxMjg0NjJjYzBlLi5jNWY3NzZmM2Fl
MTQxMTc0MjQ4ODk3ZjY5OTg4MTNlNGNmOTI0ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2NvcGVSZXNvbHZlci5oCkBAIC03NSw5ICs3NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXRj
aGVzU3R5bGVCb3VuZHMoY29uc3QgU3RhY2tGcmFtZSYgZnJhbWUpIGNvbnN0IHsgcmV0dXJuIGZy
YW1lLm1fYXV0aG9yU3R5bGVCb3VuZHNJbmRleCA9PSBtX3N0YWNrUGFyZW50Qm91bmRzSW5kZXg7
IH0KICAgICB2b2lkIGNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVGZWF0dXJlU2V0Jik7CiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkIGFkZEhvc3RSdWxlKFN0eWxlUnVsZUhvc3QqLCBi
b29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
KTsKICAgICBib29sIHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3Qg
RWxlbWVudCopOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCosIFZlY3Rv
cjxSdWxlU2V0Kj4mIG1hdGNoZWRSdWxlcyk7CisjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QW5jZXN0b3JDaGFpbldhbGtlci5jcHAKaW5kZXggOTcwY2RjMjA1OTdjNTBiMjE4ZGY0MzEwMzhl
NmM1OGI5ZWFiYWFlNi4uNWI3Y2VlODJjZDUyNTE5M2ExNGE3MDU1NTVlOTQwZjViY2Q4ZTMxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcApAQCAtNDUsNiAr
NDUsOCBAQCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiB7CiAgICAgQVNTRVJU
KG1fbm9kZSk7CiAgICAgQVNTRVJUKG1fZGlzdHJpYnV0ZWROb2RlKTsKKworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVu
dChtX25vZGUpKSB7CiAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQg
PSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKG1fZGlzdHJpYnV0
ZWROb2RlKSkgewogICAgICAgICAgICAgbV9ub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CkBAIC01Miwy
MCArNTQsMzAgQEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCisKICAgICBpZiAoIW1fbm9kZS0+
aXNTaGFkb3dSb290KCkpIHsKICAgICAgICAgbV9ub2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUt
PmlzU2hhZG93Um9vdCgpICYmIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0
b1NoYWRvd1Jvb3QobV9ub2RlKSkpKQogICAgICAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBt
X25vZGU7CiAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CisjZWxz
ZQorICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKKyAgICAgICAgbV9pc0Nyb3Nz
aW5nSW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChtX25v
ZGUpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQgPSBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8oc2hhZG93
Um9vdCkpIHsKICAgICAgICAgbV9ub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CiAgICAgICAgIG1faXND
cm9zc2luZ0luc2VydGlvblBvaW50ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNl
bmRpZgorCiAgICAgbV9ub2RlID0gc2hhZG93Um9vdC0+aG9zdCgpOwogICAgIG1fZGlzdHJpYnV0
ZWROb2RlID0gbV9ub2RlOwogICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmlu
ZGV4IGFiNThkNjE1MmJjNjBkOTA1MTdhZTRhYjhjZWVhMDdiNDhmY2IxOGMuLmQyMzBmODY0ODc4
MjQ2ZjY5MDM4YzRkYTdiYTMxNmM5ZmZkNDRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0xLDQgKzEsMyBAQAotCiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpA
QCAtMjgsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlci5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRl
ICJDb250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
RWxlbWVudFNoYWRvdy5oIgpAQCAtMzEzLDMgKzMxNCw1IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpwcmV2aW91cygpCiB9CiAKIH0gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIuaAppbmRleCA4MzQ5ZTIxYWE5ODNmMGE4NGExMTNjMTY3ODBlNDllYzY3NjY0ZjNl
Li4yZjAyYTdjM2JjNDU1MDVmNWI0MjgyODUzZWE2ZDI4M2YzOGZmMTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCkBAIC0zMSw2ICszMSw4IEBA
CiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE5vZGU7CkBAIC0xNDMsNCArMTQ1LDUgQEAgaW5saW5lIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUsIFBvbGkK
IAogfSAvLyBuYW1lc3BhY2UKIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMGI4NWZmZTMzMGY3NjgyM2Q1YWMzYjUwM2JhZjY2
ZmJlYzQ3MWNlZS4uMmU2OTBlYjMyYWIyODE1ZTc4ODg5MGIyZTI4M2JhOTZjODhmNDQ2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODA4LDEwICs4MDgsMTIgQEAgc3RhdGljIGJvb2wgY2hl
Y2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9ySWRDaGFuZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBv
bGRJZCwgY28KIAogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHBhcmVudEVsZW1lbnRTaGFkb3cg
PSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKSkgewogICAgICAgICBpZiAoc2hv
dWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKHBhcmVudEVsZW1l
bnRTaGFkb3csIG5hbWUsIG5ld1ZhbHVlKSkKICAgICAgICAgICAgIHBhcmVudEVsZW1lbnRTaGFk
b3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKICAgICB9CisjZW5kaWYKIAogICAgIHBhcnNl
QXR0cmlidXRlKG5hbWUsIG5ld1ZhbHVlKTsKIApAQCAtOTQ4LDYgKzk1MCw3IEBAIHZvaWQgRWxl
bWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NT
dHJpbmcpCiAKIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5B
dHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3csIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgQVNTRVJUKGVsZW1lbnRTaGFkb3cpOwogICAgIGNvbnN0IFNl
bGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gZWxlbWVudFNoYWRvdy0+ZGlzdHJpYnV0
b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGVsZW1lbnRTaGFkb3cpOwogCkBAIC05NzksNiAr
OTgyLDEyIEBAIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5B
dHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsCiAgICAgfQogCiAgICAgcmV0dXJuIGZl
YXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFtZS5sb2NhbE5hbWUoKSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShlbGVtZW50U2hhZG93KTsKKyAgICBVTlVTRURfUEFSQU0obmFt
ZSk7CisgICAgVU5VU0VEX1BBUkFNKG5ld1ZhbHVlKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZl
bnQgaGFuZGxlci4KQEAgLTE0NTUsOSArMTQ2NCwxMiBAQCBFbGVtZW50U2hhZG93KiBFbGVtZW50
OjplbnN1cmVTaGFkb3coKQogCiB2b2lkIEVsZW1lbnQ6OmRpZEFmZmVjdFNlbGVjdG9yKEFmZmVj
dGVkU2VsZWN0b3JNYXNrIG1hc2spCiB7CisgICAgVU5VU0VEX1BBUkFNKG1hc2spOwogICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxl
bWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9u
KHRoaXMpKQogICAgICAgICBlbGVtZW50U2hhZG93LT5kaWRBZmZlY3RTZWxlY3RvcihtYXNrKTsK
KyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRv
d1Jvb3QoRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAK
aW5kZXggMzJkZDRmMDRkNTdhZWFjNDAzMmVlYWYyZmQxZWZjY2Y1MjY4YWU0ZC4uYzRjZTYyNDc3
NTBmYWYzOTIzMGE2YjdlZDk1ZDVhY2Q5MjZmNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmNwcApAQCAtODIsNyArODIsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRv
d1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogICAg
IHNoYWRvd1Jvb3QtPnNldEhvc3Qoc2hhZG93SG9zdCk7CiAgICAgc2hhZG93Um9vdC0+c2V0UGFy
ZW50VHJlZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29wZSgpKTsKICAgICBtX3NoYWRvd1Jvb3Rz
LnB1c2goc2hhZG93Um9vdC5nZXQoKSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbV9k
aXN0cmlidXRvci5kaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShzaGFkb3dIb3N0KTsKKyNlbmRpZgog
ICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dS
b290LmdldCgpKTsKIAogICAgIC8vIEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMg
dGhlIGhvc3QgYW5kIGl0cyBjaGlsZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLgpAQCAtMTE3LDEzICsxMTksMTYgQEAgdm9pZCBFbGVtZW50U2hhZG93
OjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmll
cihzaGFkb3dIb3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CiAgICAgfQogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNo
YWRvd0hvc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoKCkKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURp
c3RyaWJ1dGlvbih5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0KKyNlbmRpZgogICAgIGZvciAoU2hh
ZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+
b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAg
ICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CkBAIC0xNzMsNyArMTc4LDEwIEBAIHZvaWQgRWxlbWVu
dFNoYWRvdzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKICAgICAgICAgaW5mby5hZGRNZW1iZXIoc2hhZG93Um9vdCk7CiAgICAgICAg
IHNoYWRvd1Jvb3QgPSBzaGFkb3dSb290LT5uZXh0KCk7CiAgICAgfQorCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgaW5mby5hZGRNZW1iZXIobV9kaXN0cmlidXRvcik7CisjZW5kaWYKIH0K
IAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmluZGV4IDg5MzM2
M2JiYTg3YjQ4OGU3YWZkMTJkMDI4NWNkNGE1NDQ0MWVhNzMuLjAwNTJlY2Q2YWZlOWFiZDY5YThk
NDRkMjRmYTdkOWZhZDkzMzQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaApAQCAt
NjMsMTggKzYzLDI2IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzU3R5bGVSZWNhbGMoKTsKICAg
ICB2b2lkIHJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlKTsKIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRv
ci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KICAgICB2b2lkIGRpZEFmZmVjdFNl
bGVjdG9yKEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spIHsgbV9kaXN0cmlidXRvci5kaWRBZmZl
Y3RTZWxlY3Rvcihob3N0KCksIG1hc2spOyB9CiAgICAgdm9pZCB3aWxsQWZmZWN0U2VsZWN0b3Io
KSB7IG1fZGlzdHJpYnV0b3Iud2lsbEFmZmVjdFNlbGVjdG9yKGhvc3QoKSk7IH0KIAotICAgIENv
bnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKTsKLSAgICBjb25zdCBDb250ZW50RGlzdHJp
YnV0b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3Q7CisgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0
cmlidXRvcigpIHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KKyAgICBjb25zdCBDb250ZW50RGlz
dHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQor
I2Vsc2UKKyAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IH0KKyAgICB2b2lkIGVu
c3VyZURpc3RyaWJ1dGlvbigpIHsgfQorI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKLXByaXZhdGU6CiAKK3ByaXZhdGU6CiAgICAg
RG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOworCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgQ29udGVudERpc3RyaWJ1dG9yIG1fZGlzdHJpYnV0b3I7CisjZW5k
aWYKIH07CiAKIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93Ojp5b3VuZ2VzdFNoYWRv
d1Jvb3QoKSBjb25zdApAQCAtODcsMTYgKzk1LDYgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIEVsZW1l
bnRTaGFkb3c6Om9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBtX3NoYWRvd1Jv
b3RzLnRhaWwoKTsKIH0KIAotaW5saW5lIENvbnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRv
dzo6ZGlzdHJpYnV0b3IoKQotewotICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwotfQotCi1pbmxp
bmUgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7Ci19Ci0KIGlubGluZSBFbGVtZW50
KiBFbGVtZW50U2hhZG93Ojpob3N0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fc2hhZG93Um9v
dHMuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmNwcAppbmRleCA4M2JiN2VjN2U3OWVmMmYyMTYzZWYwNzc1Mzc5ZDc3N2U2OWVmZmYyLi5j
N2FlMDBhZDFhMTEyNjk0NzFhNzVhNTdlZjU5NmU5MzU3ZDY0MDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCkBAIC0yOCwxMiArMjgsMjAwIEBA
CiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogCiAjaW5jbHVkZSAiQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
Tm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBuYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CiAKKy8vIEEg
c2ltcGxpZmllZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXItY29tcGF0aWJsZSB3YWxrZXIgaW1w
bGVtZW50YXRpb24gZm9yIG5vbi1TSEFET1dfRE9NIGNvbmZpZ3VyYXRpb25zLgorY2xhc3MgU2hh
ZG93VHJlZVdhbGtlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2hhZG93VHJlZVdhbGtlcihj
b25zdCBOb2RlKiBub2RlKQorICAgICAgICA6IG1fbm9kZShub2RlKQorICAgIHsgfQorCisgICAg
Tm9kZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4obV9ub2RlKTsgfQor
CisgICAgdm9pZCBwYXJlbnQoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUGFyZW50KG1fbm9kZSk7IH0K
KyAgICB2b2lkIG5leHRTaWJsaW5nKCkgeyBtX25vZGUgPSB0cmF2ZXJzZU5leHRTaWJsaW5nKG1f
bm9kZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzU2libGluZygpIHsgbV9ub2RlID0gdHJhdmVyc2VQ
cmV2aW91c1NpYmxpbmcobV9ub2RlKTsgfQorICAgIHZvaWQgbGFzdENoaWxkKCkgeyBtX25vZGUg
PSBtX25vZGUtPmxhc3RDaGlsZCgpOyB9CisgICAgdm9pZCBmaXJzdENoaWxkKCkgeyBtX25vZGUg
PSBtX25vZGUtPmZpcnN0Q2hpbGQoKTsgfQorCisgICAgdm9pZCBuZXh0KCkgeyBtX25vZGUgPSB0
cmF2ZXJzZU5leHQobV9ub2RlKTsgfQorICAgIHZvaWQgcHJldmlvdXMoKSB7IG1fbm9kZSA9IHRy
YXZlcnNlUHJldmlvdXMobV9ub2RlKTsgfQorCisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUGFy
ZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKiA9IDApOworCitwcml2YXRlOgorICAgIHN0
YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHQoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0
cmF2ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VO
ZXh0U2libGluZyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlv
dXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogbmV4dEluY2x1ZGluZ0Nv
bnRhaW5pbmdTY29wZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHByZXZpb3VzSW5j
bHVkaW5nQ29udGFpbmluZ1Njb3BlKGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgYm9vbCBpc1No
YWRvd0JvdW5kYXJ5KE5vZGUqIG5vZGUpIHsgcmV0dXJuIG5vZGUtPmlzU2hhZG93Um9vdCgpIHx8
IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKTsgfQorCisgICAgY29uc3QgTm9kZSogbV9ub2RlOwor
fTsKKworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCisKK3N0YXRpYyBJbnNlcnRpb25Qb2lu
dCogZmluZEluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgTm9kZSogcGFy
ZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBwYXJlbnQtPnlvdW5nZXN0U2hhZG93Um9v
dCgpOworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGhhc0lu
c2VyZXRpb25Qb2ludCA9IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmRldGFpbHNUYWcp
IHx8IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnN1bW1hcnlUYWcpOworICAgIGlmICgh
aGFzSW5zZXJldGlvblBvaW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoTm9kZSog
bWF5SW5zZXJ0aW9uUG9pbnQgPSByb290LT5maXJzdENoaWxkKCk7IG1heUluc2VydGlvblBvaW50
OyBtYXlJbnNlcnRpb25Qb2ludCA9IG1heUluc2VydGlvblBvaW50LT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIGlmIChtYXlJbnNlcnRpb25Qb2ludC0+aXNJbnNlcnRpb25Qb2ludCgpICYmIHRv
SW5zZXJ0aW9uUG9pbnQobWF5SW5zZXJ0aW9uUG9pbnQpLT5hbHdheXNNYXRjaGVzKGNvbnN0X2Nh
c3Q8Tm9kZSo+KG5vZGUpKSkKKyAgICAgICAgICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG1h
eUluc2VydGlvblBvaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMg
VmVjdG9yPE5vZGUqPiBnZXREaXN0cmlidXRlZE5vZGUoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkK
K3sKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVzOworICAgIEVsZW1lbnQqIGhvc3QgPSBwYXJlbnQt
PnNoYWRvd0hvc3QoKTsKKyAgICBBU1NFUlQoaG9zdCk7CisgICAgaWYgKCFob3N0KQorICAgICAg
ICByZXR1cm4gbm9kZXM7CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaG9zdC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAo
cGFyZW50LT5hbHdheXNNYXRjaGVzKGNoaWxkKSkKKyAgICAgICAgICAgIG5vZGVzLmFwcGVuZChj
aGlsZCk7CisgICAgfQorCisgICAgcmV0dXJuIG5vZGVzOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KERFVEFJTFNfRUxFTUVOVCkKKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZl
cnNlUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCit7Cisj
aWYgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50ID0gZmluZEluc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIGlmIChkZXRh
aWxzKQorICAgICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChpbnNl
cnRpb25Qb2ludCk7CisgICAgICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCktPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpkZXRhaWxzVGFnKSB8fCBub2RlLT5wYXJlbnROb2RlKCktPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpzdW1tYXJ5VGFnKSk7CisgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnRO
b2RlKCk7CisgICAgfQorI2VuZGlmCisKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCk7IHdhbGs7IHdhbGsgPSB3YWxrLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsK
KyAgICAgICAgaWYgKCFpc1NoYWRvd0JvdW5kYXJ5KHdhbGspKQorICAgICAgICAgICAgcmV0dXJu
IHdhbGs7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5v
ZGUqIHdhbGsgPSBuZXh0SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKG5vZGUpOyB3YWxrOyB3YWxr
ID0gbmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSh3YWxrKSkgeworICAgICAgICBpZiAoIWlz
U2hhZG93Qm91bmRhcnkod2FsaykpCisgICAgICAgICAgICByZXR1cm4gd2FsazsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZl
cnNlUHJldmlvdXMoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKE5vZGUqIHdhbGsgPSBw
cmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShub2RlKTsgd2Fsazsgd2FsayA9IHByZXZp
b3VzSW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKHdhbGspKSB7CisgICAgICAgIGlmICghaXNTaGFk
b3dCb3VuZGFyeSh3YWxrKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAg
IHJldHVybiAwOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VO
ZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1F
TlQpCisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRp
b25Qb2ludChub2RlKSkgeworICAgICAgICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdl
dERpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkaXN0cmlidXRpb24uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIC8vIFN0
YXlpbmcgaW5zaWRlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIGlmIChkaXN0cmlidXRpb25b
aV0gPT0gbm9kZSAmJiBkaXN0cmlidXRpb24ubGFzdCgpICE9IG5vZGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGRpc3RyaWJ1dGlvbltpICsgMV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIC8vIFN0ZXBwaW5nIG91dCBmcm9tIGRpc3RyaWJ1dGVkIGxvY2F0aW9uCisgICAgICAgIG5v
ZGUgPSBpbnNlcnRpb25Qb2ludDsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBTdGVwcGluZyBp
bnRvIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkg
eworICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRl
ZE5vZGUodG9JbnNlcnRpb25Qb2ludChjb25zdF9jYXN0PE5vZGUqPihub2RlKSkpOworICAgICAg
ICAgICAgaWYgKCFkaXN0cmlidXRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBkaXN0cmlidXRpb24uZmlyc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAg
cmV0dXJuIG5vZGUtPm5leHRTaWJsaW5nKCk7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVl
V2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworI2lm
IEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICBWZWN0b3I8Tm9k
ZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaXN0cmlidXRpb24uc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIC8vIFN0YXlpbmcgaW5zaWRlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAg
ICAgIGlmIChkaXN0cmlidXRpb25baV0gPT0gbm9kZSAmJiBkaXN0cmlidXRpb24uZmlyc3QoKSAh
PSBub2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRpb25baSAtIDFdOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBTdGVwcGluZyBvdXQgZnJvbSBkaXN0cmlidXRl
ZCBsb2NhdGlvbgorICAgICAgICBub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gU3RlcHBpbmcgaW50byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChub2Rl
LT5pc0luc2VydGlvblBvaW50KCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJp
YnV0aW9uID0gZ2V0RGlzdHJpYnV0ZWROb2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxO
b2RlKj4obm9kZSkpKTsKKyAgICAgICAgICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0aW9uLmxhc3QoKTsKKyAgICAgICAgfQor
ICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIG5vZGUtPnByZXZpb3VzU2libGluZygpOworfQor
CitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6bmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdT
Y29wZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZl
cnNhbDo6bmV4dChub2RlKSkKKyAgICAgICAgcmV0dXJuIHdhbGs7CisKKyAgICBmb3IgKG5vZGUg
PSB0cmF2ZXJzZVBhcmVudChub2RlKTsgbm9kZTsgbm9kZSA9IHRyYXZlcnNlUGFyZW50KG5vZGUp
KSB7CisgICAgICAgIGlmIChub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgcmV0dXJu
IG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGlu
ZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29w
ZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNh
bDo6cHJldmlvdXMobm9kZSkpCisgICAgICAgIHJldHVybiB3YWxrOworICAgIHJldHVybiB0cmF2
ZXJzZVBhcmVudChub2RlKTsKK30KKwogdm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZUlu
c2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBpZiAo
IW1faW5zZXJ0aW9uUG9pbnQpIHsKQEAgLTQ5LDE0ICsyMzcsMjQgQEAgdm9pZCBQYXJlbnREZXRh
aWxzOjpkaWRUcmF2ZXJzZVNoYWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogcm9vdCkKIAogQ29u
dGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBk
ZXRhaWxzKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlciB3YWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDcm9zc1VwcGVy
Qm91bmRhcnksIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q2FuU3RhcnRGcm9tU2hhZG93Qm91
bmRhcnkpOworI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgCisgICAgU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIobm9kZSk7CisjZW5kaWYKKwogICAgIENvbnRhaW5lck5vZGUqIGZvdW5kID0gdG9D
b250YWluZXJOb2RlKHdhbGtlci50cmF2ZXJzZVBhcmVudCh3YWxrZXIuZ2V0KCksIGRldGFpbHMp
KTsKLSAgICByZXR1cm4gZGV0YWlscy0+b3V0T2ZDb21wb3NpdGlvbigpID8gMCA6IGZvdW5kOwor
ICAgIHJldHVybiBkZXRhaWxzICYmIGRldGFpbHMtPm91dE9mQ29tcG9zaXRpb24oKSA/IDAgOiBm
b3VuZDsKIH0KIAogTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtl
cihub2RlKTsKKyNlbHNlICAgICAgICAgICAgICAgICAgICAgIAorICAgIFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisKICAgICBpZiAobm9kZS0+aXNCZWZvcmVQc2V1ZG9F
bGVtZW50KCkpIHsKICAgICAgICAgd2Fsa2VyLnBhcmVudCgpOwogICAgICAgICB3YWxrZXIuZmly
c3RDaGlsZCgpOwpAQCAtNjksMTMgKzI2NywxNyBAQCBOb2RlKiBuZXh0U2libGluZ1Nsb3coY29u
c3QgTm9kZSogbm9kZSkKICAgICBOb2RlKiBwYXJlbnQgPSB3YWxrZXIudHJhdmVyc2VQYXJlbnQo
bm9kZSk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKICAgICAg
ICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKTsKLQogICAg
IHJldHVybiAwOwogfQogCiBOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5v
ZGUpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIHdhbGtlcihub2RlKTsKKyNlbHNlICAgICAgICAgICAgICAgICAgICAgIAorICAgIFNoYWRv
d1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisKICAgICBpZiAobm9kZS0+aXNBZnRl
clBzZXVkb0VsZW1lbnQoKSkgewogICAgICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAgICAgIHdh
bGtlci5sYXN0Q2hpbGQoKTsKQEAgLTk0LDM0ICsyOTYsNDYgQEAgTm9kZSogcHJldmlvdXNTaWJs
aW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogCiBOb2RlKiBuZXh0SW5TY29wZShjb25zdCBOb2Rl
KiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxk
bid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
KG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkp
OwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSk7CisjZW5kaWYKIH0KIAogTm9kZSog
cHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9X
X0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIg
PSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
OjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAg
cmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6OnBy
ZXZpb3VzKG5vZGUpOworI2VuZGlmCiB9CiAKIE5vZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9k
ZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3Vs
ZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5
KTsKICAgICB3YWxrZXIucGFyZW50KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNl
CisgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKKyNlbmRpZgogfQogCiBOb2RlKiBsYXN0
Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RP
TSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpE
b05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJl
dHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBub2RlLT5sYXN0Q2hpbGQoKTsK
KyNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ1RyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaAppbmRleCAyZGIzZTc1OTVjYWNjMGY5YzA1Zjg2ZmZhMTE3YmFlNDg4ZDU4ODA0Li40Y2I3
N2NiMjY0NDhiMzkxM2NjNWEwMzY3MzBhZDAwMDc0ZTZmMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fb3V0T2ZDb21wb3NpdGlvbjsKIH07CiAKK0NvbnRhaW5lck5vZGUqIHBhcmVu
dChjb25zdCBOb2RlKik7CiBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSosIFBhcmVu
dERldGFpbHMqKTsKIENvbnRhaW5lck5vZGUqIHBhcmVudFNsb3coY29uc3QgTm9kZSosIFBhcmVu
dERldGFpbHMqKTsKIE5vZGUqIG5leHRTaWJsaW5nKGNvbnN0IE5vZGUqKTsKQEAgLTc2LDYgKzc3
LDEyIEBAIE5vZGUqIHByZXZpb3VzSW5TY29wZShjb25zdCBOb2RlKik7CiBOb2RlKiBwYXJlbnRJ
blNjb3BlKGNvbnN0IE5vZGUqKTsKIE5vZGUqIGxhc3RDaGlsZEluU2NvcGUoY29uc3QgTm9kZSop
OwogCitpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7Cisg
ICAgUGFyZW50RGV0YWlscyBkZXRhaWxzOworICAgIHJldHVybiBwYXJlbnQobm9kZSwgJmRldGFp
bHMpOworfQorCiBpbmxpbmUgQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUs
IFBhcmVudERldGFpbHMqIGRldGFpbHMpCiB7CiAgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1Ry
ZWVXYWxrZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGUzYTQ4MjIyYjkz
ZDM4ZDY3MGVjMmEyMzgxZjBiZjZkYTE1MTc0MmQuLmZmYjQxMWVhNzM2NDFlNzU3Nzc2ZGRiNDJh
NzBiMDY5Y2VjNDRmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU3LDcgKzU3
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzU2hhZG93Um9v
dCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgRG91
Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD4geworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIHZvaWQqIHBvaW50ZXJzWzNdOworI2Vsc2UKKyAgICB2b2lkKiBwb2ludGVyc1syXTsKKyNl
bmRpZgogICAgIHVuc2lnbmVkIGNvdW50ZXJzQW5kRmxhZ3NbMV07CiB9OwogCkBAIC0yNjIsMTEg
KzI2NiwxMSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCiAKIE5vZGU6Okluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUq
IGluc2VydGlvblBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIERvY3VtZW50
RnJhZ21lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAKICAgICBpZiAoIWluc2Vy
dGlvblBvaW50LT5pbkRvY3VtZW50KCkgfHwgIWlzT2xkZXN0KCkpCiAgICAgICAgIHJldHVybiBJ
bnNlcnRpb25Eb25lOwotCiAgICAgLy8gRklYTUU6IFdoZW4gcGFyc2luZyA8dmlkZW8gY29udHJv
bHM+LCBpbnNlcnRlZEludG8oKSBpcyBjYWxsZWQgbWFueSB0aW1lcyB3aXRob3V0IGludm9raW5n
IHJlbW92ZWRGcm9tLgogICAgIC8vIEZvciBub3csIHdlIGNoZWNrIG1fcmVnaXN0ZXJlZFdpdGhQ
YXJlbnRTaGFkb3dyb290LiBXZSB3b3VsZCBsaWtlIHRvIEFTU0VSVCghbV9yZWdpc3RlcmVkU2hh
ZG93Um9vdCkgaGVyZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
aWc/aWQ9MTAxMzE2CkBAIC0yNzcsMTIgKzI4MSwxNSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNl
cgogICAgICAgICByb290LT5lbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpLT5yZWdpc3RlckVsZW1l
bnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSB0
cnVlOwogICAgIH0KLQogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOworI2Vsc2UKKyAgICByZXR1
cm4gRG9jdW1lbnRGcmFnbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKKyNlbmRp
ZgogfQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2Vy
dGlvblBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpICYmIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290KSB7
CiAgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290
KCk7CiAgICAgICAgIGlmICghcm9vdCkKQEAgLTI5Miw3ICsyOTksNyBAQCB2b2lkIFNoYWRvd1Jv
b3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICAg
ICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1lbnRTaGFkb3coKTsK
ICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBmYWxzZTsKICAgICB9
Ci0KKyNlbmRpZgogICAgIERvY3VtZW50RnJhZ21lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBv
aW50KTsKIH0KIApAQCAtMzE3LDYgKzMyNCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6dW5yZWdpc3Rl
clNjb3BlZEhUTUxTdHlsZUNoaWxkKCkKICAgICBzZXRIYXNTY29wZWRIVE1MU3R5bGVDaGlsZCht
X251bWJlck9mU3R5bGVzID4gMCk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24o
KQogewogICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQpAQCAtMzI0LDcgKzMzMiw4IEBAIFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRp
b24oKQogCiAgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNvbnRl
bnREaXN0cmlidXRpb24pOwogICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOwot
fSAgIAorfQorI2VuZGlmCiAKIHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKQEAgLTMzMyw3ICszNDIs
OSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgVHJlZVNjb3BlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZXYpOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fbmV4dCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaW5mby5h
ZGRNZW1iZXIobV9zY29wZURpc3RyaWJ1dGlvbik7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmgKaW5kZXggMTUyNjkzOGVkZTUwNDBkZGM0MzM5ZjU4ZmY4NjUxYTJjNzI1OWY3
OS4uODU5ZjBkMjJkZWFkODJhZDhjN2RlMTA1NjRmMjgyMjI5MTQxY2U1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5oCkBAIC04OCw5ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJp
YnV0aW9uKCkgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQogICAgIGNvbnN0
IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmlidXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAgU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uKiBlbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpOworI2VuZGlmCiAKICAgICBTaGFkb3dS
b290VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhvclNoYWRvd1Jvb3QgPyBBdXRo
b3JTaGFkb3dSb290IDogVXNlckFnZW50U2hhZG93Um9vdDsgfQogICAgIGJvb2wgaXNBY2Nlc3Np
YmxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dGhvclNoYWRvd1Jvb3Q7IH0KQEAgLTEx
MCw3ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgU2hhZG93Um9vdCogbV9wcmV2OwogICAgIFNo
YWRvd1Jvb3QqIG1fbmV4dDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBPd25QdHI8U2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOworI2VuZGlmCiAgICAg
dW5zaWduZWQgbV9udW1iZXJPZlN0eWxlcyA6IDI4OwogICAgIHVuc2lnbmVkIG1fYXBwbHlBdXRo
b3JTdHlsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIDogMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCAwNWVlYmFi
NDEwZDg4YjQxZWI4MTE5MzEyYWQ5ZDkxYzI1ZDQxZWMyLi42OGUwNzk3MjI4N2IwMDUzMDZjYmRj
ODI5MWU4YjFmM2YyYTMyMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCkBAIC01MSw2ICs1MSwxNCBAQCBwcml2YXRlOgogICAgICAgICA6IEhUTUxDb250
ZW50RWxlbWVudChIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRvY3VtZW50KQog
ICAgIHsKICAgICB9CisKKyAgICAvLyBUaGlzIG1hdGNoIHNob3VsZCBiZSBtdXR1YWxseSBleGNs
dXNpdmUgdG8gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjptYXRjaFR5cGVGb3IoKQorICAgIHZpcnR1
YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKiBub2RlKSBPVkVSUklERQorICAgIHsKKyAg
ICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgbm9kZSAhPSBub2RlLT5wYXJlbnRO
b2RlKCktPnF1ZXJ5U2VsZWN0b3Ioc3VtbWFyeVF1ZXJ5U2VsZWN0b3IoKSwgQVNTRVJUX05PX0VY
Q0VQVElPTikpCisgICAgICAgICAgICByZXR1cm4gQWx3YXlzTWF0Y2hlczsKKyAgICAgICAgcmV0
dXJuIE5ldmVyTWF0Y2hlczsKKyAgICB9CiB9OwogCiBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50
RWxlbWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtMTIwLDYgKzEyOCwxMSBAQCB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlU2hh
ZG93U3VidHJlZSgpCiAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoRGV0YWlsc0NvbnRlbnRFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04sIHRydWUpOwogfQogCitF
bGVtZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZhbGxiYWNrU3VtbWFyeSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxlbWVudCo+KHVzZXJBZ2VudFNo
YWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1tYXJ5KCk7Cit9CisKIEVsZW1l
bnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKIHsKICAgICBm
b3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkgewpAQCAtMTI3LDcgKzE0MCw3IEBAIEVsZW1lbnQqIEhUTUxEZXRhaWxzRWxl
bWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1l
bnQoY2hpbGQpOwogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFy
eUVsZW1lbnQqPih1c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxiYWNr
U3VtbWFyeSgpOworICAgIHJldHVybiBmYWxsYmFja1N1bW1hcnkoKTsKIH0KIAogdm9pZCBIVE1M
RGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNDYsOCArMTU5LDE4IEBAIGJvb2wgSFRN
TERldGFpbHNFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjCiAgICAgaWYgKCFjaGlsZENvbnRleHQuaXNPbkVuY2Fwc3VsYXRpb25C
b3VuZGFyeSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9pc09wZW4pCisg
ICAgaWYgKG1faXNPcGVuKSB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAvLyBU
aGUgZmFsbGJhY2sgPHN1bW1hcnk+IHNob3VsZG4ndCBiZSB2aXNpYmxlIHVubGVzcyBpdCBpcyB1
c2VkIGFzIGEgbWFpbiBzdW1tYXJ5LgorICAgICAgICAvLyBXaXRoIFNIQURPV19ET00sIDxkZXRh
aWxzPiBjYW4ganVzdCBsZXQgPGNvbnRlbnQ+IGZhbGxiYWNrIHN5c3RlbSB0YWtlIGNhcmUgb2Yg
dGhpcy4KKyAgICAgICAgaWYgKGNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFy
eVRhZykpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGZhbGxiYWNrID0gZmFsbGJhY2tTdW1tYXJ5
KCk7CisgICAgICAgICAgICBpZiAoZmFsbGJhY2sgIT0gZmluZE1haW5TdW1tYXJ5KCkgJiYgZmFs
bGJhY2sgPT0gY2hpbGRDb250ZXh0Lm5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKKyAgICB9CiAKICAgICBpZiAoIWNo
aWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFyeVRhZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE1NSw2ICsxNzgsMjAgQEAgYm9vbCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGMKICAg
ICByZXR1cm4gY2hpbGRDb250ZXh0Lm5vZGUoKSA9PSBmaW5kTWFpblN1bW1hcnkoKSAmJiBIVE1M
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOwogfQogCit2
b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQoreworI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAvLyBUaGlzIGlzIGEgc2lt
cGxpZmllZCB2ZXJzaW9uIG9mIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxpZGF0ZURpc3RyaWJ1
dGlvbigpCisgICAgLy8gd2hpY2ggcmVhdHRhY2hlcyBjaGlsZHJlbiB0byBtYWtlIHRoZW0gYmVp
bmcgcmUtZGlzdHJpYnV0ZWQgdG8gYXBwcm9wcmlhdGUgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICBp
ZiAoYXR0YWNoZWQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47
IG4gPSBuLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgbi0+bGF6eVJlYXR0YWNoKCk7Cisg
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9CisjZW5kaWYKKyAgICBIVE1MRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRl
ckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKK30KKwogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6
OnRvZ2dsZU9wZW4oKQogewogICAgIHNldEF0dHJpYnV0ZShvcGVuQXR0ciwgbV9pc09wZW4gPyBu
dWxsQXRvbSA6IGVtcHR5QXRvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuaAppbmRleCA5ZGE5Njk4ODYxNDY0Y2QzZDBlNzJmMjE0NzY4MDczYTIzYmQzNmJhLi4yNjY0
ZDI1YzJkODMzNDllZjg1YjkzMDI0Y2JhZDQ5N2FlZjZkZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERldGFpbHNFbGVtZW50LmgKQEAgLTM4LDcgKzM4LDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKLQorICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCwgTm9k
ZSosIE5vZGUqLCBpbnQpOworICAgIEVsZW1lbnQqIGZhbGxiYWNrU3VtbWFyeSgpIGNvbnN0Owog
ICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpOwogCiAgICAgYm9vbCBtX2lzT3BlbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDZhYWY5OTQ5OGI2YTAw
NDEzOTVhZjU1NWY1MmUxNzBiZWZkZmJmYjcuLmEzMGFmMWVlY2E2YWI5OWNmZjczNWQ5MDQyYzNl
ZTY4NjFiYTMyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApA
QCAtNTM3LDggKzUzNywxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQog
ICAgICAgICAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUpOwogICAgIH0KIAorI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0g
c2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFk
b3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgogCiAgICAgc2V0Q2hhbmdlZFNp
bmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCAzZmNiZjlkNTBi
ZTY1MzQwODhmMWJiNTg1ODUwNjgwYjU0ZTBkODdlLi5hMTlkZGY0MTE4ZDlmMzcyMzNiMmRiZjli
ZmRjNDBmNzgwOTJiZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJFbGVt
ZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCkBAIC00NDEsMyAr
NDQzLDUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdl
KEVsZW1lbnQqIGhvc3QpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRl
eCBkZmVhYjhjYzdmZGJlNTBhZGY2MTA3ZThkNjBhMGRmMjI4NDE2ZDBiLi45NTUzMWI0YjRjNTY1
OGYxYzU2OGUxZmQ2NzM0NGMxNjhlMDA1NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9k
ZTsKQEAgLTE2Myw0ICsxNjUsNSBAQCBpbmxpbmUgYm9vbCBDb250ZW50RGlzdHJpYnV0b3I6Om5l
ZWRzRGlzdHJpYnV0aW9uKCkgY29uc3QKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19E
T00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcAppbmRleCA1MmEwYWM1YTFmOTJmYWRjZTZiMDMzYzQ4YzBkZTYxMzBk
YzhjNmQ2Li40MjFhYzgwYmIwYTkzOTRmZTk0ZWE5NDRkY2Y1MDRjNjQxZGJlZjg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
CkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlbGVjdG9yUXVlcnkuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRl
ICJTZWxlY3RvckNoZWNrZXIuaCIKQEAgLTkxLDMgKzkzLDUgQEAgYm9vbCBDb250ZW50U2VsZWN0
b3JRdWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdzLCBp
bnQgbnQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAppbmRleCA0ZDM4
ZWRkMWE1Yzg2MTBmNzcyOTMxMzI0YTZhNmVlZGNkMzdhNzE2Li5mZTI0ZDJkM2Q4YjdjZWE3YzEz
MGQwNzhjNWJmYjE0ZWM4YmEyMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpAQCAtNzYs
NCArNzgsNSBAQCBwcml2YXRlOgogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuaAppbmRleCA5ZDBjOGZjNDM1M2JmOTZjZTI0ZDFhMjZmMjUxYWRjM2M5ODFhZDA4Li5jYTI2
OWU4NjM5MGU1ZWI0MWZkNmM5YjM5ODNiOWJjYzIyMjg3NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaApAQCAtODgsNyArODgsNiBAQCBj
bGFzcyBIVE1MQ29udGVudEVsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZW50VGFnTmFtZShEb2N1bWVu
dCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50RWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Kik7Ci0KICAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gQ29udGVudEluc2VydGlvblBvaW50OyB9CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCBl
MDgzMThiZmY1YThlMGJiYzA0NDRmYzg3ODZkMzkxM2Y5OGM3Yzk2Li5mOTA2NDIzNDE5Yjc3NDhl
M2I3MDViN2EzNTQ0ZDBmM2ZmMGJiNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBAIC0zOSwxMCArMzksMTcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitTaW1wbGVJbnNlcnRpb25Qb2ludDo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUluc2VydGlvblBvaW50KQoreworfQor
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
IEluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQpCisgICAgOiBTaW1wbGVJbnNlcnRpb25Qb2ludCh0
YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290KGZhbHNl
KQogewogfQpAQCAtNzksMjUgKzg2LDYgQEAgYm9vbCBJbnNlcnRpb25Qb2ludDo6c2hvdWxkVXNl
RmFsbGJhY2tFbGVtZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIGlzQWN0aXZlKCkgJiYgIWhhc0Rp
c3RyaWJ1dGlvbigpOwogfQogCi1ib29sIEluc2VydGlvblBvaW50Ojppc1NoYWRvd0JvdW5kYXJ5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93
Um9vdCgpICYmIGlzQWN0aXZlKCk7Ci19Ci0KLWJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZl
KCkgY29uc3QKLXsKLSAgICBpZiAoIWNvbnRhaW5pbmdTaGFkb3dSb290KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBjb25zdCBOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOwotICAgIHdo
aWxlIChub2RlKSB7Ci0gICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50KCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IElu
c2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29uc3QKIHsKICAgICBpZiAoU2hh
ZG93Um9vdCogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCkBAIC0xMTEsMTEg
Kzk5LDYgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1
dGVkTm9kZXMoKSBjb25zdAogICAgIHJldHVybiBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobm9kZXMp
OwogfQogCi1ib29sIEluc2VydGlvblBvaW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVybiAhaXNTaGFkb3dCb3VuZGFy
eSgpICYmIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwotfQotCiB2b2lk
IEluc2VydGlvblBvaW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5v
ZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEp
CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yMjksNCArMjEy
LDIwIEBAIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHBy
b2plY3RlZE5vZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCitib29sIEluc2Vy
dGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFjb250YWluaW5nU2hhZG93
Um9vdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgTm9kZSogbm9kZSA9IHBh
cmVudE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAobm9kZS0+aXNJbnNl
cnRpb25Qb2ludCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDc0MjQzZTljYWE0
NTM3YzU5NGE5MjkwYjQ2ODExZTNiNjAwNWJjZTYuLjMwMDBlM2JjNjlkMmExZmEyY2U1ODg0Y2Iy
NmFiZDM2MmEwNjIwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEluc2VydGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIFNpbXBsZUluc2Vy
dGlvblBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUg
ewogICAgICAgICBTaGFkb3dJbnNlcnRpb25Qb2ludCwKQEAgLTU0LDE5ICs1NCwzMiBAQCBwdWJs
aWM6CiAgICAgICAgIEhhc1RvTWF0Y2hTZWxlY3RvcgogICAgIH07CiAKKyAgICB2aXJ0dWFsIE1h
dGNoVHlwZSBtYXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJuIEFsd2F5c01hdGNoZXM7IH0KKyAg
ICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9pbnRUeXBlKCkgY29uc3QgPSAwOworCisgICAgYm9v
bCBhbHdheXNNYXRjaGVzKE5vZGUqIG5vZGUpIHsgcmV0dXJuIG1hdGNoVHlwZUZvcihub2RlKSA9
PSBBbHdheXNNYXRjaGVzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTaW1wbGVJbnNlcnRpb25Qb2lu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0
dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9Cit9OworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKK2NsYXNzIEluc2VydGlvblBv
aW50IDogcHVibGljIFNpbXBsZUluc2VydGlvblBvaW50IHsKK3B1YmxpYzoKKwogICAgIHZpcnR1
YWwgfkluc2VydGlvblBvaW50KCk7CiAKICAgICBib29sIGhhc0Rpc3RyaWJ1dGlvbigpIGNvbnN0
IHsgcmV0dXJuICFtX2Rpc3RyaWJ1dGlvbi5pc0VtcHR5KCk7IH0KICAgICB2b2lkIHNldERpc3Ry
aWJ1dGlvbihDb250ZW50RGlzdHJpYnV0aW9uJiBkaXN0cmlidXRpb24pIHsgbV9kaXN0cmlidXRp
b24uc3dhcChkaXN0cmlidXRpb24pOyB9CiAgICAgdm9pZCBjbGVhckRpc3RyaWJ1dGlvbigpIHsg
bV9kaXN0cmlidXRpb24uY2xlYXIoKTsgfQotICAgIGJvb2wgaXNTaGFkb3dCb3VuZGFyeSgpIGNv
bnN0OwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IGdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTWF0Y2hUeXBl
IG1hdGNoVHlwZUZvcihOb2RlKikgeyByZXR1cm4gQWx3YXlzTWF0Y2hlczsgfQogICAgIHZpcnR1
YWwgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSB7IHJldHVybiBlbXB0eVNl
bGVjdG9yTGlzdCgpOyB9Ci0gICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWZmZWN0U2VsZWN0b3IoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdDsK
QEAgLTc2LDYgKzg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAog
ICAgIGJvb2wgc2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpIGNvbnN0OworICAgIGJvb2wgaXNT
aGFkb3dCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIHRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5p
c1NoYWRvd1Jvb3QoKSAmJiBpc0FjdGl2ZSgpOyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
OwogCiAgICAgc2l6ZV90IGluZGV4T2YoTm9kZSogbm9kZSkgY29uc3QgeyByZXR1cm4gbV9kaXN0
cmlidXRpb24uZmluZChub2RlKTsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNv
bnN0OwpAQCAtOTAsMTIgKzEwNSwxMiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBJbnNl
cnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIE9WRVJS
SURFOworCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291
bnREZWx0YSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkgT1ZFUlJJREUgeyBy
ZXR1cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb250ZXh0KTsgfQogCiBwcml2YXRlOgogCkBAIC0xMDMsMzAgKzExOCwxNCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Q7CiB9OwogCi1pbmxpbmUgSW5z
ZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKLX0KLQotaW5saW5lIGNvbnN0IEluc2VydGlvblBv
aW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFu
b2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Ci19CitJbnNlcnRpb25Qb2ludCogdG9JbnNl
cnRpb25Qb2ludChOb2RlKik7Citjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2lu
dChjb25zdCBOb2RlKik7CiAKIGlubGluZSBib29sIGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpICYm
IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCk7CiB9CiAKLWlubGluZSBib29sIGlz
TG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7Ci19Ci0K
IGlubGluZSBOb2RlKiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUp
CiB7CiAgICAgQVNTRVJUKG5vZGUpOwpAQCAtMTYxLDYgKzE2MCw0NSBAQCBpbmxpbmUgRWxlbWVu
dFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkK
IAogSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSopOwogCisj
ZWxzZQorCitjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBTaW1wbGVJbnNlcnRpb25Qb2lu
dCB7CitwdWJsaWM6CisgICAgYm9vbCByZXNldFN0eWxlSW5oZXJpdGFuY2UoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorcHJvdGVjdGVkOgorICAgIEluc2VydGlvblBvaW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkgOiBTaW1wbGVJbnNlcnRpb25Q
b2ludCh0YWdOYW1lLCBkb2N1bWVudCkgeyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQorfTsKKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorCitp
bmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKworaW5saW5lIGNvbnN0IElu
c2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAg
QVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBib29s
IGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5v
ZGUgfHwgIW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG5vZGUp
LT5pc1NoYWRvd0JvdW5kYXJ5KCk7CisjZWxzZQorICAgIC8vIGluIG5vbi1TSEFPRFdfRE9NIHdv
cmxkLCBJbnNlcnRpb25Qb2ludCBpcyB1c2VkIG9ubHkgaW50ZXJuYWxseSBhbmQKKyAgICAvLyBz
aG91bGQgYmUgYWx3YXlzIGEgYm91bmRhcnkuCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVT
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQu
Y3BwCmluZGV4IDQ2NTIyYzQ0NTNiYzNlYjAzNjFmZDQ2MTFhZDE5NjcyMjZjZGQxYzAuLjZlMjc3
YTQwZDk0ZjA5YTUxZjM2MGQ2MGY5NWY3YzlkNjlhNWM5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKQEAgLTMxLDYgKzMx
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWxlY3RSdWxlRmVhdHVyZVNl
dC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NSwzICs4Nyw0IEBAIHZvaWQgU2VsZWN0UnVs
ZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKaW5kZXggZDBm
MmRlNjgyMWIzMjUwOTE2YzdlYzE2ZGVkNGRiNzU5ODRhMDgxNy4uYjAyMDczZDRmMmMzNzk1ZDc4
NzVlNGFkNWVkZDhjNDk3NzcxN2NmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCkBAIC0zMSw5ICszMSwxMiBAQAogI2lmbmRlZiBT
ZWxlY3RSdWxlRmVhdHVyZVNldF9oCiAjZGVmaW5lIFNlbGVjdFJ1bGVGZWF0dXJlU2V0X2gKIAor
CiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWxlY3RS
dWxlRmVhdHVyZVNldCB7CkBAIC04NSw0ICs4OCw1IEBAIGlubGluZSBib29sIFNlbGVjdFJ1bGVG
ZWF0dXJlU2V0OjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0
CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMmRiYmU0MWQ2MGZkM2RlNTFmY2VlYjIyZTFmZTlj
OTRjZWE0NTczYi4uZWRhNjc2NDA1MmFiMGMyMzc2ZjZmMmNhODY1ODVjMWM4ODY3NDFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJO
b2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCkBAIC0yODcsNiArMjg4LDExIEBA
IGJvb2wgU1ZHVXNlRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKQogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIFNWR1VzZUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNoaWxkQ29udGV4dCkgY29uc3QgT1ZF
UlJJREUKK3sKKyAgICByZXR1cm4gY2hpbGRDb250ZXh0LmlzT25VcHBlckVuY2Fwc3VsYXRpb25C
b3VuZGFyeSgpICYmIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCk7Cit9CisKICNpZmRlZiBEVU1QX0lOU1RBTkNFX1RS
RUUKIHN0YXRpYyB2b2lkIGR1bXBJbnN0YW5jZVRyZWUodW5zaWduZWQgaW50JiBkZXB0aCwgU3Ry
aW5nJiB0ZXh0LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggNmJiMjllYzY2NDk5NmUxMjBiYmIxODFiMzBjYTVl
YmMyZjMxMDJlNS4uNDRjMzFjNWU5YTA3ZGZiYmU4MTA2MGE4YWE1NWQ2MWVhYmU3NmVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC03MCw2ICs3MCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiAgICAgdmlydHVhbCBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSk7CisgICAg
dmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2
b2lkIHRvQ2xpcFBhdGgoUGF0aCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IGJlZTgyMDQzYWE4MDY2MzM2MDE5ZmRhNGI5NGRlY2ZkMzRkYTRiMWYuLjM1YmVjNjRhMzU4
MzFjZTNlODVjOWY2ODk0MmZhYTZmYmI2YjJlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTM0OCw3ICszNDgsMTIgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9y
Rm9ySWRJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGlkVmFsdWUsIEUKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKGlkVmFsdWUpOworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0
b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZv
cklkKGlkVmFsdWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9v
bCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBj
b25zdCBTdHJpbmcmIGNsYXNzTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNTgsNyArMzYz
LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVu
dCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05hCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAorICAgIFVOVVNFRF9QQVJBTShjbGFzc05hbWUpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0
dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckNsYXNzKGNsYXNzTmFtZSk7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEludGVybmFsczo6aGFz
U2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcm
IGF0dHJpYnV0ZU5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzY4LDcgKzM3OCwxMiBAQCBi
b29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBo
b3N0LCBjb25zdCBTdHJpbmcmIGF0dAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBV
TlVTRURfUEFSQU0oYXR0cmlidXRlTmFtZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAg
cmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVT
ZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBJbnRlcm5hbHM6
Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBT
dHJpbmcmIHBzZXVkb0NsYXNzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM3OCw2ICszOTMsOCBA
QCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9DbGFzc0luU2hhZG93KEVsZW1l
bnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAg
ICBVTlVTRURfUEFSQU0ocHNldWRvQ2xhc3MpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IGNvbnN0IFNlbGVjdFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gaG9zdC0+c2hhZG93KCkt
PmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSk7CiAg
ICAgaWYgKHBzZXVkb0NsYXNzID09ICJjaGVja2VkIikKICAgICAgICAgcmV0dXJuIGZlYXR1cmVT
ZXQuaGFzU2VsZWN0b3JGb3JDaGVja2VkKCk7CkBAIC0zOTUsNiArNDEyLDcgQEAgYm9vbCBJbnRl
cm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBj
b25zdCBTdHJpbmcmIHAKICAgICAgICAgcmV0dXJuIGZlYXR1cmVTZXQuaGFzU2VsZWN0b3JGb3JW
aXNpdGVkKCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtNDQyLDggKzQ2MCwxMSBAQCBib29sIEludGVybmFsczo6cGF1c2VU
cmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRv
dQogCiBib29sIEludGVybmFsczo6aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSog
cm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisgICAgVU5VU0VEX1BBUkFNKHJvb3Qp
OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93
Um9vdCgpKQogICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjpoYXNTaGFk
b3dFbGVtZW50KHRvU2hhZG93Um9vdChyb290KSk7CisjZW5kaWYKIAogICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOwogICAgIHJldHVybiAwOwpAQCAtNDUxLDggKzQ3MiwxMSBAQCBib29sIElu
dGVybmFsczo6aGFzU2hhZG93SW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbgogCiBib29sIEludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQoY29u
c3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisgICAgVU5VU0VEX1BB
UkFNKHJvb3QpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChyb290ICYmIHJvb3Qt
PmlzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
OjpoYXNDb250ZW50RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBl
YyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ2NSw3ICs0ODksMTEg
QEAgc2l6ZV90IEludGVybmFsczo6Y291bnRFbGVtZW50U2hhZG93KGNvbnN0IE5vZGUqIHJvb3Qs
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9u
Ojpjb3VudEVsZW1lbnRTaGFkb3codG9TaGFkb3dSb290KHJvb3QpKTsKKyNlbHNlCisgICAgcmV0
dXJuIDA7CisjZW5kaWYgCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ4MCw2ICs1MDgsNyBAQCBib29sIEludGVybmFsczo6
YXR0YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIE5vZGUqIEludGVybmFs
czo6bmV4dFNpYmxpbmdCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNDg3LDEwICs1MTYsMTYg
QEAgTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7
CiAgICAgd2Fsa2VyLm5leHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAg
cmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxr
ZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTQ5OCwxMCArNTMzLDE2IEBAIE5vZGUqIEludGVybmFsczo6
Zmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLmZpcnN0Q2hp
bGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
bm9kZSk7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQog
CiBOb2RlKiBJbnRlcm5hbHM6Omxhc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewog
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01
MDksMTAgKzU1MCwxNiBAQCBOb2RlKiBJbnRlcm5hbHM6Omxhc3RDaGlsZEJ5V2Fsa2VyKE5vZGUq
IG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3
YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIu
Z2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFSQU0o
ZWMpOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6bmV4dE5v
ZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTIwLDEwICs1NjcsMTYgQEAgTm9kZSogSW50
ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLm5l
eHQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
bm9kZSk7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQog
CiBOb2RlKiBJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC01MzEsNiArNTg0LDExIEBAIE5vZGUqIEludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxrZXIo
Tm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIucHJldmlvdXMoKTsKICAgICByZXR1cm4gd2Fs
a2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm9kZSk7CisgICAgVU5VU0VEX1BB
UkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBTdHJpbmcgSW50ZXJuYWxzOjpl
bGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhw
b3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9y
dHMuZGVmLmluCmluZGV4IGRhMDYxNTYwODcyNjU5ZjYxYzExYzQ5ZWVlNmEyYTQxMWFiM2VmNmIu
LjhhMzI2ZDI1MmQzNGFlODc3MzIxMTJjOTdhZTg5ZGM0NTliMzA0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAt
MjE5LDE4ICsyMTksMTIgQEAgRVhQT1JUUwogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQElu
c3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP2Rpc2Nvbm5lY3RG
cm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogI2VuZGlmCi0gICAg
ICAgID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKICAg
ICAgICAgP2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJD
b3JlQEAwX05BCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJD
b3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlB
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8k
UGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFz
dENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFC
RV9OWFoKICAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2Vi
Q29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2Vy
QFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2Vy
QDJAQFoKLSAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJD
b3JlQEBRQUVYWFoKLSAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FW
MTJAX0pAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgogICAgICAg
ICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASEBaCkBAIC0zMTgsNyArMzEyLDYgQEAgRVhQ
T1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlc0BXZWJDb3JlQEBZQT9BVVZp
ZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3VtZW50c0AxQEhISE1WSW50U2l6ZUAxQEBa
CiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9BVVZpZXdwb3J0
QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1lbnRAV2ViQ29y
ZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdlYkNvcmVAQFFC
RV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xs
ZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hhY2tzQFRleHRS
dW5AV2ViQ29yZUBAU0FYX05AWgpAQCAtNjA1LDE4ICs1OTgsMTIgQEAgRVhQT1JUUwogICAgICAg
ICA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9O
QFoKICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNv
cmVAQFFBRVhYWgogI2VuZGlmCi0gICAgICAgID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNv
cmVAQFlBX05QQlZOb2RlQDFAQFoKICAgICAgICAgP2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVu
dGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05BCiAgICAgICAgID9pc1ByZWxvYWRlZEBD
YWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAg
ICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBB
VkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3Jl
QEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAg
ICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8k
VmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1h
cmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKLSAgICAgICAgP25leHRTaWJsaW5nQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2ZpcnN0Q2hpbGRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bGFzdENo
aWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP25l
eHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/cHJl
dmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/
bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BX
VEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASEBa
CkBAIC03MDQsNyArNjkxLDYgQEAgRVhQT1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlc0BXZWJDb3JlQEBZQT9BVVZpZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3Vt
ZW50c0AxQEhISE1WSW50U2l6ZUAxQEBaCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdl
QFdlYkNvcmVAQFFCRT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJv
eFZpc2libGVARG9jdW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQElu
c2VydGlvblBvaW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25z
QEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmlt
YXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRB
bGxvd3NSb3VuZGluZ0hhY2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpAQCAtOTkxLDE4ICs5
NzcsMTIgQEAgRVhQT1JUUwogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNv
bnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJ
bnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogI2VuZGlmCi0gICAgICAgID9pc0Fj
dGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKICAgICAgICAgP2lz
Q1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05B
CiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVf
TkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1
ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0
ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdh
c1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAg
ICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFF
P0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVA
QCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKLSAg
ICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVY
WFoKLSAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgotICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJD
b3JlQEBRQUVYWFoKLSAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNv
cmVAQFFBRVhYWgotICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdl
YkNvcmVAQFFBRVhYWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgog
ICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVy
QFN0cmluZ0BXVEZAQFNBP0FWMTJASEBaCkBAIC0xMDkwLDcgKzEwNzAsNiBAQCBFWFBPUlRTCiAg
ICAgICAgID9jb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVAQFlBP0FVVmlld3BvcnRB
dHRyaWJ1dGVzQDFAVVZpZXdwb3J0QXJndW1lbnRzQDFASEhITVZJbnRTaXplQDFAQFoKICAgICAg
ICAgP3ZpZXdwb3J0QXJndW1lbnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FVVmlld3BvcnRBcmd1bWVu
dHNAMkBYWgogICAgICAgICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVudEBXZWJDb3JlQEBRQUVf
TkhAWgotICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgog
ICAgICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBR
QUVYWFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJD
b3JlQEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJD
b3JlQEBTQVhfTkBaCkBAIC0xMzQzLDEwICsxMzIyLDYgQEAgRVhQT1JUUwogICAgICAgICA/ZXF1
YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgogICAgICAgICA/ZXF1YWxJZ25vcmluZ0Nh
c2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9leHRlcm5hbFJlcHJl
c2VudGF0aW9uQFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAUEFWRWxlbWVudEAxQElAWgotICAg
ICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEBDb250ZW50RGlzdHJpYnV0b3JAV2ViQ29yZUBA
UUFFQUJWU2VsZWN0UnVsZUZlYXR1cmVTZXRAMkBQQVZFbGVtZW50U2hhZG93QDJAQFoKLSAgICAg
ICAgP2hhc1NoYWRvd0VsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNB
X05QQlZTaGFkb3dSb290QDJAQFoKLSAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCi0gICAgICAg
ID9jb3VudEVsZW1lbnRTaGFkb3dAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNB
SVBCVlNoYWRvd1Jvb3RAMkBAWgogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBB
VjEyQElAWgogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQEBaCiAgICAg
ICAgID9hYnNvbHV0ZUNhcmV0Qm91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFBRT9BVklu
dFJlY3RAMkBYWgpAQCAtMTM4MSwxOCArMTM1NiwyNCBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRQ
cm9maWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgogICAg
ICAgICA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFF
WFhaCiAjZW5kaWYKLSAgICAgICAgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFf
TlBCVk5vZGVAMUBAWgogICAgICAgICA/aXNDU1NFeGNsdXNpb25zRW5hYmxlZEBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJl
c291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pz
QXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01H
bG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZA
QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNv
bnNBc1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/bWFy
a2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JA
UEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlw
ZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgICAgICA/
bmV4dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFB
RVhYWgogICAgICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCiAgICAgICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBA
UUFFWFhaCisgICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlha
CisgICAgICAgID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0QENvbnRlbnREaXN0cmlidXRvckBXZWJD
b3JlQEBRQUVBQlZTZWxlY3RSdWxlRmVhdHVyZVNldEAyQFBBVkVsZW1lbnRTaGFkb3dAMkBAWgor
ICAgICAgICA/aGFzU2hhZG93RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29y
ZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBAWgorICAgICAgICA/aGFzQ29udGVudEVsZW1lbnRAU2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKKyAg
ICAgICAgP2NvdW50RWxlbWVudFNoYWRvd0BTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29y
ZUBAU0FJUEJWU2hhZG93Um9vdEAyQEBaCisjZW5kaWYKICAgICAgICAgP251bWJlckBTdHJpbmdA
V1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9L
QFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtMTQ4MCw3ICsx
NDYxLDYgQEAgRVhQT1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlc0BXZWJD
b3JlQEBZQT9BVVZpZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3VtZW50c0AxQEhISE1W
SW50U2l6ZUAxQEBaCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFC
RT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9j
dW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50
QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNv
bnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1h
dGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGlu
Z0hhY2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYwYmE2M2MwZjRiOWJkYjA3
NWM1MDhkNzFhZmEwZDAxMTNjODEyMWMuLmMwNTJjZTMzOTQ0ZmI2MjRhMTJkOWUyNWRjYjRiMGI1
M2M0OWNlZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMS0yMiAgSGFqaW1lIE1vcnJp
dGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01dIFB1dCBub2Rl
IHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisgICAgICAgIFJl
YmFzZWxpbmVzIHRpbnkgZGlmZmVyZW5jZSBoYXBwZW5lZCBpbiBub24tU0hBRE9XX0RPTQorICAg
ICAgICBjb25maWd1cmF0aW9uLiBUaGlzIGlzIGR1ZSB0byBkaWZmZXJlbmNlIG9mIGltcGxlbWVu
dGF0aW9uIGRldGFpbAorICAgICAgICBidXQgaGFzIG5vIHVzZXIgb2JzZXJ2YWJsZSBkaWZmZXJl
bmNlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLW5lc3RlZC0yLWV4cGVjdGVkLnR4dDoKKwog
MjAxMy0wMS0yNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBicmVha3BvaW50cyBhcmUgbm90IHJlc3RvcmVkIHVwb24gcmVs
b2FkIGZvciBzY3JpcHRzIHdpdGggc2NyaXB0IG1hcHBpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVkLTItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLW5lc3RlZC0yLWV4
cGVjdGVkLnR4dAppbmRleCBjMWZjNDdmZWFiNTdkNzU3ZDVlNTk5NTk5MDFmYTBiMTFhMjNlNGJl
Li4yYjkyYjBiOTk3MDc0YzlmNDc5MDMwMWY0NDc4NWMwZWViMDk1ZDhlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVkLTItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0YWlscy1u
ZXN0ZWQtMi1leHBlY3RlZC50eHQKQEAgLTksNyArOSw2IEBAIGxheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjQsOCkgc2l6ZSA2M3gx
OAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI0LDgpIHdpZHRoIDU6ICIgIgogICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDI4LDgpIHdpZHRoIDU5OiAic3VtbWFyeSIKLSAgICAgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDgsNDIpIHNpemUgNzY4eDAKICAgICAgICAgUmVuZGVyQmxv
Y2sge0RFVEFJTFN9IGF0ICg4LDQyKSBzaXplIDc2OHg2OCBbYm9yZGVyOiAoOHB4IHNvbGlkICM5
OTU1NTUpXQogICAgICAgICAgIFJlbmRlckJsb2NrIHtTVU1NQVJZfSBhdCAoOCw4KSBzaXplIDc1
MngzNCBbYm9yZGVyOiAoOHB4IHNvbGlkICNDQzk5OTkpXQogICAgICAgICAgICAgUmVuZGVyRGV0
YWlsc01hcmtlciB7RElWfSBhdCAoOCwxMikgc2l6ZSAxMXgxMTogZG93bgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184454</attachid>
            <date>2013-01-24 03:02:01 -0800</date>
            <delta_ts>2013-01-24 17:23:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130124195853.patch</filename>
            <type>text/plain</type>
            <size>76430</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMxMWRkZDExODYwMzZk
YmI0MzIwZTIyODMxOWYxNGEwM2U3ODRmOC4uYTdiMDdkMDFjMWMzYTVmZGM1MmVhNTk5YTY1ZGE4
N2U2YzE2NTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxMy0wMS0yNCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGhpZGVzIG9uZSBvZiB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJ0IG9mIFNoYWRvdworICAgICAg
ICBET00gc3RhbmRhcmQsIHRoYXQgaXMgbm9kZSBkaXN0cmlidXRpb24uIFR3byBtYWpvciBjbGFz
c2VzCisgICAgICAgIENvbnRlbnREaXN0cmlidXRvciBhbmQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIGFyZSBtb3ZlZCBiZWhpbmQKKyAgICAgICAgRU5BQkxFX1NIQURPV19ET00gZmxhZy4KKwor
ICAgICAgICBTaW5jZSA8ZGV0YWlscz4gYW5kIDxzdW1tYXJ5PiB1c2VzIHRoaXMgbWVjaGFuaXNt
IGludGVybmFsbHksCisgICAgICAgIHRoaXMgY2hhbmdlIG5lZWRzIHRvIGNvbXBlbnNhdGUgdGhl
bS4gU2hhZG93VHJlZVdhbGtlciBpcyBpbnRyb2R1Y2VkCisgICAgICAgIGZvciB0aGF0IHB1cnBv
c2UuIFNoYWRvd1RyZWVXYWxrZXIgaXMgYSBzaW1wbGlmaWVkIGltcGxlbWVudGF0aW9uIG9mCisg
ICAgICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciwgd2hpY2ggaGFzIGEgc3Vic2V0IG9mIENT
VFcgQVBJLgorICAgICAgICBUaGUgYWxnb3JpdGhtIGltcGxlbWVudGVkIGJ5IFNoYWRvd1RyZWVX
YWxrZXIgc2hvdWxkIGJlIHNpbXBsZXIKKyAgICAgICAgYmVjYXVzZSBpdCBuZWVkcyBubyBleHRy
YSBwZXJzaXN0ZW50IHN0YXRlcyB0byBET00gb2JqZWN0cy4KKworICAgICAgICBJbnNlcnRpb25Q
b2ludCBpcyBhbm90aGVyIHBpZWNlIHdoaWNoIGlzIG9ubHkgdXNlZCBieSBTSEFET1dfRE9NIGFu
ZAorICAgICAgICBERVRBSUxTX0VMRU1FTlQgYW5kIGl0IHNob3VsZCBiZSBtb3ZlZCBiZWhpbmQg
dGhlIGZsYWcgdG9vLiBUaGF0IHdpbGwKKyAgICAgICAgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIGNo
YWduZSAoQnVnIDEwNzYyMSkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRj
aFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkSG9zdFJ1bGUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFN0eWxlU2NvcGVS
ZXNvbHZlcik6CisgICAgICAgICogZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KToKKyAgICAgICAgKiBkb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcDoKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAq
IGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6
OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6cmVtb3Zl
QWxsU2hhZG93Um9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YXR0YWNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFNoYWRvdzo6ZGlzdHJpYnV0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjplbnN1cmVEaXN0cmlidXRpb24pOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmNwcDoKKyAgICAgICAgKFNoYWRvd1RyZWVXYWxrZXIpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OlNoYWRvd1Ry
ZWVXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hh
ZG93VHJlZVdhbGtlcjo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpuZXh0U2libGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpw
cmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6U2hhZG93VHJlZVdhbGtlcjo6bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OmZpcnN0Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6bmV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVl
V2Fsa2VyOjpwcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjppc1NoYWRvd0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OmZpbmRJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpnZXREaXN0cmlidXRlZE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtl
cjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlv
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVl
V2Fsa2VyOjpuZXh0SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzSW5jbHVk
aW5nQ29udGFpbmluZ1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnBhcmVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6bmV4dFNpYmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWw6OnByZXZpb3VzU2libGluZ1Nsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ1RyYXZlcnNhbDo6bmV4dEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bGFzdENoaWxkSW5TY29wZSk6CisgICAgICAgICogZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50KToK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzU2hhZG93
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dS
b290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHA6CisgICAgICAgIChEZXRhaWxzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpmYWxsYmFja1N1bW1hcnkpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRNYWlu
U3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50Lmg6
CisgICAgICAgIChIVE1MRGV0YWlsc0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVU
eXBlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9D
b250ZW50U2VsZWN0b3JRdWVyeS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5oOgorICAgICAgICAoSFRNTENvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVJbnNl
cnRpb25Qb2ludDo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9u
UG9pbnQ6Om1hdGNoVHlwZUZvcik6CisgICAgICAgIChTaW1wbGVJbnNlcnRpb25Qb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVJbnNlcnRpb25Qb2ludDo6YWx3YXlzTWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aXNTaGFkb3dCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6cmVzZXRTdHlsZUluaGVyaXRhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjp0b0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTG93ZXJF
bmNhcHN1bGF0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVG
ZWF0dXJlU2V0LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNl
dC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VzZUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAtIFdl
IHNob3VsZCBoYXZlIGhhZCB0aGlzIHNpbmNlIDx1c2U+IGRvZXNuJ3QgcmVuZGVyIGl0cyAobm9u
LXNoYWRvdykgY2hpbGRyZW4uCisgICAgICAgICAgSXQgd29ya2VkIGJlZm9yZSBqdXN0IGJ5IGFj
Y2lkZW50LiBEaXNhYmxpbmcgbm9kZSBkaXN0cmlidXRpb24gcmV2ZWxzIHRoZSBwcm9ibGVtLgor
ICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgIChTVkdVc2VFbGVtZW50KToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Omhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6Y291bnRFbGVtZW50U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omxhc3RDaGlsZEJ5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bmV4dE5v
ZGVCeVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5
V2Fsa2VyKToKKwogMjAxMy0wMS0yNCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBicmVha3BvaW50cyBhcmUgbm90IHJlc3Rv
cmVkIHVwb24gcmVsb2FkIGZvciBzY3JpcHRzIHdpdGggc2NyaXB0IG1hcHBpbmcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggNzAyOWM4NTA4NmQ1ZmJjNWUyMWQ3NzM5ZmRhMDczMDliZTBmNjc0MC4uYmNk
N2IzZDIwOWEyNTk4ZDljZDE0N2QxMWM1OGY5MDA4ZDIzNmE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDEzLTAxLTI0ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gUHV0IG5vZGUgcmVwcm9qZWN0aW9uIGNv
ZGUgYmVoaW5kIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmlu
OiBNb3ZlZCBzb21lIHN5bWJvbHMgYmVoaW5kIEVOQUJMRShTSEFET1dfRE9NKSBmbGFnLgorCiAy
MDEzLTAxLTIzICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgc2V0IHN2bjplb2wtc3R5bGUgdG8gQ1JMRiBvbiBXaW5kb3dzIC5zbG4gZmlsZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDg0Y2I0ZjlhOTRiZDY3MGZhN2NjMDRhNGFiZDI0N2Ix
ZDM1ZmEzZTUuLjNmZjQxYzAyMWNiY2I0YzhiNjg5MTFjZGMxYTYzNzAwOGFjYjBkMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC01MTgsNyArNTE4LDYgQEAgX19aTjdXZWJDb3JlMTd1c2VyVmlz
aWJsZVN0cmluZ0VQNU5TVVJMCiBfX1pON1dlYkNvcmUxOERPTVdpbmRvd0V4dGVuc2lvbkMxRVBO
U181RnJhbWVFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdXZWJDb3JlMTBQYXN0ZWJvYXJk
MTdnZW5lcmFsUGFzdGVib2FyZEV2CiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxNHdyaXRlUGxh
aW5UZXh0RVJLTjNXVEY2U3RyaW5nRU5TMF8xOFNtYXJ0UmVwbGFjZU9wdGlvbkUKLV9fWk43V2Vi
Q29yZTE4Q29udGVudERpc3RyaWJ1dG9yMjJlbnN1cmVTZWxlY3RGZWF0dXJlU2V0RVBOU18xM0Vs
ZW1lbnRTaGFkb3dFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFt
ZUV2CiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEzYnVmZmVyRm9yVHlwZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTNzdHJpbmdGb3JU
eXBlRVJLTjNXVEY2U3RyaW5nRQpAQCAtNjU3LDExICs2NTYsNiBAQCBfX1pON1dlYkNvcmUyM2Vu
Y29kZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIz
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSTjNX
VEY3SGFzaFNldElOUzNfNlN0cmluZ0VOUzNfMTBTdHJpbmdIYXNoRU5TM18xMEhhc2hUcmFpdHNJ
UzVfRUVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0eUxpc3RXcml0ZXIxN3dyaXRlUHJv
cGVydHlMaXN0RXYKIF9fWk43V2ViQ29yZTI0Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlMTFzZXRS
ZXNvdXJjZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUUKLV9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyMTBmaXJzdENoaWxkRXYKLV9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyMTFuZXh0U2libGluZ0V2Ci1fX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlcjRuZXh0RXYKLV9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOHBy
ZXZpb3VzRXYKLV9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOWxhc3RDaGls
ZEV2CiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQ
TlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCiBfX1pON1dlYkNvcmUy
NERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEzcmVtb3ZlTWFya2Vyc0VOU18xNERvY3VtZW50TWFy
a2VyMTFNYXJrZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
MThhZGRUZXh0TWF0Y2hNYXJrZXJFUEtOU181UmFuZ2VFYgpAQCAtNjcxLDkgKzY2NSw2IEBAIF9f
Wk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyMTRmcmFtZURlc3Ryb3llZEV2CiBf
X1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjE0d2lsbERldGFjaFBhZ2VFdgog
X19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfNUZyYW1lRQogX19a
TjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJEMkV2Ci1fX1pON1dlYkNvcmUyNFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hhZG93RWxlbWVudEVQS05TXzEwU2hhZG93Um9v
dEUKLV9fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMThjb3VudEVsZW1lbnRT
aGFkb3dFUEtOU18xMFNoYWRvd1Jvb3RFCi1fX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjE3aGFzQ29udGVudEVsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCiBfX1pON1dlYkNv
cmUyNGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVQTlNfOERvY3VtZW50RVJLTjNXVEY2U3RyaW5n
RVM1X05TXzI3RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uRQogX19aTjdXZWJDb3JlMjRkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTjNXVEY2
U3RyaW5nRQpAQCAtMTI1MCw4ICsxMjQxLDYgQEAgX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b24xOGlzRm9jdXNlZEFuZEFjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMx
Z2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFJl
Y3RFTG0wRUVFCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxl
bWVudE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJv
dW5kc0ViCi1fX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDE5Z2V0RGlzdHJpYnV0ZWROb2Rl
c0V2Ci1fX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CiBfX1pOSzdXZWJD
b3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4dEV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJj
ZUJ1ZmZlcjRkYXRhRXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNHNpemVFdgpAQCAt
MjUzOSw2ICsyNTI4LDE4IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNXNlcnZpY2VTY3JpcHRl
ZEFuaW1hdGlvbnNFZAogX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1No
YWRvd0RPTUVuYWJsZWRFCiBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMzN2lz
QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWRFCiBfX1pON1dlYkNvcmU0dG9KU0VQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RF
CitfX1pON1dlYkNvcmUxOENvbnRlbnREaXN0cmlidXRvcjIyZW5zdXJlU2VsZWN0RmVhdHVyZVNl
dEVQTlNfMTNFbGVtZW50U2hhZG93RQorX19aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnREaXN0cmli
dXRpb24xNmhhc1NoYWRvd0VsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCitfX1pOSzdXZWJDb3Jl
MTRJbnNlcnRpb25Qb2ludDE5Z2V0RGlzdHJpYnV0ZWROb2Rlc0V2CitfX1pOSzdXZWJDb3JlMTRJ
bnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CitfX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjE4Y291bnRFbGVtZW50U2hhZG93RVBLTlNfMTBTaGFkb3dSb290RQorX19aTjdXZWJD
b3JlMjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xN2hhc0NvbnRlbnRFbGVtZW50RVBLTlNfMTBT
aGFkb3dSb290RQorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0
Q2hpbGRFdgorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJs
aW5nRXYKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyNG5leHRFdgorX19a
TjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI4cHJldmlvdXNFdgorX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI5bGFzdENoaWxkRXYKK19fWk43V2ViQ29yZTE4
SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoRElBTE9HX0VMRU1FTlQpCkBAIC0yNzM2LDEwICsyNzM3LDYgQEAgX3drQ2FwdGlvbkFw
cGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlCiBfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFNldHRpbmdz
Q2hhbmdlZE5vdGlmaWNhdGlvbgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLV9f
Wk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RQotI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiBfX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMxOWlzQ1NTUmVnaW9uc0VuYWJsZWRFCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCBiMjYzZDgwNmI4NTk1ODZjN2MxNGNmZjMxZjk4MGE0MzI1
MjM2NWJhLi4yMjEzMThhNzBkOTM5Y2M2MDQxYjJiZmFjZmE5YzE2YzE3ZDM5MTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC03NjIsNyArNzYyLDEwIEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBi
b29sIGluY2x1ZGVFbXB0CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBtYXRjaEhvc3RSdWxlcyhyZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyNlbmRp
ZgorCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogICAgIFVOVVNFRF9QQVJBTShp
bmNsdWRlRW1wdHlSdWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
Y29wZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
Y3BwCmluZGV4IDhhY2FiZTUwYWU3MmQxYmUxN2Q0YTM1ZjdiMzZjZjM2NGRhZjIyYjcuLmE2MzU3
MGE0M2I1NTNjMTFlYzVhMjczODhkYTkyYTE4MDgxN2Y0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCkBAIC0xOTIsNyArMTkyLDYgQEAgdm9pZCBTdHlsZVNj
b3BlUmVzb2x2ZXI6OmFkZEhvc3RSdWxlKFN0eWxlUnVsZUhvc3QqIGhvc3RSdWxlLCBib29sIGhh
c0RvY3VtZW50U2UKICAgICAgICAgICAgIHJ1bGUtPmFkZFN0eWxlUnVsZShzdGF0aWNfY2FzdDxT
dHlsZVJ1bGUqPihob3N0U3R5bGluZ1J1bGUpLCBhZGRSdWxlRmxhZ3MpOwogICAgIH0KIH0KLSNl
bmRpZgogCiBib29sIFN0eWxlU2NvcGVSZXNvbHZlcjo6c3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0
Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewpAQCAtMjM3LDYgKzIzNiw3
IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50
KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiB9
CisjZW5kaWYKIAogdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTY29wZVJlc29sdmVyLmgKaW5kZXggM2JlM2ZmNGY3MGM3Mzc1YmQwMTQyNmEwMGJh
NDI0MTI4NDYyY2MwZS4uYzVmNzc2ZjNhZTE0MTE3NDI0ODg5N2Y2OTk4ODEzZTRjZjkyNDgxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaApAQCAtNzUsOSArNzUsMTEg
QEAgcHVibGljOgogICAgIGJvb2wgbWF0Y2hlc1N0eWxlQm91bmRzKGNvbnN0IFN0YWNrRnJhbWUm
IGZyYW1lKSBjb25zdCB7IHJldHVybiBmcmFtZS5tX2F1dGhvclN0eWxlQm91bmRzSW5kZXggPT0g
bV9zdGFja1BhcmVudEJvdW5kc0luZGV4OyB9CiAgICAgdm9pZCBjb2xsZWN0RmVhdHVyZXNUbyhS
dWxlRmVhdHVyZVNldCYpOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCBhZGRI
b3N0UnVsZShTdHlsZVJ1bGVIb3N0KiwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBj
b25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7CiAgICAgYm9vbCBzdHlsZVNoYXJpbmdDYW5kaWRh
dGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqKTsKICAgICB2b2lkIG1hdGNoSG9zdFJ1
bGVzKGNvbnN0IEVsZW1lbnQqLCBWZWN0b3I8UnVsZVNldCo+JiBtYXRjaGVkUnVsZXMpOworI2Vu
ZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwCmluZGV4IDk3
MGNkYzIwNTk3YzUwYjIxOGRmNDMxMDM4ZTZjNThiOWVhYmFhZTYuLjViN2NlZTgyY2Q1MjUxOTNh
MTRhNzA1NTU1ZTk0MGY1YmNkOGUzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9B
bmNlc3RvckNoYWluV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JD
aGFpbldhbGtlci5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2Vy
OjpwYXJlbnQoKQogewogICAgIEFTU0VSVChtX25vZGUpOwogICAgIEFTU0VSVChtX2Rpc3RyaWJ1
dGVkTm9kZSk7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRv
dyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobV9ub2RlKSkgewogICAgICAgICBpZiAoSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5kaXN0cmlidXRvcigpLmZpbmRJbnNl
cnRpb25Qb2ludEZvcihtX2Rpc3RyaWJ1dGVkTm9kZSkpIHsKICAgICAgICAgICAgIG1fbm9kZSA9
IGluc2VydGlvblBvaW50OwpAQCAtNTIsMjAgKzU0LDMwIEBAIHZvaWQgQW5jZXN0b3JDaGFpbldh
bGtlcjo6cGFyZW50KCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKyNl
bmRpZgorCiAgICAgaWYgKCFtX25vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIG1fbm9k
ZSA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgICAg
ICBpZiAoIShtX25vZGUgJiYgbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiBTY29wZUNvbnRlbnRE
aXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KG1fbm9kZSkpKSkKICAgICAgICAg
ICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNl
cnRpb25Qb2ludCA9IGZhbHNlOworI2Vsc2UKKyAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBt
X25vZGU7CisgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CisjZW5k
aWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRv
d1Jvb3QgPSB0b1NoYWRvd1Jvb3QobV9ub2RlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3QpKSB7CiAgICAgICAgIG1fbm9kZSA9IGluc2Vy
dGlvblBvaW50OwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IHRydWU7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKKwogICAgIG1fbm9kZSA9IHNoYWRvd1Jvb3Qt
Pmhvc3QoKTsKICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKICAgICBtX2lzQ3Jvc3Np
bmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBhYjU4ZDYxNTJiYzYwZDkwNTE3YWU0YWI4Y2Vl
YTA3YjQ4ZmNiMThjLi5kMjMwZjg2NDg3ODI0NmY2OTAzOGM0ZGE3YmEzMTZjOWZmZDQ0ZTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcApA
QCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI4LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCIKIAorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKQEAgLTMxMywzICszMTQs
NSBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXMoKQogfQogCiB9IC8v
IG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKaW5kZXggODM0OWUyMWFhOTgzZjBh
ODRhMTEzYzE2NzgwZTQ5ZWM2NzY2NGYzZS4uMmYwMmE3YzNiYzQ1NTA1ZjViNDI4Mjg1M2VhNmQy
ODNmMzhmZjE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2RlOwpAQCAtMTQzLDQgKzE0NSw1IEBA
IGlubGluZSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cihjb25zdCBOb2RlKiBub2RlLCBQb2xpCiAKIH0gLy8gbmFtZXNwYWNlCiAKKyNlbmRpZiAvLyBF
TkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDBiODVm
ZmUzMzBmNzY4MjNkNWFjM2I1MDNiYWY2NmZiZWM0NzFjZWUuLjJlNjkwZWIzMmFiMjgxNWU3ODg4
OTBiMmUyODNiYTk2Yzg4ZjQ0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTgwOCwxMCAr
ODA4LDEyIEBAIHN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHlsZUludmFsaWRhdGlvbkZvcklkQ2hh
bmdlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvCiAKIHZvaWQgRWxlbWVudDo6YXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hh
ZG93KiBwYXJlbnRFbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24o
dGhpcykpIHsKICAgICAgICAgaWYgKHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0
cmlidXRlQ2hhbmdlZChwYXJlbnRFbGVtZW50U2hhZG93LCBuYW1lLCBuZXdWYWx1ZSkpCiAgICAg
ICAgICAgICBwYXJlbnRFbGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CiAg
ICAgfQorI2VuZGlmCiAKICAgICBwYXJzZUF0dHJpYnV0ZShuYW1lLCBuZXdWYWx1ZSk7CiAKQEAg
LTk0OCw2ICs5NTAsNyBAQCB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogCiBib29sIEVsZW1lbnQ6OnNob3VsZElu
dmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBl
bGVtZW50U2hhZG93LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5ld1ZhbHVlKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIEFTU0VSVChlbGVt
ZW50U2hhZG93KTsKICAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9
IGVsZW1lbnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChlbGVt
ZW50U2hhZG93KTsKIApAQCAtOTc5LDYgKzk4MiwxMiBAQCBib29sIEVsZW1lbnQ6OnNob3VsZElu
dmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBl
bAogICAgIH0KIAogICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQXR0cmlidXRl
KG5hbWUubG9jYWxOYW1lKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZWxlbWVudFNoYWRv
dyk7CisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIFVOVVNFRF9QQVJBTShuZXdWYWx1ZSk7
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpcyB0aGUg
Z2l2ZW4gYXR0cmlidXRlIGlzIGFuIGV2ZW50IGhhbmRsZXIuCkBAIC0xNDU1LDkgKzE0NjQsMTIg
QEAgRWxlbWVudFNoYWRvdyogRWxlbWVudDo6ZW5zdXJlU2hhZG93KCkKIAogdm9pZCBFbGVtZW50
OjpkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNrKQogeworICAgIFVO
VVNFRF9QQVJBTShtYXNrKTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBzaGFk
b3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKSkKICAgICAgICAgZWxlbWVudFNoYWRvdy0+
ZGlkQWZmZWN0U2VsZWN0b3IobWFzayk7CisjZW5kaWYKIH0KIAogUGFzc1JlZlB0cjxTaGFkb3dS
b290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4IDMyZGQ0ZjA0ZDU3YWVhYzQwMzJlZWFmMmZk
MWVmY2NmNTI2OGFlNGQuLmM0Y2U2MjQ3NzUwZmFmMzkyMzBhNmI3ZWQ5NWQ1YWNkOTI2ZjVkOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKQEAgLTgyLDcgKzgyLDkgQEAgdm9p
ZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4gc2gKICAgICBzaGFkb3dSb290LT5zZXRIb3N0KHNoYWRvd0hvc3Qp
OwogICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudFRyZWVTY29wZShzaGFkb3dIb3N0LT50cmVlU2Nv
cGUoKSk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkpOworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIG1fZGlzdHJpYnV0b3IuZGlkU2hhZG93Qm91bmRhcnlDaGFu
Z2Uoc2hhZG93SG9zdCk7CisjZW5kaWYKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihz
aGFkb3dIb3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CiAKICAgICAvLyBFeGlzdGVuY2Ug
b2Ygc2hhZG93IHJvb3RzIHJlcXVpcmVzIHRoZSBob3N0IGFuZCBpdHMgY2hpbGRyZW4gdG8gZG8g
dHJhdmVyc2FsIHVzaW5nIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci4KQEAgLTExNywxMyArMTE5
LDE2IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogICAgICAg
ICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0
KCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIG1fZGlzdHJpYnV0b3Iu
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKKyNlbmRpZgogfQogCiB2b2lkIEVs
ZW1lbnRTaGFkb3c6OmF0dGFjaCgpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29u
dGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24oeW91bmdlc3RTaGFkb3dSb290KCkp
OwotCisjZW5kaWYKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jv
b3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGlm
ICghcm9vdC0+YXR0YWNoZWQoKSkKICAgICAgICAgICAgIHJvb3QtPmF0dGFjaCgpOwpAQCAtMTcz
LDcgKzE3OCwxMCBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgICAgIGluZm8uYWRkTWVt
YmVyKHNoYWRvd1Jvb3QpOwogICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93Um9vdC0+bmV4dCgp
OwogICAgIH0KKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGluZm8uYWRkTWVtYmVyKG1f
ZGlzdHJpYnV0b3IpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuaAppbmRleCA4OTMzNjNiYmE4N2I0ODhlN2FmZDEyZDAyODVjZDRhNTQ0NDFl
YTczLi4wMDUyZWNkNmFmZTlhYmQ2OWE4ZDQ0ZDI0ZmE3ZDlmYWQ5MzM0MmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmgKQEAgLTYzLDE4ICs2MywyNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBuZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgdm9pZCByZWNhbGNTdHlsZShOb2RlOjpTdHlsZUNo
YW5nZSk7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkIGludmFsaWRhdGVEaXN0
cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihob3N0KCkp
OyB9CiAgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayBtYXNr
KSB7IG1fZGlzdHJpYnV0b3IuZGlkQWZmZWN0U2VsZWN0b3IoaG9zdCgpLCBtYXNrKTsgfQogICAg
IHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9yKCkgeyBtX2Rpc3RyaWJ1dG9yLndpbGxBZmZlY3RTZWxl
Y3Rvcihob3N0KCkpOyB9CiAKLSAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCk7
Ci0gICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0OworICAg
IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSB7IHJldHVybiBtX2Rpc3RyaWJ1dG9y
OyB9CisgICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KKyNlbHNlCisgICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJp
YnV0aW9uKCkgeyB9CisgICAgdm9pZCBlbnN1cmVEaXN0cmlidXRpb24oKSB7IH0KKyNlbmRpZgog
CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci1w
cml2YXRlOgogCitwcml2YXRlOgogICAgIERvdWJseUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9z
aGFkb3dSb290czsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbnRlbnREaXN0cmli
dXRvciBtX2Rpc3RyaWJ1dG9yOworI2VuZGlmCiB9OwogCiBpbmxpbmUgU2hhZG93Um9vdCogRWxl
bWVudFNoYWRvdzo6eW91bmdlc3RTaGFkb3dSb290KCkgY29uc3QKQEAgLTg3LDE2ICs5NSw2IEBA
IGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93OjpvbGRlc3RTaGFkb3dSb290KCkgY29u
c3QKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7CiB9CiAKLWlubGluZSBDb250ZW50
RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkKLXsKLSAgICByZXR1cm4g
bV9kaXN0cmlidXRvcjsKLX0KLQotaW5saW5lIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgRWxl
bWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX2Rpc3RyaWJ1
dG9yOwotfQotCiBpbmxpbmUgRWxlbWVudCogRWxlbWVudFNoYWRvdzo6aG9zdCgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKaW5kZXggODNiYjdlYzdlNzllZjJmMjE2
M2VmMDc3NTM3OWQ3NzdlNjllZmZmMi4uYzdhZTAwYWQxYTExMjY5NDcxYTc1YTU3ZWY1OTZlOTM1
N2Q2NDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2
ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmNwcApAQCAtMjgsMTIgKzI4LDIwMCBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaCIKIAogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQc2V1
ZG9FbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIE5vZGVSZW5k
ZXJpbmdUcmF2ZXJzYWwgewogCisvLyBBIHNpbXBsaWZpZWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyLWNvbXBhdGlibGUgd2Fsa2VyIGltcGxlbWVudGF0aW9uIGZvciBub24tU0hBRE9XX0RPTSBj
b25maWd1cmF0aW9ucy4KK2NsYXNzIFNoYWRvd1RyZWVXYWxrZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSogbm9kZSkKKyAgICAgICAgOiBtX25v
ZGUobm9kZSkKKyAgICB7IH0KKworICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KKworICAgIHZvaWQgcGFyZW50KCkgeyBtX25vZGUgPSB0
cmF2ZXJzZVBhcmVudChtX25vZGUpOyB9CisgICAgdm9pZCBuZXh0U2libGluZygpIHsgbV9ub2Rl
ID0gdHJhdmVyc2VOZXh0U2libGluZyhtX25vZGUpOyB9CisgICAgdm9pZCBwcmV2aW91c1NpYmxp
bmcoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKG1fbm9kZSk7IH0KKyAgICB2
b2lkIGxhc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9ub2RlLT5sYXN0Q2hpbGQoKTsgfQorICAgIHZv
aWQgZmlyc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9ub2RlLT5maXJzdENoaWxkKCk7IH0KKworICAg
IHZvaWQgbmV4dCgpIHsgbV9ub2RlID0gdHJhdmVyc2VOZXh0KG1fbm9kZSk7IH0KKyAgICB2b2lk
IHByZXZpb3VzKCkgeyBtX25vZGUgPSB0cmF2ZXJzZVByZXZpb3VzKG1fbm9kZSk7IH0KKworICAg
IHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyog
PSAwKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0KGNvbnN0IE5v
ZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91cyhjb25zdCBOb2RlKik7Cisg
ICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0
YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CisgICAgc3Rh
dGljIE5vZGUqIG5leHRJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29uc3QgTm9kZSopOworICAg
IHN0YXRpYyBOb2RlKiBwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2Rl
Kik7CisgICAgc3RhdGljIGJvb2wgaXNTaGFkb3dCb3VuZGFyeShOb2RlKiBub2RlKSB7IHJldHVy
biBub2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCk7IH0KKwor
ICAgIGNvbnN0IE5vZGUqIG1fbm9kZTsKK307CisKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5U
KQorCitzdGF0aWMgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2ludChjb25zdCBOb2Rl
KiBub2RlKQoreworICAgIE5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICBp
ZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTaGFkb3dSb290KiByb290ID0g
cGFyZW50LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgYm9vbCBoYXNJbnNlcmV0aW9uUG9pbnQgPSBwYXJlbnQtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpkZXRhaWxzVGFnKSB8fCBwYXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpzdW1tYXJ5VGFnKTsKKyAgICBpZiAoIWhhc0luc2VyZXRpb25Qb2ludCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBmb3IgKE5vZGUqIG1heUluc2VydGlvblBvaW50ID0gcm9vdC0+Zmlyc3RD
aGlsZCgpOyBtYXlJbnNlcnRpb25Qb2ludDsgbWF5SW5zZXJ0aW9uUG9pbnQgPSBtYXlJbnNlcnRp
b25Qb2ludC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAobWF5SW5zZXJ0aW9uUG9pbnQt
PmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlvblBvaW50KG1heUluc2VydGlvblBvaW50
KS0+YWx3YXlzTWF0Y2hlcyhjb25zdF9jYXN0PE5vZGUqPihub2RlKSkpCisgICAgICAgICAgICBy
ZXR1cm4gdG9JbnNlcnRpb25Qb2ludChtYXlJbnNlcnRpb25Qb2ludCk7CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKKworc3RhdGljIFZlY3RvcjxOb2RlKj4gZ2V0RGlzdHJpYnV0ZWROb2Rl
KEluc2VydGlvblBvaW50KiBwYXJlbnQpCit7CisgICAgVmVjdG9yPE5vZGUqPiBub2RlczsKKyAg
ICBFbGVtZW50KiBob3N0ID0gcGFyZW50LT5zaGFkb3dIb3N0KCk7CisgICAgQVNTRVJUKGhvc3Qp
OworICAgIGlmICghaG9zdCkKKyAgICAgICAgcmV0dXJuIG5vZGVzOworCisgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+YWx3YXlzTWF0Y2hlcyhjaGlsZCkpCisg
ICAgICAgICAgICBub2Rlcy5hcHBlbmQoY2hpbGQpOworICAgIH0KKworICAgIHJldHVybiBub2Rl
czsKK30KKworI2VuZGlmIC8vIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCisKK2lubGluZSBOb2Rl
KiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJl
bnREZXRhaWxzKiBkZXRhaWxzKQoreworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCisgICAg
aWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludChu
b2RlKSkgeworICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgIGRldGFpbHMtPmRpZFRy
YXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBBU1NFUlQobm9k
ZS0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZGV0YWlsc1RhZykgfHwgbm9k
ZS0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3VtbWFyeVRhZykpOworICAg
ICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIH0KKyNlbmRpZgorCisgICAgZm9y
IChOb2RlKiB3YWxrID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOyB3YWxrOyB3YWxrID0gd2Fs
ay0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGlmICghaXNTaGFkb3dCb3VuZGFyeSh3
YWxrKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOwor
fQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0KGNvbnN0IE5v
ZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2RlKiB3YWxrID0gbmV4dEluY2x1ZGluZ0NvbnRhaW5p
bmdTY29wZShub2RlKTsgd2Fsazsgd2FsayA9IG5leHRJbmNsdWRpbmdDb250YWluaW5nU2NvcGUo
d2FsaykpIHsKKyAgICAgICAgaWYgKCFpc1NoYWRvd0JvdW5kYXJ5KHdhbGspKQorICAgICAgICAg
ICAgcmV0dXJuIHdhbGs7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2Rl
KiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgZm9yIChOb2RlKiB3YWxrID0gcHJldmlvdXNJbmNsdWRpbmdDb250YWluaW5nU2NvcGUo
bm9kZSk7IHdhbGs7IHdhbGsgPSBwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZSh3YWxr
KSkgeworICAgICAgICBpZiAoIWlzU2hhZG93Qm91bmRhcnkod2FsaykpCisgICAgICAgICAgICBy
ZXR1cm4gd2FsazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIE5vZGUqIFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgVmVjdG9y
PE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlzdHJpYnV0aW9uLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAvLyBTdGF5aW5nIGluc2lkZSBkaXN0cmlidXRpb24uCisgICAg
ICAgICAgICBpZiAoZGlzdHJpYnV0aW9uW2ldID09IG5vZGUgJiYgZGlzdHJpYnV0aW9uLmxhc3Qo
KSAhPSBub2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRpb25baSArIDFdOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBTdGVwcGluZyBvdXQgZnJvbSBkaXN0cmli
dXRlZCBsb2NhdGlvbgorICAgICAgICBub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gU3RlcHBpbmcgaW50byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChu
b2RlLT5pc0luc2VydGlvblBvaW50KCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlz
dHJpYnV0aW9uID0gZ2V0RGlzdHJpYnV0ZWROb2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2Fz
dDxOb2RlKj4obm9kZSkpKTsKKyAgICAgICAgICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0aW9uLmZpcnN0KCk7CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBub2RlLT5uZXh0U2libGluZygpOworfQor
CitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmco
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorICAgIGlm
IChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnQobm9k
ZSkpIHsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRl
ZE5vZGUoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAvLyBTdGF5aW5nIGluc2lk
ZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBpZiAoZGlzdHJpYnV0aW9uW2ldID09IG5vZGUg
JiYgZGlzdHJpYnV0aW9uLmZpcnN0KCkgIT0gbm9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZGlzdHJpYnV0aW9uW2kgLSAxXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU3Rl
cHBpbmcgb3V0IGZyb20gZGlzdHJpYnV0ZWQgbG9jYXRpb24KKyAgICAgICAgbm9kZSA9IGluc2Vy
dGlvblBvaW50OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXBwaW5nIGludG8gZGlzdHJp
YnV0aW9uLgorICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKSB7CisgICAgICAg
ICAgICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9kZSh0b0lu
c2VydGlvblBvaW50KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSk7CisgICAgICAgICAgICBpZiAo
IWRpc3RyaWJ1dGlvbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3RyaWJ1
dGlvbi5sYXN0KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBub2Rl
LT5wcmV2aW91c1NpYmxpbmcoKTsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6
Om5leHRJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBp
ZiAoTm9kZSogd2FsayA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkpCisgICAgICAgIHJldHVy
biB3YWxrOworCisgICAgZm9yIChub2RlID0gdHJhdmVyc2VQYXJlbnQobm9kZSk7IG5vZGU7IG5v
ZGUgPSB0cmF2ZXJzZVBhcmVudChub2RlKSkgeworICAgICAgICBpZiAobm9kZS0+bmV4dFNpYmxp
bmcoKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5uZXh0U2libGluZygpOworICAgIH0KKwor
ICAgIHJldHVybiAwOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6cHJldmlv
dXNJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
Tm9kZSogd2FsayA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpKQorICAgICAgICByZXR1
cm4gd2FsazsKKyAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQobm9kZSk7Cit9CisKIHZvaWQgUGFy
ZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKCFtX2luc2VydGlvblBvaW50KSB7CkBAIC00OSwxNCAr
MjM3LDI0IEBAIHZvaWQgUGFyZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0
IFNoYWRvd1Jvb3QqIHJvb3QpCiAKIENvbnRhaW5lck5vZGUqIHBhcmVudFNsb3coY29uc3QgTm9k
ZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6Q3Jvc3NVcHBlckJvdW5kYXJ5LCBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OkNhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKKyNlbHNlICAgICAgICAgICAgICAgICAg
ICAgIAorICAgIFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisKICAgICBD
b250YWluZXJOb2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVyc2VQYXJl
bnQod2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm91dE9mQ29t
cG9zaXRpb24oKSA/IDAgOiBmb3VuZDsKKyAgICByZXR1cm4gZGV0YWlscyAmJiBkZXRhaWxzLT5v
dXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CiB9CiAKIE5vZGUqIG5leHRTaWJsaW5nU2xv
dyhjb25zdCBOb2RlKiBub2RlKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisjZWxzZSAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICBTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKKyNlbmRpZgorCiAgICAg
aWYgKG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7CiAgICAgICAgIHdhbGtlci5wYXJl
bnQoKTsKICAgICAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsKQEAgLTY5LDEzICsyNjcsMTcgQEAg
Tm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgTm9kZSogcGFyZW50
ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50
LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0b0VsZW1lbnQocGFyZW50KS0+cHNl
dWRvRWxlbWVudChBRlRFUik7Ci0KICAgICByZXR1cm4gMDsKIH0KIAogTm9kZSogcHJldmlvdXNT
aWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisjZWxzZSAgICAgICAg
ICAgICAgICAgICAgICAKKyAgICBTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKKyNlbmRp
ZgorCiAgICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgd2Fs
a2VyLnBhcmVudCgpOwogICAgICAgICB3YWxrZXIubGFzdENoaWxkKCk7CkBAIC05NCwzNCArMjk2
LDQ2IEBAIE5vZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKIAogTm9k
ZSogbmV4dEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1df
RE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIubmV4dCgpOwogICAgIHJldHVy
biB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0KG5v
ZGUpOworI2VuZGlmCiB9CiAKIE5vZGUqIHByZXZpb3VzSW5TY29wZShjb25zdCBOb2RlKiBub2Rl
KQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJl
IHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUs
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAg
IHdhbGtlci5wcmV2aW91cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAg
IHJldHVybiBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlKTsKKyNlbmRpZgogfQogCiBOb2Rl
KiBwYXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9X
X0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIg
PSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
OjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLnBhcmVudCgpOwogICAgIHJl
dHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7
CisjZW5kaWYKIH0KIAogTm9kZSogbGFzdENoaWxkSW5TY29wZShjb25zdCBOb2RlKiBub2RlKQog
ewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVz
ZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAgIHdh
bGtlci5sYXN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBy
ZXR1cm4gbm9kZS0+bGFzdENoaWxkKCk7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKaW5kZXggMmRiM2U3NTk1Y2FjYzBmOWMwNWY4
NmZmYTExN2JhZTQ4OGQ1ODgwNC4uNGNiNzdjYjI2NDQ4YjM5MTNjYzVhMDM2NzMwYWQwMDA3NGU2
ZjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCkBA
IC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX291dE9mQ29tcG9zaXRpb247CiB9
OwogCitDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSopOwogQ29udGFpbmVyTm9kZSog
cGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CiBDb250YWluZXJOb2RlKiBwYXJl
bnRTbG93KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7CiBOb2RlKiBuZXh0U2libGluZyhj
b25zdCBOb2RlKik7CkBAIC03Niw2ICs3NywxMiBAQCBOb2RlKiBwcmV2aW91c0luU2NvcGUoY29u
c3QgTm9kZSopOwogTm9kZSogcGFyZW50SW5TY29wZShjb25zdCBOb2RlKik7CiBOb2RlKiBsYXN0
Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqKTsKIAoraW5saW5lIENvbnRhaW5lck5vZGUqIHBhcmVu
dChjb25zdCBOb2RlKiBub2RlKQoreworICAgIFBhcmVudERldGFpbHMgZGV0YWlsczsKKyAgICBy
ZXR1cm4gcGFyZW50KG5vZGUsICZkZXRhaWxzKTsKK30KKwogaW5saW5lIENvbnRhaW5lck5vZGUq
IHBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQogewogICAg
IGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcAppbmRleCBlM2E0ODIyMmI5M2QzOGQ2NzBlYzJhMjM4MWYwYmY2ZGExNTE3NDJkLi5m
ZmI0MTFlYTczNjQxZTc1Nzc3NmRkYjQyYTcwYjA2OWNlYzQ0ZmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCkBAIC01Nyw3ICs1NywxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgU2FtZVNpemVBc1NoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVi
bGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+IHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkKiBwb2ludGVyc1szXTsKKyNlbHNlCisg
ICAgdm9pZCogcG9pbnRlcnNbMl07CisjZW5kaWYKICAgICB1bnNpZ25lZCBjb3VudGVyc0FuZEZs
YWdzWzFdOwogfTsKIApAQCAtMjYyLDExICsyNjYsMTEgQEAgdm9pZCBTaGFkb3dSb290OjphdHRh
Y2goKQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBEb2N1bWVudEZyYWdtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9u
UG9pbnQpOwogCiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8ICFpc09s
ZGVzdCgpKQogICAgICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKLQogICAgIC8vIEZJWE1FOiBX
aGVuIHBhcnNpbmcgPHZpZGVvIGNvbnRyb2xzPiwgaW5zZXJ0ZWRJbnRvKCkgaXMgY2FsbGVkIG1h
bnkgdGltZXMgd2l0aG91dCBpbnZva2luZyByZW1vdmVkRnJvbS4KICAgICAvLyBGb3Igbm93LCB3
ZSBjaGVjayBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93cm9vdC4gV2Ugd291bGQgbGlrZSB0
byBBU1NFUlQoIW1fcmVnaXN0ZXJlZFNoYWRvd1Jvb3QpIGhlcmUuCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2lnP2lkPTEwMTMxNgpAQCAtMjc3LDEyICsyODEsMTUg
QEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBTaGFkb3dSb290OjppbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXIKICAgICAgICAgcm9vdC0+ZW5zdXJlU2NvcGVEaXN0
cmlidXRpb24oKS0+cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CiAgICAgICAgIG1fcmVnaXN0ZXJl
ZFdpdGhQYXJlbnRTaGFkb3dSb290ID0gdHJ1ZTsKICAgICB9Ci0KICAgICByZXR1cm4gSW5zZXJ0
aW9uRG9uZTsKKyNlbHNlCisgICAgcmV0dXJuIERvY3VtZW50RnJhZ21lbnQ6Omluc2VydGVkSW50
byhpbnNlcnRpb25Qb2ludCk7CisjZW5kaWYKIH0KIAogdm9pZCBTaGFkb3dSb290OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSAmJiBtX3JlZ2lzdGVy
ZWRXaXRoUGFyZW50U2hhZG93Um9vdCkgewogICAgICAgICBTaGFkb3dSb290KiByb290ID0gaG9z
dCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgICAgICBpZiAoIXJvb3QpCkBAIC0yOTIs
NyArMjk5LDcgQEAgdm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBp
bnNlcnRpb25Qb2ludCkKICAgICAgICAgICAgIHJvb3QtPnNjb3BlRGlzdHJpYnV0aW9uKCktPnVu
cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CiAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRT
aGFkb3dSb290ID0gZmFsc2U7CiAgICAgfQotCisjZW5kaWYKICAgICBEb2N1bWVudEZyYWdtZW50
OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAKQEAgLTMxNyw2ICszMjQsNyBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpCiAgICAgc2V0
SGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQobV9udW1iZXJPZlN0eWxlcyA+IDApOwogfQogCisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6
OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIHsKICAgICBpZiAobV9zY29wZURpc3RyaWJ1dGlv
bikKQEAgLTMyNCw3ICszMzIsOCBAQCBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIFNoYWRvd1Jv
b3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIAogICAgIG1fc2NvcGVEaXN0cmlidXRpb24g
PSBhZG9wdFB0cihuZXcgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKTsKICAgICByZXR1cm4gbV9z
Y29wZURpc3RyaWJ1dGlvbi5nZXQoKTsKLX0gICAKK30KKyNlbmRpZgogCiB2b2lkIFNoYWRvd1Jv
b3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CkBAIC0zMzMsNyArMzQyLDkgQEAgdm9pZCBTaGFkb3dSb290OjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIFRy
ZWVTY29wZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5h
ZGRNZW1iZXIobV9wcmV2KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25leHQpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVEaXN0cmlidXRpb24pOwor
I2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDE1MjY5MzhlZGU1MDQw
ZGRjNDMzOWY1OGZmODY1MWEyYzcyNTlmNzkuLjg1OWYwZDIyZGVhZDgyYWQ4YzdkZTEwNTY0ZjI4
MjIyOTE0MWNlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtODgsOSArODgsMTEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGls
ZCgpIE9WRVJSSURFOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgU2NvcGVDb250ZW50
RGlzdHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIHsgcmV0dXJuIG1fc2NvcGVEaXN0cmli
dXRpb24uZ2V0KCk7IH0KICAgICBjb25zdCBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3Bl
RGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsg
fQogICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogZW5zdXJlU2NvcGVEaXN0cmlidXRpb24o
KTsKKyNlbmRpZgogCiAgICAgU2hhZG93Um9vdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBdXRob3JTaGFkb3dSb290ID8gQXV0aG9yU2hhZG93Um9vdCA6IFVzZXJBZ2VudFNoYWRvd1Jv
b3Q7IH0KICAgICBib29sIGlzQWNjZXNzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBB
dXRob3JTaGFkb3dSb290OyB9CkBAIC0xMTAsNyArMTEyLDkgQEAgcHJpdmF0ZToKIAogICAgIFNo
YWRvd1Jvb3QqIG1fcHJldjsKICAgICBTaGFkb3dSb290KiBtX25leHQ7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgT3duUHRyPFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbj4gbV9zY29wZURp
c3RyaWJ1dGlvbjsKKyNlbmRpZgogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZTdHlsZXMgOiAyODsK
ICAgICB1bnNpZ25lZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX3Jl
c2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAKaW5kZXggMDVlZWJhYjQxMGQ4OGI0MWViODExOTMxMmFkOWQ5MWMyNWQ0MWVj
Mi4uNjhlMDc5NzIyODdiMDA1MzA2Y2JkYzgyOTFlOGIxZjNmMmEzMjBkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtNTEsNiArNTEsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgOiBIVE1MQ29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjp3ZWJraXRTaGFk
b3dDb250ZW50VGFnLCBkb2N1bWVudCkKICAgICB7CiAgICAgfQorCisgICAgLy8gVGhpcyBtYXRj
aCBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIHRvIERldGFpbHNTdW1tYXJ5RWxlbWVudDo6
bWF0Y2hUeXBlRm9yKCkKKyAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVGb3IoTm9kZSog
bm9kZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgp
IHx8IG5vZGUgIT0gbm9kZS0+cGFyZW50Tm9kZSgpLT5xdWVyeVNlbGVjdG9yKHN1bW1hcnlRdWVy
eVNlbGVjdG9yKCksIEFTU0VSVF9OT19FWENFUFRJT04pKQorICAgICAgICAgICAgcmV0dXJuIEFs
d2F5c01hdGNoZXM7CisgICAgICAgIHJldHVybiBOZXZlck1hdGNoZXM7CisgICAgfQogfTsKIAog
UGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERldGFpbHNDb250ZW50RWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEyMCw2ICsxMjgsMTEgQEAgdm9pZCBIVE1M
RGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIHJvb3QtPmFwcGVuZENo
aWxkKERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OLCB0cnVlKTsKIH0KIAorRWxlbWVudCogSFRNTERldGFpbHNFbGVtZW50OjpmYWxs
YmFja1N1bW1hcnkoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzU3Vt
bWFyeUVsZW1lbnQqPih1c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxi
YWNrU3VtbWFyeSgpOworfQorCiBFbGVtZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRNYWlu
U3VtbWFyeSgpIGNvbnN0CiB7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKQEAgLTEyNyw3ICsxNDAsNyBA
QCBFbGVtZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRNYWluU3VtbWFyeSgpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KGNoaWxkKTsKICAgICB9CiAKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RGV0YWlsc1N1bW1hcnlFbGVtZW50Kj4odXNlckFnZW50U2hhZG93Um9vdCgp
LT5maXJzdENoaWxkKCkpLT5mYWxsYmFja1N1bW1hcnkoKTsKKyAgICByZXR1cm4gZmFsbGJhY2tT
dW1tYXJ5KCk7CiB9CiAKIHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAt
MTQ2LDggKzE1OSwxOCBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgYwogICAgIGlmICghY2hpbGRD
b250ZXh0LmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgaWYgKG1faXNPcGVuKQorICAgIGlmIChtX2lzT3BlbikgeworI2lmICFFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICAgICAgLy8gVGhlIGZhbGxiYWNrIDxzdW1tYXJ5PiBzaG91bGRuJ3Qg
YmUgdmlzaWJsZSB1bmxlc3MgaXQgaXMgdXNlZCBhcyBhIG1haW4gc3VtbWFyeS4KKyAgICAgICAg
Ly8gV2l0aCBTSEFET1dfRE9NLCA8ZGV0YWlscz4gY2FuIGp1c3QgbGV0IDxjb250ZW50PiBmYWxs
YmFjayBzeXN0ZW0gdGFrZSBjYXJlIG9mIHRoaXMuCisgICAgICAgIGlmIChjaGlsZENvbnRleHQu
bm9kZSgpLT5oYXNUYWdOYW1lKHN1bW1hcnlUYWcpKSB7CisgICAgICAgICAgICBFbGVtZW50KiBm
YWxsYmFjayA9IGZhbGxiYWNrU3VtbWFyeSgpOworICAgICAgICAgICAgaWYgKGZhbGxiYWNrICE9
IGZpbmRNYWluU3VtbWFyeSgpICYmIGZhbGxiYWNrID09IGNoaWxkQ29udGV4dC5ub2RlKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAg
cmV0dXJuIEhUTUxFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4
dCk7CisgICAgfQogCiAgICAgaWYgKCFjaGlsZENvbnRleHQubm9kZSgpLT5oYXNUYWdOYW1lKHN1
bW1hcnlUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTUsNiArMTc4LDIwIEBAIGJv
b2wgSFRNTERldGFpbHNFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0JiBjCiAgICAgcmV0dXJuIGNoaWxkQ29udGV4dC5ub2RlKCkgPT0g
ZmluZE1haW5TdW1tYXJ5KCkgJiYgSFRNTEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY2hpbGRDb250ZXh0KTsKIH0KIAordm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBh
ZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3sKKyNpZiAhRU5BQkxFKFNIQURPV19E
T00pCisgICAgLy8gVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiBDb250ZW50RGlzdHJp
YnV0b3I6OmludmFsaWRhdGVEaXN0cmlidXRpb24oKQorICAgIC8vIHdoaWNoIHJlYXR0YWNoZXMg
Y2hpbGRyZW4gdG8gbWFrZSB0aGVtIGJlaW5nIHJlLWRpc3RyaWJ1dGVkIHRvIGFwcHJvcHJpYXRl
IGluc2VydGlvbiBwb2ludHMuCisgICAgaWYgKGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChO
b2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAg
ICAgIG4tPmxhenlSZWF0dGFjaCgpOworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cisg
ICAgfQorI2VuZGlmCisgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQ
YXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7Cit9CisK
IHZvaWQgSFRNTERldGFpbHNFbGVtZW50Ojp0b2dnbGVPcGVuKCkKIHsKICAgICBzZXRBdHRyaWJ1
dGUob3BlbkF0dHIsIG1faXNPcGVuID8gbnVsbEF0b20gOiBlbXB0eUF0b20pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKaW5kZXggOWRhOTY5ODg2MTQ2NGNkM2QwZTcy
ZjIxNDc2ODA3M2EyM2JkMzZiYS4uMjY2NGQyNWMyZDgzMzQ5ZWY4NWI5MzAyNGNiYWQ0OTdhZWY2
ZGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCkBAIC0zOCw3
ICszOCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0KKyAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wsIE5vZGUqLCBOb2RlKiwgaW50KTsKKyAgICBFbGVtZW50KiBm
YWxsYmFja1N1bW1hcnkoKSBjb25zdDsKICAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsK
IAogICAgIGJvb2wgbV9pc09wZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCA2YWFmOTk0OThiNmEwMDQxMzk1YWY1NTVmNTJlMTcwYmVmZGZiZmI3Li5hMzBh
ZjFlZWNhNmFiOTljZmY3MzVkOTA0MmMzZWU2ODYxYmEzMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTUzNyw4ICs1MzcsMTAgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgICAgIHVwZGF0ZUZvY3VzQXBwZWFyYW5j
ZSh0cnVlKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVu
dFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRo
aXMpKQogICAgICAgICBlbGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Cisj
ZW5kaWYKIAogICAgIHNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGZh
bHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmli
dXRvci5jcHAKaW5kZXggM2ZjYmY5ZDUwYmU2NTM0MDg4ZjFiYjU4NTg1MDY4MGI1NGUwZDg3ZS4u
YTE5ZGRmNDExOGQ5ZjM3MjMzYjJkYmY5YmZkYzQwZjc4MDkyYmY3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0yNyw2ICsy
Nyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9y
LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxDb250
ZW50RWxlbWVudC5oIgpAQCAtNDQxLDMgKzQ0Myw1IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9y
OjpkaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KQogfQogCiB9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggZGZlYWI4Y2M3ZmRiZTUwYWRmNjEwN2U4ZDYwYTBk
ZjIyODQxNmQwYi4uOTU1MzFiNGI0YzU2NThmMWM1NjhlMWZkNjczNDRjMTY4ZTAwNTc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAg
LTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CkBAIC0xNjMsNCArMTY1LDUgQEAgaW5saW5lIGJv
b2wgQ29udGVudERpc3RyaWJ1dG9yOjpuZWVkc0Rpc3RyaWJ1dGlvbigpIGNvbnN0CiAKIH0KIAor
I2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTJhMGFjNWEx
ZjkyZmFkY2U2YjAzM2M0OGMwZGU2MTMwZGM4YzZkNi4uNDIxYWM4MGJiMGE5Mzk0ZmU5NGVhOTQ0
ZGNmNTA0YzY0MWRiZWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudFNlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIklu
c2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCkBAIC05MSwzICs5
Myw1IEBAIGJvb2wgQ29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxOb2RlPiA+JiBzaWJsaW5ncywgaW50IG50CiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJM
RShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmgKaW5kZXggNGQzOGVkZDFhNWM4NjEwZjc3MjkzMTMyNGE2YTZlZWRjZDM3
YTcxNi4uZmUyNGQyZDNkOGI3Y2VhN2MxMzBkMDc4YzViZmIxNGVjOGJhMjAxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCkBAIC0z
Nyw2ICszNyw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEb2N1bWVudDsKQEAgLTc2LDQgKzc4LDUgQEAgcHJpdmF0ZToKIAogfQogCisjZW5k
aWYgLy8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXggOWQwYzhmYzQzNTNiZjk2Y2UyNGQx
YTI2ZjI1MWFkYzNjOTgxYWQwOC4uY2EyNjllODYzOTBlNWViNDFmZDZjOWIzOTgzYjliY2MyMjI4
NzQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50IDogcHVibGlj
IEluc2VydGlvblBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgY29udGVudFRhZ05hbWUoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1M
Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCiAgICAgdmlydHVhbCBUeXBlIGlu
c2VydGlvblBvaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRlbnRJbnNlcnRp
b25Qb2ludDsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5jcHAKaW5kZXggZTA4MzE4YmZmNWE4ZTBiYmMwNDQ0ZmM4Nzg2ZDM5MTNm
OThjN2M5Ni4uZjkwNjQyMzQxOWI3NzQ4ZTNiNzA1YjdhMzU0NGQwZjNmZjBiYjUxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApAQCAtMzksMTAg
KzM5LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU2ltcGxlSW5zZXJ0aW9uUG9pbnQ6
OlNpbXBsZUluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVh
dGVJbnNlcnRpb25Qb2ludCkKK3sKK30KKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDog
SFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUluc2VydGlvblBvaW50KQorICAg
IDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3JlZ2lz
dGVyZWRXaXRoU2hhZG93Um9vdChmYWxzZSkKIHsKIH0KQEAgLTc5LDI1ICs4Niw2IEBAIGJvb2wg
SW5zZXJ0aW9uUG9pbnQ6OnNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdAogICAgIHJl
dHVybiBpc0FjdGl2ZSgpICYmICFoYXNEaXN0cmlidXRpb24oKTsKIH0KIAotYm9vbCBJbnNlcnRp
b25Qb2ludDo6aXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRyZWVTY29w
ZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBpc0FjdGl2ZSgpOwotfQotCi1ib29s
IEluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFjb250YWluaW5n
U2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgTm9kZSogbm9k
ZSA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBpZiAobm9kZS0+
aXNJbnNlcnRpb25Qb2ludCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQot
CiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRpb25Qb2ludDo6Z2V0RGlzdHJpYnV0ZWROb2Rl
cygpIGNvbnN0CiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBjb250YWluaW5n
U2hhZG93Um9vdCgpKQpAQCAtMTExLDExICs5OSw2IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IElu
c2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29uc3QKICAgICByZXR1cm4gU3Rh
dGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVzKTsKIH0KIAotYm9vbCBJbnNlcnRpb25Qb2ludDo6cmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKLXsKLSAg
ICByZXR1cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChjb250ZXh0KTsKLX0KLQogdm9pZCBJbnNlcnRpb25Qb2ludDo6Y2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hh
bmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENv
dW50RGVsdGEpOwpAQCAtMjI5LDQgKzIxMiwyMCBAQCBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJl
cHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQogICAgIHJldHVybiBpbnNlcnRp
b25Qb2ludDsKIH0KIAorYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNBY3RpdmUoKSBjb25zdAorewor
ICAgIGlmICghY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7CisgICAgd2hpbGUgKG5vZGUpIHsK
KyAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaAppbmRleCA3NDI0M2U5Y2FhNDUzN2M1OTRhOTI5MGI0NjgxMWUzYjYwMDViY2U2Li4z
MDAwZTNiYzY5ZDJhMWZhMmNlNTg4NGNiMjZhYmQzNjJhMDYyMGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBIVE1MRWxl
bWVudCB7CitjbGFzcyBTaW1wbGVJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7
CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgU2hhZG93SW5zZXJ0aW9uUG9pbnQs
CkBAIC01NCwxOSArNTQsMzIgQEAgcHVibGljOgogICAgICAgICBIYXNUb01hdGNoU2VsZWN0b3IK
ICAgICB9OwogCisgICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqKSB7IHJl
dHVybiBBbHdheXNNYXRjaGVzOyB9CisgICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlw
ZSgpIGNvbnN0ID0gMDsKKworICAgIGJvb2wgYWx3YXlzTWF0Y2hlcyhOb2RlKiBub2RlKSB7IHJl
dHVybiBtYXRjaFR5cGVGb3Iobm9kZSkgPT0gQWx3YXlzTWF0Y2hlczsgfQorCitwcm90ZWN0ZWQ6
CisgICAgU2ltcGxlSW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKworI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCitjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBTaW1wbGVJbnNlcnRpb25Qb2lu
dCB7CitwdWJsaWM6CisKICAgICB2aXJ0dWFsIH5JbnNlcnRpb25Qb2ludCgpOwogCiAgICAgYm9v
bCBoYXNEaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiAhbV9kaXN0cmlidXRpb24uaXNFbXB0
eSgpOyB9CiAgICAgdm9pZCBzZXREaXN0cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlvbiYgZGlz
dHJpYnV0aW9uKSB7IG1fZGlzdHJpYnV0aW9uLnN3YXAoZGlzdHJpYnV0aW9uKTsgfQogICAgIHZv
aWQgY2xlYXJEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0aW9uLmNsZWFyKCk7IH0KLSAgICBi
b29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdDsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7
CiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXREaXN0cmlidXRlZE5vZGVzKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJuIEFs
d2F5c01hdGNoZXM7IH0KICAgICB2aXJ0dWFsIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0
b3JMaXN0KCkgeyByZXR1cm4gZW1wdHlTZWxlY3Rvckxpc3QoKTsgfQotICAgIHZpcnR1YWwgVHlw
ZSBpbnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbkFm
ZmVjdFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgcmVzZXRT
dHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CkBAIC03Niw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKICAgICBib29sIHNob3VsZFVzZUZhbGxiYWNrRWxlbWVu
dHMoKSBjb25zdDsKKyAgICBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdCB7IHJldHVybiB0
cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkgJiYgaXNBY3RpdmUoKTsgfQor
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIHNpemVfdCBpbmRleE9mKE5vZGUqIG5v
ZGUpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZpbmQobm9kZSk7IH0KICAgICBib29s
IGNvbnRhaW5zKGNvbnN0IE5vZGUqKSBjb25zdDsKQEAgLTkwLDEyICsxMDUsMTIgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSog
YWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpIE9WRVJSSURFIHsgcmV0dXJuICFpc1NoYWRvd0JvdW5kYXJ5KCkgJiYgSFRN
TEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7IH0KIAogcHJpdmF0ZToKIApAQCAt
MTAzLDMwICsxMTgsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVnaXN0ZXJlZFdpdGhTaGFk
b3dSb290OwogfTsKIAotaW5saW5lIEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5v
ZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQo
KSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc2VydGlvblBvaW50Kj4obm9kZSk7Ci19Ci0K
LWlubGluZSBjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2Rl
KiBub2RlKQotewotICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2ludCo+KG5vZGUpOwot
fQorSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSopOworY29uc3QgSW5zZXJ0
aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSopOwogCiBpbmxpbmUgYm9vbCBp
c0FjdGl2ZUluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG5v
ZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2
ZSgpOwogfQogCi1pbmxpbmUgYm9vbCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUq
IG5vZGUpCi17Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0luc2VydGlvblBvaW50KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+
aXNTaGFkb3dCb3VuZGFyeSgpOwotfQotCiBpbmxpbmUgTm9kZSogcGFyZW50Tm9kZUZvckRpc3Ry
aWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKQEAgLTE2MSw2
ICsxNjAsNDUgQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJp
YnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9q
ZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAorI2Vsc2UKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBw
dWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgeworcHVibGljOgorICAgIGJvb2wgcmVzZXRTdHls
ZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK3Byb3RlY3RlZDoKKyAgICBJ
bnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpIDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1lbnQpIHsgfQorCitw
cml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KK307CisKKyNlbmRpZiAv
LyBFTkFCTEUoU0hBRE9XX0RPTSkKKworaW5saW5lIEluc2VydGlvblBvaW50KiB0b0luc2VydGlv
blBvaW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0
aW9uUG9pbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc2VydGlvblBvaW50Kj4obm9k
ZSk7Cit9CisKK2lubGluZSBjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChj
b25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0luc2VydGlv
blBvaW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2ludCo+
KG5vZGUpOworfQorCitpbmxpbmUgYm9vbCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5v
ZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0luc2VydGlvblBvaW50KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICByZXR1
cm4gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNTaGFkb3dCb3VuZGFyeSgpOworI2Vsc2UKKyAg
ICAvLyBpbiBub24tU0hBT0RXX0RPTSB3b3JsZCwgSW5zZXJ0aW9uUG9pbnQgaXMgdXNlZCBvbmx5
IGludGVybmFsbHkgYW5kCisgICAgLy8gc2hvdWxkIGJlIGFsd2F5cyBhIGJvdW5kYXJ5LgorICAg
IHJldHVybiB0cnVlOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAppbmRleCA0NjUyMmM0NDUzYmMzZWIwMzYxZmQ0
NjExYWQxOTY3MjI2Y2RkMWMwLi42ZTI3N2E0MGQ5NGYwOWE1MWYzNjBkNjBmOTVmN2M5ZDY5YTVj
OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVh
dHVyZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZl
YXR1cmVTZXQuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
CiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUs
MyArODcsNCBAQCB2b2lkIFNlbGVjdFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9t
U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFC
TEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nl
bGVjdFJ1bGVGZWF0dXJlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RS
dWxlRmVhdHVyZVNldC5oCmluZGV4IGQwZjJkZTY4MjFiMzI1MDkxNmM3ZWMxNmRlZDRkYjc1OTg0
YTA4MTcuLmIwMjA3M2Q0ZjJjMzc5NWQ3ODc1ZTRhZDVlZGQ4YzQ5Nzc3MTdjZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaApAQCAt
MzEsOSArMzEsMTIgQEAKICNpZm5kZWYgU2VsZWN0UnVsZUZlYXR1cmVTZXRfaAogI2RlZmluZSBT
ZWxlY3RSdWxlRmVhdHVyZVNldF9oCiAKKwogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJSdWxlRmVhdHVyZS5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU2VsZWN0UnVsZUZlYXR1cmVTZXQgewpAQCAtODUsNCArODgsNSBA
QCBpbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9X
X0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDJkYmJl
NDFkNjBmZDNkZTUxZmNlZWIyMmUxZmU5Yzk0Y2VhNDU3M2IuLjExNDhmOTkyNTNmYzBmYWExMWQ0
ODY4YjAwZDhjMWUxNmM3ZTVlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZS5oIgpAQCAtMjg3LDYgKzI4OCwxMSBAQCBib29sIFNWR1VzZUVsZW1lbnQ6OndpbGxSZWNhbGNT
dHlsZShTdHlsZUNoYW5nZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBTVkdVc2VFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0
JiBjaGlsZENvbnRleHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoaWxkQ29udGV4dC5pc09uVXBw
ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSAmJiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOworfQorCiAjaWZkZWYg
RFVNUF9JTlNUQU5DRV9UUkVFCiBzdGF0aWMgdm9pZCBkdW1wSW5zdGFuY2VUcmVlKHVuc2lnbmVk
IGludCYgZGVwdGgsIFN0cmluZyYgdGV4dCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0
YW5jZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IDZiYjI5ZWM2NjQ5OTZl
MTIwYmJiMTgxYjMwY2E1ZWJjMmYzMTAyZTUuLjQ0YzMxYzVlOWEwN2RmYmJlODEwNjBhOGFhNTVk
NjFlYWJlNzZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtNzAsNiArNzAs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5
bGVDaGFuZ2UpOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBiZWU4MjA0M2FhODA2NjMzNjAxOWZkYTRiOTRkZWNmZDM0ZGE0
YjFmLi4zNWJlYzY0YTM1ODMxY2UzZTg1YzlmNjg5NDJmYWE2ZmJiNmIyZTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDgsNyArMzQ4LDEyIEBAIGJvb2wgSW50ZXJu
YWxzOjpoYXNTZWxlY3RvckZvcklkSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5n
JiBpZFZhbHVlLCBFCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFVOVVNFRF9QQVJB
TShpZFZhbHVlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hh
ZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3co
KSkuaGFzU2VsZWN0b3JGb3JJZChpZFZhbHVlKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3co
RWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtMzU4LDcgKzM2MywxMiBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFz
c0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYQogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKKyAgICBVTlVTRURfUEFSQU0oY2xhc3NOYW1lKTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCku
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JDbGFz
cyhjbGFzc05hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9v
bCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9z
dCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM2
OCw3ICszNzgsMTIgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5T
aGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHQKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKGF0dHJpYnV0ZU5hbWUpOworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1
cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxlY3RvckZvckF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAK
IGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVu
dCogaG9zdCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFzcywgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0zNzgsNiArMzkzLDggQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xh
c3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHAKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKHBzZXVkb0NsYXNzKTsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNldCYgZmVhdHVyZVNldCA9
IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9z
dC0+c2hhZG93KCkpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiY2hlY2tlZCIpCiAgICAgICAg
IHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgpOwpAQCAtMzk1LDYgKzQx
Miw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3co
RWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0
Lmhhc1NlbGVjdG9yRm9yVmlzaXRlZCgpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
ZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0Miw4ICs0NjAsMTEgQEAgYm9vbCBJ
bnRlcm5hbHM6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChjb25zdCBTdHJp
bmcmIHByb3BlcnR5LCBkb3UKIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBv
aW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworICAgIFVO
VVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAocm9vdCAm
JiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9vdCkpOworI2VuZGlmCiAK
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4gMDsKQEAgLTQ1MSw4ICs0
NzIsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5v
ZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAogYm9vbCBJbnRlcm5hbHM6Omhhc0Nv
bnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
eworICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBp
ZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQodG9TaGFkb3dSb290KHJvb3QpKTsK
KyNlbmRpZgogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgcmV0dXJuIDA7CkBA
IC00NjUsNyArNDg5LDExIEBAIHNpemVfdCBJbnRlcm5hbHM6OmNvdW50RWxlbWVudFNoYWRvdyhj
b25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbjo6Y291bnRFbGVtZW50U2hhZG93KHRvU2hhZG93Um9vdChyb290KSk7
CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmIAogfQogCiBib29sIEludGVybmFsczo6YXR0
YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00ODAsNiArNTA4LDcgQEAg
Ym9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
CiBOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTQ4NywxMCArNTE2LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcihO
b2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0U2libGluZygpOwogICAgIHJldHVybiB3
YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURf
UEFSQU0oZWMpOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6
Zmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC00OTgsMTAgKzUzMywxNiBAQCBO
b2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAg
IHdhbGtlci5maXJzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJu
IDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2Rl
KiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAg
IHJldHVybiAwOwpAQCAtNTA5LDEwICs1NTAsMTYgQEAgTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hp
bGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKICAg
ICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm9kZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBOb2RlKiBJ
bnRlcm5hbHM6Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTUyMCwxMCArNTY3
LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUp
OwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJu
IDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpwcmV2aW91c05vZGVCeVdhbGtlcihO
b2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNTMxLDYgKzU4NCwxMSBAQCBOb2RlKiBJbnRlcm5hbHM6OnByZXZp
b3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7
CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUp
OworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogU3Ry
aW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxlbWVudCogZWxlbWVudCwg
RXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBkYTA2MTU2MDg3MjY1OWY2MWMxMWM0OWVl
ZTZhMmE0MTFhYjNlZjZiLi44YTMyNmQyNTJkMzRhZTg3NzMyMTEyYzk3YWU4OWRjNDU5YjMwNDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9y
dHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhw
b3J0cy5kZWYuaW4KQEAgLTIxOSwxOCArMjE5LDEyIEBAIEVYUE9SVFMKICAgICAgICAgP3NldFBy
b2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAg
ICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
WFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9O
UEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVz
b3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNB
cnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUds
b2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBA
QFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJr
ZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQ
QVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBl
c0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9maXJzdENoaWxkQENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2xhc3RDaGlsZEBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9uZXh0QENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3ByZXZpb3VzQENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP251bWJlckBT
dHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9B
VjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtMzE4
LDcgKzMxMiw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNA
V2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBI
SEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3Jl
QEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxl
QERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Q
b2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRp
b25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BB
bmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91
bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKQEAgLTYwNSwxOCArNTk4LDEyIEBA
IEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVy
QFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNl
cnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1
c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAg
ICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJp
bmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQ
QVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0
cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRp
dEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9t
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmlu
Z0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBX
ZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdU
RkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9u
ZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAg
ICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoK
LSAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCi0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVY
WFoKLSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBR
QUVYWFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAg
P251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdA
V1RGQEBTQT9BVjEyQEhAWgpAQCAtNzA0LDcgKzY5MSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2Nv
bXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNA
MUBVVmlld3BvcnRBcmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3Bv
cnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAg
ICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAg
ICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9z
dXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhY
WgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9O
QFoKQEAgLTk5MSwxOCArOTc3LDEyIEBAIEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5h
YmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNj
b25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRp
ZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAx
QEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJD
b3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVj
dEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAg
ICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJD
b3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQ
YWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERv
Y3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVu
dE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVu
dE1hcmtlckAyQEBaCi0gICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RG
QEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoK
ICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtMTA5MCw3ICsxMDcw
LDYgQEAgRVhQT1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlc0BXZWJDb3Jl
QEBZQT9BVVZpZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3VtZW50c0AxQEhISE1WSW50
U2l6ZUAxQEBaCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9B
VVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1l
bnRAV2ViQ29yZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdl
YkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRy
b2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1hdGlv
bkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hh
Y2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpAQCAtMTM0MywxMCArMTMyMiw2IEBAIEVYUE9S
VFMKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAg
P2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgogICAgICAg
ICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQFBBVkVs
ZW1lbnRAMUBJQFoKLSAgICAgICAgP2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRAQ29udGVudERpc3Ry
aWJ1dG9yQFdlYkNvcmVAQFFBRUFCVlNlbGVjdFJ1bGVGZWF0dXJlU2V0QDJAUEFWRWxlbWVudFNo
YWRvd0AyQEBaCi0gICAgICAgID9oYXNTaGFkb3dFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCi0gICAgICAgID9oYXNDb250ZW50
RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jv
b3RAMkBAWgotICAgICAgICA/Y291bnRFbGVtZW50U2hhZG93QFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbkBXZWJDb3JlQEBTQUlQQlZTaGFkb3dSb290QDJAQFoKICAgICAgICAgP2ZpbmRAU3RyaW5n
SW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFB
RUlQQVYxMkBAWgogICAgICAgICA/YWJzb2x1dGVDYXJldEJvdW5kc0BGcmFtZVNlbGVjdGlvbkBX
ZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAWFoKQEAgLTEzODEsMTggKzEzNTYsMjQgQEAgRVhQT1JU
UwogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFWF9OQFoKICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9s
bGVyQFdlYkNvcmVAQFFBRVhYWgogI2VuZGlmCi0gICAgICAgID9pc0FjdGl2ZUluc2VydGlvblBv
aW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKICAgICAgICAgP2lzQ1NTRXhjbHVzaW9uc0Vu
YWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05BCiAgICAgICAgID9pc1By
ZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZA
QEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNT
dGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlz
dEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBA
WFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVA
QFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZO
b2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJD
b3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRA
V2ViQ29yZUBAUUJFX05YWgorICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEBDb250ZW50
RGlzdHJpYnV0b3JAV2ViQ29yZUBAUUFFQUJWU2VsZWN0UnVsZUZlYXR1cmVTZXRAMkBQQVZFbGVt
ZW50U2hhZG93QDJAQFoKKyAgICAgICAgP2hhc1NoYWRvd0VsZW1lbnRAU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKKyAgICAgICAgP2hhc0Nv
bnRlbnRFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hh
ZG93Um9vdEAyQEBaCisgICAgICAgID9jb3VudEVsZW1lbnRTaGFkb3dAU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBCVlNoYWRvd1Jvb3RAMkBAWgorI2VuZGlmCiAgICAgICAg
ID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5n
QFdURkBAU0E/QVYxMkBfS0BaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBI
QFoKQEAgLTE0ODAsNyArMTQ2MSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9y
dEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRB
cmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNA
UGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1Bh
Z2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2
ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0
aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1l
QW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/
c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBm
MGJhNjNjMGY0YjliZGIwNzVjNTA4ZDcxYWZhMGQwMTEzYzgxMjFjLi43YzA1N2ZiNGUyODMyNTFi
YzFjNDI2ZGQwNDJiOGEzNzAyNGUwN2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMDEt
MjQgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtTaGFk
b3cgRE9NXSBQdXQgbm9kZSByZXByb2plY3Rpb24gY29kZSBiZWhpbmQgRU5BQkxFKFNIQURPV19E
T00pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2
NDMKKworICAgICAgICBSZWJhc2VsaW5lcyBzbWFsbCBkaWZmZXJlbmNlcyB3aGljaCBoYXBwZW4g
aW4gdGhlIG5vbi1TSEFET1dfRE9NCisgICAgICAgIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZHVl
IHRvIGRpZmZlcmVuY2Ugb2YgaW1wbGVtZW50YXRpb24gZGV0YWlsCisgICAgICAgIGJ1dCBoYXMg
b25seSB1bm5vdGljZWFibGUgdXNlciBvYnNlcnZhYmxlIGRpZmZlcmVuY2UuCisKKyAgICAgICAg
ZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS5odG1sIHJlbmRlcnMgPGRldGFpbHM+IGRpZmZlcmVu
dGx5LgorICAgICAgICBUaGlzIGlzIGEgbGltaXRhdGlvbiBvZiB0aGUgc2ltcGxpZmllZCBkaXN0
cmlidXRpb24gYWxnb3JpdGhtLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9mYXN0L2h0bWwvZGV0YWlscy1uZXN0ZWQtMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVjdGVkLnBuZzoKKyAgICAgICAg
KiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbmRlci1pbmxpbmUtZXhwZWN0ZWQudHh0OgorCiAy
MDEzLTAxLTI0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGJyZWFrcG9pbnRzIGFyZSBub3QgcmVzdG9yZWQgdXBvbiByZWxv
YWQgZm9yIHNjcmlwdHMgd2l0aCBzY3JpcHQgbWFwcGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3RlZC5wbmcgYi9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbmRlci1pbmxpbmUtZXhwZWN0ZWQu
cG5nCmluZGV4IDZjNjU0ZmExYjk4MGM4ZmQzMWQ5NDc1ZWNjY2M5ZDgwMDA1NDAxM2IuLmNhMWZk
N2I2ZjAzZmJlOTU2MDBkZjE3YjAxY2U3NTRjZjQ2Y2U1MDMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMDczNwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVR
bFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVPXygKelgtUV81aERIX14kdGg7MHNwalUxc2ZrN3cjel9X
ZGk2K0xERFcrZX1LUCgwNlk0JnQrNDU/c3pkKUtrPVlNNi1ZCnojZ0hSXm1kQTcmRj1UbnFgSUcp
cmNiQ2slKTJCPGVXcWtQaF94PHwpZjBQXj03I052WUkwT19OOFY8MHR7UUd5bgp6KnJvfEMwJVpL
PjxQZk1BMWp8RSZmNlFvTF8kamZLVEBhYFBzIStrPGsxVEBjQEYxQ3E9fUdieElUeDZgTHFofEAK
eiQ4clJacHxQS25WP3V2bXdFKWEmcGg1ZlZseiNtQl4oKnQhP2ZjKkZfeHpjNUpZTldJPF9AbXxg
eHwxdT8lYjtiCnoqVS0yYlh2diFXJVl+NT9JZ0Z8cTRJZn50OThEVnBeVHF5dT9+bThsKjhhVnl5
bD87aHwxWnd9SmA1PVh6JllCKwp6OWhsdjBvPTUtaU1DQUtEYVNqYzh7c350KkxKSkZeIXQ7VXgz
Zz5AeylkP1lsKXs2QCR0cDklYFpVVkdxMDJWNjYKekVHI0ZBX3FFUCVLP3VFT1dqWFFNZXh0WXd5
YWYzbSFecnEpUFgwcjZNVEFmbFEwU05jOCYqekcqI3ZjJCF5c14wCnpXNCEmfGh1Xjx7X1pReXBr
NmZteUpjeEc/bmspIzxmczlQdGpFdEtDTn1BeXdYSn1NVzcqI1NGRXw2UmBuaSM7QAp6ZE5oLU9p
bnIwa0ZxIzxQSE9GWFQ3KT1iTGlEOSVZSFFJbSNIfm1NOCFfbmUhdl5YM3M0bzhjXyhjJXk+KUhL
Pn0KejlQS3k0JDFGel4hKVJne08kPylCJjcpbX4oWFBVMVM3RWZQRnhwaVo/SkE2UjYtRm5ZTjlX
WmJZYlFxZ04yQzN0CmkoZiQjQWBiVWxSNENSdTc+d2g9UVNfRTlmJD44Ymc9ZCNXenAkUHl7XlRD
WSgKCmxpdGVyYWwgMzMzMQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVR
bFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVRNSQKejdEO0JOJHRnKlI3R18zPyM+d1chRFhCKGpOdjVm
JGlINTFrI153dGc0ZG9kYWMmMil+SUVHWnJkMylFOD9+bnJ6CnpnQ3BQRnxOQz58OGlFfG1uJEJE
aXp4bm8qPiROanltPkMhcEtKMk10V01GdDskSEt3REZoTE0jeHIxOCsmezljOAp6Q0kqSFNna1lN
eVpBNytjXmA1OFpzdGdQdD58LTFsNyNleVFmSTV3c1NRcj5pYTBtZDZRWUtzUSYxVXY5WEtwRzMK
eiY2SSEwZ2xhS1gqQU9xNUhzM2EzP2JuT25qWHk4LTFzY0Q0Q3BPTyFaeWRWSG85X0grJVdlUn1h
UjtMfldrRW47CnoyIyN0ZUpNb1BNLUR1RUpzfntVcU9RVUlORyVab3lBUTtVQHF4b253OX1UeUJx
fkN1KVdaalA2M3N5NCNmdjJtVgpKJVF+bG9DSUo2MShzfT5ACgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3Rl
ZC50eHQKaW5kZXggOWE2ZmJlZGEyMzI5ODhkOGRjMjVmOTVlMzg4Y2RmZDMzMzIxZmJhOS4uNWZi
NmYzZmEyYjU1M2EzYzdkY2ZlZjI4ZjVhYmJhODU3YjM3MDFiYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbmRlci1pbmxpbmUtZXhw
ZWN0ZWQudHh0CkBAIC0zLDIwICszLDE5IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAog
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1
ODQKLSAgICAgIFJlbmRlckJsb2NrIHtTVU1NQVJZfSBhdCAoMCwwKSBzaXplIDc4NHg0OAotICAg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgwCi0gICAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDAKKyAgICAgIFJlbmRl
ckJsb2NrIHtTVU1NQVJZfSBhdCAoMCwwKSBzaXplIDc4NHg2NAogICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgxNgogICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2eDE2CiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAxNjogImEiCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDE2eDE2Ci0gICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE2LDApIHNpemUg
MTZ4MTYKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdpZHRoIDE2OiAiYiIKICAg
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTYpIHNpemUgNzg0eDE2CisgICAg
ICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDE2eDE2CisgICAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNngxNgorICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjogImIiCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDMyKSBzaXplIDc4NHgxNgogICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDApIHNpemUgNzg0eDE2CiAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxNngxNgogICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAx
NjogImMiCi0gICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDMyKSBzaXplIDc4
NHgxNgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw0OCkgc2l6ZSA3ODR4
MTYKICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMTZ4MTYKICAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2eDE2CiAgICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2OiAiZCIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZGY2MWZkNTdmMmZlZWY4YWMz
NDBiMWI3OTJjZmUxMmYyMzUxOTAzLi5jMGNlN2QyZjUzZGRiNGVjZGYxMjUxMWFlNWNhOGY0NTU2
Nzk4ODFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRp
b25zCkBAIC0yNzEsNiArMjcxLDcgQEAgd2Via2l0Lm9yZy9iLzk4OTYwIGZhc3QvcGFyc2VyL2Rv
Y3VtZW50LW9wZW4taW4tdW5sb2FkLmh0bWwgWyBTa2lwIF0KICMgRU5BQkxFKFNIQURPV19ET00p
IGlzIGRpc2FibGVkLgogd2Via2l0Lm9yZy9iLzc2MzU5IGVkaXRpbmcvc2hhZG93IFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvNzYzNTkgZmFzdC9kb20vc2hhZG93IFsgU2tpcCBdCitpbnNwZWN0b3Iv
ZWxlbWVudHMvc2hhZG93LXJvb3QuaHRtbCBbIFNraXAgXQogCiAjIGZhc3QvZXZlbnRzL2NvbnRy
b2xjbGljay1uby1vbmNsaWNrLmh0bWwgZmFpbHMgb24gTWFjIFdLMgogd2Via2l0Lm9yZy9iLzEw
NTk0OCBmYXN0L2V2ZW50cy9jb250cm9sY2xpY2stbm8tb25jbGljay5odG1sIFsgRmFpbHVyZSBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDlkZWZmNTQx
Yzk2OTE3YWVjNjA3MGY1NmYwNjZmYmMwMGRhOWE0ZDUuLjFiYTcwNmFlMzBkYTFlY2NmNTQ3OGVi
YjVhYmM1ZjM3ZDA5MWYxNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0
YXRpb25zCkBAIC00MjYsNiArNDI2LDcgQEAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1m
bG93Lmh0bWwKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hh
ZG93CiBlZGl0aW5nL3NoYWRvdworaW5zcGVjdG9yL2VsZW1lbnRzL3NoYWRvdy1yb290Lmh0bWwK
IGluc3BlY3Rvci9lbGVtZW50cy91cGRhdGUtc2hhZG93ZG9tLmh0bWwKIGFjY2Vzc2liaWxpdHkv
Y29ycmVzcG9uZGluZy1jb250cm9sLWRlbGV0ZWQtY3Jhc2guaHRtbAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVkLTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLW5lc3Rl
ZC0yLWV4cGVjdGVkLnR4dAppbmRleCBjMWZjNDdmZWFiNTdkNzU3ZDVlNTk5NTk5MDFmYTBiMTFh
MjNlNGJlLi4yYjkyYjBiOTk3MDc0YzlmNDc5MDMwMWY0NDc4NWMwZWViMDk1ZDhlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVkLTIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0
YWlscy1uZXN0ZWQtMi1leHBlY3RlZC50eHQKQEAgLTksNyArOSw2IEBAIGxheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjQsOCkgc2l6
ZSA2M3gxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI0LDgpIHdpZHRoIDU6ICIgIgogICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDI4LDgpIHdpZHRoIDU5OiAic3VtbWFyeSIKLSAgICAgICAg
UmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDgsNDIpIHNpemUgNzY4eDAKICAgICAgICAgUmVu
ZGVyQmxvY2sge0RFVEFJTFN9IGF0ICg4LDQyKSBzaXplIDc2OHg2OCBbYm9yZGVyOiAoOHB4IHNv
bGlkICM5OTU1NTUpXQogICAgICAgICAgIFJlbmRlckJsb2NrIHtTVU1NQVJZfSBhdCAoOCw4KSBz
aXplIDc1MngzNCBbYm9yZGVyOiAoOHB4IHNvbGlkICNDQzk5OTkpXQogICAgICAgICAgICAgUmVu
ZGVyRGV0YWlsc01hcmtlciB7RElWfSBhdCAoOCwxMikgc2l6ZSAxMXgxMTogZG93bgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184617</attachid>
            <date>2013-01-24 17:23:48 -0800</date>
            <delta_ts>2013-01-24 22:22:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130125102039.patch</filename>
            <type>text/plain</type>
            <size>75902</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjNjY1YjFlNWRiNTli
NmM2NmYyZDMzZDcyYmVkYzQ3Y2NkNDhhNS4uODVlNWU4NzRiYzZkZmU5ODg2MGE2OWVjZTE5Y2Y1
MzllNDc1NjA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxMy0wMS0yNCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGhpZGVzIG9uZSBvZiB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJ0IG9mIFNoYWRvdworICAgICAg
ICBET00gc3RhbmRhcmQsIHRoYXQgaXMgbm9kZSBkaXN0cmlidXRpb24uIFR3byBtYWpvciBjbGFz
c2VzCisgICAgICAgIENvbnRlbnREaXN0cmlidXRvciBhbmQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIGFyZSBtb3ZlZCBiZWhpbmQKKyAgICAgICAgRU5BQkxFX1NIQURPV19ET00gZmxhZy4KKwor
ICAgICAgICBTaW5jZSA8ZGV0YWlscz4gYW5kIDxzdW1tYXJ5PiB1c2VzIHRoaXMgbWVjaGFuaXNt
IGludGVybmFsbHksCisgICAgICAgIHRoaXMgY2hhbmdlIG5lZWRzIHRvIGNvbXBlbnNhdGUgdGhl
bS4gU2hhZG93VHJlZVdhbGtlciBpcyBpbnRyb2R1Y2VkCisgICAgICAgIGZvciB0aGF0IHB1cnBv
c2UuIFNoYWRvd1RyZWVXYWxrZXIgaXMgYSBzaW1wbGlmaWVkIGltcGxlbWVudGF0aW9uIG9mCisg
ICAgICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciwgd2hpY2ggaGFzIGEgc3Vic2V0IG9mIENT
VFcgQVBJLgorICAgICAgICBUaGUgYWxnb3JpdGhtIGltcGxlbWVudGVkIGJ5IFNoYWRvd1RyZWVX
YWxrZXIgc2hvdWxkIGJlIHNpbXBsZXIKKyAgICAgICAgYmVjYXVzZSBpdCBuZWVkcyBubyBleHRy
YSBwZXJzaXN0ZW50IHN0YXRlcyB0byBET00gb2JqZWN0cy4KKworICAgICAgICBJbnNlcnRpb25Q
b2ludCBpcyBhbm90aGVyIHBpZWNlIHdoaWNoIGlzIG9ubHkgdXNlZCBieSBTSEFET1dfRE9NIGFu
ZAorICAgICAgICBERVRBSUxTX0VMRU1FTlQgYW5kIGl0IHNob3VsZCBiZSBtb3ZlZCBiZWhpbmQg
dGhlIGZsYWcgdG9vLiBUaGF0IHdpbGwKKyAgICAgICAgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIGNo
YWduZSAoQnVnIDEwNzYyMSkKKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjptYXRj
aFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkSG9zdFJ1bGUpOgor
ICAgICAgICAqIGNzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFN0eWxlU2NvcGVS
ZXNvbHZlcik6CisgICAgICAgICogZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KToKKyAgICAgICAgKiBkb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcDoKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAq
IGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6
OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6cmVtb3Zl
QWxsU2hhZG93Um9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YXR0YWNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFNoYWRvdzo6ZGlzdHJpYnV0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
aW52YWxpZGF0ZURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjplbnN1cmVEaXN0cmlidXRpb24pOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmNwcDoKKyAgICAgICAgKFNoYWRvd1RyZWVXYWxrZXIpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OlNoYWRvd1Ry
ZWVXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hh
ZG93VHJlZVdhbGtlcjo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpuZXh0U2libGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpw
cmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6U2hhZG93VHJlZVdhbGtlcjo6bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OmZpcnN0Q2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6bmV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVl
V2Fsa2VyOjpwcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjppc1NoYWRvd0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OmZpbmRJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpnZXREaXN0cmlidXRlZE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtl
cjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlv
dXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVl
V2Fsa2VyOjpuZXh0SW5jbHVkaW5nQ29udGFpbmluZ1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzSW5jbHVk
aW5nQ29udGFpbmluZ1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnBhcmVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6bmV4dFNpYmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdU
cmF2ZXJzYWw6OnByZXZpb3VzU2libGluZ1Nsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ1RyYXZlcnNhbDo6bmV4dEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bGFzdENoaWxkSW5TY29wZSk6CisgICAgICAgICogZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50KToK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzU2hhZG93
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dS
b290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHA6CisgICAgICAgIChEZXRhaWxzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpmYWxsYmFja1N1bW1hcnkpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRNYWlu
U3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50Lmg6
CisgICAgICAgIChIVE1MRGV0YWlsc0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVU
eXBlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9D
b250ZW50U2VsZWN0b3JRdWVyeS5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5oOgorICAgICAgICAoSFRNTENvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVJbnNl
cnRpb25Qb2ludDo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9u
UG9pbnQ6Om1hdGNoVHlwZUZvcik6CisgICAgICAgIChTaW1wbGVJbnNlcnRpb25Qb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVJbnNlcnRpb25Qb2ludDo6YWx3YXlzTWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aXNTaGFkb3dCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6cmVzZXRTdHlsZUluaGVyaXRhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjp0b0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTG93ZXJF
bmNhcHN1bGF0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVG
ZWF0dXJlU2V0LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNl
dC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VzZUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAtIFdl
IHNob3VsZCBoYXZlIGhhZCB0aGlzIHNpbmNlIDx1c2U+IGRvZXNuJ3QgcmVuZGVyIGl0cyAobm9u
LXNoYWRvdykgY2hpbGRyZW4uCisgICAgICAgICAgSXQgd29ya2VkIGJlZm9yZSBqdXN0IGJ5IGFj
Y2lkZW50LiBEaXNhYmxpbmcgbm9kZSBkaXN0cmlidXRpb24gcmV2ZWxzIHRoZSBwcm9ibGVtLgor
ICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgIChTVkdVc2VFbGVtZW50KToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Omhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpoYXNTaGFkb3dJbnNlcnRpb25Qb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6Y291bnRFbGVtZW50U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6bmV4dFNpYmxpbmdCeVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omxhc3RDaGlsZEJ5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bmV4dE5v
ZGVCeVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5
V2Fsa2VyKToKKwogMjAxMy0wMS0yNCAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlYXVAbmRz
LmNvbT4KIAogICAgICAgICBOUE5fSW5pdGlhbGl6ZVZhcmlhbnRXaXRoU3RyaW5nQ29weSBpcyB3
cm9uZyBmb3IgcGxhdGZvcm1zIHJldHVybmluZyBOVUxMIGZyb20gbWFsbG9jKDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggOWUyMjk5MDVlMmJmMTk2NTMxMmMzOGJlZDFmZjRkZDU0NDczNGNhZS4uNGYx
YzMzMTFlYjkxZGQxYmZmMTM1N2VkMTc2YjliOTIwYzc2ZjYzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDEzLTAxLTI0ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gUHV0IG5vZGUgcmVwcm9qZWN0aW9uIGNv
ZGUgYmVoaW5kIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmlu
OiBNb3ZlZCBzb21lIHN5bWJvbHMgYmVoaW5kIEVOQUJMRShTSEFET1dfRE9NKSBmbGFnLgorCiAy
MDEzLTAxLTI0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgT2JqZWN0aXZlLUMgQVBJOiBSZW5hbWUgSlNWYWx1ZS5oL0FQSUpTVmFsdWUuaCB0byBK
U0NKU1ZhbHVlLmgvSlNWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDg0Y2I0ZjlhOTRi
ZDY3MGZhN2NjMDRhNGFiZDI0N2IxZDM1ZmEzZTUuLjNmZjQxYzAyMWNiY2I0YzhiNjg5MTFjZGMx
YTYzNzAwOGFjYjBkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC01MTgsNyArNTE4LDYgQEAg
X19aTjdXZWJDb3JlMTd1c2VyVmlzaWJsZVN0cmluZ0VQNU5TVVJMCiBfX1pON1dlYkNvcmUxOERP
TVdpbmRvd0V4dGVuc2lvbkMxRVBOU181RnJhbWVFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19a
TjdXZWJDb3JlMTBQYXN0ZWJvYXJkMTdnZW5lcmFsUGFzdGVib2FyZEV2CiBfX1pON1dlYkNvcmUx
MFBhc3RlYm9hcmQxNHdyaXRlUGxhaW5UZXh0RVJLTjNXVEY2U3RyaW5nRU5TMF8xOFNtYXJ0UmVw
bGFjZU9wdGlvbkUKLV9fWk43V2ViQ29yZTE4Q29udGVudERpc3RyaWJ1dG9yMjJlbnN1cmVTZWxl
Y3RGZWF0dXJlU2V0RVBOU18xM0VsZW1lbnRTaGFkb3dFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3Jt
UGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2Fy
ZDEzYnVmZmVyRm9yVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1Q
YXN0ZWJvYXJkMTNzdHJpbmdGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQpAQCAtNjU3LDExICs2NTYs
NiBAQCBfX1pON1dlYkNvcmUyM2VuY29kZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05T
UmFuZ2UKIF9fWk43V2ViQ29yZTIzZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNFUktOU18yMU5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkVSTjNXVEY3SGFzaFNldElOUzNfNlN0cmluZ0VOUzNfMTBTdHJpbmdI
YXNoRU5TM18xMEhhc2hUcmFpdHNJUzVfRUVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0
eUxpc3RXcml0ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYKIF9fWk43V2ViQ29yZTI0Q2FjaGVkUmVz
b3VyY2VIYW5kbGVCYXNlMTFzZXRSZXNvdXJjZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUUKLV9fWk43
V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyMTBmaXJzdENoaWxkRXYKLV9fWk43V2Vi
Q29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyMTFuZXh0U2libGluZ0V2Ci1fX1pON1dlYkNv
cmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjRuZXh0RXYKLV9fWk43V2ViQ29yZTI0Q29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOHByZXZpb3VzRXYKLV9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOWxhc3RDaGlsZEV2CiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2Vy
VHlwZXNFCiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEzcmVtb3ZlTWFy
a2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTFNYXJrZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyMThhZGRUZXh0TWF0Y2hNYXJrZXJFUEtOU181UmFuZ2VFYgpA
QCAtNjcxLDkgKzY2NSw2IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
MTRmcmFtZURlc3Ryb3llZEV2CiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
cjE0d2lsbERldGFjaFBhZ2VFdgogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXJDMkVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJE
MkV2Ci1fX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hhZG93RWxl
bWVudEVQS05TXzEwU2hhZG93Um9vdEUKLV9fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uMThjb3VudEVsZW1lbnRTaGFkb3dFUEtOU18xMFNoYWRvd1Jvb3RFCi1fX1pON1dlYkNv
cmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE3aGFzQ29udGVudEVsZW1lbnRFUEtOU18xMFNo
YWRvd1Jvb3RFCiBfX1pON1dlYkNvcmUyNGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cEVQTlNfOERv
Y3VtZW50RVJLTjNXVEY2U3RyaW5nRVM1X05TXzI3RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9u
RQogX19aTjdXZWJDb3JlMjRkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTjNXVEY2U3RyaW5nRQpAQCAtMTI1MCw4ICsxMjQxLDYgQEAgX19aTks3
V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xOGlzRm9jdXNlZEFuZEFjdGl2ZUV2CiBfX1pOSzdXZWJD
b3JlMTRGcmFtZVNlbGVjdGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNX
VEY2VmVjdG9ySU5TXzlGbG9hdFJlY3RFTG0wRUVFCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVj
dGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNv
cmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0ViCi1fX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2lu
dDE5Z2V0RGlzdHJpYnV0ZWROb2Rlc0V2Ci1fX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhp
c0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4dEV2CiBf
X1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRkYXRhRXYKIF9fWk5LN1dlYkNvcmUxNFJlc291
cmNlQnVmZmVyNHNpemVFdgpAQCAtMjUzOSw2ICsyNTI4LDE4IEBAIF9fWk43V2ViQ29yZTlGcmFt
ZVZpZXcyNXNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnNFZAogX19aTjdXZWJDb3JlMjJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFCiBfX1pON1dlYkNvcmUyMlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMzN2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWRF
CiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUxOENvbnRlbnREaXN0cmlidXRvcjIy
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEVQTlNfMTNFbGVtZW50U2hhZG93RQorX19aTjdXZWJDb3Jl
MjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xNmhhc1NoYWRvd0VsZW1lbnRFUEtOU18xMFNoYWRv
d1Jvb3RFCitfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDE5Z2V0RGlzdHJpYnV0ZWROb2Rl
c0V2CitfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CitfX1pON1dlYkNv
cmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE4Y291bnRFbGVtZW50U2hhZG93RVBLTlNfMTBT
aGFkb3dSb290RQorX19aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xN2hhc0Nv
bnRlbnRFbGVtZW50RVBLTlNfMTBTaGFkb3dSb290RQorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyNG5leHRFdgorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI4
cHJldmlvdXNFdgorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI5bGFzdENo
aWxkRXYKK19fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3Vt
ZW50RQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCkBAIC0yNzM2LDEwICsy
NzM3LDYgQEAgX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRUZXh0RWRnZVN0eWxlCiBfd2tDYXB0aW9u
QXBwZWFyYW5jZUdldFNldHRpbmdzQ2hhbmdlZE5vdGlmaWNhdGlvbgogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLV9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQotI2VuZGlmCi0KICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiBfX1pO
N1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOWlzQ1NTUmVnaW9uc0VuYWJsZWRFCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBiMjYzZDgwNmI4NTk1
ODZjN2MxNGNmZjMxZjk4MGE0MzI1MjM2NWJhLi4yMjEzMThhNzBkOTM5Y2M2MDQxYjJiZmFjZmE5
YzE2YzE3ZDM5MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC03NjIs
NyArNzYyLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhN
YXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0CiAgICAgICAgIH0KICAgICB9CiAK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtYXRjaEhvc3RSdWxlcyhyZXN1bHQsIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyNlbmRpZgorCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQp
OwogICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlRW1wdHlSdWxlcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCmluZGV4IDhhY2FiZTUwYWU3MmQxYmUxN2Q0YTM1Zjdi
MzZjZjM2NGRhZjIyYjcuLmE2MzU3MGE0M2I1NTNjMTFlYzVhMjczODhkYTkyYTE4MDgxN2Y0YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCkBAIC0xOTIsNyAr
MTkyLDYgQEAgdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6OmFkZEhvc3RSdWxlKFN0eWxlUnVsZUhv
c3QqIGhvc3RSdWxlLCBib29sIGhhc0RvY3VtZW50U2UKICAgICAgICAgICAgIHJ1bGUtPmFkZFN0
eWxlUnVsZShzdGF0aWNfY2FzdDxTdHlsZVJ1bGUqPihob3N0U3R5bGluZ1J1bGUpLCBhZGRSdWxl
RmxhZ3MpOwogICAgIH0KIH0KLSNlbmRpZgogCiBib29sIFN0eWxlU2NvcGVSZXNvbHZlcjo6c3R5
bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50
KQogewpAQCAtMjM3LDYgKzIzNiw3IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjptYXRjaEhv
c3RSdWxlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8UnVsZVNldCo+CiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CiB9CisjZW5kaWYKIAogdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKaW5kZXggM2JlM2Zm
NGY3MGM3Mzc1YmQwMTQyNmEwMGJhNDI0MTI4NDYyY2MwZS4uYzVmNzc2ZjNhZTE0MTE3NDI0ODg5
N2Y2OTk4ODEzZTRjZjkyNDgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2NvcGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuaApAQCAtNzUsOSArNzUsMTEgQEAgcHVibGljOgogICAgIGJvb2wgbWF0Y2hlc1N0eWxlQm91
bmRzKGNvbnN0IFN0YWNrRnJhbWUmIGZyYW1lKSBjb25zdCB7IHJldHVybiBmcmFtZS5tX2F1dGhv
clN0eWxlQm91bmRzSW5kZXggPT0gbV9zdGFja1BhcmVudEJvdW5kc0luZGV4OyB9CiAgICAgdm9p
ZCBjb2xsZWN0RmVhdHVyZXNUbyhSdWxlRmVhdHVyZVNldCYpOwogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgdm9pZCBhZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiwgYm9vbCBoYXNEb2N1
bWVudFNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSk7CiAgICAgYm9v
bCBzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqKTsK
ICAgICB2b2lkIG1hdGNoSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqLCBWZWN0b3I8UnVsZVNldCo+
JiBtYXRjaGVkUnVsZXMpOworI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hh
aW5XYWxrZXIuY3BwCmluZGV4IDk3MGNkYzIwNTk3YzUwYjIxOGRmNDMxMDM4ZTZjNThiOWVhYmFh
ZTYuLjViN2NlZTgyY2Q1MjUxOTNhMTRhNzA1NTU1ZTk0MGY1YmNkOGUzMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgdm9p
ZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogewogICAgIEFTU0VSVChtX25vZGUpOwog
ICAgIEFTU0VSVChtX2Rpc3RyaWJ1dGVkTm9kZSk7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobV9ub2RlKSkg
ewogICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5k
aXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihtX2Rpc3RyaWJ1dGVkTm9kZSkpIHsK
ICAgICAgICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OwpAQCAtNTIsMjAgKzU0LDMwIEBA
IHZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFtX25vZGUtPmlzU2hhZG93Um9v
dCgpKSB7CiAgICAgICAgIG1fbm9kZSA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgICAgICBpZiAoIShtX25vZGUgJiYgbV9ub2RlLT5pc1NoYWRvd1Jv
b3QoKSAmJiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290
KG1fbm9kZSkpKSkKICAgICAgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOwogICAg
ICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOworI2Vsc2UKKyAgICAgICAg
bV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CisgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlv
blBvaW50ID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNv
bnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3QobV9ub2RlKTsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
ID0gU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHNoYWRvd1Jvb3QpKSB7CiAg
ICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OwogICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNl
cnRpb25Qb2ludCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKKwogICAg
IG1fbm9kZSA9IHNoYWRvd1Jvb3QtPmhvc3QoKTsKICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1f
bm9kZTsKICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBhYjU4ZDYx
NTJiYzYwZDkwNTE3YWU0YWI4Y2VlYTA3YjQ4ZmNiMThjLi5kMjMwZjg2NDg3ODI0NmY2OTAzOGM0
ZGE3YmEzMTZjOWZmZDQ0ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyLmNwcApAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTI4LDYgKzI3
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ29udGVudERp
c3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFk
b3cuaCIKQEAgLTMxMywzICszMTQsNSBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6
cHJldmlvdXMoKQogfQogCiB9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURP
V19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgK
aW5kZXggODM0OWUyMWFhOTgzZjBhODRhMTEzYzE2NzgwZTQ5ZWM2NzY2NGYzZS4uMmYwMmE3YzNi
YzQ1NTA1ZjViNDI4Mjg1M2VhNmQyODNmMzhmZjE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOb2Rl
OwpAQCAtMTQzLDQgKzE0NSw1IEBAIGlubGluZSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcihjb25zdCBOb2RlKiBub2RlLCBQb2xpCiAKIH0gLy8gbmFt
ZXNwYWNlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCmluZGV4IDBiODVmZmUzMzBmNzY4MjNkNWFjM2I1MDNiYWY2NmZiZWM0NzFjZWUu
LjJlNjkwZWIzMmFiMjgxNWU3ODg4OTBiMmUyODNiYTk2Yzg4ZjQ0NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKQEAgLTgwOCwxMCArODA4LDEyIEBAIHN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHls
ZUludmFsaWRhdGlvbkZvcklkQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvCiAK
IHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIGlmIChFbGVtZW50U2hhZG93KiBwYXJlbnRFbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQ
YXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpIHsKICAgICAgICAgaWYgKHNob3VsZEludmFsaWRh
dGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChwYXJlbnRFbGVtZW50U2hhZG93LCBu
YW1lLCBuZXdWYWx1ZSkpCiAgICAgICAgICAgICBwYXJlbnRFbGVtZW50U2hhZG93LT5pbnZhbGlk
YXRlRGlzdHJpYnV0aW9uKCk7CiAgICAgfQorI2VuZGlmCiAKICAgICBwYXJzZUF0dHJpYnV0ZShu
YW1lLCBuZXdWYWx1ZSk7CiAKQEAgLTk0OCw2ICs5NTAsNyBAQCB2b2lkIEVsZW1lbnQ6OmNsYXNz
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogCiBi
b29sIEVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hh
bmdlZChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93LCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIEFTU0VSVChlbGVtZW50U2hhZG93KTsKICAgICBjb25zdCBTZWxlY3RSdWxlRmVh
dHVyZVNldCYgZmVhdHVyZVNldCA9IGVsZW1lbnRTaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZW5zdXJl
U2VsZWN0RmVhdHVyZVNldChlbGVtZW50U2hhZG93KTsKIApAQCAtOTc5LDYgKzk4MiwxMiBAQCBi
b29sIEVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hh
bmdlZChFbGVtZW50U2hhZG93KiBlbAogICAgIH0KIAogICAgIHJldHVybiBmZWF0dXJlU2V0Lmhh
c1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oZWxlbWVudFNoYWRvdyk7CisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIFVO
VVNFRF9QQVJBTShuZXdWYWx1ZSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIC8v
IFJldHVybnMgdHJ1ZSBpcyB0aGUgZ2l2ZW4gYXR0cmlidXRlIGlzIGFuIGV2ZW50IGhhbmRsZXIu
CkBAIC0xNDU1LDkgKzE0NjQsMTIgQEAgRWxlbWVudFNoYWRvdyogRWxlbWVudDo6ZW5zdXJlU2hh
ZG93KCkKIAogdm9pZCBFbGVtZW50OjpkaWRBZmZlY3RTZWxlY3RvcihBZmZlY3RlZFNlbGVjdG9y
TWFzayBtYXNrKQogeworICAgIFVOVVNFRF9QQVJBTShtYXNrKTsKICAgICBzZXROZWVkc1N0eWxl
UmVjYWxjKCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cq
IGVsZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKSkKICAg
ICAgICAgZWxlbWVudFNoYWRvdy0+ZGlkQWZmZWN0U2VsZWN0b3IobWFzayk7CisjZW5kaWYKIH0K
IAogUGFzc1JlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KEV4Y2Vw
dGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmluZGV4IDMyZGQ0
ZjA0ZDU3YWVhYzQwMzJlZWFmMmZkMWVmY2NmNTI2OGFlNGQuLmM0Y2U2MjQ3NzUwZmFmMzkyMzBh
NmI3ZWQ5NWQ1YWNkOTI2ZjVkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAK
QEAgLTgyLDcgKzgyLDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KEVsZW1l
bnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAgICBzaGFkb3dSb290
LT5zZXRIb3N0KHNoYWRvd0hvc3QpOwogICAgIHNoYWRvd1Jvb3QtPnNldFBhcmVudFRyZWVTY29w
ZShzaGFkb3dIb3N0LT50cmVlU2NvcGUoKSk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRv
d1Jvb3QuZ2V0KCkpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIG1fZGlzdHJpYnV0b3Iu
ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2Uoc2hhZG93SG9zdCk7CisjZW5kaWYKICAgICBDaGlsZE5v
ZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7
CiAKICAgICAvLyBFeGlzdGVuY2Ugb2Ygc2hhZG93IHJvb3RzIHJlcXVpcmVzIHRoZSBob3N0IGFu
ZCBpdHMgY2hpbGRyZW4gdG8gZG8gdHJhdmVyc2FsIHVzaW5nIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci4KQEAgLTExNywxMyArMTE5LDE2IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxs
U2hhZG93Um9vdHMoKQogICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9z
dCkubm90aWZ5KG9sZFJvb3QuZ2V0KCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsK
KyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmF0dGFjaCgpCiB7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24o
eW91bmdlc3RTaGFkb3dSb290KCkpOwotCisjZW5kaWYKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJv
b3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93
Um9vdCgpKSB7CiAgICAgICAgIGlmICghcm9vdC0+YXR0YWNoZWQoKSkKICAgICAgICAgICAgIHJv
b3QtPmF0dGFjaCgpOwpAQCAtMTczLDcgKzE3OCwxMCBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgICAgIGluZm8uYWRkTWVtYmVyKHNoYWRvd1Jvb3QpOwogICAgICAgICBzaGFkb3dSb290
ID0gc2hhZG93Um9vdC0+bmV4dCgpOwogICAgIH0KKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIGluZm8uYWRkTWVtYmVyKG1fZGlzdHJpYnV0b3IpOworI2VuZGlmCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAppbmRleCA4OTMzNjNiYmE4N2I0ODhl
N2FmZDEyZDAyODVjZDRhNTQ0NDFlYTczLi4wMDUyZWNkNmFmZTlhYmQ2OWE4ZDQ0ZDI0ZmE3ZDlm
YWQ5MzM0MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKQEAgLTYzLDE4ICs2Mywy
NiBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgdm9pZCByZWNh
bGNTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSk7CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0
ZURpc3RyaWJ1dGlvbihob3N0KCkpOyB9CiAgICAgdm9pZCBkaWRBZmZlY3RTZWxlY3RvcihBZmZl
Y3RlZFNlbGVjdG9yTWFzayBtYXNrKSB7IG1fZGlzdHJpYnV0b3IuZGlkQWZmZWN0U2VsZWN0b3Io
aG9zdCgpLCBtYXNrKTsgfQogICAgIHZvaWQgd2lsbEFmZmVjdFNlbGVjdG9yKCkgeyBtX2Rpc3Ry
aWJ1dG9yLndpbGxBZmZlY3RTZWxlY3Rvcihob3N0KCkpOyB9CiAKLSAgICBDb250ZW50RGlzdHJp
YnV0b3ImIGRpc3RyaWJ1dG9yKCk7Ci0gICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0
cmlidXRvcigpIGNvbnN0OworICAgIENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSB7
IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CisgICAgY29uc3QgQ29udGVudERpc3RyaWJ1dG9yJiBk
aXN0cmlidXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KKyNlbHNlCisgICAg
dm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyB9CisgICAgdm9pZCBlbnN1cmVEaXN0cmli
dXRpb24oKSB7IH0KKyNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7Ci1wcml2YXRlOgogCitwcml2YXRlOgogICAgIERvdWJseUxpbmtl
ZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKKworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIENvbnRlbnREaXN0cmlidXRvciBtX2Rpc3RyaWJ1dG9yOworI2VuZGlmCiB9OwogCiBp
bmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6eW91bmdlc3RTaGFkb3dSb290KCkgY29u
c3QKQEAgLTg3LDE2ICs5NSw2IEBAIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93Ojpv
bGRlc3RTaGFkb3dSb290KCkgY29uc3QKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7
CiB9CiAKLWlubGluZSBDb250ZW50RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1
dG9yKCkKLXsKLSAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQotaW5saW5lIGNvbnN0IENv
bnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6ZGlzdHJpYnV0b3IoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwotfQotCiBpbmxpbmUgRWxlbWVudCogRWxlbWVudFNo
YWRvdzo6aG9zdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX3NoYWRvd1Jvb3RzLmlzRW1wdHko
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNh
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKaW5k
ZXggODNiYjdlYzdlNzllZjJmMjE2M2VmMDc3NTM3OWQ3NzdlNjllZmZmMi4uYzdhZTAwYWQxYTEx
MjY5NDcxYTc1YTU3ZWY1OTZlOTM1N2Q2NDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtMjgsMTIgKzI4LDIwMCBAQAogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKIAogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVUcmF2ZXJz
YWwuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogbmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwgewogCisvLyBBIHNpbXBsaWZpZWQg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLWNvbXBhdGlibGUgd2Fsa2VyIGltcGxlbWVudGF0aW9u
IGZvciBub24tU0hBRE9XX0RPTSBjb25maWd1cmF0aW9ucy4KK2NsYXNzIFNoYWRvd1RyZWVXYWxr
ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSog
bm9kZSkKKyAgICAgICAgOiBtX25vZGUobm9kZSkKKyAgICB7IH0KKworICAgIE5vZGUqIGdldCgp
IGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KKworICAgIHZvaWQg
cGFyZW50KCkgeyBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudChtX25vZGUpOyB9CisgICAgdm9pZCBu
ZXh0U2libGluZygpIHsgbV9ub2RlID0gdHJhdmVyc2VOZXh0U2libGluZyhtX25vZGUpOyB9Cisg
ICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUHJldmlvdXNTaWJs
aW5nKG1fbm9kZSk7IH0KKyAgICB2b2lkIGxhc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9ub2RlLT5s
YXN0Q2hpbGQoKTsgfQorICAgIHZvaWQgZmlyc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9ub2RlLT5m
aXJzdENoaWxkKCk7IH0KKworICAgIHZvaWQgbmV4dCgpIHsgbV9ub2RlID0gdHJhdmVyc2VOZXh0
KG1fbm9kZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzKCkgeyBtX25vZGUgPSB0cmF2ZXJzZVByZXZp
b3VzKG1fbm9kZSk7IH0KKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBO
b2RlKiwgUGFyZW50RGV0YWlscyogPSAwKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTm9kZSog
dHJhdmVyc2VOZXh0KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2
aW91cyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dFNpYmxpbmco
Y29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhj
b25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIG5leHRJbmNsdWRpbmdDb250YWluaW5nU2Nv
cGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBwcmV2aW91c0luY2x1ZGluZ0NvbnRh
aW5pbmdTY29wZShjb25zdCBOb2RlKik7CisgICAgc3RhdGljIGJvb2wgaXNTaGFkb3dCb3VuZGFy
eShOb2RlKiBub2RlKSB7IHJldHVybiBub2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBub2RlLT5pc0lu
c2VydGlvblBvaW50KCk7IH0KKworICAgIGNvbnN0IE5vZGUqIG1fbm9kZTsKK307CisKKyNpZiBF
TkFCTEUoREVUQUlMU19FTEVNRU5UKQorCitzdGF0aWMgSW5zZXJ0aW9uUG9pbnQqIGZpbmRJbnNl
cnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQoreworICAgIE5vZGUqIHBhcmVudCA9IG5vZGUt
PnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBTaGFkb3dSb290KiByb290ID0gcGFyZW50LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKKyAgICBp
ZiAoIXJvb3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgYm9vbCBoYXNJbnNlcmV0aW9uUG9p
bnQgPSBwYXJlbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpkZXRhaWxzVGFnKSB8fCBwYXJlbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzdW1tYXJ5VGFnKTsKKyAgICBpZiAoIWhhc0luc2VyZXRp
b25Qb2ludCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKE5vZGUqIG1heUluc2VydGlv
blBvaW50ID0gcm9vdC0+Zmlyc3RDaGlsZCgpOyBtYXlJbnNlcnRpb25Qb2ludDsgbWF5SW5zZXJ0
aW9uUG9pbnQgPSBtYXlJbnNlcnRpb25Qb2ludC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBp
ZiAobWF5SW5zZXJ0aW9uUG9pbnQtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlvblBv
aW50KG1heUluc2VydGlvblBvaW50KS0+YWx3YXlzTWF0Y2hlcyhjb25zdF9jYXN0PE5vZGUqPihu
b2RlKSkpCisgICAgICAgICAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChtYXlJbnNlcnRpb25Q
b2ludCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFZlY3RvcjxOb2Rl
Kj4gZ2V0RGlzdHJpYnV0ZWROb2RlKEluc2VydGlvblBvaW50KiBwYXJlbnQpCit7CisgICAgVmVj
dG9yPE5vZGUqPiBub2RlczsKKyAgICBFbGVtZW50KiBob3N0ID0gcGFyZW50LT5zaGFkb3dIb3N0
KCk7CisgICAgQVNTRVJUKGhvc3QpOworICAgIGlmICghaG9zdCkKKyAgICAgICAgcmV0dXJuIG5v
ZGVzOworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+YWx3
YXlzTWF0Y2hlcyhjaGlsZCkpCisgICAgICAgICAgICBub2Rlcy5hcHBlbmQoY2hpbGQpOworICAg
IH0KKworICAgIHJldHVybiBub2RlczsKK30KKworI2VuZGlmIC8vIEVOQUJMRShERVRBSUxTX0VM
RU1FTlQpCisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChj
b25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQoreworI2lmIEVOQUJMRShE
RVRBSUxTX0VMRU1FTlQpCisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9
IGZpbmRJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICBpZiAoZGV0YWlscykKKyAgICAg
ICAgICAgIGRldGFpbHMtPmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQp
OworICAgICAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6ZGV0YWlsc1RhZykgfHwgbm9kZS0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6c3VtbWFyeVRhZykpOworICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworICAg
IH0KKyNlbmRpZgorCisgICAgZm9yIChOb2RlKiB3YWxrID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpOyB3YWxrOyB3YWxrID0gd2Fsay0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIGlm
ICghaXNTaGFkb3dCb3VuZGFyeSh3YWxrKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAg
IH0KKworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6
dHJhdmVyc2VOZXh0KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2RlKiB3YWxrID0g
bmV4dEluY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShub2RlKTsgd2Fsazsgd2FsayA9IG5leHRJbmNs
dWRpbmdDb250YWluaW5nU2NvcGUod2FsaykpIHsKKyAgICAgICAgaWYgKCFpc1NoYWRvd0JvdW5k
YXJ5KHdhbGspKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7CisgICAgfQorCisgICAgcmV0dXJu
IDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3Vz
KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2RlKiB3YWxrID0gcHJldmlvdXNJbmNs
dWRpbmdDb250YWluaW5nU2NvcGUobm9kZSk7IHdhbGs7IHdhbGsgPSBwcmV2aW91c0luY2x1ZGlu
Z0NvbnRhaW5pbmdTY29wZSh3YWxrKSkgeworICAgICAgICBpZiAoIWlzU2hhZG93Qm91bmRhcnko
d2FsaykpCisgICAgICAgICAgICByZXR1cm4gd2FsazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK
K30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dFNpYmxpbmco
Y29uc3QgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQorICAgIGlm
IChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnQobm9k
ZSkpIHsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRl
ZE5vZGUoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAvLyBTdGF5aW5nIGluc2lk
ZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBpZiAoZGlzdHJpYnV0aW9uW2ldID09IG5vZGUg
JiYgZGlzdHJpYnV0aW9uLmxhc3QoKSAhPSBub2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBk
aXN0cmlidXRpb25baSArIDFdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBTdGVw
cGluZyBvdXQgZnJvbSBkaXN0cmlidXRlZCBsb2NhdGlvbgorICAgICAgICBub2RlID0gaW5zZXJ0
aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU3RlcHBpbmcgaW50byBkaXN0cmli
dXRpb24uCisgICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50KCkpIHsKKyAgICAgICAg
ICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0aW9uID0gZ2V0RGlzdHJpYnV0ZWROb2RlKHRvSW5z
ZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpKTsKKyAgICAgICAgICAgIGlmICgh
ZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0
aW9uLmZpcnN0KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBub2Rl
LT5uZXh0U2libGluZygpOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJh
dmVyc2VQcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogbm9kZSkKK3sKKyNpZiBFTkFCTEUoREVU
QUlMU19FTEVNRU5UKQorICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBm
aW5kSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmli
dXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICAvLyBTdGF5aW5nIGluc2lkZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBpZiAoZGlz
dHJpYnV0aW9uW2ldID09IG5vZGUgJiYgZGlzdHJpYnV0aW9uLmZpcnN0KCkgIT0gbm9kZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0aW9uW2kgLSAxXTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgLy8gU3RlcHBpbmcgb3V0IGZyb20gZGlzdHJpYnV0ZWQgbG9jYXRpb24K
KyAgICAgICAgbm9kZSA9IGluc2VydGlvblBvaW50OworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IFN0ZXBwaW5nIGludG8gZGlzdHJpYnV0aW9uLgorICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRp
b25Qb2ludCgpKSB7CisgICAgICAgICAgICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdl
dERpc3RyaWJ1dGVkTm9kZSh0b0luc2VydGlvblBvaW50KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUp
KSk7CisgICAgICAgICAgICBpZiAoIWRpc3RyaWJ1dGlvbi5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGRpc3RyaWJ1dGlvbi5sYXN0KCk7CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYKKworICAgIHJldHVybiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKK30KKworaW5saW5lIE5v
ZGUqIFNoYWRvd1RyZWVXYWxrZXI6Om5leHRJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29uc3Qg
Tm9kZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogd2FsayA9IE5vZGVUcmF2ZXJzYWw6Om5leHQo
bm9kZSkpCisgICAgICAgIHJldHVybiB3YWxrOworCisgICAgZm9yIChub2RlID0gdHJhdmVyc2VQ
YXJlbnQobm9kZSk7IG5vZGU7IG5vZGUgPSB0cmF2ZXJzZVBhcmVudChub2RlKSkgeworICAgICAg
ICBpZiAobm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5uZXh0
U2libGluZygpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgTm9kZSogU2hh
ZG93VHJlZVdhbGtlcjo6cHJldmlvdXNJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29uc3QgTm9k
ZSogbm9kZSkKK3sKKyAgICBpZiAoTm9kZSogd2FsayA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3Vz
KG5vZGUpKQorICAgICAgICByZXR1cm4gd2FsazsKKyAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQo
bm9kZSk7Cit9CisKIHZvaWQgUGFyZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2lu
dChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKCFtX2luc2VydGlv
blBvaW50KSB7CkBAIC00OSwxNCArMjM3LDI0IEBAIHZvaWQgUGFyZW50RGV0YWlsczo6ZGlkVHJh
dmVyc2VTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jvb3QqIHJvb3QpCiAKIENvbnRhaW5lck5vZGUq
IHBhcmVudFNsb3coY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fs
a2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6Q3Jvc3NVcHBlckJvdW5kYXJ5LCBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKKyNl
bHNlICAgICAgICAgICAgICAgICAgICAgIAorICAgIFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5v
ZGUpOworI2VuZGlmCisKICAgICBDb250YWluZXJOb2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9k
ZSh3YWxrZXIudHJhdmVyc2VQYXJlbnQod2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Ci0gICAgcmV0
dXJuIGRldGFpbHMtPm91dE9mQ29tcG9zaXRpb24oKSA/IDAgOiBmb3VuZDsKKyAgICByZXR1cm4g
ZGV0YWlscyAmJiBkZXRhaWxzLT5vdXRPZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CiB9CiAK
IE5vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogeworI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7Cisj
ZWxzZSAgICAgICAgICAgICAgICAgICAgICAKKyAgICBTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihu
b2RlKTsKKyNlbmRpZgorCiAgICAgaWYgKG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVudCgpKSB7
CiAgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKICAgICAgICAgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsK
QEAgLTY5LDEzICsyNjcsMTcgQEAgTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgTm9kZSogcGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUpOwogICAg
IGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiB0
b0VsZW1lbnQocGFyZW50KS0+cHNldWRvRWxlbWVudChBRlRFUik7Ci0KICAgICByZXR1cm4gMDsK
IH0KIAogTm9kZSogcHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogeworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIo
bm9kZSk7CisjZWxzZSAgICAgICAgICAgICAgICAgICAgICAKKyAgICBTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlcihub2RlKTsKKyNlbmRpZgorCiAgICAgaWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVt
ZW50KCkpIHsKICAgICAgICAgd2Fsa2VyLnBhcmVudCgpOwogICAgICAgICB3YWxrZXIubGFzdENo
aWxkKCk7CkBAIC05NCwzNCArMjk2LDQ2IEBAIE5vZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29u
c3QgTm9kZSogbm9kZSkKIAogTm9kZSogbmV4dEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsK
LSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2Vk
IHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxr
ZXIubmV4dCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBO
b2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpOworI2VuZGlmCiB9CiAKIE5vZGUqIHByZXZpb3VzSW5T
Y29wZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9z
c1VwcGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5wcmV2aW91cygpOwogICAgIHJldHVybiB3YWxr
ZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2Rl
KTsKKyNlbmRpZgogfQogCiBOb2RlKiBwYXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7
Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNl
ZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fs
a2VyLnBhcmVudCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVy
biBub2RlLT5wYXJlbnROb2RlKCk7CisjZW5kaWYKIH0KIAogTm9kZSogbGFzdENoaWxkSW5TY29w
ZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1Vw
cGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2Vy
LmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gbm9kZS0+bGFzdENoaWxkKCk7CisjZW5kaWYKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJz
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgKaW5kZXgg
MmRiM2U3NTk1Y2FjYzBmOWMwNWY4NmZmYTExN2JhZTQ4OGQ1ODgwNC4uNGNiNzdjYjI2NDQ4YjM5
MTNjYzVhMDM2NzMwYWQwMDA3NGU2ZjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ1RyYXZlcnNhbC5oCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X291dE9mQ29tcG9zaXRpb247CiB9OwogCitDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9k
ZSopOwogQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7
CiBDb250YWluZXJOb2RlKiBwYXJlbnRTbG93KGNvbnN0IE5vZGUqLCBQYXJlbnREZXRhaWxzKik7
CiBOb2RlKiBuZXh0U2libGluZyhjb25zdCBOb2RlKik7CkBAIC03Niw2ICs3NywxMiBAQCBOb2Rl
KiBwcmV2aW91c0luU2NvcGUoY29uc3QgTm9kZSopOwogTm9kZSogcGFyZW50SW5TY29wZShjb25z
dCBOb2RlKik7CiBOb2RlKiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqKTsKIAoraW5saW5l
IENvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIFBhcmVudERl
dGFpbHMgZGV0YWlsczsKKyAgICByZXR1cm4gcGFyZW50KG5vZGUsICZkZXRhaWxzKTsKK30KKwog
aW5saW5lIENvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRh
aWxzKiBkZXRhaWxzKQogewogICAgIGlmICghbm9kZS0+bmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBlM2E0ODIyMmI5M2QzOGQ2NzBlYzJh
MjM4MWYwYmY2ZGExNTE3NDJkLi5mZmI0MTFlYTczNjQxZTc1Nzc3NmRkYjQyYTcwYjA2OWNlYzQ0
ZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01Nyw3ICs1NywxMSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc1NoYWRvd1Jvb3QgOiBwdWJsaWMg
RG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPFNoYWRvd1Jvb3Q+IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB2b2lkKiBw
b2ludGVyc1szXTsKKyNlbHNlCisgICAgdm9pZCogcG9pbnRlcnNbMl07CisjZW5kaWYKICAgICB1
bnNpZ25lZCBjb3VudGVyc0FuZEZsYWdzWzFdOwogfTsKIApAQCAtMjYyLDExICsyNjYsMTEgQEAg
dm9pZCBTaGFkb3dSb290OjphdHRhY2goKQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Q
b2ludCkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBEb2N1bWVudEZyYWdtZW50Ojpp
bnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogCiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+
aW5Eb2N1bWVudCgpIHx8ICFpc09sZGVzdCgpKQogICAgICAgICByZXR1cm4gSW5zZXJ0aW9uRG9u
ZTsKLQogICAgIC8vIEZJWE1FOiBXaGVuIHBhcnNpbmcgPHZpZGVvIGNvbnRyb2xzPiwgaW5zZXJ0
ZWRJbnRvKCkgaXMgY2FsbGVkIG1hbnkgdGltZXMgd2l0aG91dCBpbnZva2luZyByZW1vdmVkRnJv
bS4KICAgICAvLyBGb3Igbm93LCB3ZSBjaGVjayBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93
cm9vdC4gV2Ugd291bGQgbGlrZSB0byBBU1NFUlQoIW1fcmVnaXN0ZXJlZFNoYWRvd1Jvb3QpIGhl
cmUuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2lnP2lkPTEwMTMx
NgpAQCAtMjc3LDEyICsyODEsMTUgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBTaGFkb3dSb290OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXIKICAgICAgICAg
cm9vdC0+ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKS0+cmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7
CiAgICAgICAgIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290ID0gdHJ1ZTsKICAgICB9
Ci0KICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKKyNlbHNlCisgICAgcmV0dXJuIERvY3VtZW50
RnJhZ21lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkK
IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9j
dW1lbnQoKSAmJiBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCkgewogICAgICAgICBT
aGFkb3dSb290KiByb290ID0gaG9zdCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpOwogICAgICAg
ICBpZiAoIXJvb3QpCkBAIC0yOTIsNyArMjk5LDcgQEAgdm9pZCBTaGFkb3dSb290OjpyZW1vdmVk
RnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgICAgIHJvb3QtPnNj
b3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CiAgICAgICAgIG1f
cmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290ID0gZmFsc2U7CiAgICAgfQotCisjZW5kaWYK
ICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9CiAK
QEAgLTMxNyw2ICszMjQsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJTY29wZWRIVE1M
U3R5bGVDaGlsZCgpCiAgICAgc2V0SGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQobV9udW1iZXJPZlN0
eWxlcyA+IDApOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiBTY29wZUNvbnRlbnREaXN0
cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIHsKICAgICBp
ZiAobV9zY29wZURpc3RyaWJ1dGlvbikKQEAgLTMyNCw3ICszMzIsOCBAQCBTY29wZUNvbnRlbnRE
aXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIAogICAg
IG1fc2NvcGVEaXN0cmlidXRpb24gPSBhZG9wdFB0cihuZXcgU2NvcGVDb250ZW50RGlzdHJpYnV0
aW9uKTsKICAgICByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsKLX0gICAKK30KKyNl
bmRpZgogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CkBAIC0zMzMsNyArMzQyLDkgQEAgdm9pZCBT
aGFkb3dSb290OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAogICAgIFRyZWVTY29wZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVtb3J5T2Jq
ZWN0SW5mbyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2KTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX25leHQpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGluZm8uYWRkTWVtYmVyKG1f
c2NvcGVEaXN0cmlidXRpb24pOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
CmluZGV4IDE1MjY5MzhlZGU1MDQwZGRjNDMzOWY1OGZmODY1MWEyYzcyNTlmNzkuLjg1OWYwZDIy
ZGVhZDgyYWQ4YzdkZTEwNTY0ZjI4MjIyOTE0MWNlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aApAQCAtODgsOSArODgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNj
b3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURFOwogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlvbigpIHsg
cmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7IH0KICAgICBjb25zdCBTY29wZUNvbnRl
bnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQogICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogZW5z
dXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgogCiAgICAgU2hhZG93Um9vdFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRob3JTaGFkb3dSb290ID8gQXV0aG9yU2hhZG93Um9v
dCA6IFVzZXJBZ2VudFNoYWRvd1Jvb3Q7IH0KICAgICBib29sIGlzQWNjZXNzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRob3JTaGFkb3dSb290OyB9CkBAIC0xMTAsNyArMTEyLDkg
QEAgcHJpdmF0ZToKIAogICAgIFNoYWRvd1Jvb3QqIG1fcHJldjsKICAgICBTaGFkb3dSb290KiBt
X25leHQ7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgT3duUHRyPFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbj4gbV9zY29wZURpc3RyaWJ1dGlvbjsKKyNlbmRpZgogICAgIHVuc2lnbmVkIG1f
bnVtYmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25lZCBtX2FwcGx5QXV0aG9yU3R5bGVzIDog
MTsKICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggMDVlZWJhYjQxMGQ4OGI0MWVi
ODExOTMxMmFkOWQ5MWMyNWQ0MWVjMi4uNjhlMDc5NzIyODdiMDA1MzA2Y2JkYzgyOTFlOGIxZjNm
MmEzMjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApA
QCAtNTEsNiArNTEsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgOiBIVE1MQ29udGVudEVsZW1lbnQo
SFRNTE5hbWVzOjp3ZWJraXRTaGFkb3dDb250ZW50VGFnLCBkb2N1bWVudCkKICAgICB7CiAgICAg
fQorCisgICAgLy8gVGhpcyBtYXRjaCBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIHRvIERl
dGFpbHNTdW1tYXJ5RWxlbWVudDo6bWF0Y2hUeXBlRm9yKCkKKyAgICB2aXJ0dWFsIE1hdGNoVHlw
ZSBtYXRjaFR5cGVGb3IoTm9kZSogbm9kZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmICgh
bm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8IG5vZGUgIT0gbm9kZS0+cGFyZW50Tm9kZSgpLT5xdWVy
eVNlbGVjdG9yKHN1bW1hcnlRdWVyeVNlbGVjdG9yKCksIEFTU0VSVF9OT19FWENFUFRJT04pKQor
ICAgICAgICAgICAgcmV0dXJuIEFsd2F5c01hdGNoZXM7CisgICAgICAgIHJldHVybiBOZXZlck1h
dGNoZXM7CisgICAgfQogfTsKIAogUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVsZW1lbnQ+IERl
dGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTEyMCw2
ICsxMjgsMTEgQEAgdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUo
KQogICAgIHJvb3QtPmFwcGVuZENoaWxkKERldGFpbHNDb250ZW50RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKIH0KIAorRWxlbWVudCogSFRN
TERldGFpbHNFbGVtZW50OjpmYWxsYmFja1N1bW1hcnkoKSBjb25zdAoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1lbnQqPih1c2VyQWdlbnRTaGFkb3dSb290KCkt
PmZpcnN0Q2hpbGQoKSktPmZhbGxiYWNrU3VtbWFyeSgpOworfQorCiBFbGVtZW50KiBIVE1MRGV0
YWlsc0VsZW1lbnQ6OmZpbmRNYWluU3VtbWFyeSgpIGNvbnN0CiB7CiAgICAgZm9yIChOb2RlKiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
IHsKQEAgLTEyNyw3ICsxNDAsNyBAQCBFbGVtZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRN
YWluU3VtbWFyeSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KGNoaWxkKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGV0YWlsc1N1bW1hcnlFbGVtZW50Kj4o
dXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpLT5mYWxsYmFja1N1bW1hcnkoKTsK
KyAgICByZXR1cm4gZmFsbGJhY2tTdW1tYXJ5KCk7CiB9CiAKIHZvaWQgSFRNTERldGFpbHNFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQpAQCAtMTQ2LDggKzE1OSwxOCBAQCBib29sIEhUTUxEZXRhaWxzRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYgYwogICAgIGlmICghY2hpbGRDb250ZXh0LmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1faXNPcGVuKQorICAgIGlmIChtX2lz
T3BlbikgeworI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgLy8gVGhlIGZhbGxiYWNr
IDxzdW1tYXJ5PiBzaG91bGRuJ3QgYmUgdmlzaWJsZSB1bmxlc3MgaXQgaXMgdXNlZCBhcyBhIG1h
aW4gc3VtbWFyeS4KKyAgICAgICAgLy8gV2l0aCBTSEFET1dfRE9NLCA8ZGV0YWlscz4gY2FuIGp1
c3QgbGV0IDxjb250ZW50PiBmYWxsYmFjayBzeXN0ZW0gdGFrZSBjYXJlIG9mIHRoaXMuCisgICAg
ICAgIGlmIChjaGlsZENvbnRleHQubm9kZSgpLT5oYXNUYWdOYW1lKHN1bW1hcnlUYWcpKSB7Cisg
ICAgICAgICAgICBFbGVtZW50KiBmYWxsYmFjayA9IGZhbGxiYWNrU3VtbWFyeSgpOworICAgICAg
ICAgICAgaWYgKGZhbGxiYWNrICE9IGZpbmRNYWluU3VtbWFyeSgpICYmIGZhbGxiYWNrID09IGNo
aWxkQ29udGV4dC5ub2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCk7CisgICAgfQogCiAgICAgaWYgKCFjaGlsZENvbnRleHQu
bm9kZSgpLT5oYXNUYWdOYW1lKHN1bW1hcnlUYWcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xNTUsNiArMTc4LDIwIEBAIGJvb2wgSFRNTERldGFpbHNFbGVtZW50OjpjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjCiAgICAgcmV0dXJuIGNo
aWxkQ29udGV4dC5ub2RlKCkgPT0gZmluZE1haW5TdW1tYXJ5KCkgJiYgSFRNTEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKIH0KIAordm9pZCBIVE1MRGV0
YWlsc0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSog
YmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKK3sK
KyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisgICAgLy8gVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVy
c2lvbiBvZiBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0cmlidXRpb24oKQorICAg
IC8vIHdoaWNoIHJlYXR0YWNoZXMgY2hpbGRyZW4gdG8gbWFrZSB0aGVtIGJlaW5nIHJlLWRpc3Ry
aWJ1dGVkIHRvIGFwcHJvcHJpYXRlIGluc2VydGlvbiBwb2ludHMuCisgICAgaWYgKGF0dGFjaGVk
KCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIG4tPmxhenlSZWF0dGFjaCgpOworICAgICAgICBzZXRO
ZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgfQorI2VuZGlmCisgICAgSFRNTEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7Cit9CisKIHZvaWQgSFRNTERldGFpbHNFbGVtZW50Ojp0b2dnbGVPcGVu
KCkKIHsKICAgICBzZXRBdHRyaWJ1dGUob3BlbkF0dHIsIG1faXNPcGVuID8gbnVsbEF0b20gOiBl
bXB0eUF0b20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKaW5kZXgg
OWRhOTY5ODg2MTQ2NGNkM2QwZTcyZjIxNDc2ODA3M2EyM2JkMzZiYS4uMjY2NGQyNWMyZDgzMzQ5
ZWY4NWI5MzAyNGNiYWQ0OTdhZWY2ZGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5oCkBAIC0zOCw3ICszOCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7
Ci0KKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wsIE5vZGUqLCBOb2RlKiwg
aW50KTsKKyAgICBFbGVtZW50KiBmYWxsYmFja1N1bW1hcnkoKSBjb25zdDsKICAgICB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAogICAgIGJvb2wgbV9pc09wZW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2YWFmOTk0OThiNmEwMDQxMzk1YWY1NTVm
NTJlMTcwYmVmZGZiZmI3Li5hMzBhZjFlZWNhNmFiOTljZmY3MzVkOTA0MmMzZWU2ODYxYmEzMjY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTUzNyw4ICs1
MzcsMTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAgICAg
IHVwZGF0ZUZvY3VzQXBwZWFyYW5jZSh0cnVlKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFy
ZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKQogICAgICAgICBlbGVtZW50U2hhZG93LT5pbnZhbGlk
YXRlRGlzdHJpYnV0aW9uKCk7CisjZW5kaWYKIAogICAgIHNldENoYW5nZWRTaW5jZUxhc3RGb3Jt
Q29udHJvbENoYW5nZUV2ZW50KGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggM2ZjYmY5ZDUwYmU2NTM0MDg4ZjFi
YjU4NTg1MDY4MGI1NGUwZDg3ZS4uYTE5ZGRmNDExOGQ5ZjM3MjMzYjJkYmY5YmZkYzQwZjc4MDky
YmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5o
IgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgpAQCAtNDQxLDMgKzQ0Myw1IEBAIHZv
aWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShFbGVtZW50KiBo
b3N0KQogfQogCiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKaW5kZXggZGZlYWI4Y2M3
ZmRiZTUwYWRmNjEwN2U4ZDYwYTBkZjIyODQxNmQwYi4uOTU1MzFiNGI0YzU2NThmMWM1NjhlMWZk
NjczNDRjMTY4ZTAwNTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
Q29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRhaW5lck5vZGU7CkBAIC0xNjMs
NCArMTY1LDUgQEAgaW5saW5lIGJvb2wgQ29udGVudERpc3RyaWJ1dG9yOjpuZWVkc0Rpc3RyaWJ1
dGlvbigpIGNvbnN0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JR
dWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVy
eS5jcHAKaW5kZXggNTJhMGFjNWExZjkyZmFkY2U2YjAzM2M0OGMwZGU2MTMwZGM4YzZkNi4uNDIx
YWM4MGJiMGE5Mzk0ZmU5NGVhOTQ0ZGNmNTA0YzY0MWRiZWY4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApAQCAtMjcsNiAr
MjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1
ZXJ5LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9y
TGlzdC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JD
aGVja2VyLmgiCkBAIC05MSwzICs5Myw1IEBAIGJvb2wgQ29udGVudFNlbGVjdG9yUXVlcnk6Om1h
dGNoZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBzaWJsaW5ncywgaW50IG50CiB9CiAK
IH0KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKaW5kZXggNGQzOGVkZDFhNWM4NjEw
Zjc3MjkzMTMyNGE2YTZlZWRjZDM3YTcxNi4uZmUyNGQyZDNkOGI3Y2VhN2MxMzBkMDc4YzViZmIx
NGVjOGJhMjAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dFNlbGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
U2VsZWN0b3JRdWVyeS5oCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKQEAgLTc2LDQgKzc4LDUgQEAg
cHJpdmF0ZToKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXgg
OWQwYzhmYzQzNTNiZjk2Y2UyNGQxYTI2ZjI1MWFkYzNjOTgxYWQwOC4uY2EyNjllODYzOTBlNWVi
NDFmZDZjOWIzOTgzYjliY2MyMjI4NzQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKQEAgLTg4LDcgKzg4LDYgQEAgY2xhc3MgSFRNTENv
bnRlbnRFbGVtZW50IDogcHVibGljIEluc2VydGlvblBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgY29udGVudFRhZ05hbWUoRG9jdW1lbnQqKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MQ29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwot
CiAgICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIENvbnRlbnRJbnNlcnRpb25Qb2ludDsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggZTA4MzE4YmZmNWE4
ZTBiYmMwNDQ0ZmM4Nzg2ZDM5MTNmOThjN2M5Ni4uZjkwNjQyMzQxOWI3NzQ4ZTNiNzA1YjdhMzU0
NGQwZjNmZjBiYjUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcApAQCAtMzksMTAgKzM5LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
U2ltcGxlSW5zZXJ0aW9uUG9pbnQ6OlNpbXBsZUluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEhUTUxFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCBDcmVhdGVJbnNlcnRpb25Qb2ludCkKK3sKK30KKworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBJbnNlcnRpb25Q
b2ludDo6SW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0
ZUluc2VydGlvblBvaW50KQorICAgIDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9j
dW1lbnQpCiAgICAgLCBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdChmYWxzZSkKIHsKIH0KQEAg
LTc5LDI1ICs4Niw2IEBAIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OnNob3VsZFVzZUZhbGxiYWNrRWxl
bWVudHMoKSBjb25zdAogICAgIHJldHVybiBpc0FjdGl2ZSgpICYmICFoYXNEaXN0cmlidXRpb24o
KTsKIH0KIAotYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBp
c0FjdGl2ZSgpOwotfQotCi1ib29sIEluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFjb250YWluaW5nU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgY29uc3QgTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAobm9kZSkg
ewotICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRpb25Qb2lu
dDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0CiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNo
YWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQpAQCAtMTExLDExICs5OSw2IEBAIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IEluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkg
Y29uc3QKICAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVzKTsKIH0KIAotYm9v
bCBJbnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29u
dGV4dCYgY29udGV4dCkKLXsKLSAgICByZXR1cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1M
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKLX0KLQogdm9pZCBJbnNlcnRpb25Q
b2ludDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVD
aGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIEhU
TUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpAQCAtMjI5LDQgKzIxMiwyMCBAQCBJbnNl
cnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2Rl
KQogICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAorYm9vbCBJbnNlcnRpb25Qb2ludDo6
aXNBY3RpdmUoKSBjb25zdAoreworICAgIGlmICghY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7
CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShTSEFET1dfRE9NKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA3NDI0M2U5Y2FhNDUzN2M1OTRhOTI5
MGI0NjgxMWUzYjYwMDViY2U2Li4zMDAwZTNiYzY5ZDJhMWZhMmNlNTg4NGNiMjZhYmQzNjJhMDYy
MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAg
LTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNlcnRpb25Q
b2ludCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBTaW1wbGVJbnNlcnRpb25Qb2ludCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAg
U2hhZG93SW5zZXJ0aW9uUG9pbnQsCkBAIC01NCwxOSArNTQsMzIgQEAgcHVibGljOgogICAgICAg
ICBIYXNUb01hdGNoU2VsZWN0b3IKICAgICB9OwogCisgICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0
Y2hUeXBlRm9yKE5vZGUqKSB7IHJldHVybiBBbHdheXNNYXRjaGVzOyB9CisgICAgdmlydHVhbCBU
eXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNvbnN0ID0gMDsKKworICAgIGJvb2wgYWx3YXlzTWF0
Y2hlcyhOb2RlKiBub2RlKSB7IHJldHVybiBtYXRjaFR5cGVGb3Iobm9kZSkgPT0gQWx3YXlzTWF0
Y2hlczsgfQorCitwcm90ZWN0ZWQ6CisgICAgU2ltcGxlSW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlz
SW5zZXJ0aW9uUG9pbnROb2RlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorfTsK
KworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCitjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1Ymxp
YyBTaW1wbGVJbnNlcnRpb25Qb2ludCB7CitwdWJsaWM6CisKICAgICB2aXJ0dWFsIH5JbnNlcnRp
b25Qb2ludCgpOwogCiAgICAgYm9vbCBoYXNEaXN0cmlidXRpb24oKSBjb25zdCB7IHJldHVybiAh
bV9kaXN0cmlidXRpb24uaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBzZXREaXN0cmlidXRpb24oQ29u
dGVudERpc3RyaWJ1dGlvbiYgZGlzdHJpYnV0aW9uKSB7IG1fZGlzdHJpYnV0aW9uLnN3YXAoZGlz
dHJpYnV0aW9uKTsgfQogICAgIHZvaWQgY2xlYXJEaXN0cmlidXRpb24oKSB7IG1fZGlzdHJpYnV0
aW9uLmNsZWFyKCk7IH0KLSAgICBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdDsKLSAgICBi
b29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXREaXN0
cmlidXRlZE5vZGVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVG
b3IoTm9kZSopIHsgcmV0dXJuIEFsd2F5c01hdGNoZXM7IH0KICAgICB2aXJ0dWFsIGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCkgeyByZXR1cm4gZW1wdHlTZWxlY3Rvckxpc3Qo
KTsgfQotICAgIHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGNhbkFmZmVjdFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3Q7CkBAIC03Niw2ICs4
OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKICAgICBib29sIHNo
b3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdDsKKyAgICBib29sIGlzU2hhZG93Qm91bmRh
cnkoKSBjb25zdCB7IHJldHVybiB0cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290
KCkgJiYgaXNBY3RpdmUoKTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIHNp
emVfdCBpbmRleE9mKE5vZGUqIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1fZGlzdHJpYnV0aW9uLmZp
bmQobm9kZSk7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUqKSBjb25zdDsKQEAgLTkw
LDEyICsxMDUsMTIgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zZXJ0aW9uUG9pbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERTsKKwogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUq
IGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
RnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5vZGUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIE9WRVJSSURFIHsgcmV0dXJuICFpc1No
YWRvd0JvdW5kYXJ5KCkgJiYgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7
IH0KIAogcHJpdmF0ZToKIApAQCAtMTAzLDMwICsxMTgsMTQgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290OwogfTsKIAotaW5saW5lIEluc2VydGlvblBvaW50
KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFub2RlIHx8IG5v
ZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc2VydGlv
blBvaW50Kj4obm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNl
cnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQotewotICAgIEFTU0VSVCghbm9kZSB8fCBub2Rl
LT5pc0luc2VydGlvblBvaW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnNl
cnRpb25Qb2ludCo+KG5vZGUpOwotfQorSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQo
Tm9kZSopOworY29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9k
ZSopOwogCiBpbmxpbmUgYm9vbCBpc0FjdGl2ZUluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5v
ZGUpCiB7CiAgICAgcmV0dXJuIG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0b0luc2VydGlv
blBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpOwogfQogCi1pbmxpbmUgYm9vbCBpc0xvd2VyRW5jYXBz
dWxhdGlvbkJvdW5kYXJ5KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5p
c0luc2VydGlvblBvaW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdG9J
bnNlcnRpb25Qb2ludChub2RlKS0+aXNTaGFkb3dCb3VuZGFyeSgpOwotfQotCiBpbmxpbmUgTm9k
ZSogcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFT
U0VSVChub2RlKTsKQEAgLTE2MSw2ICsxNjAsNDUgQEAgaW5saW5lIEVsZW1lbnRTaGFkb3cqIHNo
YWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAKIEluc2VydGlv
blBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAorI2Vsc2UKKworY2xh
c3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgeworcHVibGlj
OgorICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KK3Byb3RlY3RlZDoKKyAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpIDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFt
ZSwgZG9jdW1lbnQpIHsgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREUgeyByZXR1cm4gZmFs
c2U7IH0KK307CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKKworaW5saW5lIEluc2Vy
dGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFu
b2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBjb25zdCBJbnNlcnRpb25Qb2lu
dCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQoreworICAgIEFTU0VSVCghbm9k
ZSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBJbnNlcnRpb25Qb2ludCo+KG5vZGUpOworfQorCitpbmxpbmUgYm9vbCBpc0xvd2VyRW5j
YXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlIHx8ICFub2Rl
LT5pc0luc2VydGlvblBvaW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNTaGFkb3dC
b3VuZGFyeSgpOworI2Vsc2UKKyAgICAvLyBpbiBub24tU0hBT0RXX0RPTSB3b3JsZCwgSW5zZXJ0
aW9uUG9pbnQgaXMgdXNlZCBvbmx5IGludGVybmFsbHkgYW5kCisgICAgLy8gc2hvdWxkIGJlIGFs
d2F5cyBhIGJvdW5kYXJ5LgorICAgIHJldHVybiB0cnVlOworI2VuZGlmCit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcAppbmRleCA0
NjUyMmM0NDUzYmMzZWIwMzYxZmQ0NjExYWQxOTY3MjI2Y2RkMWMwLi42ZTI3N2E0MGQ5NGYwOWE1
MWYzNjBkNjBmOTVmN2M5ZDY5YTVjOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIKIAorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODUsMyArODcsNCBAQCB2b2lkIFNlbGVjdFJ1bGVGZWF0dXJlU2V0
Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdAog
CiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCmluZGV4IGQwZjJkZTY4MjFiMzI1
MDkxNmM3ZWMxNmRlZDRkYjc1OTg0YTA4MTcuLmIwMjA3M2Q0ZjJjMzc5NWQ3ODc1ZTRhZDVlZGQ4
YzQ5Nzc3MTdjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVj
dFJ1bGVGZWF0dXJlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0
UnVsZUZlYXR1cmVTZXQuaApAQCAtMzEsOSArMzEsMTIgQEAKICNpZm5kZWYgU2VsZWN0UnVsZUZl
YXR1cmVTZXRfaAogI2RlZmluZSBTZWxlY3RSdWxlRmVhdHVyZVNldF9oCiAKKwogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VsZWN0UnVsZUZlYXR1cmVT
ZXQgewpAQCAtODUsNCArODgsNSBAQCBpbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6
aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdAogCiB9CiAKKyNl
bmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCmluZGV4IDJkYmJlNDFkNjBmZDNkZTUxZmNlZWIyMmUxZmU5Yzk0Y2VhNDU3M2Iu
LjExNDhmOTkyNTNmYzBmYWExMWQ0ODY4YjAwZDhjMWUxNmM3ZTVlODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0
eWxlLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb2Rl
VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgpAQCAtMjg3LDYgKzI4OCwxMSBAQCBib29sIFNWR1Vz
ZUVsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBTVkdVc2VFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNoaWxkQ29udGV4dC5pc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSAmJiBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENv
bnRleHQpOworfQorCiAjaWZkZWYgRFVNUF9JTlNUQU5DRV9UUkVFCiBzdGF0aWMgdm9pZCBkdW1w
SW5zdGFuY2VUcmVlKHVuc2lnbmVkIGludCYgZGVwdGgsIFN0cmluZyYgdGV4dCwgU1ZHRWxlbWVu
dEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5o
CmluZGV4IDZiYjI5ZWM2NjQ5OTZlMTIwYmJiMTgxYjMwY2E1ZWJjMmYzMTAyZTUuLjQ0YzMxYzVl
OWEwN2RmYmJlODEwNjBhOGFhNTVkNjFlYWJlNzZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuaApAQCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjY2YxNDA2MGVhY2U5MmIy
MjgxZmMxYWI0OTMxYjBjZmZmM2MwNjgwLi4zNWU3ZDhlZWUzNGEwZWVkNmI1ZjQxZWViMzNmMDI3
ODJkYTJjNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDcsNyAr
MzQ3LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvcklkSW5TaGFkb3coRWxlbWVu
dCogaG9zdCwgY29uc3QgU3RyaW5nJiBpZFZhbHVlLCBFCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAorICAgIFVOVVNFRF9QQVJBTShpZFZhbHVlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVh
dHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JJZChpZFZhbHVlKTsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxl
Y3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzU3LDcgKzM2MiwxMiBAQCBib29sIEludGVybmFs
czo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmlu
ZyYgY2xhc3NOYQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBVTlVTRURfUEFSQU0o
Y2xhc3NOYW1lKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hh
ZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3co
KSkuaGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRl
SW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBFeGNl
cHRpb25Db2RlJiBlYykKQEAgLTM2Nyw3ICszNzcsMTIgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1Nl
bGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBh
dHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKGF0dHJpYnV0
ZU5hbWUpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBob3N0LT5zaGFkb3co
KS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5o
YXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVk
b0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFzcywg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNzcsNiArMzkyLDggQEAgYm9vbCBJbnRlcm5hbHM6Omhh
c1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJp
bmcmIHAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKHBzZXVk
b0NsYXNzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBjb25zdCBTZWxlY3RSdWxlRmVh
dHVyZVNldCYgZmVhdHVyZVNldCA9IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3Vy
ZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9
PSAiY2hlY2tlZCIpCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hl
Y2tlZCgpOwpAQCAtMzk0LDYgKzQxMSw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZv
clBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAg
ICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yVmlzaXRlZCgpOwogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0
MSw4ICs0NTksMTEgQEAgYm9vbCBJbnRlcm5hbHM6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNl
dWRvRWxlbWVudChjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3UKIAogYm9vbCBJbnRlcm5hbHM6
Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0
dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCh0b1NoYWRvd1Jv
b3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICBy
ZXR1cm4gMDsKQEAgLTQ1MCw4ICs0NzEsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0lu
c2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAog
Ym9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAg
ICAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQo
dG9TaGFkb3dSb290KHJvb3QpKTsKKyNlbmRpZgogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CiAgICAgcmV0dXJuIDA7CkBAIC00NjQsNyArNDg4LDExIEBAIHNpemVfdCBJbnRlcm5hbHM6
OmNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6Y291bnRFbGVtZW50U2hhZG93
KHRvU2hhZG93Um9vdChyb290KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmIAogfQog
CiBib29sIEludGVybmFsczo6YXR0YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC00NzksNiArNTA3LDcgQEAgYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nQnlXYWxr
ZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTQ4NiwxMCArNTE1LDE2IEBAIE5vZGUqIEludGVybmFsczo6
bmV4dFNpYmxpbmdCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0U2li
bGluZygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShub2RlKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIHJldHVybiAwOworI2VuZGlmCiB9
CiAKIE5vZGUqIEludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC00OTcsMTAgKzUzMiwxNiBAQCBOb2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihO
b2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5maXJzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdh
bGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjps
YXN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTA4LDEwICs1NDksMTYgQEAgTm9k
ZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdh
bGtlci5sYXN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0obm9kZSk7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsK
KyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9k
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYg
KCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1
cm4gMDsKQEAgLTUxOSwxMCArNTY2LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdh
bGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdh
bGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9Q
QVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpw
cmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTMwLDYgKzU4MywxMSBAQCBO
b2RlKiBJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAg
ICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJu
IDA7CisjZW5kaWYKIH0KIAogU3RyaW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1Rl
eHQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNl
L1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBkYTA2
MTU2MDg3MjY1OWY2MWMxMWM0OWVlZTZhMmE0MTFhYjNlZjZiLi44YTMyNmQyNTJkMzRhZTg3NzMy
MTEyYzk3YWU4OWRjNDU5YjMwNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTIxOSwxOCArMjE5LDEyIEBAIEVY
UE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdl
YkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29u
dHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRp
b25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lv
bnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/
aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdA
V1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZF
eGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmlu
Z0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BX
VEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJD
b3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBA
UEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9uZXh0
U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAg
ID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAg
ICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFha
Ci0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoK
LSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVY
WFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251
bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RG
QEBTQT9BVjEyQEhAWgpAQCAtMzE4LDcgKzMxMiw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1
dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBV
Vmlld3BvcnRBcmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRB
cmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAg
ICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAg
ID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNw
ZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgog
ICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoK
QEAgLTYwNSwxOCArNTk4LDEyIEBAIEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxl
ZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25u
ZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgot
ICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBa
CiAgICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNA
V2ViQ29yZUBAMF9OQQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJA
V2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3Jl
QEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAg
P2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3Jl
QEBRQkVfTlhaCiAgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdl
QFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1h
cmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1h
cmtlckAyQEBaCi0gICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJA
V2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBT
QT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKICAg
ICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtNzA0LDcgKzY5MSw2IEBA
IEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/
QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBISEhNVkludFNpemVA
MUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3
cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdl
YkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3Jl
QEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVy
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250
cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BU
ZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKQEAgLTk5MSwxOCArOTc3LDEyIEBAIEVYUE9SVFMKICAg
ICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFB
RVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBX
ZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBX
ZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVk
QFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/aXNQcmVsb2Fk
ZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgog
ICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVA
M0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2Vi
Q29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWluVGhyZWFkU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAg
ICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/
QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAy
QFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9uZXh0U2libGluZ0BD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9maXJzdENo
aWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2xh
c3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAg
ID9uZXh0QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAg
P3ByZXZpb3VzQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAg
ICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJp
bmdAV1RGQEBTQT9BVjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEy
QEhAWgpAQCAtMTA5MCw3ICsxMDcwLDYgQEAgRVhQT1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdw
b3J0QXR0cmlidXRlc0BXZWJDb3JlQEBZQT9BVVZpZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9y
dEFyZ3VtZW50c0AxQEhISE1WSW50U2l6ZUAxQEBaCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50
c0BQYWdlQFdlYkNvcmVAQFFCRT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lz
UGFnZUJveFZpc2libGVARG9jdW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0
aXZlQEluc2VydGlvblBvaW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmlt
YXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1
bWVBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAg
ID9zZXRBbGxvd3NSb3VuZGluZ0hhY2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpAQCAtMTM0
MywxMCArMTMyMiw2IEBAIEVYUE9SVFMKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmlu
Z0ltcGxAMUAwQFoKICAgICAgICAgP2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmlu
Z0ltcGxAMUBQQkVAWgogICAgICAgICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZ
QT9BVlN0cmluZ0BXVEZAQFBBVkVsZW1lbnRAMUBJQFoKLSAgICAgICAgP2Vuc3VyZVNlbGVjdEZl
YXR1cmVTZXRAQ29udGVudERpc3RyaWJ1dG9yQFdlYkNvcmVAQFFBRUFCVlNlbGVjdFJ1bGVGZWF0
dXJlU2V0QDJAUEFWRWxlbWVudFNoYWRvd0AyQEBaCi0gICAgICAgID9oYXNTaGFkb3dFbGVtZW50
QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBa
Ci0gICAgICAgID9oYXNDb250ZW50RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2Vi
Q29yZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBAWgotICAgICAgICA/Y291bnRFbGVtZW50U2hhZG93
QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQUlQQlZTaGFkb3dSb290QDJAQFoK
ICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoKICAgICAgICAgP2Zp
bmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBAWgogICAgICAgICA/YWJzb2x1dGVDYXJldEJv
dW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAWFoKQEAgLTEzODEs
MTggKzEzNTYsMjQgQEAgRVhQT1JUUwogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3Bl
Y3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9u
dGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogI2VuZGlmCi0gICAgICAg
ID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKICAgICAg
ICAgP2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3Jl
QEAwX05BCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3Jl
QEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FW
SlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFz
c1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENo
YW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9O
WFoKICAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29y
ZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdl
YkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJA
QFoKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENoaWxk
QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP25leHRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cHJldmlv
dXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/aXNB
Y3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgorICAgICAgICA/ZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldEBDb250ZW50RGlzdHJpYnV0b3JAV2ViQ29yZUBAUUFFQUJWU2VsZWN0UnVs
ZUZlYXR1cmVTZXRAMkBQQVZFbGVtZW50U2hhZG93QDJAQFoKKyAgICAgICAgP2hhc1NoYWRvd0Vs
ZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFkb3dSb290
QDJAQFoKKyAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
bkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCisgICAgICAgID9jb3VudEVsZW1lbnRT
aGFkb3dAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBCVlNoYWRvd1Jvb3RA
MkBAWgorI2VuZGlmCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCiAg
ICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfS0BaCiAgICAgICAgID9udW1iZXJA
U3RyaW5nQFdURkBAU0E/QVYxMkBIQFoKQEAgLTE0ODAsNyArMTQ2MSw2IEBAIEVYUE9SVFMKICAg
ICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0
dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAg
ICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50
c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9O
SEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAg
ICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFB
RVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNv
cmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNv
cmVAQFNBWF9OQFoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2N2ZkOWYwM2FkZDEwNWQwMWU2NjIyN2ZiZWVjZDA4ZmY3NWU4
OWEwLi5iYzQ4NGQxNzZlYTZhZjRlYmQzYzgzZGE0YWMzMGI2MzBkMjdkNzVlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTMtMDEtMjQgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUu
Y29tPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBQdXQgbm9kZSByZXByb2plY3Rpb24gY29kZSBi
ZWhpbmQgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY2NDMKKworICAgICAgICBSZWJhc2VsaW5lcyBzbWFsbCBkaWZm
ZXJlbmNlcyB3aGljaCBoYXBwZW4gaW4gdGhlIG5vbi1TSEFET1dfRE9NCisgICAgICAgIGNvbmZp
Z3VyYXRpb24uIFRoaXMgaXMgZHVlIHRvIGRpZmZlcmVuY2Ugb2YgaW1wbGVtZW50YXRpb24gZGV0
YWlsCisgICAgICAgIGJ1dCBoYXMgb25seSB1bm5vdGljZWFibGUgdXNlciBvYnNlcnZhYmxlIGRp
ZmZlcmVuY2UuCisKKyAgICAgICAgZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS5odG1sIHJlbmRl
cnMgPGRldGFpbHM+IGRpZmZlcmVudGx5LgorICAgICAgICBUaGlzIGlzIGEgbGltaXRhdGlvbiBv
ZiB0aGUgc2ltcGxpZmllZCBkaXN0cmlidXRpb24gYWxnb3JpdGhtLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0YWlscy1uZXN0ZWQtMi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVu
ZGVyLWlubGluZS1leHBlY3RlZC5wbmc6IEFkZGVkCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3RlZC50eHQ6IEFkZGVkCisK
IDIwMTMtMDEtMjQgIFl1a2kgU2VraWd1Y2hpICA8eXVraS5zZWtpZ3VjaGlAYWNjZXNzLWNvbXBh
bnkuY29tPgogCiAgICAgICAgIENhbm5vdCBjbGljayBhbiBlbGVtZW50IGF0IDJuZCBsaW5lIG9y
IG1vcmUgaW5zaWRlIGlubGluZS1ibG9jayBpbiB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWRmNjFm
ZDU3ZjJmZWVmOGFjMzQwYjFiNzkyY2ZlMTJmMjM1MTkwMy4uYzBjZTdkMmY1M2RkYjRlY2RmMTI1
MTFhZTVjYThmNDU1Njc5ODgxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcxLDYgKzI3MSw3IEBAIHdlYmtpdC5vcmcvYi85ODk2MCBm
YXN0L3BhcnNlci9kb2N1bWVudC1vcGVuLWluLXVubG9hZC5odG1sIFsgU2tpcCBdCiAjIEVOQUJM
RShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIHdlYmtpdC5vcmcvYi83NjM1OSBlZGl0aW5nL3No
YWRvdyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzc2MzU5IGZhc3QvZG9tL3NoYWRvdyBbIFNraXAg
XQoraW5zcGVjdG9yL2VsZW1lbnRzL3NoYWRvdy1yb290Lmh0bWwgWyBTa2lwIF0KIAogIyBmYXN0
L2V2ZW50cy9jb250cm9sY2xpY2stbm8tb25jbGljay5odG1sIGZhaWxzIG9uIE1hYyBXSzIKIHdl
YmtpdC5vcmcvYi8xMDU5NDggZmFzdC9ldmVudHMvY29udHJvbGNsaWNrLW5vLW9uY2xpY2suaHRt
bCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAwNTQ5ZDc3Yjg5M2ViODYxNDk3M2IwYTI5NmVjNDc5MDliMzcwYzM5Li44ZjVhMTE3Mzg0
YjQwYTVhY2NiMjc1ZWNhNDBiOTBmNDRhNjQ3MmVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDI3LDYgKzQyNyw3IEBAIGZhc3QvcmVnaW9ucy9zdHls
ZS1zY29wZWQtaW4tZmxvdy5odG1sCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4K
IGZhc3QvZG9tL3NoYWRvdwogZWRpdGluZy9zaGFkb3cKK2luc3BlY3Rvci9lbGVtZW50cy9zaGFk
b3ctcm9vdC5odG1sCiBpbnNwZWN0b3IvZWxlbWVudHMvdXBkYXRlLXNoYWRvd2RvbS5odG1sCiBh
Y2Nlc3NpYmlsaXR5L2NvcnJlc3BvbmRpbmctY29udHJvbC1kZWxldGVkLWNyYXNoLmh0bWwKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLW5l
c3RlZC0yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwv
ZGV0YWlscy1uZXN0ZWQtMi1leHBlY3RlZC50eHQKaW5kZXggYzFmYzQ3ZmVhYjU3ZDc1N2Q1ZTU5
OTU5OTAxZmEwYjExYTIzZTRiZS4uMmI5MmIwYjk5NzA3NGM5ZjQ3OTAzMDFmNDQ3ODVjMGVlYjA5
NWQ4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRh
aWxzLW5lc3RlZC0yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9odG1sL2RldGFpbHMtbmVzdGVkLTItZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNiBAQCBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDI0LDgpIHNpemUgNjN4MTgKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNCw4KSB3aWR0
aCA1OiAiICIKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyOCw4KSB3aWR0aCA1OTogInN1bW1h
cnkiCi0gICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg4LDQyKSBzaXplIDc2OHgw
CiAgICAgICAgIFJlbmRlckJsb2NrIHtERVRBSUxTfSBhdCAoOCw0Mikgc2l6ZSA3Njh4NjggW2Jv
cmRlcjogKDhweCBzb2xpZCAjOTk1NTU1KV0KICAgICAgICAgICBSZW5kZXJCbG9jayB7U1VNTUFS
WX0gYXQgKDgsOCkgc2l6ZSA3NTJ4MzQgW2JvcmRlcjogKDhweCBzb2xpZCAjQ0M5OTk5KV0KICAg
ICAgICAgICAgIFJlbmRlckRldGFpbHNNYXJrZXIge0RJVn0gYXQgKDgsMTIpIHNpemUgMTF4MTE6
IGRvd24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlbmRlci1pbmxpbmUtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3RlZC5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2ExZmQ3YjZmMDNmYmU5NTYwMGRmMTdiMDFjZTc1NGNmNDZjZTUwMwpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMTA3MzcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2
WVYyYT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlT18oCnpYLVFfNWhESF9eJHRoOzBzcGpV
MXNmazd3I3pfV2RpNitMRERXK2V9S1AoMDZZNCZ0KzQ1P3N6ZClLaz1ZTTYtWQp6I2dIUl5tZEE3
JkY9VG5xYElHKXJjYkNrJSkyQjxlV3FrUGhfeDx8KWYwUF49NyNOdllJME9fTjhWPDB0e1FHeW4K
eipyb3xDMCVaSz48UGZNQTFqfEUmZjZRb0xfJGpmS1RAYWBQcyErazxrMVRAY0BGMUNxPX1HYnhJ
VHg2YExxaHxACnokOHJSWnB8UEtuVj91dm13RSlhJnBoNWZWbHojbUJeKCp0IT9mYypGX3h6YzVK
WU5XSTxfQG18YHh8MXU/JWI7Ygp6KlUtMmJYdnYhVyVZfjU/SWdGfHE0SWZ+dDk4RFZwXlRxeXU/
fm04bCo4YVZ5eWw/O2h8MVp3fUpgNT1YeiZZQisKejlobHYwbz01LWlNQ0FLRGFTamM4e3N+dCpM
SkpGXiF0O1V4M2c+QHspZD9ZbCl7NkAkdHA5JWBaVVZHcTAyVjY2CnpFRyNGQV9xRVAlSz91RU9X
alhRTWV4dFl3eWFmM20hXnJxKVBYMHI2TVRBZmxRMFNOYzgmKnpHKiN2YyQheXNeMAp6VzQhJnxo
dV48e19aUXlwazZmbXlKY3hHP25rKSM8ZnM5UHRqRXRLQ059QXl3WEp9TVc3KiNTRkV8NlJgbmkj
O0AKemROaC1PaW5yMGtGcSM8UEhPRlhUNyk9YkxpRDklWUhRSW0jSH5tTTghX25lIXZeWDNzNG84
Y18oYyV5PilISz59Cno5UEt5NCQxRnpeISlSZ3tPJD8pQiY3KW1+KFhQVTFTN0VmUEZ4cGlaP0pB
NlI2LUZuWU45V1piWWJRcWdOMkMzdAppKGYkI0FgYlVsUjRDUnU3PndoPVFTX0U5ZiQ+OGJnPWQj
V3pwJFB5e15UQ1koCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXJlbmRlci1pbmxpbmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYjZmM2ZhMmI1NTNh
M2M3ZGNmZWYyOGY1YWJiYTg1N2IzNzAxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7
U1VNTUFSWX0gYXQgKDAsMCkgc2l6ZSA3ODR4NjQKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsMCkgc2l6ZSA3ODR4MTYKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAxNngxNgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTY6ICJhIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNikgc2l6ZSA3
ODR4MTYKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMTZ4MTYK
KyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2eDE2CisgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2OiAiYiIKKyAgICAgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDAsMzIpIHNpemUgNzg0eDE2CisgICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTYKKyAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2eDE2CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDE2OiAiYyIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAs
NDgpIHNpemUgNzg0eDE2CisgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDE2eDE2CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAx
NngxNgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjogImQiCisgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNiwwKSBzaXplIDE2eDE2CisgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMTYsMCkgd2lkdGggMTY6ICJlIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184665</attachid>
            <date>2013-01-24 22:23:01 -0800</date>
            <delta_ts>2013-01-24 23:21:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130125151952.patch</filename>
            <type>text/plain</type>
            <size>81193</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjNzg3NmM5OTk5MmQ3
YjQ1N2UxZjMyNTkyYjg0OTQ4ZGIwNDUyZS4uZjg3N2Q3MTQ5OTU2NjIzNTNhYjc3OTdhNWY4MzBi
NzA4OWY3MTY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxMy0wMS0yNCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGhpZGVzIG9uZSBvZiB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJ0IG9mIFNoYWRvdyBET00KKyAg
ICAgICAgc3RhbmRhcmQsIHRoYXQgaXMgbm9kZSBkaXN0cmlidXRpb24uIE1ham9yIHNoYWRvdy1k
b20gY2xhc3NlcworICAgICAgICBpbmNsdWRpbmcgQ29udGVudERpc3RyaWJ1dG9yLCBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIsCisgICAgICAgIEhUTUxDb250ZW50RWxlbWVudCBhbmQgSFRNTFNo
YWRvd0VsZW1lbnQgYXJlIG1vdmVkIGJlaGluZAorICAgICAgICBFTkFCTEVfU0hBRE9XX0RPTSBm
bGFnLgorCisgICAgICAgIEluIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwsIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciBpcyByZXBsYWNlZCB3aXRoCisgICAgICAgIFNoYWRvd1RyZWVXYWxrZXIsIGEg
c2ltcGxpZmllZCB2ZXJzaW9uIG9mIGl0LiBTaGFkb3dUcmVlV2Fsa2VyIHRyYXZlcnNlcworICAg
ICAgICBET00gdHJlZSB3aGlsZSBza2lwcGluZyBub24tcmVuZGVyYWJsZSBub2RlcyBsaWtlIFNo
YWRvd1Jvb3QuCisKKyAgICAgICAgTm90ZSB0aGF0IDxkZXRhaWxzPiBhbmQgPHN1bW1hcnk+IHVz
ZWQgdG8gcmVseSBpbiB0aGlzIGZlYXR1cmUuIFRoaXMgY2hhbmdlCisgICAgICAgIGNvbXBlbnNh
dGUgdGhhdCBkZXBlbmRlbmN5IGJ5IGltcGxlbWVudGluZyBhIHNpbXBsZSBub2RlIGRpc3RyaWJ1
dGlvbiBmb3IgdGhlbS4KKyAgICAgICAgU2luY2UgdGhpcyBmZWF0dXJlIGlzIG9ubHkgdXNlZCBi
eSA8ZGV0YWlscz4sIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwdXQgaW4KKyAgICAgICAgSFRNTERl
dGFpbHNFbGVtZW50LmNwcCBhbmQgc3RheXMgYmVoaW5kZWQgREVUQUlMU19FTEVNRU5UIGZsYWcu
CisKKyAgICAgICAgT24gSW5zZXJ0aW9uUG9pbnQsIGFsdGhvdWdoIG1vc3Qgb2YgdGhlIGltcGxl
ZW50YXRpb24gaXMgcHV0IGJlaGluZCBTSEFET1dfRE9NIGZsYWcsCisgICAgICAgIGEgdGhpbiBz
dHViIHJlbWFpbmcgb3V0c2lkZSB0aGUgZmxhZy4gVGhpcyBzdHViIGlzIHVzZWQgYnkgPGRldGFp
bHM+LiBUaGUgc3VwZXJjbGFzcyBTaW1wbGVJbnNlcnRpb25Qb2ludAorICAgICAgICBpcyBwdWxs
ZWQgdXAgZm9yIG93aW5nIHNoYXJlZCBwYXJ0IGJldHdlZW4gU0hBRE9XX0RPTSBhbmQgL25vbi1T
SEFET1dfRE9NIGNvbmZpZ3VyYXRpb25zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVNjb3BlUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjphZGRIb3N0
UnVsZSk6CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5
bGVTY29wZVJlc29sdmVyKToKKyAgICAgICAgKiBkb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQpOgorICAgICAg
ICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAqIGRvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaWRBZmZlY3RTZWxlY3Rvcik6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChFbGVtZW50
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmludmFsaWRhdGVEaXN0cmlidXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlzdHJpYnV0aW9uKToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNTaGFkb3dC
b3VuZGFyeSk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwOgorICAg
ICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAgIChTaGFkb3dUcmVlV2Fsa2Vy
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFk
b3dUcmVlV2Fsa2VyOjpTaGFkb3dUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpwYXJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtl
cjo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6Omxhc3RDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2Vy
OjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6
OlNoYWRvd1RyZWVXYWxrZXI6Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVl
V2Fsa2VyOjp0cmF2ZXJzZU5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJz
ZUluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWw6OnBhcmVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6bmV4dFNpYmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnByZXZpb3VzU2libGluZ1Nsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6bmV4dEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6cHJldmlvdXNJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6bGFzdENoaWxkSW5TY29wZSk6CisgICAgICAgICogZG9tL05v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzU2hhZG93Um9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6OkRldGFp
bHNDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzU3VtbWFyeUVsZW1l
bnQ6OkRldGFpbHNTdW1tYXJ5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmZhbGxiYWNrU3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmZpbmRNYWluU3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERldGFpbHNFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6ZmluZEluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OmdldERpc3RyaWJ1dGVkTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnRPdmVySW5zZXJ0aW9u
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNp
YmxpbmdPdmVySW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nT3Zlckluc2VydGlvblBvaW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBl
KToKKyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdW1tYXJ5Q29udGVudEVsZW1lbnQ6OlN1bW1hcnlDb250ZW50RWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250
ZW50U2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUluc2VydGlvblBvaW50OjpTaW1wbGVJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQ6Om1hdGNoVHlw
ZUZvcik6CisgICAgICAgIChTaW1wbGVJbnNlcnRpb25Qb2ludCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQ6OmFsd2F5c01hdGNoZXMpOgorICAgICAgICAo
SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmlzU2hh
ZG93Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlv
blBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6aXNMb3dlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Nl
bGVjdFJ1bGVGZWF0dXJlU2V0Lmg6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cik6CisgICAgICAgIC0gV2Ugc2hvdWxkIGhhdmUgaGFkIHRoaXMgc2luY2UgPHVzZT4gZG9lc24n
dCByZW5kZXIgaXRzIChub24tc2hhZG93KSBjaGlsZHJlbi4KKyAgICAgICAgICBJdCB3b3JrZWQg
YmVmb3JlIGp1c3QgYnkgYWNjaWRlbnQuIERpc2FibGluZyBub2RlIGRpc3RyaWJ1dGlvbiByZXZl
bHMgdGhlIHByb2JsZW0uCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAg
KFNWR1VzZUVsZW1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xh
c3NJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2Vy
dGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQ29udGVudEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFkb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6cHJldmlvdXNOb2RlQnlXYWxrZXIpOgorCiAyMDEzLTAxLTI0ICBLZW50YXJvIEhhcmEgIDxo
YXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCA5ZTIyOTkwNWUyYmYxOTY1MzEyYzM4YmVkMWZmNGRkNTQ0NzM0Y2Fl
Li40ZjFjMzMxMWViOTFkZDFiZmYxMzU3ZWQxNzZiOWI5MjBjNzZmNjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEtMjQgIEhhamltZSBNb3JyaXRhICA8bW9ycml0
YUBnb29nbGUuY29tPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBQdXQgbm9kZSByZXByb2plY3Rp
b24gY29kZSBiZWhpbmQgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5k
ZWYuaW46IE1vdmVkIHNvbWUgc3ltYm9scyBiZWhpbmQgRU5BQkxFKFNIQURPV19ET00pIGZsYWcu
CisKIDIwMTMtMDEtMjQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IFJlbmFtZSBKU1ZhbHVlLmgvQVBJSlNWYWx1ZS5o
IHRvIEpTQ0pTVmFsdWUuaC9KU1ZhbHVlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggODRjYjRm
OWE5NGJkNjcwZmE3Y2MwNGE0YWJkMjQ3YjFkMzVmYTNlNS4uM2ZmNDFjMDIxY2JjYjRjOGI2ODkx
MWNkYzFhNjM3MDA4YWNiMGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTUxOCw3ICs1MTgs
NiBAQCBfX1pON1dlYkNvcmUxN3VzZXJWaXNpYmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29y
ZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRF
CiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxN2dlbmVyYWxQYXN0ZWJvYXJkRXYKIF9fWk43V2Vi
Q29yZTEwUGFzdGVib2FyZDE0d3JpdGVQbGFpblRleHRFUktOM1dURjZTdHJpbmdFTlMwXzE4U21h
cnRSZXBsYWNlT3B0aW9uRQotX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3IyMmVuc3Vy
ZVNlbGVjdEZlYXR1cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKIF9fWk43V2ViQ29yZTE4UGxh
dGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkMTNidWZmZXJGb3JUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThQbGF0
Zm9ybVBhc3RlYm9hcmQxM3N0cmluZ0ZvclR5cGVFUktOM1dURjZTdHJpbmdFCkBAIC02NTcsMTEg
KzY1Niw2IEBAIF9fWk43V2ViQ29yZTIzZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmlu
ZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIx
TmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0
cmluZ0hhc2hFTlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVBy
b3BlcnR5TGlzdFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQot
X19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgotX19a
TjdXZWJDb3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMW5leHRTaWJsaW5nRXYKLV9fWk43
V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyNG5leHRFdgotX19aTjdXZWJDb3JlMjRD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI4cHJldmlvdXNFdgotX19aTjdXZWJDb3JlMjRDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXI5bGFzdENoaWxkRXYKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUVOU18xNERvY3VtZW50TWFya2VyMTFN
YXJrZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMTNyZW1v
dmVNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQogX19aTjdXZWJDb3Jl
MjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxOGFkZFRleHRNYXRjaE1hcmtlckVQS05TXzVSYW5n
ZUViCkBAIC02NzEsOSArNjY1LDYgQEAgX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIxNGZyYW1lRGVzdHJveWVkRXYKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyMTR3aWxsRGV0YWNoUGFnZUV2CiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlckMyRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlckQyRXYKLV9fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTZoYXNTaGFk
b3dFbGVtZW50RVBLTlNfMTBTaGFkb3dSb290RQotX19aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnRE
aXN0cmlidXRpb24xOGNvdW50RWxlbWVudFNoYWRvd0VQS05TXzEwU2hhZG93Um9vdEUKLV9fWk43
V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTdoYXNDb250ZW50RWxlbWVudEVQS05T
XzEwU2hhZG93Um9vdEUKIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwRVBO
U184RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFUzVfTlNfMjdGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb25FCiBfX1pON1dlYkNvcmUyNGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTI0ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lRVJLTlNfMjFOZXR3
b3JrU3RvcmFnZVNlc3Npb25FUktOM1dURjZTdHJpbmdFCkBAIC0xMjUwLDggKzEyNDEsNiBAQCBf
X1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjE4aXNGb2N1c2VkQW5kQWN0aXZlRXYKIF9fWk5L
N1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVz
RVJOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFRUUKIF9fWk5LN1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uMzZyb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnRFdgogX19aTks3
V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242Ym91bmRzRWIKLV9fWk5LN1dlYkNvcmUxNEluc2VydGlv
blBvaW50MTlnZXREaXN0cmlidXRlZE5vZGVzRXYKLV9fWk5LN1dlYkNvcmUxNEluc2VydGlvblBv
aW50OGlzQWN0aXZlRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxpc3RJdGVtMTBtYXJrZXJUZXh0
RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFFdgogX19aTks3V2ViQ29yZTE0
UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBAIC0yNTM5LDYgKzI1MjgsMTggQEAgX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzI1c2VydmljZVNjcmlwdGVkQW5pbWF0aW9uc0VkCiBfX1pON1dlYkNvcmUyMlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMxOGlzU2hhZG93RE9NRW5hYmxlZEUKIF9fWk43V2ViQ29yZTIy
UnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9i
YWxPYmplY3RFUE5TXzEwU2hhZG93Um9vdEUKK19fWk43V2ViQ29yZTE4Q29udGVudERpc3RyaWJ1
dG9yMjJlbnN1cmVTZWxlY3RGZWF0dXJlU2V0RVBOU18xM0VsZW1lbnRTaGFkb3dFCitfX1pON1dl
YkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE2aGFzU2hhZG93RWxlbWVudEVQS05TXzEw
U2hhZG93Um9vdEUKK19fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50MTlnZXREaXN0cmlidXRl
ZE5vZGVzRXYKK19fWk5LN1dlYkNvcmUxNEluc2VydGlvblBvaW50OGlzQWN0aXZlRXYKK19fWk43
V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMThjb3VudEVsZW1lbnRTaGFkb3dFUEtO
U18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE3
aGFzQ29udGVudEVsZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCitfX1pON1dlYkNvcmUyNENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjEwZmlyc3RDaGlsZEV2CitfX1pON1dlYkNvcmUyNENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjExbmV4dFNpYmxpbmdFdgorX19aTjdXZWJDb3JlMjRDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI0bmV4dEV2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjhwcmV2aW91c0V2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjls
YXN0Q2hpbGRFdgorX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184
RG9jdW1lbnRFCiAjZW5kaWYKIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKQEAgLTI3MzYs
MTAgKzI3MzcsNiBAQCBfd2tDYXB0aW9uQXBwZWFyYW5jZUdldFRleHRFZGdlU3R5bGUKIF93a0Nh
cHRpb25BcHBlYXJhbmNlR2V0U2V0dGluZ3NDaGFuZ2VkTm90aWZpY2F0aW9uCiAjZW5kaWYKIAot
I2lmIEVOQUJMRShTSEFET1dfRE9NKQotX19aTjdXZWJDb3JlMThIVE1MQ29udGVudEVsZW1lbnQ2
Y3JlYXRlRVBOU184RG9jdW1lbnRFCi0jZW5kaWYKLQogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
IF9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE5aXNDU1NSZWdpb25zRW5hYmxl
ZEUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGIyNjNkODA2
Yjg1OTU4NmM3YzE0Y2ZmMzFmOTgwYTQzMjUyMzY1YmEuLjIyMTMxOGE3MGQ5MzljYzYwNDFiMmJm
YWNmYTljMTZjMTdkMzkxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAg
LTc2Miw3ICs3NjIsMTAgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1
bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICAgICAgfQogICAg
IH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIG1hdGNoSG9zdFJ1bGVzKHJlc3VsdCwg
aW5jbHVkZUVtcHR5UnVsZXMpOworI2VuZGlmCisKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJl
c3VsdCk7CiAgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKaW5kZXggOGFjYWJlNTBhZTcyZDFiZTE3ZDRh
MzVmN2IzNmNmMzY0ZGFmMjJiNy4uYTYzNTcwYTQzYjU1M2MxMWVjNWEyNzM4OGRhOTJhMTgwODE3
ZjRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAKQEAgLTE5
Miw3ICsxOTIsNiBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6YWRkSG9zdFJ1bGUoU3R5bGVS
dWxlSG9zdCogaG9zdFJ1bGUsIGJvb2wgaGFzRG9jdW1lbnRTZQogICAgICAgICAgICAgcnVsZS0+
YWRkU3R5bGVSdWxlKHN0YXRpY19jYXN0PFN0eWxlUnVsZSo+KGhvc3RTdHlsaW5nUnVsZSksIGFk
ZFJ1bGVGbGFncyk7CiAgICAgfQogfQotI2VuZGlmCiAKIGJvb2wgU3R5bGVTY29wZVJlc29sdmVy
OjpzdHlsZVNoYXJpbmdDYW5kaWRhdGVNYXRjaGVzSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQpCiB7CkBAIC0yMzcsNiArMjM2LDcgQEAgdm9pZCBTdHlsZVNjb3BlUmVzb2x2ZXI6Om1h
dGNoSG9zdFJ1bGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIFZlY3RvcjxSdWxlU2V0Kj4KICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KKyNlbmRpZgogCiB2b2lkIFN0eWxlU2NvcGVSZXNv
bHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVz
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAppbmRleCAz
YmUzZmY0ZjcwYzczNzViZDAxNDI2YTAwYmE0MjQxMjg0NjJjYzBlLi5jNWY3NzZmM2FlMTQxMTc0
MjQ4ODk3ZjY5OTg4MTNlNGNmOTI0ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTY29wZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVS
ZXNvbHZlci5oCkBAIC03NSw5ICs3NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXRjaGVzU3R5
bGVCb3VuZHMoY29uc3QgU3RhY2tGcmFtZSYgZnJhbWUpIGNvbnN0IHsgcmV0dXJuIGZyYW1lLm1f
YXV0aG9yU3R5bGVCb3VuZHNJbmRleCA9PSBtX3N0YWNrUGFyZW50Qm91bmRzSW5kZXg7IH0KICAg
ICB2b2lkIGNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVGZWF0dXJlU2V0Jik7CiAKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICB2b2lkIGFkZEhvc3RSdWxlKFN0eWxlUnVsZUhvc3QqLCBib29sIGhh
c0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKTsKICAg
ICBib29sIHN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3QgRWxlbWVu
dCopOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxlbWVudCosIFZlY3RvcjxSdWxl
U2V0Kj4mIG1hdGNoZWRSdWxlcyk7CisjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0
b3JDaGFpbldhbGtlci5jcHAKaW5kZXggOTcwY2RjMjA1OTdjNTBiMjE4ZGY0MzEwMzhlNmM1OGI5
ZWFiYWFlNi4uNWI3Y2VlODJjZDUyNTE5M2ExNGE3MDU1NTVlOTQwZjViY2Q4ZTMxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcApAQCAtNDUsNiArNDUsOCBA
QCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiB7CiAgICAgQVNTRVJUKG1fbm9k
ZSk7CiAgICAgQVNTRVJUKG1fZGlzdHJpYnV0ZWROb2RlKTsKKworI2lmIEVOQUJMRShTSEFET1df
RE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVudChtX25v
ZGUpKSB7CiAgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFk
b3ctPmRpc3RyaWJ1dG9yKCkuZmluZEluc2VydGlvblBvaW50Rm9yKG1fZGlzdHJpYnV0ZWROb2Rl
KSkgewogICAgICAgICAgICAgbV9ub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CkBAIC01MiwyMCArNTQs
MzAgQEAgdm9pZCBBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQoKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCisKICAgICBpZiAoIW1fbm9kZS0+aXNTaGFk
b3dSb290KCkpIHsKICAgICAgICAgbV9ub2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgICAgIGlmICghKG1fbm9kZSAmJiBtX25vZGUtPmlzU2hh
ZG93Um9vdCgpICYmIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRv
d1Jvb3QobV9ub2RlKSkpKQogICAgICAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7
CiAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CisjZWxzZQorICAg
ICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKKyAgICAgICAgbV9pc0Nyb3NzaW5nSW5z
ZXJ0aW9uUG9pbnQgPSBmYWxzZTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChtX25vZGUpOwor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9u
UG9pbnQgPSBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmFzc2lnbmVkVG8oc2hhZG93Um9vdCkp
IHsKICAgICAgICAgbV9ub2RlID0gaW5zZXJ0aW9uUG9pbnQ7CiAgICAgICAgIG1faXNDcm9zc2lu
Z0luc2VydGlvblBvaW50ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyNlbmRpZgor
CiAgICAgbV9ub2RlID0gc2hhZG93Um9vdC0+aG9zdCgpOwogICAgIG1fZGlzdHJpYnV0ZWROb2Rl
ID0gbV9ub2RlOwogICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCmluZGV4IGFi
NThkNjE1MmJjNjBkOTA1MTdhZTRhYjhjZWVhMDdiNDhmY2IxOGMuLmQyMzBmODY0ODc4MjQ2ZjY5
MDM4YzRkYTdiYTMxNmM5ZmZkNDRlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0xLDQgKzEsMyBAQAotCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjgs
NiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93
VHJlZVdhbGtlci5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKICNpbmNsdWRlICJDb250
ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dFNoYWRvdy5oIgpAQCAtMzEzLDMgKzMxNCw1IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyOjpwcmV2aW91cygpCiB9CiAKIH0gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuaAppbmRleCA4MzQ5ZTIxYWE5ODNmMGE4NGExMTNjMTY3ODBlNDllYzY3NjY0ZjNlLi4yZjAy
YTdjM2JjNDU1MDVmNWI0MjgyODUzZWE2ZDI4M2YzOGZmMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCkBAIC0zMSw2ICszMSw4IEBACiAjaW5j
bHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE5vZGU7CkBAIC0xNDMsNCArMTQ1LDUgQEAgaW5saW5lIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUsIFBvbGkKIAogfSAv
LyBuYW1lc3BhY2UKIAorI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggMGI4NWZmZTMzMGY3NjgyM2Q1YWMzYjUwM2JhZjY2ZmJlYzQ3
MWNlZS4uMmU2OTBlYjMyYWIyODE1ZTc4ODg5MGIyZTI4M2JhOTZjODhmNDQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtODA4LDEwICs4MDgsMTIgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWVk
c1N0eWxlSW52YWxpZGF0aW9uRm9ySWRDaGFuZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBvbGRJZCwg
Y28KIAogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHBhcmVudEVsZW1lbnRTaGFkb3cgPSBzaGFk
b3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKSkgewogICAgICAgICBpZiAoc2hvdWxkSW52
YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVDaGFuZ2VkKHBhcmVudEVsZW1lbnRTaGFk
b3csIG5hbWUsIG5ld1ZhbHVlKSkKICAgICAgICAgICAgIHBhcmVudEVsZW1lbnRTaGFkb3ctPmlu
dmFsaWRhdGVEaXN0cmlidXRpb24oKTsKICAgICB9CisjZW5kaWYKIAogICAgIHBhcnNlQXR0cmli
dXRlKG5hbWUsIG5ld1ZhbHVlKTsKIApAQCAtOTQ4LDYgKzk1MCw3IEBAIHZvaWQgRWxlbWVudDo6
Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcp
CiAKIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1
dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3csIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCiB7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgQVNTRVJUKGVsZW1lbnRTaGFkb3cpOwogICAgIGNvbnN0IFNlbGVjdFJ1
bGVGZWF0dXJlU2V0JiBmZWF0dXJlU2V0ID0gZWxlbWVudFNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5l
bnN1cmVTZWxlY3RGZWF0dXJlU2V0KGVsZW1lbnRTaGFkb3cpOwogCkBAIC05NzksNiArOTgyLDEy
IEBAIGJvb2wgRWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1
dGVDaGFuZ2VkKEVsZW1lbnRTaGFkb3cqIGVsCiAgICAgfQogCiAgICAgcmV0dXJuIGZlYXR1cmVT
ZXQuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFtZS5sb2NhbE5hbWUoKSk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShlbGVtZW50U2hhZG93KTsKKyAgICBVTlVTRURfUEFSQU0obmFtZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKG5ld1ZhbHVlKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0K
IAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFu
ZGxlci4KQEAgLTE0NTUsOSArMTQ2NCwxMiBAQCBFbGVtZW50U2hhZG93KiBFbGVtZW50OjplbnN1
cmVTaGFkb3coKQogCiB2b2lkIEVsZW1lbnQ6OmRpZEFmZmVjdFNlbGVjdG9yKEFmZmVjdGVkU2Vs
ZWN0b3JNYXNrIG1hc2spCiB7CisgICAgVU5VU0VEX1BBUkFNKG1hc2spOwogICAgIHNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNo
YWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMp
KQogICAgICAgICBlbGVtZW50U2hhZG93LT5kaWRBZmZlY3RTZWxlY3RvcihtYXNrKTsKKyNlbmRp
ZgogfQogCiBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3Qo
RXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXgg
MzJkZDRmMDRkNTdhZWFjNDAzMmVlYWYyZmQxZWZjY2Y1MjY4YWU0ZC4uYzRjZTYyNDc3NTBmYWYz
OTIzMGE2YjdlZDk1ZDVhY2Q5MjZmNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcApAQCAtODIsNyArODIsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3Qo
RWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogICAgIHNoYWRv
d1Jvb3QtPnNldEhvc3Qoc2hhZG93SG9zdCk7CiAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJl
ZVNjb3BlKHNoYWRvd0hvc3QtPnRyZWVTY29wZSgpKTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2go
c2hhZG93Um9vdC5nZXQoKSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbV9kaXN0cmli
dXRvci5kaWRTaGFkb3dCb3VuZGFyeUNoYW5nZShzaGFkb3dIb3N0KTsKKyNlbmRpZgogICAgIENo
aWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290Lmdl
dCgpKTsKIAogICAgIC8vIEV4aXN0ZW5jZSBvZiBzaGFkb3cgcm9vdHMgcmVxdWlyZXMgdGhlIGhv
c3QgYW5kIGl0cyBjaGlsZHJlbiB0byBkbyB0cmF2ZXJzYWwgdXNpbmcgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLgpAQCAtMTE3LDEzICsxMTksMTYgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZW1v
dmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFk
b3dIb3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgbV9kaXN0cmlidXRvci5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hv
c3QpOworI2VuZGlmCiB9CiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoKCkKIHsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1
dGlvbih5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0KKyNlbmRpZgogICAgIGZvciAoU2hhZG93Um9v
dCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJT
aGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAg
ICAgcm9vdC0+YXR0YWNoKCk7CkBAIC0xNzMsNyArMTc4LDEwIEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKICAgICAgICAgaW5mby5hZGRNZW1iZXIoc2hhZG93Um9vdCk7CiAgICAgICAgIHNoYWRv
d1Jvb3QgPSBzaGFkb3dSb290LT5uZXh0KCk7CiAgICAgfQorCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgaW5mby5hZGRNZW1iZXIobV9kaXN0cmlidXRvcik7CisjZW5kaWYKIH0KIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmluZGV4IDg5MzM2M2JiYTg3
YjQ4OGU3YWZkMTJkMDI4NWNkNGE1NDQ0MWVhNzMuLjAwNTJlY2Q2YWZlOWFiZDY5YThkNDRkMjRm
YTdkOWZhZDkzMzQyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaApAQCAtNjMsMTgg
KzYzLDI2IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB2b2lk
IHJlY2FsY1N0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgbV9kaXN0cmlidXRvci5pbnZh
bGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7IH0KICAgICB2b2lkIGRpZEFmZmVjdFNlbGVjdG9y
KEFmZmVjdGVkU2VsZWN0b3JNYXNrIG1hc2spIHsgbV9kaXN0cmlidXRvci5kaWRBZmZlY3RTZWxl
Y3Rvcihob3N0KCksIG1hc2spOyB9CiAgICAgdm9pZCB3aWxsQWZmZWN0U2VsZWN0b3IoKSB7IG1f
ZGlzdHJpYnV0b3Iud2lsbEFmZmVjdFNlbGVjdG9yKGhvc3QoKSk7IH0KIAotICAgIENvbnRlbnRE
aXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKTsKLSAgICBjb25zdCBDb250ZW50RGlzdHJpYnV0b3Im
IGRpc3RyaWJ1dG9yKCkgY29uc3Q7CisgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRv
cigpIHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KKyAgICBjb25zdCBDb250ZW50RGlzdHJpYnV0
b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3QgeyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQorI2Vsc2UK
KyAgICB2b2lkIGludmFsaWRhdGVEaXN0cmlidXRpb24oKSB7IH0KKyAgICB2b2lkIGVuc3VyZURp
c3RyaWJ1dGlvbigpIHsgfQorI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKLXByaXZhdGU6CiAKK3ByaXZhdGU6CiAgICAgRG91Ymx5
TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOworCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgQ29udGVudERpc3RyaWJ1dG9yIG1fZGlzdHJpYnV0b3I7CisjZW5kaWYKIH07
CiAKIGlubGluZSBTaGFkb3dSb290KiBFbGVtZW50U2hhZG93Ojp5b3VuZ2VzdFNoYWRvd1Jvb3Qo
KSBjb25zdApAQCAtODcsMTYgKzk1LDYgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFk
b3c6Om9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBtX3NoYWRvd1Jvb3RzLnRh
aWwoKTsKIH0KIAotaW5saW5lIENvbnRlbnREaXN0cmlidXRvciYgRWxlbWVudFNoYWRvdzo6ZGlz
dHJpYnV0b3IoKQotewotICAgIHJldHVybiBtX2Rpc3RyaWJ1dG9yOwotfQotCi1pbmxpbmUgY29u
c3QgQ29udGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7Ci19Ci0KIGlubGluZSBFbGVtZW50KiBFbGVt
ZW50U2hhZG93Ojpob3N0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1fc2hhZG93Um9vdHMuaXNF
bXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDE2MWU1ZWM0MzFlMjZiYzVjYjk3ZTBhNzA2OTE1MjNk
M2ZhMzI2ZTEuLmY1NWRlNWJjZjcyNjg3MDhlN2FlOGRmYTJkNzRmZjc3MWNiY2ZhNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMjUxLDYgKzI1MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRG9jdW1lbnRG
cmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNEb2N1bWVudEZyYWdtZW50RmxhZyk7
IH0KICAgICBib29sIGlzU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGlzRG9jdW1lbnRGcmFn
bWVudCgpICYmIGlzVHJlZVNjb3BlKCk7IH0KICAgICBib29sIGlzSW5zZXJ0aW9uUG9pbnQoKSBj
b25zdCB7IHJldHVybiBnZXRGbGFnKE5lZWRzU2hhZG93VHJlZVdhbGtlckZsYWcpICYmIGlzSW5z
ZXJ0aW9uUG9pbnROb2RlKCk7IH0KKyAgICBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdCB7
IHJldHVybiBpc1NoYWRvd1Jvb3QoKSB8fCBpc0luc2VydGlvblBvaW50KCk7IH0KIAogICAgIGJv
b2wgbmVlZHNTaGFkb3dUcmVlV2Fsa2VyKCkgY29uc3Q7CiAgICAgYm9vbCBuZWVkc1NoYWRvd1Ry
ZWVXYWxrZXJTbG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5jcHAKaW5kZXggODNiYjdlYzdlNzllZjJmMjE2M2VmMDc3NTM3OWQ3NzdlNjll
ZmZmMi4uNjcyYzZkOWU0OGZiM2NjY2NiYzUxNTY4MjJmMmI0MmUyMmNiZGZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmNwcApAQCAtMjgsMTcgKzI4
LDEwOCBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKIAogI2luY2x1ZGUg
IkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgorI2luY2x1ZGUgIkhUTUxEZXRhaWxzRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIK
ICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFt
ZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwgewogCisvLyBBIHNpbXBsaWZpZWQgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLWNvbXBhdGlibGUgd2Fsa2VyIGltcGxlbWVudGF0aW9uIGZvciBu
b24tU0hBRE9XX0RPTSBjb25maWd1cmF0aW9ucy4KK2NsYXNzIFNoYWRvd1RyZWVXYWxrZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSogbm9kZSkK
KyAgICAgICAgOiBtX25vZGUobm9kZSkKKyAgICB7IH0KKworICAgIE5vZGUqIGdldCgpIGNvbnN0
IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KKworICAgIHZvaWQgcGFyZW50
KCkgeyBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudChtX25vZGUpOyB9CisgICAgdm9pZCBuZXh0U2li
bGluZygpIHsgbV9ub2RlID0gdHJhdmVyc2VOZXh0U2libGluZyhtX25vZGUpOyB9CisgICAgdm9p
ZCBwcmV2aW91c1NpYmxpbmcoKSB7IG1fbm9kZSA9IHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKG1f
bm9kZSk7IH0KKyAgICB2b2lkIGxhc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9ub2RlLT5sYXN0Q2hp
bGQoKTsgfQorICAgIHZvaWQgZmlyc3RDaGlsZCgpIHsgbV9ub2RlID0gbV9ub2RlLT5maXJzdENo
aWxkKCk7IH0KKworICAgIHZvaWQgbmV4dCgpIHsgbV9ub2RlID0gdHJhdmVyc2VOZXh0KG1fbm9k
ZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzKCkgeyBtX25vZGUgPSB0cmF2ZXJzZVByZXZpb3VzKG1f
bm9kZSk7IH0KKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiwg
UGFyZW50RGV0YWlscyogPSAwKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVy
c2VOZXh0KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VQcmV2aW91cyhj
b25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTmV4dFNpYmxpbmcoY29uc3Qg
Tm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhjb25zdCBO
b2RlKik7CisgICAgc3RhdGljIE5vZGUqIG5leHRJbmNsdWRpbmdDb250YWluaW5nU2NvcGUoY29u
c3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBwcmV2aW91c0luY2x1ZGluZ0NvbnRhaW5pbmdT
Y29wZShjb25zdCBOb2RlKik7CisKKyAgICBjb25zdCBOb2RlKiBtX25vZGU7Cit9OworCitpbmxp
bmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSogbm9k
ZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5U
KQorICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnRPdmVySW5zZXJ0aW9uUG9pbnQobm9kZSwg
ZGV0YWlscykpCisgICAgICAgIHJldHVybiBwYXJlbnQ7CisjZW5kaWYKKworICAgIGZvciAoTm9k
ZSogd2FsayA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsgd2Fsazsgd2FsayA9IHdhbGstPnBh
cmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICBpZiAoIXdhbGstPmlzU2hhZG93Qm91bmRhcnko
KSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOworfQor
CitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyhjb25z
dCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpCisgICAgaWYgKE5v
ZGUqIG5leHQgPSBuZXh0U2libGluZ092ZXJJbnNlcnRpb25Qb2ludChub2RlLCAmbm9kZSkpCisg
ICAgICAgIHJldHVybiBuZXh0OworI2VuZGlmCisKKyAgICByZXR1cm4gbm9kZS0+bmV4dFNpYmxp
bmcoKTsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlv
dXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisjaWYgRU5BQkxFKERFVEFJTFNfRUxFTUVO
VCkKKyAgICBpZiAoTm9kZSogcHJldmlvdXMgPSBwcmV2aW91c1NpYmxpbmdPdmVySW5zZXJ0aW9u
UG9pbnQobm9kZSwgJm5vZGUpKQorICAgICAgICByZXR1cm4gcHJldmlvdXM7CisjZW5kaWYKKwor
ICAgIHJldHVybiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKK30KKworaW5saW5lIE5vZGUqIFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dChjb25zdCBOb2RlKiBub2RlKQoreworICAgIGZv
ciAoTm9kZSogd2FsayA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSk7IHdhbGs7IHdhbGsgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0KHdhbGspKSB7CisgICAgICAgIGlmICghd2Fsay0+aXNTaGFkb3dC
b3VuZGFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7CisgICAgfQorCisgICAgcmV0dXJu
IDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3Vz
KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2RlKiB3YWxrID0gTm9kZVRyYXZlcnNh
bDo6cHJldmlvdXMobm9kZSk7IHdhbGs7IHdhbGsgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyh3
YWxrKSkgeworICAgICAgICBpZiAoIXdhbGstPmlzU2hhZG93Qm91bmRhcnkoKSkKKyAgICAgICAg
ICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiB2b2lkIFBhcmVu
dERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50KQogewogICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkgewogICAgICAgICBtX2lu
c2VydGlvblBvaW50ID0gaW5zZXJ0aW9uUG9pbnQ7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHlsZUluaGVyaXRhbmNl
IHx8IGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsKKyNlbmRpZgogICAg
IH0KIH0KIApAQCAtNDksMTQgKzE0MCwyNCBAQCB2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZl
cnNlU2hhZG93Um9vdChjb25zdCBTaGFkb3dSb290KiByb290KQogCiBDb250YWluZXJOb2RlKiBw
YXJlbnRTbG93KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCiB7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtl
cihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNyb3NzVXBwZXJCb3VuZGFyeSwgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDYW5TdGFydEZyb21TaGFkb3dCb3VuZGFyeSk7CisjZWxz
ZQorICAgIFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisKICAgICBDb250
YWluZXJOb2RlKiBmb3VuZCA9IHRvQ29udGFpbmVyTm9kZSh3YWxrZXIudHJhdmVyc2VQYXJlbnQo
d2Fsa2VyLmdldCgpLCBkZXRhaWxzKSk7Ci0gICAgcmV0dXJuIGRldGFpbHMtPm91dE9mQ29tcG9z
aXRpb24oKSA/IDAgOiBmb3VuZDsKKyAgICByZXR1cm4gZGV0YWlscyAmJiBkZXRhaWxzLT5vdXRP
ZkNvbXBvc2l0aW9uKCkgPyAwIDogZm91bmQ7CiB9CiAKIE5vZGUqIG5leHRTaWJsaW5nU2xvdyhj
b25zdCBOb2RlKiBub2RlKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CisjZWxzZQorICAgIFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyKG5vZGUpOworI2VuZGlmCisKICAgICBpZiAobm9kZS0+aXNCZWZvcmVQc2V1ZG9F
bGVtZW50KCkpIHsKICAgICAgICAgd2Fsa2VyLnBhcmVudCgpOwogICAgICAgICB3YWxrZXIuZmly
c3RDaGlsZCgpOwpAQCAtNjksMTMgKzE3MCwxNyBAQCBOb2RlKiBuZXh0U2libGluZ1Nsb3coY29u
c3QgTm9kZSogbm9kZSkKICAgICBOb2RlKiBwYXJlbnQgPSB3YWxrZXIudHJhdmVyc2VQYXJlbnQo
bm9kZSk7CiAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkKICAgICAg
ICAgcmV0dXJuIHRvRWxlbWVudChwYXJlbnQpLT5wc2V1ZG9FbGVtZW50KEFGVEVSKTsKLQogICAg
IHJldHVybiAwOwogfQogCiBOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5v
ZGUpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyIHdhbGtlcihub2RlKTsKKyNlbHNlCisgICAgU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9k
ZSk7CisjZW5kaWYKKwogICAgIGlmIChub2RlLT5pc0FmdGVyUHNldWRvRWxlbWVudCgpKSB7CiAg
ICAgICAgIHdhbGtlci5wYXJlbnQoKTsKICAgICAgICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwpAQCAt
OTQsMzQgKzE5OSw0NiBAQCBOb2RlKiBwcmV2aW91c1NpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5v
ZGUpCiAKIE5vZGUqIG5leHRJblNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklY
TUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFC
TEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MzMzOQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLm5leHQoKTsK
ICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gTm9kZVRyYXZlcnNh
bDo6bmV4dChub2RlKTsKKyNlbmRpZgogfQogCiBOb2RlKiBwcmV2aW91c0luU2NvcGUoY29uc3Qg
Tm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNo
b3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5k
YXJ5KTsKICAgICB3YWxrZXIucHJldmlvdXMoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOwor
I2Vsc2UKKyAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSk7CisjZW5kaWYK
IH0KIAogTm9kZSogcGFyZW50SW5TY29wZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJ
WE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5B
QkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5wYXJlbnQo
KTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gbm9kZS0+cGFy
ZW50Tm9kZSgpOworI2VuZGlmCiB9CiAKIE5vZGUqIGxhc3RDaGlsZEluU2NvcGUoY29uc3QgTm9k
ZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3Vs
ZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAg
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5
KTsKICAgICB3YWxrZXIubGFzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNl
bHNlCisgICAgcmV0dXJuIG5vZGUtPmxhc3RDaGlsZCgpOworI2VuZGlmCiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2FsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCmluZGV4IDJkYjNlNzU5NWNh
Y2MwZjljMDVmODZmZmExMTdiYWU0ODhkNTg4MDQuLjRjYjc3Y2IyNjQ0OGIzOTEzY2M1YTAzNjcz
MGFkMDAwNzRlNmYxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nVHJhdmVyc2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2
ZXJzYWwuaApAQCAtNjQsNiArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9vdXRPZkNvbXBv
c2l0aW9uOwogfTsKIAorQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUqKTsKIENvbnRh
aW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOwogQ29udGFpbmVy
Tm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOwogTm9kZSogbmV4
dFNpYmxpbmcoY29uc3QgTm9kZSopOwpAQCAtNzYsNiArNzcsMTIgQEAgTm9kZSogcHJldmlvdXNJ
blNjb3BlKGNvbnN0IE5vZGUqKTsKIE5vZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9kZSopOwog
Tm9kZSogbGFzdENoaWxkSW5TY29wZShjb25zdCBOb2RlKik7CiAKK2lubGluZSBDb250YWluZXJO
b2RlKiBwYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBQYXJlbnREZXRhaWxzIGRldGFp
bHM7CisgICAgcmV0dXJuIHBhcmVudChub2RlLCAmZGV0YWlscyk7Cit9CisKIGlubGluZSBDb250
YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWls
cykKIHsKICAgICBpZiAoIW5vZGUtPm5lZWRzU2hhZG93VHJlZVdhbGtlcigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKaW5kZXggZTNhNDgyMjJiOTNkMzhkNjcwZWMyYTIzODFmMGJmNmRh
MTUxNzQyZC4uNzRlOTgyZDFjYzY0NDg1MzZiZDkzMzA4ZmRmNDYyYmU5N2YwNTY4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTcsNyArNTcsMTEgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJh
Z21lbnQsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFk
b3dSb290PiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCogcG9pbnRlcnNbM107
CisjZWxzZQorICAgIHZvaWQqIHBvaW50ZXJzWzJdOworI2VuZGlmCiAgICAgdW5zaWduZWQgY291
bnRlcnNBbmRGbGFnc1sxXTsKIH07CiAKQEAgLTI2Miw2ICsyNjYsNyBAQCB2b2lkIFNoYWRvd1Jv
b3Q6OmF0dGFjaCgpCiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgU2hhZG93
Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogeworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogICAgIERvY3VtZW50RnJhZ21lbnQ6Omluc2VydGVkSW50byhp
bnNlcnRpb25Qb2ludCk7CiAKICAgICBpZiAoIWluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkg
fHwgIWlzT2xkZXN0KCkpCkBAIC0yNzksMTAgKzI4NCwxNCBAQCBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBp
bnNlcgogICAgIH0KIAogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOworI2Vsc2UKKyAgICByZXR1
cm4gRG9jdW1lbnRGcmFnbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKKyNlbmRp
ZgogfQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2Vy
dGlvblBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpICYmIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290KSB7
CiAgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5pbmdTaGFkb3dSb290
KCk7CiAgICAgICAgIGlmICghcm9vdCkKQEAgLTI5Miw3ICszMDEsNyBAQCB2b2lkIFNoYWRvd1Jv
b3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICAg
ICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1lbnRTaGFkb3coKTsK
ICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBmYWxzZTsKICAgICB9
Ci0KKyNlbmRpZgogICAgIERvY3VtZW50RnJhZ21lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBv
aW50KTsKIH0KIApAQCAtMzE3LDYgKzMyNiw3IEBAIHZvaWQgU2hhZG93Um9vdDo6dW5yZWdpc3Rl
clNjb3BlZEhUTUxTdHlsZUNoaWxkKCkKICAgICBzZXRIYXNTY29wZWRIVE1MU3R5bGVDaGlsZCht
X251bWJlck9mU3R5bGVzID4gMCk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIFNjb3Bl
Q29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24o
KQogewogICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQpAQCAtMzI0LDcgKzMzNCw4IEBAIFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRp
b24oKQogCiAgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5ldyBTY29wZUNvbnRl
bnREaXN0cmlidXRpb24pOwogICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOwot
fSAgIAorfQorI2VuZGlmCiAKIHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKQEAgLTMzMyw3ICszNDQs
OSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgVHJlZVNjb3BlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZXYpOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fbmV4dCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaW5mby5h
ZGRNZW1iZXIobV9zY29wZURpc3RyaWJ1dGlvbik7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmgKaW5kZXggMTUyNjkzOGVkZTUwNDBkZGM0MzM5ZjU4ZmY4NjUxYTJjNzI1OWY3
OS4uODU5ZjBkMjJkZWFkODJhZDhjN2RlMTA1NjRmMjgyMjI5MTQxY2U1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5oCkBAIC04OCw5ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJp
YnV0aW9uKCkgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQogICAgIGNvbnN0
IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmlidXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAgU2NvcGVDb250ZW50RGlzdHJp
YnV0aW9uKiBlbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpOworI2VuZGlmCiAKICAgICBTaGFkb3dS
b290VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhvclNoYWRvd1Jvb3QgPyBBdXRo
b3JTaGFkb3dSb290IDogVXNlckFnZW50U2hhZG93Um9vdDsgfQogICAgIGJvb2wgaXNBY2Nlc3Np
YmxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dGhvclNoYWRvd1Jvb3Q7IH0KQEAgLTEx
MCw3ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgU2hhZG93Um9vdCogbV9wcmV2OwogICAgIFNo
YWRvd1Jvb3QqIG1fbmV4dDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBPd25QdHI8U2Nv
cGVDb250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOworI2VuZGlmCiAgICAg
dW5zaWduZWQgbV9udW1iZXJPZlN0eWxlcyA6IDI4OwogICAgIHVuc2lnbmVkIG1fYXBwbHlBdXRo
b3JTdHlsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlIDogMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCAwNWVlYmFi
NDEwZDg4YjQxZWI4MTE5MzEyYWQ5ZDkxYzI1ZDQxZWMyLi4zOWEyNmM5M2E0NjcwMzNmZDBmMTgx
MTNmNDhiZDIxYzkyMmQ5MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCkBAIC0yOCwxMiArMjgsMTQgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnNlcnRpb25Qb2ludDsKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1hcnlR
dWVyeVNlbGVjdG9yKCkKQEAgLTQyLDE1ICs0NCwyMyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdW1tYXJ5UXVlcnlTZWxlY3RvcigpCiAgICAgcmV0dXJuIHNlbGVjdG9yOwogfTsKIAot
Y2xhc3MgRGV0YWlsc0NvbnRlbnRFbGVtZW50IDogcHVibGljIEhUTUxDb250ZW50RWxlbWVudCB7
CitjbGFzcyBEZXRhaWxzQ29udGVudEVsZW1lbnQgOiBwdWJsaWMgU2hhZG93SW5zZXJ0aW9uUG9p
bnRUeXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXRhaWxzQ29udGVudEVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgogICAgIERldGFpbHNDb250ZW50
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgICAgIDogSFRNTENvbnRlbnRFbGVtZW50
KEhUTUxOYW1lczo6d2Via2l0U2hhZG93Q29udGVudFRhZywgZG9jdW1lbnQpCisgICAgICAgIDog
U2hhZG93SW5zZXJ0aW9uUG9pbnRUeXBlKEhUTUxOYW1lczo6d2Via2l0U2hhZG93Q29udGVudFRh
ZywgZG9jdW1lbnQpCiAgICAgewogICAgIH0KKworICAgIC8vIFRoaXMgbWF0Y2ggc2hvdWxkIGJl
IG11dHVhbGx5IGV4Y2x1c2l2ZSB0byBEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6Om1hdGNoVHlwZUZv
cigpCisgICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqIG5vZGUpIE9WRVJS
SURFCisgICAgeworICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCBub2RlICE9
IG5vZGUtPnBhcmVudE5vZGUoKS0+cXVlcnlTZWxlY3RvcihzdW1tYXJ5UXVlcnlTZWxlY3Rvcigp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKSkKKyAgICAgICAgICAgIHJldHVybiBBbHdheXNNYXRjaGVz
OworICAgICAgICByZXR1cm4gTmV2ZXJNYXRjaGVzOworICAgIH0KIH07CiAKIFBhc3NSZWZQdHI8
RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCkBAIC01OCw3ICs2OCw3IEBAIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRl
bnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZXRhaWxzQ29udGVudEVsZW1lbnQoZG9jdW1lbnQp
KTsKIH0KIAotY2xhc3MgRGV0YWlsc1N1bW1hcnlFbGVtZW50IDogcHVibGljIEhUTUxDb250ZW50
RWxlbWVudCB7CitjbGFzcyBEZXRhaWxzU3VtbWFyeUVsZW1lbnQgOiBwdWJsaWMgU2hhZG93SW5z
ZXJ0aW9uUG9pbnRUeXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXRhaWxz
U3VtbWFyeUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCkBAIC03MCw3ICs4MCw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBEZXRhaWxzU3VtbWFyeUVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50KQotICAgICAgICA6IEhUTUxDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OndlYmtpdFNo
YWRvd0NvbnRlbnRUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRvd0luc2VydGlvblBvaW50
VHlwZShIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRvY3VtZW50KQogICAgIHsg
fQogCiAgICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBlRm9yKE5vZGUqIG5vZGUpIE9WRVJS
SURFCkBAIC0xMjAsNiArMTMwLDExIEBAIHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkKICAgICByb290LT5hcHBlbmRDaGlsZChEZXRhaWxzQ29udGVudEVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgQVNTRVJUX05PX0VYQ0VQVElPTiwgdHJ1ZSk7CiB9CiAK
K0VsZW1lbnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmFsbGJhY2tTdW1tYXJ5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGV0YWlsc1N1bW1hcnlFbGVtZW50Kj4odXNlckFnZW50
U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpLT5mYWxsYmFja1N1bW1hcnkoKTsKK30KKwogRWxl
bWVudCogSFRNTERldGFpbHNFbGVtZW50OjpmaW5kTWFpblN1bW1hcnkoKSBjb25zdAogewogICAg
IGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CkBAIC0xMjcsNyArMTQyLDcgQEAgRWxlbWVudCogSFRNTERldGFpbHNF
bGVtZW50OjpmaW5kTWFpblN1bW1hcnkoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHRvRWxl
bWVudChjaGlsZCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1t
YXJ5RWxlbWVudCo+KHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJh
Y2tTdW1tYXJ5KCk7CisgICAgcmV0dXJuIGZhbGxiYWNrU3VtbWFyeSgpOwogfQogCiB2b2lkIEhU
TUxEZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTE0Niw4ICsxNjEsMTggQEAgYm9vbCBI
VE1MRGV0YWlsc0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIGMKICAgICBpZiAoIWNoaWxkQ29udGV4dC5pc09uRW5jYXBzdWxhdGlv
bkJvdW5kYXJ5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtX2lzT3BlbikK
KyAgICBpZiAobV9pc09wZW4pIHsKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIC8v
IFRoZSBmYWxsYmFjayA8c3VtbWFyeT4gc2hvdWxkbid0IGJlIHZpc2libGUgdW5sZXNzIGl0IGlz
IHVzZWQgYXMgYSBtYWluIHN1bW1hcnkuCisgICAgICAgIC8vIFdpdGggU0hBRE9XX0RPTSwgPGRl
dGFpbHM+IGNhbiBqdXN0IGxldCA8Y29udGVudD4gZmFsbGJhY2sgc3lzdGVtIHRha2UgY2FyZSBv
ZiB0aGlzLgorICAgICAgICBpZiAoY2hpbGRDb250ZXh0Lm5vZGUoKS0+aGFzVGFnTmFtZShzdW1t
YXJ5VGFnKSkgeworICAgICAgICAgICAgRWxlbWVudCogZmFsbGJhY2sgPSBmYWxsYmFja1N1bW1h
cnkoKTsKKyAgICAgICAgICAgIGlmIChmYWxsYmFjayAhPSBmaW5kTWFpblN1bW1hcnkoKSAmJiBm
YWxsYmFjayA9PSBjaGlsZENvbnRleHQubm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOworICAgIH0KIAogICAgIGlmICgh
Y2hpbGRDb250ZXh0Lm5vZGUoKS0+aGFzVGFnTmFtZShzdW1tYXJ5VGFnKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTU1LDExICsxODAsMTMwIEBAIGJvb2wgSFRNTERldGFpbHNFbGVtZW50
OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBj
CiAgICAgcmV0dXJuIGNoaWxkQ29udGV4dC5ub2RlKCkgPT0gZmluZE1haW5TdW1tYXJ5KCkgJiYg
SFRNTEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKIH0K
IAordm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxk
Q291bnREZWx0YSkKK3sKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisgICAgLy8gVGhpcyBpcyBh
IHNpbXBsaWZpZWQgdmVyc2lvbiBvZiBDb250ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGVEaXN0
cmlidXRpb24oKQorICAgIC8vIHdoaWNoIHJlYXR0YWNoZXMgY2hpbGRyZW4gdG8gbWFrZSB0aGVt
IGJlaW5nIHJlLWRpc3RyaWJ1dGVkIHRvIGFwcHJvcHJpYXRlIGluc2VydGlvbiBwb2ludHMuCisg
ICAgaWYgKGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgp
OyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIG4tPmxhenlSZWF0dGFjaCgp
OworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgfQorI2VuZGlmCisgICAgSFRN
TEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwg
YWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7Cit9CisKIHZvaWQgSFRNTERldGFpbHNFbGVt
ZW50Ojp0b2dnbGVPcGVuKCkKIHsKICAgICBzZXRBdHRyaWJ1dGUob3BlbkF0dHIsIG1faXNPcGVu
ID8gbnVsbEF0b20gOiBlbXB0eUF0b20pOwogfQogCisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQor
bmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwgeworCitzdGF0aWMgaW5saW5lIEluc2Vy
dGlvblBvaW50KiBmaW5kSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBO
b2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgU2hhZG93Um9vdCogcm9vdCA9IHBhcmVudC0+eW91bmdlc3RT
aGFkb3dSb290KCk7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGJv
b2wgaGFzSW5zZXJldGlvblBvaW50ID0gcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZGV0
YWlsc1RhZykgfHwgcGFyZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c3VtbWFyeVRhZyk7Cisg
ICAgaWYgKCFoYXNJbnNlcmV0aW9uUG9pbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9y
IChOb2RlKiBtYXlJbnNlcnRpb25Qb2ludCA9IHJvb3QtPmZpcnN0Q2hpbGQoKTsgbWF5SW5zZXJ0
aW9uUG9pbnQ7IG1heUluc2VydGlvblBvaW50ID0gbWF5SW5zZXJ0aW9uUG9pbnQtPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKG1heUluc2VydGlvblBvaW50LT5pc0luc2VydGlvblBvaW50
KCkgJiYgdG9JbnNlcnRpb25Qb2ludChtYXlJbnNlcnRpb25Qb2ludCktPmFsd2F5c01hdGNoZXMo
Y29uc3RfY2FzdDxOb2RlKj4obm9kZSkpKQorICAgICAgICAgICAgcmV0dXJuIHRvSW5zZXJ0aW9u
UG9pbnQobWF5SW5zZXJ0aW9uUG9pbnQpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisK
K3N0YXRpYyBpbmxpbmUgVmVjdG9yPE5vZGUqPiBnZXREaXN0cmlidXRlZE5vZGUoSW5zZXJ0aW9u
UG9pbnQqIHBhcmVudCkKK3sKKyAgICBWZWN0b3I8Tm9kZSo+IG5vZGVzOworICAgIEVsZW1lbnQq
IGhvc3QgPSBwYXJlbnQtPnNoYWRvd0hvc3QoKTsKKyAgICBBU1NFUlQoaG9zdCk7CisgICAgaWYg
KCFob3N0KQorICAgICAgICByZXR1cm4gbm9kZXM7CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0g
aG9zdC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkg
eworICAgICAgICBpZiAocGFyZW50LT5hbHdheXNNYXRjaGVzKGNoaWxkKSkKKyAgICAgICAgICAg
IG5vZGVzLmFwcGVuZChjaGlsZCk7CisgICAgfQorCisgICAgcmV0dXJuIG5vZGVzOworfQorCitO
b2RlKiBwYXJlbnRPdmVySW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0
YWlscyogZGV0YWlscykKK3sKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
ID0gZmluZEluc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgIGlmIChkZXRhaWxzKQorICAg
ICAgICAgICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2lu
dCk7CisgICAgICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoZGV0YWls
c1RhZykgfHwgbm9kZS0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKHN1bW1hcnlUYWcpKTsKKyAg
ICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK
K30KKworTm9kZSogbmV4dFNpYmxpbmdPdmVySW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9k
ZSwgY29uc3QgTm9kZSoqIGNvbnRpbnVlVHJhdmVyc2luZ0Zyb20pCit7CisgICAgaWYgKEluc2Vy
dGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludChub2RlKSkgewor
ICAgICAgICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9kZShp
bnNlcnRpb25Qb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaXN0cmli
dXRpb24uc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIC8vIFN0YXlpbmcgaW5zaWRlIGRpc3Ry
aWJ1dGlvbi4KKyAgICAgICAgICAgIGlmIChkaXN0cmlidXRpb25baV0gPT0gbm9kZSAmJiBkaXN0
cmlidXRpb24ubGFzdCgpICE9IG5vZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3RyaWJ1
dGlvbltpICsgMV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFN0ZXBwaW5nIG91
dCBmcm9tIGRpc3RyaWJ1dGVkIGxvY2F0aW9uCisgICAgICAgICpjb250aW51ZVRyYXZlcnNpbmdG
cm9tID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU3RlcHBpbmcg
aW50byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50KCkp
IHsKKyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0aW9uID0gZ2V0RGlzdHJpYnV0
ZWROb2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpKTsKKyAgICAg
ICAgICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZGlzdHJpYnV0aW9uLmZpcnN0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworTm9kZSogcHJldmlvdXNTaWJsaW5nT3Zlckluc2VydGlvblBvaW50KGNvbnN0IE5v
ZGUqIG5vZGUsIGNvbnN0IE5vZGUqKiBjb250aW51ZVRyYXZlcnNpbmdGcm9tKQoreworICAgIGlm
IChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnQobm9k
ZSkpIHsKKyAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRl
ZE5vZGUoaW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGlzdHJpYnV0aW9uLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAvLyBTdGF5aW5nIGluc2lk
ZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBpZiAoZGlzdHJpYnV0aW9uW2ldID09IG5vZGUg
JiYgZGlzdHJpYnV0aW9uLmZpcnN0KCkgIT0gbm9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZGlzdHJpYnV0aW9uW2kgLSAxXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU3Rl
cHBpbmcgb3V0IGZyb20gZGlzdHJpYnV0ZWQgbG9jYXRpb24KKyAgICAgICAgKmNvbnRpbnVlVHJh
dmVyc2luZ0Zyb20gPSBpbnNlcnRpb25Qb2ludDsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBT
dGVwcGluZyBpbnRvIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9u
UG9pbnQoKSkgeworICAgICAgICAgICAgVmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXRE
aXN0cmlidXRlZE5vZGUodG9JbnNlcnRpb25Qb2ludChjb25zdF9jYXN0PE5vZGUqPihub2RlKSkp
OworICAgICAgICAgICAgaWYgKCFkaXN0cmlidXRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBkaXN0cmlidXRpb24ubGFzdCgpOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKK30gLy8gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbAorI2VuZGlmIC8vICFF
TkFCTEUoU0hBRE9XX0RPTSkKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5oCmluZGV4IDlkYTk2OTg4NjE0NjRjZDNkMGU3MmYyMTQ3NjgwNzNhMjNi
ZDM2YmEuLjJhZDM3ZjY3MWRhNWI1Y2RhYzNmODM1YWEwYTA4ZGNmNThiODdiYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaApAQCAtMzgsMTMgKzM4LDMyIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgT1ZFUlJJREU7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGJvb2wsIE5vZGUqLCBOb2RlKiwgaW50KTsKKyAgICBFbGVtZW50KiBmYWxsYmFja1N1bW1h
cnkoKSBjb25zdDsKICAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAogICAgIGJvb2wg
bV9pc09wZW47CiAKIH07CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKK2NsYXNzIEhUTUxDb250
ZW50RWxlbWVudDsKK3R5cGVkZWYgSFRNTENvbnRlbnRFbGVtZW50IFNoYWRvd0luc2VydGlvblBv
aW50VHlwZTsKKyNlbHNlCitjbGFzcyBJbnNlcnRpb25Qb2ludDsKK3R5cGVkZWYgSW5zZXJ0aW9u
UG9pbnQgU2hhZG93SW5zZXJ0aW9uUG9pbnRUeXBlOworCituYW1lc3BhY2UgTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbCB7CisKK2NsYXNzIFBhcmVudERldGFpbHM7CisKK05vZGUqIHBhcmVudE92ZXJJ
bnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyopOworTm9kZSogbmV4dFNp
YmxpbmdPdmVySW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSosIGNvbnN0IE5vZGUqKiBjb250aW51
ZVRyYXZlcnNpbmdGcm9tKTsKK05vZGUqIHByZXZpb3VzU2libGluZ092ZXJJbnNlcnRpb25Qb2lu
dChjb25zdCBOb2RlKiwgY29uc3QgTm9kZSoqIGNvbnRpbnVlVHJhdmVyc2luZ0Zyb20pOworCit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSFRNTERldGFp
bHNFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IDZhYWY5OTQ5OGI2YTAwNDEzOTVhZjU1NWY1MmUxNzBiZWZkZmJmYjcuLmEzMGFmMWVlY2E2YWI5
OWNmZjczNWQ5MDQyYzNlZTY4NjFiYTMyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtNTM3LDggKzUzNywxMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnVwZGF0ZVR5cGUoKQogICAgICAgICAgICAgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKHRydWUpOwog
ICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBl
bGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAgICAg
ICAgIGVsZW1lbnRTaGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgogCiAg
ICAgc2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggOTAzOWI0MGI4
MDM3NDBkZjliMjE1ODJiMDg5NTFjNTUwODY3OGUyYi4uZWRkYzNhYjZhMjA1ODU5MTYwNjg4M2Zj
YmYwZDc3YzlkMzY4MGI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Vt
bWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotY2xhc3MgU3VtbWFyeUNvbnRlbnRFbGVtZW50IDogcHVi
bGljIEhUTUxDb250ZW50RWxlbWVudCB7CitjbGFzcyBTdW1tYXJ5Q29udGVudEVsZW1lbnQgOiBw
dWJsaWMgU2hhZG93SW5zZXJ0aW9uUG9pbnRUeXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdW1tYXJ5Q29udGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2
YXRlOgogICAgIFN1bW1hcnlDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAg
ICAgIDogSFRNTENvbnRlbnRFbGVtZW50KEhUTUxOYW1lczo6d2Via2l0U2hhZG93Q29udGVudFRh
ZywgZG9jdW1lbnQpCisgICAgICAgIDogU2hhZG93SW5zZXJ0aW9uUG9pbnRUeXBlKEhUTUxOYW1l
czo6d2Via2l0U2hhZG93Q29udGVudFRhZywgZG9jdW1lbnQpCiAgICAgewogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApp
bmRleCAzZmNiZjlkNTBiZTY1MzQwODhmMWJiNTg1ODUwNjgwYjU0ZTBkODdlLi5hMTlkZGY0MTE4
ZDlmMzcyMzNiMmRiZjliZmRjNDBmNzgwOTJiZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKIAorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIK
ICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50
LmgiCkBAIC00NDEsMyArNDQzLDUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZFNoYWRv
d0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQqIGhvc3QpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJM
RShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuaAppbmRleCBkZmVhYjhjYzdmZGJlNTBhZGY2MTA3ZThkNjBhMGRmMjI4NDE2ZDBi
Li45NTUzMWI0YjRjNTY1OGYxYzU2OGUxZmQ2NzM0NGMxNjhlMDA1NzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzcsNiArMzcs
OCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ29udGFpbmVyTm9kZTsKQEAgLTE2Myw0ICsxNjUsNSBAQCBpbmxpbmUgYm9vbCBDb250ZW50
RGlzdHJpYnV0b3I6Om5lZWRzRGlzdHJpYnV0aW9uKCkgY29uc3QKIAogfQogCisjZW5kaWYgLy8g
RU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAppbmRleCA1MmEwYWM1YTFmOTJmYWRjZTZi
MDMzYzQ4YzBkZTYxMzBkYzhjNmQ2Li40MjFhYzgwYmIwYTkzOTRmZTk0ZWE5NDRkY2Y1MDRjNjQx
ZGJlZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9p
bnQuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKQEAgLTkxLDMgKzkzLDUgQEAgYm9v
bCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4mIHNpYmxpbmdzLCBpbnQgbnQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19E
T00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0
b3JRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVl
cnkuaAppbmRleCA0ZDM4ZWRkMWE1Yzg2MTBmNzcyOTMxMzI0YTZhNmVlZGNkMzdhNzE2Li5mZTI0
ZDJkM2Q4YjdjZWE3YzEzMGQwNzhjNWJmYjE0ZWM4YmEyMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3LDgg
QEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERv
Y3VtZW50OwpAQCAtNzYsNCArNzgsNSBAQCBwcml2YXRlOgogCiB9CiAKKyNlbmRpZiAvLyBFTkFC
TEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5jcHAKaW5kZXggNDA0NDcxNDBmYWFhYTg3OTEwZDYxNTkwN2Zi
NDdhODk5ZGMwNmZmZi4uYzRmM2ExNjIzYWZlNzYyZGE5NWE0Y2FjZDljODJmYjc0YzYzOTE0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
Y3BwCkBAIC0zOCw2ICszOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorCiB1c2luZyBIVE1MTmFtZXM6OnNlbGVjdEF0dHI7CiAKIGNvbnN0IFF1
YWxpZmllZE5hbWUmIEhUTUxDb250ZW50RWxlbWVudDo6Y29udGVudFRhZ05hbWUoRG9jdW1lbnQq
KQpAQCAtNTEsOCArNTMsNiBAQCBjb25zdCBRdWFsaWZpZWROYW1lJiBIVE1MQ29udGVudEVsZW1l
bnQ6OmNvbnRlbnRUYWdOYW1lKERvY3VtZW50KikKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKFNI
QURPV19ET00pCi0KIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRFbGVtZW50PiBIVE1MQ29udGVudEVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MQ29udGVudEVsZW1lbnQoY29udGVudFRhZ05hbWUoZG9jdW1lbnQpLCBkb2N1bWVu
dCkpOwpAQCAtMjAzLDE3ICsyMDMsNiBAQCBib29sIEhUTUxDb250ZW50RWxlbWVudDo6dmFsaWRh
dGVTZWxlY3QoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jZWxzZQotCi1QYXNzUmVm
UHRyPEhUTUxDb250ZW50RWxlbWVudD4gSFRNTENvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTENvbnRlbnRFbGVt
ZW50KGNvbnRlbnRUYWdOYW1lKGRvY3VtZW50KSwgZG9jdW1lbnQpKTsKLX0KLQotSFRNTENvbnRl
bnRFbGVtZW50OjpIVE1MQ29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9j
dW1lbnQpCi17IH0KLQogI2VuZGlmIC8vIGlmIEVOQUJMRShTSEFET1dfRE9NKQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCmluZGV4IDlk
MGM4ZmM0MzUzYmY5NmNlMjRkMWEyNmYyNTFhZGMzYzk4MWFkMDguLmE5MGJkYmM3NzZmOWY2MDc4
NjY1MjJiZGNkYWNmNzcwNWMyYjgzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50RWxlbWVudC5oCkBAIC04MSwyMyArODEsNiBAQCBpbmxpbmUgY29uc3Qg
Q1NTU2VsZWN0b3JMaXN0JiBIVE1MQ29udGVudEVsZW1lbnQ6OnNlbGVjdG9yTGlzdCgpCiAgICAg
cmV0dXJuIG1fc2VsZWN0b3JMaXN0OwogfQogCi0jZWxzZQotCi0vLyBGSVhNRTogc2hvdWxkbid0
IGluaGVyaXQgZnJvbSBJbnNlcnRpb25Qb2ludDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMzMzOQotY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50IDogcHVibGljIElu
c2VydGlvblBvaW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYg
Y29udGVudFRhZ05hbWUoRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MQ29u
dGVudEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCi0gICAgdmlydHVhbCBUeXBlIGluc2Vy
dGlvblBvaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRlbnRJbnNlcnRpb25Q
b2ludDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgSFRNTENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi19OwotCi0jZW5kaWYgLy8gaWYgRU5BQkxFKFNIQURP
V19ET00pCi0KIGlubGluZSBib29sIGlzSFRNTENvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIG5v
ZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwpAQCAtMTEwLDYgKzkzLDggQEAgaW5saW5lIEhUTUxD
b250ZW50RWxlbWVudCogdG9IVE1MQ29udGVudEVsZW1lbnQoTm9kZSogbm9kZSkKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTENvbnRlbnRFbGVtZW50Kj4obm9kZSk7CiB9CiAKKyNlbmRpZiAv
LyBpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCBlMDgzMThiZmY1YThlMGJiYzA0
NDRmYzg3ODZkMzkxM2Y5OGM3Yzk2Li5mYmJkODMzNGY3N2Q1MjdlZGJlODg2YTQxNmNlZTIxZmQ0
N2VlZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
Y3BwCkBAIC0zOSwxMCArMzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEluc2VydGlv
blBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3Jl
YXRlSW5zZXJ0aW9uUG9pbnQpCisgICAgOiBTaW1wbGVJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBk
b2N1bWVudCkKICAgICAsIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290KGZhbHNlKQogewogfQpA
QCAtNzksMjUgKzgxLDYgQEAgYm9vbCBJbnNlcnRpb25Qb2ludDo6c2hvdWxkVXNlRmFsbGJhY2tF
bGVtZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIGlzQWN0aXZlKCkgJiYgIWhhc0Rpc3RyaWJ1dGlv
bigpOwogfQogCi1ib29sIEluc2VydGlvblBvaW50Ojppc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gdHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpICYm
IGlzQWN0aXZlKCk7Ci19Ci0KLWJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKCkgY29uc3QK
LXsKLSAgICBpZiAoIWNvbnRhaW5pbmdTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBjb25zdCBOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChub2Rl
KSB7Ci0gICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEluc2VydGlvblBv
aW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29uc3QKIHsKICAgICBpZiAoU2hhZG93Um9vdCog
c2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCkBAIC0xMTEsMTEgKzk0LDYgQEAg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gSW5zZXJ0aW9uUG9pbnQ6OmdldERpc3RyaWJ1dGVkTm9kZXMo
KSBjb25zdAogICAgIHJldHVybiBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobm9kZXMpOwogfQogCi1i
b29sIEluc2VydGlvblBvaW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVybiAhaXNTaGFkb3dCb3VuZGFyeSgpICYmIEhU
TUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOwotfQotCiB2b2lkIEluc2VydGlv
blBvaW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAg
SFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkBAIC0yMjksNCArMjA3LDIwIEBAIElu
c2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIHByb2plY3RlZE5v
ZGUpCiAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OwogfQogCitib29sIEluc2VydGlvblBvaW50
Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFjb250YWluaW5nU2hhZG93Um9vdCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgTm9kZSogbm9kZSA9IHBhcmVudE5vZGUo
KTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2lu
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG5vZGUgPSBub2RlLT5w
YXJlbnROb2RlKCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYgLy8gRU5B
QkxFKFNIQURPV19ET00pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDc0MjQzZTljYWE0NTM3YzU5NGE5
MjkwYjQ2ODExZTNiNjAwNWJjZTYuLmU1ZmY1NDY3YzM5NThkN2ViOTc0ZGQzMzI4N2ZlNzc1ODk0
OWVhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApA
QCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc2VydGlv
blBvaW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIFNpbXBsZUluc2VydGlvblBvaW50
IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAg
ICBTaGFkb3dJbnNlcnRpb25Qb2ludCwKQEAgLTU0LDE3ICs1NCwzNSBAQCBwdWJsaWM6CiAgICAg
ICAgIEhhc1RvTWF0Y2hTZWxlY3RvcgogICAgIH07CiAKKyAgICB2aXJ0dWFsIE1hdGNoVHlwZSBt
YXRjaFR5cGVGb3IoTm9kZSopIHsgcmV0dXJuIEFsd2F5c01hdGNoZXM7IH0KKworICAgIGJvb2wg
YWx3YXlzTWF0Y2hlcyhOb2RlKiBub2RlKSB7IHJldHVybiBtYXRjaFR5cGVGb3Iobm9kZSkgPT0g
QWx3YXlzTWF0Y2hlczsgfQorCitwcm90ZWN0ZWQ6CisgICAgU2ltcGxlSW5zZXJ0aW9uUG9pbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAg
ICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVJbnNlcnRpb25Qb2ludCkK
KyAgICB7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnNlcnRpb25Qb2ludE5v
ZGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorfTsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCitjbGFzcyBJbnNl
cnRpb25Qb2ludCA6IHB1YmxpYyBTaW1wbGVJbnNlcnRpb25Qb2ludCB7CitwdWJsaWM6CisKICAg
ICB2aXJ0dWFsIH5JbnNlcnRpb25Qb2ludCgpOwogCiAgICAgYm9vbCBoYXNEaXN0cmlidXRpb24o
KSBjb25zdCB7IHJldHVybiAhbV9kaXN0cmlidXRpb24uaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBz
ZXREaXN0cmlidXRpb24oQ29udGVudERpc3RyaWJ1dGlvbiYgZGlzdHJpYnV0aW9uKSB7IG1fZGlz
dHJpYnV0aW9uLnN3YXAoZGlzdHJpYnV0aW9uKTsgfQogICAgIHZvaWQgY2xlYXJEaXN0cmlidXRp
b24oKSB7IG1fZGlzdHJpYnV0aW9uLmNsZWFyKCk7IH0KLSAgICBib29sIGlzU2hhZG93Qm91bmRh
cnkoKSBjb25zdDsKKyAgICBib29sIGlzU2hhZG93Qm91bmRhcnkoKSBjb25zdCB7IHJldHVybiB0
cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+aXNTaGFkb3dSb290KCkgJiYgaXNBY3RpdmUoKTsgfQog
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdl
dERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNo
VHlwZUZvcihOb2RlKikgeyByZXR1cm4gQWx3YXlzTWF0Y2hlczsgfQogICAgIHZpcnR1YWwgY29u
c3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QoKSB7IHJldHVybiBlbXB0eVNlbGVjdG9y
TGlzdCgpOyB9CiAgICAgdmlydHVhbCBUeXBlIGluc2VydGlvblBvaW50VHlwZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQWZmZWN0U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpAQCAtOTAsMTIgKzEwOCwxMiBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBJ
bnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIE9W
RVJSSURFOworCisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIE9WRVJSSURFIHsgcmV0dXJuICFpc1NoYWRvd0JvdW5k
YXJ5KCkgJiYgSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29udGV4dCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgogCkBAIC0xMDMsMzAgKzEyMSwxNCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9yZWdpc3RlcmVkV2l0aFNoYWRvd1Jvb3Q7CiB9OwogCi1pbmxpbmUg
SW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKLXsKLSAgICBBU1NF
UlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKLX0KLQotaW5saW5lIGNvbnN0IEluc2VydGlv
blBvaW50KiB0b0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJU
KCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEluc2VydGlvblBvaW50Kj4obm9kZSk7Ci19CitJbnNlcnRpb25Qb2ludCogdG9J
bnNlcnRpb25Qb2ludChOb2RlKik7Citjb25zdCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Q
b2ludChjb25zdCBOb2RlKik7CiAKIGlubGluZSBib29sIGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQo
Y29uc3QgTm9kZSogbm9kZSkKIHsKICAgICByZXR1cm4gbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgp
ICYmIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmlzQWN0aXZlKCk7CiB9CiAKLWlubGluZSBib29s
IGlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5v
ZGUgfHwgIW5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7Ci19
Ci0KIGlubGluZSBOb2RlKiBwYXJlbnROb2RlRm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5v
ZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwpAQCAtMTYxLDYgKzE2Myw0MCBAQCBpbmxpbmUgRWxl
bWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9k
ZSkKIAogSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSopOwog
CisjZWxzZQorCitjbGFzcyBJbnNlcnRpb25Qb2ludCA6IHB1YmxpYyBTaW1wbGVJbnNlcnRpb25Q
b2ludCB7Citwcm90ZWN0ZWQ6CisgICAgSW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KSA6IFNpbXBsZUluc2VydGlvblBvaW50KHRh
Z05hbWUsIGRvY3VtZW50KSB7IH0KK307CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkK
KworaW5saW5lIEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCit7
CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEluc2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKK2lubGluZSBjb25z
dCBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQorewor
ICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBJbnNlcnRpb25Qb2ludCo+KG5vZGUpOworfQorCitpbmxpbmUg
Ym9vbCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KCFub2RlIHx8ICFub2RlLT5pc0luc2VydGlvblBvaW50KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICByZXR1cm4gdG9JbnNlcnRpb25Qb2ludChu
b2RlKS0+aXNTaGFkb3dCb3VuZGFyeSgpOworI2Vsc2UKKyAgICAvLyBpbiBub24tU0hBT0RXX0RP
TSB3b3JsZCwgSW5zZXJ0aW9uUG9pbnQgaXMgdXNlZCBvbmx5IGludGVybmFsbHkgYW5kCisgICAg
Ly8gc2hvdWxkIGJlIGFsd2F5cyBhIGJvdW5kYXJ5LgorICAgIHJldHVybiB0cnVlOworI2VuZGlm
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0
dXJlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJl
U2V0LmNwcAppbmRleCA0NjUyMmM0NDUzYmMzZWIwMzYxZmQ0NjExYWQxOTY3MjI2Y2RkMWMwLi42
ZTI3N2E0MGQ5NGYwOWE1MWYzNjBkNjBmOTVmN2M5ZDY5YTVjOTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCkBAIC0zMSw2
ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1
cmVTZXQuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsMyArODcsNCBAQCB2b2lkIFNlbGVj
dFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqIHNlbGVjdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCmluZGV4
IGQwZjJkZTY4MjFiMzI1MDkxNmM3ZWMxNmRlZDRkYjc1OTg0YTA4MTcuLjVhOThlZjViZWIxZWY5
MTc2YTY4NWY1OTMwODY0N2ExZTA0Mjg3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VsZWN0UnVsZUZlYXR1
cmVTZXQgewpAQCAtODUsNCArODcsNSBAQCBpbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNl
dDo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdAogCiB9CiAK
KyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCmluZGV4IDJkYmJlNDFkNjBmZDNkZTUxZmNlZWIyMmUxZmU5Yzk0Y2VhNDU3
M2IuLjExNDhmOTkyNTNmYzBmYWExMWQ0ODY4YjAwZDhjMWUxNmM3ZTVlODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRl
clN0eWxlLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJO
b2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgpAQCAtMjg3LDYgKzI4OCwxMSBAQCBib29sIFNW
R1VzZUVsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorYm9vbCBTVkdVc2VFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNoaWxkQ29udGV4dC5pc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSAmJiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGls
ZENvbnRleHQpOworfQorCiAjaWZkZWYgRFVNUF9JTlNUQU5DRV9UUkVFCiBzdGF0aWMgdm9pZCBk
dW1wSW5zdGFuY2VUcmVlKHVuc2lnbmVkIGludCYgZGVwdGgsIFN0cmluZyYgdGV4dCwgU1ZHRWxl
bWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCmluZGV4IDZiYjI5ZWM2NjQ5OTZlMTIwYmJiMTgxYjMwY2E1ZWJjMmYzMTAyZTUuLjQ0YzMx
YzVlOWEwN2RmYmJlODEwNjBhOGFhNTVkNjFlYWJlNzZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaApAQCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOworICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3Qg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBh
dGgmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjY2YxNDA2MGVhY2U5
MmIyMjgxZmMxYWI0OTMxYjBjZmZmM2MwNjgwLi40MmQ4Zjk1YjMzZWFhZDRlYjY4NzViYTliNTJk
OGRhN2MwOGNhN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDcs
NyArMzQ3LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvcklkSW5TaGFkb3coRWxl
bWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBpZFZhbHVlLCBFCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAorICAgIFVOVVNFRF9QQVJBTShpZFZhbHVlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0
RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JJZChpZFZhbHVlKTsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNT
ZWxlY3RvckZvckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFz
c05hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzU3LDcgKzM2MiwxMiBAQCBib29sIEludGVy
bmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0
cmluZyYgY2xhc3NOYQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBVTlVTRURfUEFS
QU0oY2xhc3NOYW1lKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+
c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFk
b3coKSkuaGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmli
dXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTM2Nyw3ICszNzcsMTIgQEAgYm9vbCBJbnRlcm5hbHM6Omhh
c1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5n
JiBhdHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKGF0dHJp
YnV0ZU5hbWUpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBob3N0LT5zaGFk
b3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygp
KS5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBz
ZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFz
cywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNzcsNiArMzkyLDggQEAgYm9vbCBJbnRlcm5hbHM6
Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBT
dHJpbmcmIHAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKHBz
ZXVkb0NsYXNzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBjb25zdCBTZWxlY3RSdWxl
RmVhdHVyZVNldCYgZmVhdHVyZVNldCA9IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVu
c3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpOwogICAgIGlmIChwc2V1ZG9DbGFz
cyA9PSAiY2hlY2tlZCIpCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9y
Q2hlY2tlZCgpOwpAQCAtMzk0LDYgKzQxMSw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3Rv
ckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAg
ICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yVmlzaXRlZCgpOwogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTQ0MSw4ICs0NTksMTEgQEAgYm9vbCBJbnRlcm5hbHM6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9u
UHNldWRvRWxlbWVudChjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3UKIAogYm9vbCBJbnRlcm5h
bHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAg
cmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCh0b1NoYWRv
d1Jvb3Qocm9vdCkpOworI2VuZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAg
ICByZXR1cm4gMDsKQEAgLTQ1MCw4ICs0NzEsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRv
d0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24K
IAogYm9vbCBJbnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkK
ICAgICAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1l
bnQodG9TaGFkb3dSb290KHJvb3QpKTsKKyNlbmRpZgogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgcmV0dXJuIDA7CkBAIC00NjQsNyArNDg4LDExIEBAIHNpemVfdCBJbnRlcm5h
bHM6OmNvdW50RWxlbWVudFNoYWRvdyhjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgcmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6Y291bnRFbGVtZW50U2hh
ZG93KHRvU2hhZG93Um9vdChyb290KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmIAog
fQogCiBib29sIEludGVybmFsczo6YXR0YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC00NzksNiArNTA3LDcgQEAgYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5v
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nQnlX
YWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ4NiwxMCArNTE1LDE2IEBAIE5vZGUqIEludGVybmFs
czo6bmV4dFNpYmxpbmdCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0
U2libGluZygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIHJldHVybiAwOworI2VuZGlm
CiB9CiAKIE5vZGUqIEludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9k
ZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CkBAIC00OTcsMTAgKzUzMiwxNiBAQCBOb2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtl
cihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5maXJzdENoaWxkKCk7CiAgICAgcmV0dXJu
IHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNF
RF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxz
OjpsYXN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTA4LDEwICs1NDksMTYgQEAg
Tm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAg
IHdhbGtlci5sYXN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0obm9kZSk7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4g
MDsKKyNlbmRpZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHROb2RlQnlXYWxrZXIoTm9kZSog
bm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAg
aWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTUxOSwxMCArNTY2LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dE5vZGVC
eVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJu
IHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNF
RF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxz
OjpwcmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTMwLDYgKzU4MywxMSBA
QCBOb2RlKiBJbnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7
CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0
dXJuIDA7CisjZW5kaWYKIH0KIAogU3RyaW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVB
c1RleHQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC02NTksNyArNzE3
LDExIEBAIEVsZW1lbnQqIEludGVybmFsczo6aW5jbHVkZXJGb3IoTm9kZSogbm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChub2RlKS5pbnNlcnRpb25Q
b2ludCgpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBTdHJpbmcgSW50ZXJu
YWxzOjpzaGFkb3dQc2V1ZG9JZChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0
cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMu
ZGVmLmluCmluZGV4IGRhMDYxNTYwODcyNjU5ZjYxYzExYzQ5ZWVlNmEyYTQxMWFiM2VmNmIuLjhh
MzI2ZDI1MmQzNGFlODc3MzIxMTJjOTdhZTg5ZGM0NTliMzA0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMjE5
LDE4ICsyMTksMTIgQEAgRVhQT1JUUwogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3Bl
Y3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9u
dGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogI2VuZGlmCi0gICAgICAg
ID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKICAgICAg
ICAgP2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3Jl
QEAwX05BCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3Jl
QEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FW
SlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFz
c1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENo
YW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9O
WFoKICAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29y
ZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdl
YkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJA
QFoKLSAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3Jl
QEBRQUVYWFoKLSAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdl
YkNvcmVAQFFBRVhYWgotICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJA
X0pAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/
bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASEBaCkBAIC0zMTgsNyArMzEyLDYgQEAgRVhQT1JU
UwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlc0BXZWJDb3JlQEBZQT9BVVZpZXdw
b3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3VtZW50c0AxQEhISE1WSW50U2l6ZUAxQEBaCiAg
ICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9BVVZpZXdwb3J0QXJn
dW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1lbnRAV2ViQ29yZUBA
UUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdlYkNvcmVAQFFCRV9O
WFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJA
V2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hhY2tzQFRleHRSdW5A
V2ViQ29yZUBAU0FYX05AWgpAQCAtNjA1LDE4ICs1OTgsMTIgQEAgRVhQT1JUUwogICAgICAgICA/
c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoK
ICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVA
QFFBRVhYWgogI2VuZGlmCi0gICAgICAgID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVA
QFlBX05QQlZOb2RlQDFAQFoKICAgICAgICAgP2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVudGlt
ZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05BCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNo
ZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAg
ID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpT
RE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBA
V1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAg
P21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVj
dG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtl
clR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKLSAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2ZpcnN0Q2hpbGRAQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bGFzdENoaWxk
QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP25leHRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/cHJldmlv
dXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bnVt
YmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZA
QFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASEBaCkBA
IC03MDQsNyArNjkxLDYgQEAgRVhQT1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0cmli
dXRlc0BXZWJDb3JlQEBZQT9BVVZpZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3VtZW50
c0AxQEhISE1WSW50U2l6ZUAxQEBaCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdl
YkNvcmVAQFFCRT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZp
c2libGVARG9jdW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQEluc2Vy
dGlvblBvaW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFu
aW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRp
b25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxv
d3NSb3VuZGluZ0hhY2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpAQCAtOTkxLDE4ICs5Nzcs
MTIgQEAgRVhQT1JUUwogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNvbnRy
b2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNw
ZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogI2VuZGlmCi0gICAgICAgID9pc0FjdGl2
ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKICAgICAgICAgP2lzQ1NT
RXhjbHVzaW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05BCiAg
ICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFC
VlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBK
U0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBW
RE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1Vz
ZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAg
ICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FW
U3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQw
QUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKLSAgICAg
ICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoK
LSAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFB
RVhYWgotICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3Jl
QEBRQUVYWFoKLSAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgotICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNv
cmVAQFFBRVhYWgogICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0pAWgogICAg
ICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJAX0tAWgogICAgICAgICA/bnVtYmVyQFN0
cmluZ0BXVEZAQFNBP0FWMTJASEBaCkBAIC0xMDkwLDcgKzEwNzAsNiBAQCBFWFBPUlRTCiAgICAg
ICAgID9jb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzQFdlYkNvcmVAQFlBP0FVVmlld3BvcnRBdHRy
aWJ1dGVzQDFAVVZpZXdwb3J0QXJndW1lbnRzQDFASEhITVZJbnRTaXplQDFAQFoKICAgICAgICAg
P3ZpZXdwb3J0QXJndW1lbnRzQFBhZ2VAV2ViQ29yZUBAUUJFP0FVVmlld3BvcnRBcmd1bWVudHNA
MkBYWgogICAgICAgICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVudEBXZWJDb3JlQEBRQUVfTkhA
WgotICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgogICAg
ICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
WFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3Jl
QEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3Jl
QEBTQVhfTkBaCkBAIC0xMzQzLDEwICsxMzIyLDYgQEAgRVhQT1JUUwogICAgICAgICA/ZXF1YWxA
V1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgogICAgICAgICA/ZXF1YWxJZ25vcmluZ0Nhc2VA
V1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9leHRlcm5hbFJlcHJlc2Vu
dGF0aW9uQFdlYkNvcmVAQFlBP0FWU3RyaW5nQFdURkBAUEFWRWxlbWVudEAxQElAWgotICAgICAg
ICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEBDb250ZW50RGlzdHJpYnV0b3JAV2ViQ29yZUBAUUFF
QUJWU2VsZWN0UnVsZUZlYXR1cmVTZXRAMkBQQVZFbGVtZW50U2hhZG93QDJAQFoKLSAgICAgICAg
P2hhc1NoYWRvd0VsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBX05Q
QlZTaGFkb3dSb290QDJAQFoKLSAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCi0gICAgICAgID9j
b3VudEVsZW1lbnRTaGFkb3dAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBC
VlNoYWRvd1Jvb3RAMkBAWgogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEy
QElAWgogICAgICAgICA/ZmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSVBBVjEyQEBaCiAgICAgICAg
ID9hYnNvbHV0ZUNhcmV0Qm91bmRzQEZyYW1lU2VsZWN0aW9uQFdlYkNvcmVAQFFBRT9BVkludFJl
Y3RAMkBYWgpAQCAtMTM4MSwxOCArMTM1NiwyNCBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRQcm9m
aWxlckVuYWJsZWRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYX05AWgogICAgICAg
ICA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFha
CiAjZW5kaWYKLSAgICAgICAgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBC
Vk5vZGVAMUBAWgogICAgICAgICA/aXNDU1NFeGNsdXNpb25zRW5hYmxlZEBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKICAgICAgICAgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291
cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP2pzQXJy
YXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9i
YWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBa
CiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNB
c1RleHRAUGFnZUBXZWJDb3JlQEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/bWFya2Vy
c0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFW
RG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNA
RG9jdW1lbnRNYXJrZXJAMkBAWgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgICAgICA/bmV4
dFNpYmxpbmdAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/Zmlyc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAg
ICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhY
WgogICAgICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCisgICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCisg
ICAgICAgID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0QENvbnRlbnREaXN0cmlidXRvckBXZWJDb3Jl
QEBRQUVBQlZTZWxlY3RSdWxlRmVhdHVyZVNldEAyQFBBVkVsZW1lbnRTaGFkb3dAMkBAWgorICAg
ICAgICA/aGFzU2hhZG93RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBA
U0FfTlBCVlNoYWRvd1Jvb3RAMkBAWgorICAgICAgICA/aGFzQ29udGVudEVsZW1lbnRAU2NvcGVD
b250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKKyAgICAg
ICAgP2NvdW50RWxlbWVudFNoYWRvd0BTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBA
U0FJUEJWU2hhZG93Um9vdEAyQEBaCisjZW5kaWYKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RG
QEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoK
ICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtMTQ4MCw3ICsxNDYx
LDYgQEAgRVhQT1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlc0BXZWJDb3Jl
QEBZQT9BVVZpZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3VtZW50c0AxQEhISE1WSW50
U2l6ZUAxQEBaCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9B
VVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1l
bnRAV2ViQ29yZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdl
YkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRy
b2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1hdGlv
bkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hh
Y2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY0NDFiZDgzYThjYTZkNGQ4MmVj
OWRlNzFkMDUzNzM3M2E4MmVkMmQuLjM2ZTk5NmQ3MTQ0NGE2ZWI5MDQxYzIxNjU2NDAyY2ViYjZi
ZTdmMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wMS0yNCAgSGFqaW1lIE1vcnJpdGEg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01dIFB1dCBub2RlIHJl
cHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisgICAgICAgIFJlYmFz
ZWxpbmVzIHNtYWxsIGRpZmZlcmVuY2VzIHdoaWNoIGhhcHBlbiBpbiB0aGUgbm9uLVNIQURPV19E
T00KKyAgICAgICAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBkdWUgdG8gZGlmZmVyZW5jZSBvZiBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwKKyAgICAgICAgYnV0IGhhcyBvbmx5IHVubm90aWNlYWJsZSB1
c2VyIG9ic2VydmFibGUgZGlmZmVyZW5jZS4KKworICAgICAgICBmdWxsLXNjcmVlbi1yZW5kZXIt
aW5saW5lLmh0bWwgcmVuZGVycyA8ZGV0YWlscz4gZGlmZmVyZW50bHkuCisgICAgICAgIFRoaXMg
aXMgYSBsaW1pdGF0aW9uIG9mIHRoZSBzaW1wbGlmaWVkIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0u
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxz
LW5lc3RlZC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVjdGVkLnBuZzogQWRkZWQKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVj
dGVkLnR4dDogQWRkZWQKKwogMjAxMy0wMS0yNCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIE1hcmtpbmcgcmVzaXplLWNvcm5lci10cmFj
a2luZyogdGVzdHMgYXMgbmVlZGluZyByZWJhc2VsaW5lIG9uIE1hYy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZGY2MWZkNTdmMmZlZWY4
YWMzNDBiMWI3OTJjZmUxMmYyMzUxOTAzLi5jMGNlN2QyZjUzZGRiNGVjZGYxMjUxMWFlNWNhOGY0
NTU2Nzk4ODFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCkBAIC0yNzEsNiArMjcxLDcgQEAgd2Via2l0Lm9yZy9iLzk4OTYwIGZhc3QvcGFyc2Vy
L2RvY3VtZW50LW9wZW4taW4tdW5sb2FkLmh0bWwgWyBTa2lwIF0KICMgRU5BQkxFKFNIQURPV19E
T00pIGlzIGRpc2FibGVkLgogd2Via2l0Lm9yZy9iLzc2MzU5IGVkaXRpbmcvc2hhZG93IFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvNzYzNTkgZmFzdC9kb20vc2hhZG93IFsgU2tpcCBdCitpbnNwZWN0
b3IvZWxlbWVudHMvc2hhZG93LXJvb3QuaHRtbCBbIFNraXAgXQogCiAjIGZhc3QvZXZlbnRzL2Nv
bnRyb2xjbGljay1uby1vbmNsaWNrLmh0bWwgZmFpbHMgb24gTWFjIFdLMgogd2Via2l0Lm9yZy9i
LzEwNTk0OCBmYXN0L2V2ZW50cy9jb250cm9sY2xpY2stbm8tb25jbGljay5odG1sIFsgRmFpbHVy
ZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA1NDlk
NzdiODkzZWI4NjE0OTczYjBhMjk2ZWM0NzkwOWIzNzBjMzkuLjhmNWExMTczODRiNDBhNWFjY2Iy
NzVlY2E0MGI5MGY0NGE2NDcyZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC00MjcsNiArNDI3LDcgQEAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1p
bi1mbG93Lmh0bWwKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20v
c2hhZG93CiBlZGl0aW5nL3NoYWRvdworaW5zcGVjdG9yL2VsZW1lbnRzL3NoYWRvdy1yb290Lmh0
bWwKIGluc3BlY3Rvci9lbGVtZW50cy91cGRhdGUtc2hhZG93ZG9tLmh0bWwKIGFjY2Vzc2liaWxp
dHkvY29ycmVzcG9uZGluZy1jb250cm9sLWRlbGV0ZWQtY3Jhc2guaHRtbAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVkLTItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLW5l
c3RlZC0yLWV4cGVjdGVkLnR4dAppbmRleCBjMWZjNDdmZWFiNTdkNzU3ZDVlNTk5NTk5MDFmYTBi
MTFhMjNlNGJlLi4yYjkyYjBiOTk3MDc0YzlmNDc5MDMwMWY0NDc4NWMwZWViMDk1ZDhlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFpbHMtbmVzdGVk
LTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwv
ZGV0YWlscy1uZXN0ZWQtMi1leHBlY3RlZC50eHQKQEAgLTksNyArOSw2IEBAIGxheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjQsOCkg
c2l6ZSA2M3gxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI0LDgpIHdpZHRoIDU6ICIgIgog
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI4LDgpIHdpZHRoIDU5OiAic3VtbWFyeSIKLSAgICAg
ICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDgsNDIpIHNpemUgNzY4eDAKICAgICAgICAg
UmVuZGVyQmxvY2sge0RFVEFJTFN9IGF0ICg4LDQyKSBzaXplIDc2OHg2OCBbYm9yZGVyOiAoOHB4
IHNvbGlkICM5OTU1NTUpXQogICAgICAgICAgIFJlbmRlckJsb2NrIHtTVU1NQVJZfSBhdCAoOCw4
KSBzaXplIDc1MngzNCBbYm9yZGVyOiAoOHB4IHNvbGlkICNDQzk5OTkpXQogICAgICAgICAgICAg
UmVuZGVyRGV0YWlsc01hcmtlciB7RElWfSBhdCAoOCwxMikgc2l6ZSAxMXgxMTogZG93bgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
cmVuZGVyLWlubGluZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jYTFmZDdiNmYwM2ZiZTk1NjAwZGYxN2IwMWNlNzU0Y2Y0NmNlNTAzCkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAxMDczNwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVR
bFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVPXygKelgtUV81aERIX14kdGg7MHNwalUxc2ZrN3cjel9X
ZGk2K0xERFcrZX1LUCgwNlk0JnQrNDU/c3pkKUtrPVlNNi1ZCnojZ0hSXm1kQTcmRj1UbnFgSUcp
cmNiQ2slKTJCPGVXcWtQaF94PHwpZjBQXj03I052WUkwT19OOFY8MHR7UUd5bgp6KnJvfEMwJVpL
PjxQZk1BMWp8RSZmNlFvTF8kamZLVEBhYFBzIStrPGsxVEBjQEYxQ3E9fUdieElUeDZgTHFofEAK
eiQ4clJacHxQS25WP3V2bXdFKWEmcGg1ZlZseiNtQl4oKnQhP2ZjKkZfeHpjNUpZTldJPF9AbXxg
eHwxdT8lYjtiCnoqVS0yYlh2diFXJVl+NT9JZ0Z8cTRJZn50OThEVnBeVHF5dT9+bThsKjhhVnl5
bD87aHwxWnd9SmA1PVh6JllCKwp6OWhsdjBvPTUtaU1DQUtEYVNqYzh7c350KkxKSkZeIXQ7VXgz
Zz5AeylkP1lsKXs2QCR0cDklYFpVVkdxMDJWNjYKekVHI0ZBX3FFUCVLP3VFT1dqWFFNZXh0WXd5
YWYzbSFecnEpUFgwcjZNVEFmbFEwU05jOCYqekcqI3ZjJCF5c14wCnpXNCEmfGh1Xjx7X1pReXBr
NmZteUpjeEc/bmspIzxmczlQdGpFdEtDTn1BeXdYSn1NVzcqI1NGRXw2UmBuaSM7QAp6ZE5oLU9p
bnIwa0ZxIzxQSE9GWFQ3KT1iTGlEOSVZSFFJbSNIfm1NOCFfbmUhdl5YM3M0bzhjXyhjJXk+KUhL
Pn0KejlQS3k0JDFGel4hKVJne08kPylCJjcpbX4oWFBVMVM3RWZQRnhwaVo/SkE2UjYtRm5ZTjlX
WmJZYlFxZ04yQzN0CmkoZiQjQWBiVWxSNENSdTc+d2g9UVNfRTlmJD44Ymc9ZCNXenAkUHl7XlRD
WSgKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbmRlci1pbmxpbmUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVuZGVy
LWlubGluZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZiNmYzZmEyYjU1M2EzYzdkY2ZlZjI4
ZjVhYmJhODU3YjM3MDFiYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbmRlci1pbmxpbmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3
IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtC
T0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtTVU1NQVJZfSBh
dCAoMCwwKSBzaXplIDc4NHg2NAorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwwKSBzaXplIDc4NHgxNgorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDE2eDE2CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjogImEiCisg
ICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE2KSBzaXplIDc4NHgxNgorICAg
ICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxNngxNgorICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTZ4MTYKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTY6ICJiIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwzMikgc2l6ZSA3ODR4MTYKKyAgICAgICAgICBSZW5kZXJCbG9jayB7RElW
fSBhdCAoMCwwKSBzaXplIDc4NHgxNgorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTZ4MTYKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTY6ICJjIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw0OCkgc2l6ZSA3
ODR4MTYKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMTZ4MTYK
KyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2eDE2CisgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2OiAiZCIKKyAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDE2LDApIHNpemUgMTZ4MTYKKyAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgxNiwwKSB3aWR0aCAxNjogImUiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184679</attachid>
            <date>2013-01-24 23:21:50 -0800</date>
            <delta_ts>2013-01-25 01:32:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106643-20130125161841.patch</filename>
            <type>text/plain</type>
            <size>87743</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjNzg3NmM5OTk5MmQ3
YjQ1N2UxZjMyNTkyYjg0OTQ4ZGIwNDUyZS4uM2IzZTFjMDYwMGMwZTZjZGI4YzEwODY5YmUyZjVi
MzA0ZjMwZTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAxMy0wMS0yNCAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGhpZGVzIG9uZSBvZiB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJ0IG9mIFNoYWRvdyBET00KKyAg
ICAgICAgc3RhbmRhcmQsIHRoYXQgaXMgbm9kZSBkaXN0cmlidXRpb24uIE1ham9yIHNoYWRvdy1k
b20gY2xhc3NlcworICAgICAgICBpbmNsdWRpbmcgQ29udGVudERpc3RyaWJ1dG9yLCBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIsCisgICAgICAgIEhUTUxDb250ZW50RWxlbWVudCBhbmQgSFRNTFNo
YWRvd0VsZW1lbnQgYXJlIG1vdmVkIGJlaGluZAorICAgICAgICBFTkFCTEVfU0hBRE9XX0RPTSBm
bGFnLgorCisgICAgICAgIEluIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwsIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciBpcyByZXBsYWNlZCB3aXRoCisgICAgICAgIFNoYWRvd1RyZWVXYWxrZXIsIGEg
c2ltcGxpZmllZCB2ZXJzaW9uIG9mIGl0LiBTaGFkb3dUcmVlV2Fsa2VyIHRyYXZlcnNlcworICAg
ICAgICBET00gdHJlZSB3aGlsZSBza2lwcGluZyBub24tcmVuZGVyYWJsZSBub2RlcyBsaWtlIFNo
YWRvd1Jvb3QuCisKKyAgICAgICAgTm90ZSB0aGF0IDxkZXRhaWxzPiBhbmQgPHN1bW1hcnk+IHVz
ZWQgdG8gcmVseSBpbiB0aGlzIGZlYXR1cmUuIFRoaXMgY2hhbmdlCisgICAgICAgIGNvbXBlbnNh
dGUgdGhhdCBkZXBlbmRlbmN5IGJ5IGltcGxlbWVudGluZyBhIHNpbXBsZSBub2RlIGRpc3RyaWJ1
dGlvbiBmb3IgdGhlbS4KKyAgICAgICAgU2luY2UgdGhpcyBmZWF0dXJlIGlzIG9ubHkgdXNlZCBi
eSA8ZGV0YWlscz4sIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwdXQgaW4KKyAgICAgICAgSFRNTERl
dGFpbHNFbGVtZW50LmNwcCBhbmQgc3RheXMgYmVoaW5kZWQgREVUQUlMU19FTEVNRU5UIGZsYWcu
CisKKyAgICAgICAgT24gSW5zZXJ0aW9uUG9pbnQsIGFsdGhvdWdoIG1vc3Qgb2YgdGhlIGltcGxl
ZW50YXRpb24gaXMgcHV0IGJlaGluZCBTSEFET1dfRE9NIGZsYWcsCisgICAgICAgIGEgdGhpbiBz
dHViIHJlbWFpbmcgb3V0c2lkZSB0aGUgZmxhZy4gVGhpcyBzdHViIGlzIHVzZWQgYnkgPGRldGFp
bHM+LiBUaGUgc3VwZXJjbGFzcyBTaW1wbGVJbnNlcnRpb25Qb2ludAorICAgICAgICBpcyBwdWxs
ZWQgdXAgZm9yIG93aW5nIHNoYXJlZCBwYXJ0IGJldHdlZW4gU0hBRE9XX0RPTSBhbmQgL25vbi1T
SEFET1dfRE9NIGNvbmZpZ3VyYXRpb25zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVNjb3BlUmVz
b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjphZGRIb3N0
UnVsZSk6CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5
bGVTY29wZVJlc29sdmVyKToKKyAgICAgICAgKiBkb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBbmNlc3RvckNoYWluV2Fsa2VyOjpwYXJlbnQpOgorICAgICAg
ICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAqIGRvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaWRBZmZlY3RTZWxlY3Rvcik6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChFbGVtZW50
U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmludmFsaWRhdGVEaXN0cmlidXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6ZW5zdXJlRGlzdHJpYnV0aW9uKToK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNTaGFkb3dC
b3VuZGFyeSk6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwOgorICAg
ICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAgIChTaGFkb3dUcmVlV2Fsa2Vy
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFk
b3dUcmVlV2Fsa2VyOjpTaGFkb3dUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpwYXJlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtl
cjo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6Omxhc3RDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2Vy
OjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6
OlNoYWRvd1RyZWVXYWxrZXI6Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJl
ZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzU2libGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVl
V2Fsa2VyOjp0cmF2ZXJzZU5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2aW91cyk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJz
ZUluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWw6OnBhcmVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6bmV4dFNpYmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6OnByZXZpb3VzU2libGluZ1Nsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6bmV4dEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6cHJldmlvdXNJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudEluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6bGFzdENoaWxkSW5TY29wZSk6CisgICAgICAgICogZG9tL05v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzU2hhZG93Um9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNlcnRlZEludG8pOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVEaXN0cmlidXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzQ29udGVudEVsZW1lbnQ6OkRldGFp
bHNDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZXRhaWxzU3VtbWFyeUVsZW1l
bnQ6OkRldGFpbHNTdW1tYXJ5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmZhbGxiYWNrU3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmZpbmRNYWluU3VtbWFyeSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWls
c0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERldGFpbHNFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6ZmluZEluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OmdldERpc3RyaWJ1dGVkTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnRPdmVySW5zZXJ0aW9u
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNp
YmxpbmdPdmVySW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nT3Zlckluc2VydGlvblBvaW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBl
KToKKyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdW1tYXJ5Q29udGVudEVsZW1lbnQ6OlN1bW1hcnlDb250ZW50RWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250
ZW50U2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVj
dG9yUXVlcnkuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUluc2VydGlvblBvaW50OjpTaW1wbGVJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0aW9uUG9pbnQ6OmlzQWN0aXZlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQ6Om1hdGNoVHlw
ZUZvcik6CisgICAgICAgIChTaW1wbGVJbnNlcnRpb25Qb2ludCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlSW5zZXJ0aW9uUG9pbnQ6OmFsd2F5c01hdGNoZXMpOgorICAgICAgICAo
SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmlzU2hh
ZG93Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlv
blBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6aXNMb3dlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Nl
bGVjdFJ1bGVGZWF0dXJlU2V0Lmg6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cik6CisgICAgICAgIC0gV2Ugc2hvdWxkIGhhdmUgaGFkIHRoaXMgc2luY2UgPHVzZT4gZG9lc24n
dCByZW5kZXIgaXRzIChub24tc2hhZG93KSBjaGlsZHJlbi4KKyAgICAgICAgICBJdCB3b3JrZWQg
YmVmb3JlIGp1c3QgYnkgYWNjaWRlbnQuIERpc2FibGluZyBub2RlIGRpc3RyaWJ1dGlvbiByZXZl
bHMgdGhlIHByb2JsZW0uCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAg
KFNWR1VzZUVsZW1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xh
c3NJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2Vy
dGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQ29udGVudEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFkb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6cHJldmlvdXNOb2RlQnlXYWxrZXIpOgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyk6CisgICAgICAgICogY3NzL1N0eWxlU2Nv
cGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNjb3BlUmVzb2x2ZXI6OmFk
ZEhvc3RSdWxlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVNjb3Bl
UmVzb2x2ZXIuaDoKKyAgICAgICAgKFN0eWxlU2NvcGVSZXNvbHZlcik6CisgICAgICAgICogZG9t
L0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5jZXN0b3JDaGFp
bldhbGtlcjo6cGFyZW50KToKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
LmNwcDoKKyAgICAgICAgKiBkb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmg6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlz
dHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6ZGlkQWZmZWN0U2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRTaGFkb3c6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vRWxlbWVudFNo
YWRvdy5oOgorICAgICAgICAoRWxlbWVudFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50U2hhZG93OjpkaXN0cmlidXRvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjppbnZhbGlkYXRlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFk
b3c6OmVuc3VyZURpc3RyaWJ1dGlvbik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmlzU2hhZG93Qm91bmRhcnkpOgorICAgICAgICAqIGRvbS9Ob2RlUmVu
ZGVyaW5nVHJhdmVyc2FsLmNwcDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwpOgor
ICAgICAgICAoU2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpTaGFkb3dUcmVlV2Fsa2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6Omdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVl
V2Fsa2VyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNh
bDo6U2hhZG93VHJlZVdhbGtlcjo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxr
ZXI6Omxhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
OjpTaGFkb3dUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6Om5leHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXMp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdh
bGtlcjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZVByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZU5leHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQcmV2
aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpQYXJlbnRE
ZXRhaWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZ1Nsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dEluU2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlvdXNJblNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBhcmVudEluU2NvcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bGFzdENoaWxkSW5TY29wZSk6
CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaDoKKyAgICAgICAgKE5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6cGFyZW50KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChT
YW1lU2l6ZUFzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbnNl
cnRlZEludG8pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6cmVtb3ZlZEZyb20pOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjplbnN1cmVT
Y29wZURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpyZXBvcnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFNoYWRv
d1Jvb3QpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc0NvbnRlbnRFbGVtZW50OjpEZXRh
aWxzQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoRGV0YWlsc0NvbnRlbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRldGFpbHNTdW1tYXJ5RWxlbWVudDo6RGV0YWlsc1N1bW1hcnlFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6ZmFsbGJhY2tTdW1t
YXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1t
YXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChOb2RlUmVuZGVyaW5nVHJhdmVyc2FsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OmZpbmRJbnNlcnRpb25Qb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpnZXREaXN0cmlidXRl
ZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50
T3Zlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWw6Om5leHRTaWJsaW5nT3Zlckluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZ092ZXJJbnNlcnRpb25Qb2lu
dCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxE
ZXRhaWxzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdW1tYXJ5Q29u
dGVudEVsZW1lbnQ6OlN1bW1hcnlDb250ZW50RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVy
eS5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaDoKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJ
bnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6aXNBY3Rp
dmUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVJbnNlcnRpb25Qb2ludDo6bWF0Y2hUeXBlRm9yKToKKyAgICAgICAgKFNp
bXBsZUluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUluc2VydGlvblBv
aW50OjphbHdheXNNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUluc2VydGlvblBv
aW50OjpTaW1wbGVJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEluc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50Ojppc1No
YWRvd0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRp
b25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjp0b0luc2VydGlvblBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmlzTG93ZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9T
ZWxlY3RSdWxlRmVhdHVyZVNldC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoK
KyAgICAgICAgKFNWR1VzZUVsZW1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1
dGVJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9y
UHNldWRvQ2xhc3NJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1No
YWRvd0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQ29u
dGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6cHJldmlvdXNOb2RlQnlXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjppbmNsdWRlckZvcik6CisKIDIwMTMtMDEtMjQgIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDllMjI5OTA1ZTJiZjE5NjUzMTJjMzhiZWQxZmY0ZGQ1NDQ3MzRjYWUuLjRm
MWMzMzExZWI5MWRkMWJmZjEzNTdlZDE3NmI5YjkyMGM3NmY2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMS0yNCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01dIFB1dCBub2RlIHJlcHJvamVjdGlvbiBj
b2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5p
bjogTW92ZWQgc29tZSBzeW1ib2xzIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkgZmxhZy4KKwog
MjAxMy0wMS0yNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIE9iamVjdGl2ZS1DIEFQSTogUmVuYW1lIEpTVmFsdWUuaC9BUElKU1ZhbHVlLmggdG8g
SlNDSlNWYWx1ZS5oL0pTVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4NGNiNGY5YTk0
YmQ2NzBmYTdjYzA0YTRhYmQyNDdiMWQzNWZhM2U1Li4zZmY0MWMwMjFjYmNiNGM4YjY4OTExY2Rj
MWE2MzcwMDhhY2IwZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTE4LDcgKzUxOCw2IEBA
IF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVOU1VSTAogX19aTjdXZWJDb3JlMThE
T01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9f
Wk43V2ViQ29yZTEwUGFzdGVib2FyZDE3Z2VuZXJhbFBhc3RlYm9hcmRFdgogX19aTjdXZWJDb3Jl
MTBQYXN0ZWJvYXJkMTR3cml0ZVBsYWluVGV4dEVSS04zV1RGNlN0cmluZ0VOUzBfMThTbWFydFJl
cGxhY2VPcHRpb25FCi1fX1pON1dlYkNvcmUxOENvbnRlbnREaXN0cmlidXRvcjIyZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldEVQTlNfMTNFbGVtZW50U2hhZG93RQogX19aTjdXZWJDb3JlMThQbGF0Zm9y
bVBhc3RlYm9hcmQxMHVuaXF1ZU5hbWVFdgogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9h
cmQxM2J1ZmZlckZvclR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3Jt
UGFzdGVib2FyZDEzc3RyaW5nRm9yVHlwZUVSS04zV1RGNlN0cmluZ0UKQEAgLTY1NywxMSArNjU2
LDYgQEAgX19aTjdXZWJDb3JlMjNlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZUVQOE5TU3RyaW5nOF9O
U1JhbmdlCiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVzRVJLTlNfMjFOZXR3
b3JrU3RvcmFnZVNlc3Npb25FUk4zV1RGN0hhc2hTZXRJTlMzXzZTdHJpbmdFTlMzXzEwU3RyaW5n
SGFzaEVOUzNfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTI0QmluYXJ5UHJvcGVy
dHlMaXN0V3JpdGVyMTd3cml0ZVByb3BlcnR5TGlzdEV2CiBfX1pON1dlYkNvcmUyNENhY2hlZFJl
c291cmNlSGFuZGxlQmFzZTExc2V0UmVzb3VyY2VFUE5TXzE0Q2FjaGVkUmVzb3VyY2VFCi1fX1pO
N1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjEwZmlyc3RDaGlsZEV2Ci1fX1pON1dl
YkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjExbmV4dFNpYmxpbmdFdgotX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI0bmV4dEV2Ci1fX1pON1dlYkNvcmUyNENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjhwcmV2aW91c0V2Ci1fX1pON1dlYkNvcmUyNENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjlsYXN0Q2hpbGRFdgogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIxMG1hcmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtl
clR5cGVzRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxM3JlbW92ZU1h
cmtlcnNFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCiBfX1pON1dlYkNvcmUyNERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjE4YWRkVGV4dE1hdGNoTWFya2VyRVBLTlNfNVJhbmdlRWIK
QEAgLTY3MSw5ICs2NjUsNiBAQCBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
cjE0ZnJhbWVEZXN0cm95ZWRFdgogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIxNHdpbGxEZXRhY2hQYWdlRXYKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyQzJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
RDJFdgotX19aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xNmhhc1NoYWRvd0Vs
ZW1lbnRFUEtOU18xMFNoYWRvd1Jvb3RFCi1fX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjE4Y291bnRFbGVtZW50U2hhZG93RVBLTlNfMTBTaGFkb3dSb290RQotX19aTjdXZWJD
b3JlMjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xN2hhc0NvbnRlbnRFbGVtZW50RVBLTlNfMTBT
aGFkb3dSb290RQogX19aTjdXZWJDb3JlMjRjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBFUE5TXzhE
b2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lv
bkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9ySG9zdG5hbWVFUktOU18yMU5ldHdvcmtT
dG9yYWdlU2Vzc2lvbkVSS04zV1RGNlN0cmluZ0UKQEAgLTEyNTAsOCArMTI0MSw2IEBAIF9fWk5L
N1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMThpc0ZvY3VzZWRBbmRBY3RpdmVFdgogX19aTks3V2Vi
Q29yZTE0RnJhbWVTZWxlY3Rpb24zMWdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3RhbmdsZXNFUk4z
V1RGNlZlY3RvcklOU185RmxvYXRSZWN0RUxtMEVFRQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxl
Y3Rpb24zNnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudEV2CiBfX1pOSzdXZWJD
b3JlMTRGcmFtZVNlbGVjdGlvbjZib3VuZHNFYgotX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9p
bnQxOWdldERpc3RyaWJ1dGVkTm9kZXNFdgotX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4
aXNBY3RpdmVFdgogX19aTks3V2ViQ29yZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRleHRFdgog
X19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTRSZXNv
dXJjZUJ1ZmZlcjRzaXplRXYKQEAgLTI1MzksNiArMjUyOCwxOCBAQCBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MjVzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zRWQKIF9fWk43V2ViQ29yZTIyUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczE4aXNTaGFkb3dET01FbmFibGVkRQogX19aTjdXZWJDb3JlMjJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzMzdpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVk
RQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9i
amVjdEVQTlNfMTBTaGFkb3dSb290RQorX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3Iy
MmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKK19fWk43V2ViQ29y
ZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTZoYXNTaGFkb3dFbGVtZW50RVBLTlNfMTBTaGFk
b3dSb290RQorX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQxOWdldERpc3RyaWJ1dGVkTm9k
ZXNFdgorX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVFdgorX19aTjdXZWJD
b3JlMjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xOGNvdW50RWxlbWVudFNoYWRvd0VQS05TXzEw
U2hhZG93Um9vdEUKK19fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTdoYXND
b250ZW50RWxlbWVudEVQS05TXzEwU2hhZG93Um9vdEUKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyMTBmaXJzdENoaWxkRXYKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyMTFuZXh0U2libGluZ0V2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjRuZXh0RXYKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
OHByZXZpb3VzRXYKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOWxhc3RD
aGlsZEV2CitfX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1
bWVudEUKICNlbmRpZgogCiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQpAQCAtMjczNiwxMCAr
MjczNyw2IEBAIF93a0NhcHRpb25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZQogX3drQ2FwdGlv
bkFwcGVhcmFuY2VHZXRTZXR0aW5nc0NoYW5nZWROb3RpZmljYXRpb24KICNlbmRpZgogCi0jaWYg
RU5BQkxFKFNIQURPV19ET00pCi1fX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVh
dGVFUE5TXzhEb2N1bWVudEUKLSNlbmRpZgotCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogX19a
TjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMTlpc0NTU1JlZ2lvbnNFbmFibGVkRQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYjI2M2Q4MDZiODU5
NTg2YzdjMTRjZmYzMWY5ODBhNDMyNTIzNjViYS4uMjIxMzE4YTcwZDkzOWNjNjA0MWIyYmZhY2Zh
OWMxNmMxN2QzOTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNzYy
LDcgKzc2MiwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMo
TWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdAogICAgICAgICB9CiAgICAgfQog
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgbWF0Y2hIb3N0UnVsZXMocmVzdWx0LCBpbmNs
dWRlRW1wdHlSdWxlcyk7CisjZW5kaWYKKwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0
KTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAppbmRleCA4YWNhYmU1MGFlNzJkMWJlMTdkNGEzNWY3
YjM2Y2YzNjRkYWYyMmI3Li5hNjM1NzBhNDNiNTUzYzExZWM1YTI3Mzg4ZGE5MmExODA4MTdmNGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAtMTkyLDcg
KzE5Miw2IEBAIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjphZGRIb3N0UnVsZShTdHlsZVJ1bGVI
b3N0KiBob3N0UnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlCiAgICAgICAgICAgICBydWxlLT5hZGRT
dHlsZVJ1bGUoc3RhdGljX2Nhc3Q8U3R5bGVSdWxlKj4oaG9zdFN0eWxpbmdSdWxlKSwgYWRkUnVs
ZUZsYWdzKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogYm9vbCBTdHlsZVNjb3BlUmVzb2x2ZXI6OnN0
eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVu
dCkKIHsKQEAgLTIzNyw2ICsyMzYsNyBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6bWF0Y2hI
b3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgVmVjdG9yPFJ1bGVTZXQqPgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQorI2VuZGlmCiAKIHZvaWQgU3R5bGVTY29wZVJlc29sdmVy
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oCmluZGV4IDNiZTNm
ZjRmNzBjNzM3NWJkMDE0MjZhMDBiYTQyNDEyODQ2MmNjMGUuLmM1Zjc3NmYzYWUxNDExNzQyNDg4
OTdmNjk5ODgxM2U0Y2Y5MjQ4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNjb3BlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29s
dmVyLmgKQEAgLTc1LDkgKzc1LDExIEBAIHB1YmxpYzoKICAgICBib29sIG1hdGNoZXNTdHlsZUJv
dW5kcyhjb25zdCBTdGFja0ZyYW1lJiBmcmFtZSkgY29uc3QgeyByZXR1cm4gZnJhbWUubV9hdXRo
b3JTdHlsZUJvdW5kc0luZGV4ID09IG1fc3RhY2tQYXJlbnRCb3VuZHNJbmRleDsgfQogICAgIHZv
aWQgY29sbGVjdEZlYXR1cmVzVG8oUnVsZUZlYXR1cmVTZXQmKTsKIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQogICAgIHZvaWQgYWRkSG9zdFJ1bGUoU3R5bGVSdWxlSG9zdCosIGJvb2wgaGFzRG9j
dW1lbnRTZWN1cml0eU9yaWdpbiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOwogICAgIGJv
b2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50Kik7
CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhjb25zdCBFbGVtZW50KiwgVmVjdG9yPFJ1bGVTZXQq
PiYgbWF0Y2hlZFJ1bGVzKTsKKyNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNo
YWluV2Fsa2VyLmNwcAppbmRleCA5NzBjZGMyMDU5N2M1MGIyMThkZjQzMTAzOGU2YzU4YjllYWJh
YWU2Li41YjdjZWU4MmNkNTI1MTkzYTE0YTcwNTU1NWU5NDBmNWJjZDhlMzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwCkBAIC00NSw2ICs0NSw4IEBAIHZv
aWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsK
ICAgICBBU1NFUlQobV9kaXN0cmlidXRlZE5vZGUpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG1fbm9kZSkp
IHsKICAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+
ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IobV9kaXN0cmlidXRlZE5vZGUpKSB7
CiAgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKQEAgLTUyLDIwICs1NCwzMCBA
QCB2b2lkIEFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBhcmVudCgpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKKwogICAgIGlmICghbV9ub2RlLT5pc1NoYWRvd1Jv
b3QoKSkgewogICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICAgICAgaWYgKCEobV9ub2RlICYmIG1fbm9kZS0+aXNTaGFkb3dS
b290KCkgJiYgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHRvU2hhZG93Um9v
dChtX25vZGUpKSkpCiAgICAgICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKICAg
ICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKKyNlbHNlCisgICAgICAg
IG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRp
b25Qb2ludCA9IGZhbHNlOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBj
b25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG1fbm9kZSk7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dSb290KSkgewog
ICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5z
ZXJ0aW9uUG9pbnQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCisKICAg
ICBtX25vZGUgPSBzaGFkb3dSb290LT5ob3N0KCk7CiAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBt
X25vZGU7CiAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXggYWI1OGQ2
MTUyYmM2MGQ5MDUxN2FlNGFiOGNlZWEwN2I0OGZjYjE4Yy4uZDIzMGY4NjQ4NzgyNDZmNjkwMzhj
NGRhN2JhMzE2YzlmZmQ0NGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOCw2ICsy
Nyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNvbnRlbnRE
aXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50U2hh
ZG93LmgiCkBAIC0zMTMsMyArMzE0LDUgQEAgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
OnByZXZpb3VzKCkKIH0KIAogfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShTSEFE
T1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5o
CmluZGV4IDgzNDllMjFhYTk4M2YwYTg0YTExM2MxNjc4MGU0OWVjNjc2NjRmM2UuLjJmMDJhN2Mz
YmM0NTUwNWY1YjQyODI4NTNlYTZkMjgzZjM4ZmYxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRl
ICJOb2RlUmVuZGVyaW5nVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm9k
ZTsKQEAgLTE0Myw0ICsxNDUsNSBAQCBpbmxpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIoY29uc3QgTm9kZSogbm9kZSwgUG9saQogCiB9IC8vIG5h
bWVzcGFjZQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCAwYjg1ZmZlMzMwZjc2ODIzZDVhYzNiNTAzYmFmNjZmYmVjNDcxY2Vl
Li4yZTY5MGViMzJhYjI4MTVlNzg4ODkwYjJlMjgzYmE5NmM4OGY0NDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC04MDgsMTAgKzgwOCwxMiBAQCBzdGF0aWMgYm9vbCBjaGVja05lZWRzU3R5
bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjbwog
CiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxlbWVudFNoYWRvdyA9IHNoYWRvd09m
UGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKSB7CiAgICAgICAgIGlmIChzaG91bGRJbnZhbGlk
YXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQocGFyZW50RWxlbWVudFNoYWRvdywg
bmFtZSwgbmV3VmFsdWUpKQogICAgICAgICAgICAgcGFyZW50RWxlbWVudFNoYWRvdy0+aW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbigpOwogICAgIH0KKyNlbmRpZgogCiAgICAgcGFyc2VBdHRyaWJ1dGUo
bmFtZSwgbmV3VmFsdWUpOwogCkBAIC05NDgsNiArOTUwLDcgQEAgdm9pZCBFbGVtZW50OjpjbGFz
c0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIAog
Ym9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNo
YW5nZWQoRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdywgY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICBBU1NFUlQoZWxlbWVudFNoYWRvdyk7CiAgICAgY29uc3QgU2VsZWN0UnVsZUZl
YXR1cmVTZXQmIGZlYXR1cmVTZXQgPSBlbGVtZW50U2hhZG93LT5kaXN0cmlidXRvcigpLmVuc3Vy
ZVNlbGVjdEZlYXR1cmVTZXQoZWxlbWVudFNoYWRvdyk7CiAKQEAgLTk3OSw2ICs5ODIsMTIgQEAg
Ym9vbCBFbGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNo
YW5nZWQoRWxlbWVudFNoYWRvdyogZWwKICAgICB9CiAKICAgICByZXR1cm4gZmVhdHVyZVNldC5o
YXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1lLmxvY2FsTmFtZSgpKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGVsZW1lbnRTaGFkb3cpOworICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKKyAgICBV
TlVTRURfUEFSQU0obmV3VmFsdWUpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiAv
LyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBldmVudCBoYW5kbGVy
LgpAQCAtMTQ1NSw5ICsxNDY0LDEyIEBAIEVsZW1lbnRTaGFkb3cqIEVsZW1lbnQ6OmVuc3VyZVNo
YWRvdygpCiAKIHZvaWQgRWxlbWVudDo6ZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rv
ck1hc2sgbWFzaykKIHsKKyAgICBVTlVTRURfUEFSQU0obWFzayk7CiAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYygpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93
KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAg
ICAgICAgIGVsZW1lbnRTaGFkb3ctPmRpZEFmZmVjdFNlbGVjdG9yKG1hc2spOworI2VuZGlmCiB9
CiAKIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2hhZG93Um9vdChFeGNl
cHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCAzMmRk
NGYwNGQ1N2FlYWM0MDMyZWVhZjJmZDFlZmNjZjUyNjhhZTRkLi5jNGNlNjI0Nzc1MGZhZjM5MjMw
YTZiN2VkOTVkNWFjZDkyNmY1ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3Bw
CkBAIC04Miw3ICs4Miw5IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVt
ZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9v
dC0+c2V0SG9zdChzaGFkb3dIb3N0KTsKICAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2Nv
cGUoc2hhZG93SG9zdC0+dHJlZVNjb3BlKCkpOwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFk
b3dSb290LmdldCgpKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtX2Rpc3RyaWJ1dG9y
LmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKHNoYWRvd0hvc3QpOworI2VuZGlmCiAgICAgQ2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkp
OwogCiAgICAgLy8gRXhpc3RlbmNlIG9mIHNoYWRvdyByb290cyByZXF1aXJlcyB0aGUgaG9zdCBh
bmQgaXRzIGNoaWxkcmVuIHRvIGRvIHRyYXZlcnNhbCB1c2luZyBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIuCkBAIC0xMTcsMTMgKzExOSwxNiBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFs
bFNoYWRvd1Jvb3RzKCkKICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHNoYWRvd0hv
c3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBtX2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7
CisjZW5kaWYKIH0KIAogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQogeworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQogICAgIENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9u
KHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKLQorI2VuZGlmCiAgICAgZm9yIChTaGFkb3dSb290KiBy
b290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRv
d1Jvb3QoKSkgewogICAgICAgICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBy
b290LT5hdHRhY2goKTsKQEAgLTE3Myw3ICsxNzgsMTAgQEAgdm9pZCBFbGVtZW50U2hhZG93Ojpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogICAgICAgICBpbmZvLmFkZE1lbWJlcihzaGFkb3dSb290KTsKICAgICAgICAgc2hhZG93Um9v
dCA9IHNoYWRvd1Jvb3QtPm5leHQoKTsKICAgICB9CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBpbmZvLmFkZE1lbWJlcihtX2Rpc3RyaWJ1dG9yKTsKKyNlbmRpZgogfQogCiB9IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKaW5kZXggODkzMzYzYmJhODdiNDg4
ZTdhZmQxMmQwMjg1Y2Q0YTU0NDQxZWE3My4uMDA1MmVjZDZhZmU5YWJkNjlhOGQ0NGQyNGZhN2Q5
ZmFkOTMzNDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC02MywxOCArNjMs
MjYgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgcmVj
YWxjU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgdm9pZCBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dG9yLmludmFsaWRh
dGVEaXN0cmlidXRpb24oaG9zdCgpKTsgfQogICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoQWZm
ZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykgeyBtX2Rpc3RyaWJ1dG9yLmRpZEFmZmVjdFNlbGVjdG9y
KGhvc3QoKSwgbWFzayk7IH0KICAgICB2b2lkIHdpbGxBZmZlY3RTZWxlY3RvcigpIHsgbV9kaXN0
cmlidXRvci53aWxsQWZmZWN0U2VsZWN0b3IoaG9zdCgpKTsgfQogCi0gICAgQ29udGVudERpc3Ry
aWJ1dG9yJiBkaXN0cmlidXRvcigpOwotICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlz
dHJpYnV0b3IoKSBjb25zdDsKKyAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkg
eyByZXR1cm4gbV9kaXN0cmlidXRvcjsgfQorICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYg
ZGlzdHJpYnV0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CisjZWxzZQorICAg
IHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpIHsgfQorICAgIHZvaWQgZW5zdXJlRGlzdHJp
YnV0aW9uKCkgeyB9CisjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwotcHJpdmF0ZToKIAorcHJpdmF0ZToKICAgICBEb3VibHlMaW5r
ZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBDb250ZW50RGlzdHJpYnV0b3IgbV9kaXN0cmlidXRvcjsKKyNlbmRpZgogfTsKIAog
aW5saW5lIFNoYWRvd1Jvb3QqIEVsZW1lbnRTaGFkb3c6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNv
bnN0CkBAIC04NywxNiArOTUsNiBAQCBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6
b2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgp
OwogfQogCi1pbmxpbmUgQ29udGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmli
dXRvcigpCi17Ci0gICAgcmV0dXJuIG1fZGlzdHJpYnV0b3I7Ci19Ci0KLWlubGluZSBjb25zdCBD
b250ZW50RGlzdHJpYnV0b3ImIEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9kaXN0cmlidXRvcjsKLX0KLQogaW5saW5lIEVsZW1lbnQqIEVsZW1lbnRT
aGFkb3c6Omhvc3QoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9zaGFkb3dSb290cy5pc0VtcHR5
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggMTYxZTVlYzQzMWUyNmJjNWNiOTdlMGE3MDY5MTUyM2QzZmEz
MjZlMS4uZjU1ZGU1YmNmNzI2ODcwOGU3YWU4ZGZhMmQ3NGZmNzcxY2JjZmE0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC0yNTEsNiArMjUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNEb2N1bWVudEZyYWdt
ZW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0RvY3VtZW50RnJhZ21lbnRGbGFnKTsgfQog
ICAgIGJvb2wgaXNTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gaXNEb2N1bWVudEZyYWdtZW50
KCkgJiYgaXNUcmVlU2NvcGUoKTsgfQogICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0
IHsgcmV0dXJuIGdldEZsYWcoTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZykgJiYgaXNJbnNlcnRp
b25Qb2ludE5vZGUoKTsgfQorICAgIGJvb2wgaXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0IHsgcmV0
dXJuIGlzU2hhZG93Um9vdCgpIHx8IGlzSW5zZXJ0aW9uUG9pbnQoKTsgfQogCiAgICAgYm9vbCBu
ZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSBjb25zdDsKICAgICBib29sIG5lZWRzU2hhZG93VHJlZVdh
bGtlclNsb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJh
dmVyc2FsLmNwcAppbmRleCA4M2JiN2VjN2U3OWVmMmYyMTYzZWYwNzc1Mzc5ZDc3N2U2OWVmZmYy
Li41MGM0Yzk1M2QyZTQ5NDFiMzJlNThiMzZiYmVkNjUyYTQxOTQ0NmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCkBAIC0yOCwxNyArMjgsMTEw
IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgogCiAjaW5jbHVkZSAiQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCisjaW5jbHVkZSAiSFRNTERldGFpbHNFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3Bh
Y2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7CiAKKyNpZiAhRU5BQkxFKFNIQURPV19ET00pCisv
LyBBIHNpbXBsaWZpZWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLWNvbXBhdGlibGUgd2Fsa2Vy
IGltcGxlbWVudGF0aW9uIGZvciBub24tU0hBRE9XX0RPTSBjb25maWd1cmF0aW9ucy4KK2NsYXNz
IFNoYWRvd1RyZWVXYWxrZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYWRvd1RyZWVXYWxr
ZXIoY29uc3QgTm9kZSogbm9kZSkKKyAgICAgICAgOiBtX25vZGUobm9kZSkKKyAgICB7IH0KKwor
ICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7
IH0KKworICAgIHZvaWQgcGFyZW50KCkgeyBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudChtX25vZGUp
OyB9CisgICAgdm9pZCBuZXh0U2libGluZygpIHsgbV9ub2RlID0gdHJhdmVyc2VOZXh0U2libGlu
ZyhtX25vZGUpOyB9CisgICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKSB7IG1fbm9kZSA9IHRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKG1fbm9kZSk7IH0KKyAgICB2b2lkIGxhc3RDaGlsZCgpIHsgbV9u
b2RlID0gbV9ub2RlLT5sYXN0Q2hpbGQoKTsgfQorICAgIHZvaWQgZmlyc3RDaGlsZCgpIHsgbV9u
b2RlID0gbV9ub2RlLT5maXJzdENoaWxkKCk7IH0KKworICAgIHZvaWQgbmV4dCgpIHsgbV9ub2Rl
ID0gdHJhdmVyc2VOZXh0KG1fbm9kZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzKCkgeyBtX25vZGUg
PSB0cmF2ZXJzZVByZXZpb3VzKG1fbm9kZSk7IH0KKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJz
ZVBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyogPSAwKTsKKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgTm9kZSogdHJhdmVyc2VOZXh0KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9k
ZSogdHJhdmVyc2VQcmV2aW91cyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIHRyYXZl
cnNlTmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBy
ZXZpb3VzU2libGluZyhjb25zdCBOb2RlKik7CisgICAgc3RhdGljIE5vZGUqIG5leHRJbmNsdWRp
bmdDb250YWluaW5nU2NvcGUoY29uc3QgTm9kZSopOworICAgIHN0YXRpYyBOb2RlKiBwcmV2aW91
c0luY2x1ZGluZ0NvbnRhaW5pbmdTY29wZShjb25zdCBOb2RlKik7CisKKyAgICBjb25zdCBOb2Rl
KiBtX25vZGU7Cit9OworCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQ
YXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyNpZiBF
TkFCTEUoREVUQUlMU19FTEVNRU5UKQorICAgIGlmIChOb2RlKiBwYXJlbnQgPSBwYXJlbnRPdmVy
SW5zZXJ0aW9uUG9pbnQobm9kZSwgZGV0YWlscykpCisgICAgICAgIHJldHVybiBwYXJlbnQ7Cisj
ZW5kaWYKKworICAgIGZvciAoTm9kZSogd2FsayA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsg
d2Fsazsgd2FsayA9IHdhbGstPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICBpZiAoIXdh
bGstPmlzU2hhZG93Qm91bmRhcnkoKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0K
KworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJh
dmVyc2VOZXh0U2libGluZyhjb25zdCBOb2RlKiBub2RlKQoreworI2lmIEVOQUJMRShERVRBSUxT
X0VMRU1FTlQpCisgICAgaWYgKE5vZGUqIG5leHQgPSBuZXh0U2libGluZ092ZXJJbnNlcnRpb25Q
b2ludChub2RlLCAmbm9kZSkpCisgICAgICAgIHJldHVybiBuZXh0OworI2VuZGlmCisKKyAgICBy
ZXR1cm4gbm9kZS0+bmV4dFNpYmxpbmcoKTsKK30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVX
YWxrZXI6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCit7CisjaWYg
RU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKKyAgICBpZiAoTm9kZSogcHJldmlvdXMgPSBwcmV2aW91
c1NpYmxpbmdPdmVySW5zZXJ0aW9uUG9pbnQobm9kZSwgJm5vZGUpKQorICAgICAgICByZXR1cm4g
cHJldmlvdXM7CisjZW5kaWYKKworICAgIHJldHVybiBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsK
K30KKworaW5saW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dChjb25zdCBO
b2RlKiBub2RlKQoreworICAgIGZvciAoTm9kZSogd2FsayA9IE5vZGVUcmF2ZXJzYWw6Om5leHQo
bm9kZSk7IHdhbGs7IHdhbGsgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KHdhbGspKSB7CisgICAgICAg
IGlmICghd2Fsay0+aXNTaGFkb3dCb3VuZGFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fs
a2VyOjp0cmF2ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2Rl
KiB3YWxrID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSk7IHdhbGs7IHdhbGsgPSBOb2Rl
VHJhdmVyc2FsOjpwcmV2aW91cyh3YWxrKSkgeworICAgICAgICBpZiAoIXdhbGstPmlzU2hhZG93
Qm91bmRhcnkoKSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVy
biAwOworfQorI2VuZGlmIC8vICFFTkFCTEUoU0hBRE9XX0RPTSkKKwogdm9pZCBQYXJlbnREZXRh
aWxzOjpkaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCkKIHsKICAgICBpZiAoIW1faW5zZXJ0aW9uUG9pbnQpIHsKICAgICAgICAgbV9pbnNlcnRp
b25Qb2ludCA9IGluc2VydGlvblBvaW50OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgICAg
ICBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSAgPSBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSB8fCBp
bnNlcnRpb25Qb2ludC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CisjZW5kaWYKICAgICB9CiB9
CiAKQEAgLTQ5LDE0ICsxNDIsMjQgQEAgdm9pZCBQYXJlbnREZXRhaWxzOjpkaWRUcmF2ZXJzZVNo
YWRvd1Jvb3QoY29uc3QgU2hhZG93Um9vdCogcm9vdCkKIAogQ29udGFpbmVyTm9kZSogcGFyZW50
U2xvdyhjb25zdCBOb2RlKiBub2RlLCBQYXJlbnREZXRhaWxzKiBkZXRhaWxzKQogeworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9k
ZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDcm9zc1VwcGVyQm91bmRhcnksIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6Q2FuU3RhcnRGcm9tU2hhZG93Qm91bmRhcnkpOworI2Vsc2UKKyAg
ICBTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKKyNlbmRpZgorCiAgICAgQ29udGFpbmVy
Tm9kZSogZm91bmQgPSB0b0NvbnRhaW5lck5vZGUod2Fsa2VyLnRyYXZlcnNlUGFyZW50KHdhbGtl
ci5nZXQoKSwgZGV0YWlscykpOwotICAgIHJldHVybiBkZXRhaWxzLT5vdXRPZkNvbXBvc2l0aW9u
KCkgPyAwIDogZm91bmQ7CisgICAgcmV0dXJuIGRldGFpbHMgJiYgZGV0YWlscy0+b3V0T2ZDb21w
b3NpdGlvbigpID8gMCA6IGZvdW5kOwogfQogCiBOb2RlKiBuZXh0U2libGluZ1Nsb3coY29uc3Qg
Tm9kZSogbm9kZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOworI2Vsc2UKKyAgICBTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlcihub2RlKTsKKyNlbmRpZgorCiAgICAgaWYgKG5vZGUtPmlzQmVmb3JlUHNldWRvRWxlbWVu
dCgpKSB7CiAgICAgICAgIHdhbGtlci5wYXJlbnQoKTsKICAgICAgICAgd2Fsa2VyLmZpcnN0Q2hp
bGQoKTsKQEAgLTY5LDEzICsxNzIsMTcgQEAgTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5v
ZGUqIG5vZGUpCiAgICAgTm9kZSogcGFyZW50ID0gd2Fsa2VyLnRyYXZlcnNlUGFyZW50KG5vZGUp
OwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJl
dHVybiB0b0VsZW1lbnQocGFyZW50KS0+cHNldWRvRWxlbWVudChBRlRFUik7Ci0KICAgICByZXR1
cm4gMDsKIH0KIAogTm9kZSogcHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQog
eworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3
YWxrZXIobm9kZSk7CisjZWxzZQorICAgIFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwor
I2VuZGlmCisKICAgICBpZiAobm9kZS0+aXNBZnRlclBzZXVkb0VsZW1lbnQoKSkgewogICAgICAg
ICB3YWxrZXIucGFyZW50KCk7CiAgICAgICAgIHdhbGtlci5sYXN0Q2hpbGQoKTsKQEAgLTk0LDM0
ICsyMDEsNDYgQEAgTm9kZSogcHJldmlvdXNTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQog
CiBOb2RlKiBuZXh0SW5TY29wZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAhRU5BQkxFKFNI
QURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzkK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fs
a2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAg
cmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6Om5l
eHQobm9kZSk7CisjZW5kaWYKIH0KIAogTm9kZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUq
IG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRu
J3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIo
bm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7
CiAgICAgd2Fsa2VyLnByZXZpb3VzKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNl
CisgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpOworI2VuZGlmCiB9CiAK
IE5vZGUqIHBhcmVudEluU2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTog
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShT
SEFET1dfRE9NKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlciA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXI6OkRvTm90Q3Jvc3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIucGFyZW50KCk7CiAg
ICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5v
ZGUoKTsKKyNlbmRpZgogfQogCiBOb2RlKiBsYXN0Q2hpbGRJblNjb3BlKGNvbnN0IE5vZGUqIG5v
ZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGRuJ3Qg
YmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIobm9k
ZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENyb3NzVXBwZXJCb3VuZGFyeSk7CiAg
ICAgd2Fsa2VyLmxhc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQor
ICAgIHJldHVybiBub2RlLT5sYXN0Q2hpbGQoKTsKKyNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaAppbmRleCAyZGIzZTc1OTVjYWNjMGY5
YzA1Zjg2ZmZhMTE3YmFlNDg4ZDU4ODA0Li40Y2I3N2NiMjY0NDhiMzkxM2NjNWEwMzY3MzBhZDAw
MDc0ZTZmMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1Ry
YXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmgKQEAgLTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fb3V0T2ZDb21wb3NpdGlv
bjsKIH07CiAKK0NvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKik7CiBDb250YWluZXJO
b2RlKiBwYXJlbnQoY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKIENvbnRhaW5lck5vZGUq
IHBhcmVudFNsb3coY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKIE5vZGUqIG5leHRTaWJs
aW5nKGNvbnN0IE5vZGUqKTsKQEAgLTc2LDYgKzc3LDEyIEBAIE5vZGUqIHByZXZpb3VzSW5TY29w
ZShjb25zdCBOb2RlKik7CiBOb2RlKiBwYXJlbnRJblNjb3BlKGNvbnN0IE5vZGUqKTsKIE5vZGUq
IGxhc3RDaGlsZEluU2NvcGUoY29uc3QgTm9kZSopOwogCitpbmxpbmUgQ29udGFpbmVyTm9kZSog
cGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgUGFyZW50RGV0YWlscyBkZXRhaWxzOwor
ICAgIHJldHVybiBwYXJlbnQobm9kZSwgJmRldGFpbHMpOworfQorCiBpbmxpbmUgQ29udGFpbmVy
Tm9kZSogcGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMqIGRldGFpbHMpCiB7
CiAgICAgaWYgKCFub2RlLT5uZWVkc1NoYWRvd1RyZWVXYWxrZXIoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCmluZGV4IGUzYTQ4MjIyYjkzZDM4ZDY3MGVjMmEyMzgxZjBiZjZkYTE1MTc0
MmQuLjc0ZTk4MmQxY2M2NDQ4NTM2YmQ5MzMwOGZkZjQ2MmJlOTdmMDU2OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKQEAgLTU3LDcgKzU3LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBTYW1lU2l6ZUFzU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50
LCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9v
dD4geworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQqIHBvaW50ZXJzWzNdOworI2Vs
c2UKKyAgICB2b2lkKiBwb2ludGVyc1syXTsKKyNlbmRpZgogICAgIHVuc2lnbmVkIGNvdW50ZXJz
QW5kRmxhZ3NbMV07CiB9OwogCkBAIC0yNjIsNiArMjY2LDcgQEAgdm9pZCBTaGFkb3dSb290Ojph
dHRhY2goKQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6
Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICBEb2N1bWVudEZyYWdtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0
aW9uUG9pbnQpOwogCiAgICAgaWYgKCFpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8ICFp
c09sZGVzdCgpKQpAQCAtMjc5LDEwICsyODQsMTQgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBTaGFkb3dSb290OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXIK
ICAgICB9CiAKICAgICByZXR1cm4gSW5zZXJ0aW9uRG9uZTsKKyNlbHNlCisgICAgcmV0dXJuIERv
Y3VtZW50RnJhZ21lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CisjZW5kaWYKIH0K
IAogdm9pZCBTaGFkb3dSb290OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Q
b2ludCkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQt
PmluRG9jdW1lbnQoKSAmJiBtX3JlZ2lzdGVyZWRXaXRoUGFyZW50U2hhZG93Um9vdCkgewogICAg
ICAgICBTaGFkb3dSb290KiByb290ID0gaG9zdCgpLT5jb250YWluaW5nU2hhZG93Um9vdCgpOwog
ICAgICAgICBpZiAoIXJvb3QpCkBAIC0yOTIsNyArMzAxLDcgQEAgdm9pZCBTaGFkb3dSb290Ojpy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgICAgIHJv
b3QtPnNjb3BlRGlzdHJpYnV0aW9uKCktPnVucmVnaXN0ZXJFbGVtZW50U2hhZG93KCk7CiAgICAg
ICAgIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRTaGFkb3dSb290ID0gZmFsc2U7CiAgICAgfQotCisj
ZW5kaWYKICAgICBEb2N1bWVudEZyYWdtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7
CiB9CiAKQEAgLTMxNyw2ICszMjYsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnVucmVnaXN0ZXJTY29w
ZWRIVE1MU3R5bGVDaGlsZCgpCiAgICAgc2V0SGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQobV9udW1i
ZXJPZlN0eWxlcyA+IDApOwogfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiBTY29wZUNvbnRl
bnREaXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkKIHsK
ICAgICBpZiAobV9zY29wZURpc3RyaWJ1dGlvbikKQEAgLTMyNCw3ICszMzQsOCBAQCBTY29wZUNv
bnRlbnREaXN0cmlidXRpb24qIFNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKCkK
IAogICAgIG1fc2NvcGVEaXN0cmlidXRpb24gPSBhZG9wdFB0cihuZXcgU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uKTsKICAgICByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsKLX0gICAK
K30KKyNlbmRpZgogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CkBAIC0zMzMsNyArMzQ0LDkgQEAg
dm9pZCBTaGFkb3dSb290OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogICAgIFRyZWVTY29wZTo6cmVwb3J0TWVtb3J5VXNhZ2UobWVt
b3J5T2JqZWN0SW5mbyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2KTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX25leHQpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGluZm8uYWRkTWVt
YmVyKG1fc2NvcGVEaXN0cmlidXRpb24pOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCmluZGV4IDE1MjY5MzhlZGU1MDQwZGRjNDMzOWY1OGZmODY1MWEyYzcyNTlmNzkuLjg1
OWYwZDIyZGVhZDgyYWQ4YzdkZTEwNTY0ZjI4MjIyOTE0MWNlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaApAQCAtODgsOSArODgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJTY29wZWRIVE1MU3R5bGVDaGlsZCgpIE9WRVJSSURFOwogCisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uKiBzY29wZURpc3RyaWJ1dGlv
bigpIHsgcmV0dXJuIG1fc2NvcGVEaXN0cmlidXRpb24uZ2V0KCk7IH0KICAgICBjb25zdCBTY29w
ZUNvbnRlbnREaXN0cmlidXRpb24qIHNjb3BlRGlzdHJpYnV0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsgfQogICAgIFNjb3BlQ29udGVudERpc3RyaWJ1dGlv
biogZW5zdXJlU2NvcGVEaXN0cmlidXRpb24oKTsKKyNlbmRpZgogCiAgICAgU2hhZG93Um9vdFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRob3JTaGFkb3dSb290ID8gQXV0aG9yU2hh
ZG93Um9vdCA6IFVzZXJBZ2VudFNoYWRvd1Jvb3Q7IH0KICAgICBib29sIGlzQWNjZXNzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdXRob3JTaGFkb3dSb290OyB9CkBAIC0xMTAsNyAr
MTEyLDkgQEAgcHJpdmF0ZToKIAogICAgIFNoYWRvd1Jvb3QqIG1fcHJldjsKICAgICBTaGFkb3dS
b290KiBtX25leHQ7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgT3duUHRyPFNjb3BlQ29u
dGVudERpc3RyaWJ1dGlvbj4gbV9zY29wZURpc3RyaWJ1dGlvbjsKKyNlbmRpZgogICAgIHVuc2ln
bmVkIG1fbnVtYmVyT2ZTdHlsZXMgOiAyODsKICAgICB1bnNpZ25lZCBtX2FwcGx5QXV0aG9yU3R5
bGVzIDogMTsKICAgICB1bnNpZ25lZCBtX3Jlc2V0U3R5bGVJbmhlcml0YW5jZSA6IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggMDVlZWJhYjQxMGQ4
OGI0MWViODExOTMxMmFkOWQ5MWMyNWQ0MWVjMi4uMzlhMjZjOTNhNDY3MDMzZmQwZjE4MTEzZjQ4
YmQyMWM5MjJkOTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmNwcApAQCAtMjgsMTIgKzI4LDE0IEBACiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgog
I2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdW1tYXJ5UXVlcnlT
ZWxlY3RvcigpCkBAIC00MiwxNSArNDQsMjMgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
c3VtbWFyeVF1ZXJ5U2VsZWN0b3IoKQogICAgIHJldHVybiBzZWxlY3RvcjsKIH07CiAKLWNsYXNz
IERldGFpbHNDb250ZW50RWxlbWVudCA6IHB1YmxpYyBIVE1MQ29udGVudEVsZW1lbnQgeworY2xh
c3MgRGV0YWlsc0NvbnRlbnRFbGVtZW50IDogcHVibGljIFNoYWRvd0luc2VydGlvblBvaW50VHlw
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0YWlsc0NvbnRlbnRFbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICBEZXRhaWxzQ29udGVudEVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6IEhUTUxDb250ZW50RWxlbWVudChIVE1M
TmFtZXM6OndlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRvY3VtZW50KQorICAgICAgICA6IFNoYWRv
d0luc2VydGlvblBvaW50VHlwZShIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRv
Y3VtZW50KQogICAgIHsKICAgICB9CisKKyAgICAvLyBUaGlzIG1hdGNoIHNob3VsZCBiZSBtdXR1
YWxseSBleGNsdXNpdmUgdG8gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjptYXRjaFR5cGVGb3IoKQor
ICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKiBub2RlKSBPVkVSUklERQor
ICAgIHsKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgbm9kZSAhPSBub2Rl
LT5wYXJlbnROb2RlKCktPnF1ZXJ5U2VsZWN0b3Ioc3VtbWFyeVF1ZXJ5U2VsZWN0b3IoKSwgQVNT
RVJUX05PX0VYQ0VQVElPTikpCisgICAgICAgICAgICByZXR1cm4gQWx3YXlzTWF0Y2hlczsKKyAg
ICAgICAgcmV0dXJuIE5ldmVyTWF0Y2hlczsKKyAgICB9CiB9OwogCiBQYXNzUmVmUHRyPERldGFp
bHNDb250ZW50RWxlbWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtNTgsNyArNjgsNyBAQCBQYXNzUmVmUHRyPERldGFpbHNDb250ZW50RWxl
bWVudD4gRGV0YWlsc0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRGV0YWlsc0NvbnRlbnRFbGVtZW50KGRvY3VtZW50KSk7CiB9
CiAKLWNsYXNzIERldGFpbHNTdW1tYXJ5RWxlbWVudCA6IHB1YmxpYyBIVE1MQ29udGVudEVsZW1l
bnQgeworY2xhc3MgRGV0YWlsc1N1bW1hcnlFbGVtZW50IDogcHVibGljIFNoYWRvd0luc2VydGlv
blBvaW50VHlwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGV0YWlsc1N1bW1h
cnlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIApAQCAtNzAsNyArODAsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgRGV0YWlsc1N1bW1hcnlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICAgICAgOiBIVE1MQ29udGVudEVsZW1lbnQoSFRNTE5hbWVzOjp3ZWJraXRTaGFkb3dD
b250ZW50VGFnLCBkb2N1bWVudCkKKyAgICAgICAgOiBTaGFkb3dJbnNlcnRpb25Qb2ludFR5cGUo
SFRNTE5hbWVzOjp3ZWJraXRTaGFkb3dDb250ZW50VGFnLCBkb2N1bWVudCkKICAgICB7IH0KIAog
ICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNoVHlwZUZvcihOb2RlKiBub2RlKSBPVkVSUklERQpA
QCAtMTIwLDYgKzEzMCwxMSBAQCB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoRGV0YWlsc0NvbnRlbnRFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04sIHRydWUpOwogfQogCitFbGVt
ZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZhbGxiYWNrU3VtbWFyeSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxlbWVudCo+KHVzZXJBZ2VudFNoYWRv
d1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1tYXJ5KCk7Cit9CisKIEVsZW1lbnQq
IEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKIHsKICAgICBmb3Ig
KE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewpAQCAtMTI3LDcgKzE0Miw3IEBAIEVsZW1lbnQqIEhUTUxEZXRhaWxzRWxlbWVu
dDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQo
Y2hpbGQpOwogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQqPih1c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxiYWNrU3Vt
bWFyeSgpOworICAgIHJldHVybiBmYWxsYmFja1N1bW1hcnkoKTsKIH0KIAogdm9pZCBIVE1MRGV0
YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNDYsOCArMTYxLDE4IEBAIGJvb2wgSFRNTERl
dGFpbHNFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JiBjCiAgICAgaWYgKCFjaGlsZENvbnRleHQuaXNPbkVuY2Fwc3VsYXRpb25Cb3Vu
ZGFyeSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9pc09wZW4pCisgICAg
aWYgKG1faXNPcGVuKSB7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAvLyBUaGUg
ZmFsbGJhY2sgPHN1bW1hcnk+IHNob3VsZG4ndCBiZSB2aXNpYmxlIHVubGVzcyBpdCBpcyB1c2Vk
IGFzIGEgbWFpbiBzdW1tYXJ5LgorICAgICAgICAvLyBXaXRoIFNIQURPV19ET00sIDxkZXRhaWxz
PiBjYW4ganVzdCBsZXQgPGNvbnRlbnQ+IGZhbGxiYWNrIHN5c3RlbSB0YWtlIGNhcmUgb2YgdGhp
cy4KKyAgICAgICAgaWYgKGNoaWxkQ29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFyeVRh
ZykpIHsKKyAgICAgICAgICAgIEVsZW1lbnQqIGZhbGxiYWNrID0gZmFsbGJhY2tTdW1tYXJ5KCk7
CisgICAgICAgICAgICBpZiAoZmFsbGJhY2sgIT0gZmluZE1haW5TdW1tYXJ5KCkgJiYgZmFsbGJh
Y2sgPT0gY2hpbGRDb250ZXh0Lm5vZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KTsKKyAgICB9CiAKICAgICBpZiAoIWNoaWxk
Q29udGV4dC5ub2RlKCktPmhhc1RhZ05hbWUoc3VtbWFyeVRhZykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE1NSwxMSArMTgwLDEzMCBAQCBib29sIEhUTUxEZXRhaWxzRWxlbWVudDo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgYwogICAg
IHJldHVybiBjaGlsZENvbnRleHQubm9kZSgpID09IGZpbmRNYWluU3VtbWFyeSgpICYmIEhUTUxF
bGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCk7CiB9CiAKK3Zv
aWQgSFRNTERldGFpbHNFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCit7CisjaWYgIUVOQUJMRShTSEFET1dfRE9NKQorICAgIC8vIFRoaXMgaXMgYSBzaW1w
bGlmaWVkIHZlcnNpb24gb2YgQ29udGVudERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKCkKKyAgICAvLyB3aGljaCByZWF0dGFjaGVzIGNoaWxkcmVuIHRvIG1ha2UgdGhlbSBiZWlu
ZyByZS1kaXN0cmlidXRlZCB0byBhcHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnRzLgorICAgIGlm
IChhdHRhY2hlZCgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsg
biA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBuLT5sYXp5UmVhdHRhY2goKTsKKyAg
ICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0KKyNlbmRpZgorICAgIEhUTUxFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVy
Q2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworfQorCiB2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6
dG9nZ2xlT3BlbigpCiB7CiAgICAgc2V0QXR0cmlidXRlKG9wZW5BdHRyLCBtX2lzT3BlbiA/IG51
bGxBdG9tIDogZW1wdHlBdG9tKTsKIH0KIAorI2lmICFFTkFCTEUoU0hBRE9XX0RPTSkKK25hbWVz
cGFjZSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsIHsKKworc3RhdGljIGlubGluZSBJbnNlcnRpb25Q
b2ludCogZmluZEluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgTm9kZSog
cGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50KQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBwYXJlbnQtPnlvdW5nZXN0U2hhZG93
Um9vdCgpOworICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBib29sIGhh
c0luc2VyZXRpb25Qb2ludCA9IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmRldGFpbHNU
YWcpIHx8IHBhcmVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnN1bW1hcnlUYWcpOworICAgIGlm
ICghaGFzSW5zZXJldGlvblBvaW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoTm9k
ZSogbWF5SW5zZXJ0aW9uUG9pbnQgPSByb290LT5maXJzdENoaWxkKCk7IG1heUluc2VydGlvblBv
aW50OyBtYXlJbnNlcnRpb25Qb2ludCA9IG1heUluc2VydGlvblBvaW50LT5uZXh0U2libGluZygp
KSB7CisgICAgICAgIGlmIChtYXlJbnNlcnRpb25Qb2ludC0+aXNJbnNlcnRpb25Qb2ludCgpICYm
IHRvSW5zZXJ0aW9uUG9pbnQobWF5SW5zZXJ0aW9uUG9pbnQpLT5hbHdheXNNYXRjaGVzKGNvbnN0
X2Nhc3Q8Tm9kZSo+KG5vZGUpKSkKKyAgICAgICAgICAgIHJldHVybiB0b0luc2VydGlvblBvaW50
KG1heUluc2VydGlvblBvaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0
aWMgaW5saW5lIFZlY3RvcjxOb2RlKj4gZ2V0RGlzdHJpYnV0ZWROb2RlKEluc2VydGlvblBvaW50
KiBwYXJlbnQpCit7CisgICAgVmVjdG9yPE5vZGUqPiBub2RlczsKKyAgICBFbGVtZW50KiBob3N0
ID0gcGFyZW50LT5zaGFkb3dIb3N0KCk7CisgICAgQVNTRVJUKGhvc3QpOworICAgIGlmICghaG9z
dCkKKyAgICAgICAgcmV0dXJuIG5vZGVzOworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IGhvc3Qt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgaWYgKHBhcmVudC0+YWx3YXlzTWF0Y2hlcyhjaGlsZCkpCisgICAgICAgICAgICBub2Rl
cy5hcHBlbmQoY2hpbGQpOworICAgIH0KKworICAgIHJldHVybiBub2RlczsKK30KKworTm9kZSog
cGFyZW50T3Zlckluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudERldGFpbHMq
IGRldGFpbHMpCit7CisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IGZp
bmRJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAg
ICAgIGRldGFpbHMtPmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOwor
ICAgICAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGRldGFpbHNUYWcp
IHx8IG5vZGUtPnBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZShzdW1tYXJ5VGFnKSk7CisgICAgICAg
IHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK
K05vZGUqIG5leHRTaWJsaW5nT3Zlckluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIG5vZGUsIGNv
bnN0IE5vZGUqKiBjb250aW51ZVRyYXZlcnNpbmdGcm9tKQoreworICAgIGlmIChJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAg
ICAgVmVjdG9yPE5vZGUqPiBkaXN0cmlidXRpb24gPSBnZXREaXN0cmlidXRlZE5vZGUoaW5zZXJ0
aW9uUG9pbnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlzdHJpYnV0aW9u
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAvLyBTdGF5aW5nIGluc2lkZSBkaXN0cmlidXRp
b24uCisgICAgICAgICAgICBpZiAoZGlzdHJpYnV0aW9uW2ldID09IG5vZGUgJiYgZGlzdHJpYnV0
aW9uLmxhc3QoKSAhPSBub2RlKQorICAgICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRpb25b
aSArIDFdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBTdGVwcGluZyBvdXQgZnJv
bSBkaXN0cmlidXRlZCBsb2NhdGlvbgorICAgICAgICAqY29udGludWVUcmF2ZXJzaW5nRnJvbSA9
IGluc2VydGlvblBvaW50OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFN0ZXBwaW5nIGludG8g
ZGlzdHJpYnV0aW9uLgorICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKSB7Cisg
ICAgICAgICAgICBWZWN0b3I8Tm9kZSo+IGRpc3RyaWJ1dGlvbiA9IGdldERpc3RyaWJ1dGVkTm9k
ZSh0b0luc2VydGlvblBvaW50KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKSk7CisgICAgICAgICAg
ICBpZiAoIWRpc3RyaWJ1dGlvbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRp
c3RyaWJ1dGlvbi5maXJzdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9
CisKK05vZGUqIHByZXZpb3VzU2libGluZ092ZXJJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBu
b2RlLCBjb25zdCBOb2RlKiogY29udGludWVUcmF2ZXJzaW5nRnJvbSkKK3sKKyAgICBpZiAoSW5z
ZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gZmluZEluc2VydGlvblBvaW50KG5vZGUpKSB7
CisgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0aW9uID0gZ2V0RGlzdHJpYnV0ZWROb2Rl
KGluc2VydGlvblBvaW50KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpc3Ry
aWJ1dGlvbi5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgLy8gU3RheWluZyBpbnNpZGUgZGlz
dHJpYnV0aW9uLgorICAgICAgICAgICAgaWYgKGRpc3RyaWJ1dGlvbltpXSA9PSBub2RlICYmIGRp
c3RyaWJ1dGlvbi5maXJzdCgpICE9IG5vZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3Ry
aWJ1dGlvbltpIC0gMV07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFN0ZXBwaW5n
IG91dCBmcm9tIGRpc3RyaWJ1dGVkIGxvY2F0aW9uCisgICAgICAgICpjb250aW51ZVRyYXZlcnNp
bmdGcm9tID0gaW5zZXJ0aW9uUG9pbnQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU3RlcHBp
bmcgaW50byBkaXN0cmlidXRpb24uCisgICAgICAgIGlmIChub2RlLT5pc0luc2VydGlvblBvaW50
KCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxOb2RlKj4gZGlzdHJpYnV0aW9uID0gZ2V0RGlzdHJp
YnV0ZWROb2RlKHRvSW5zZXJ0aW9uUG9pbnQoY29uc3RfY2FzdDxOb2RlKj4obm9kZSkpKTsKKyAg
ICAgICAgICAgIGlmICghZGlzdHJpYnV0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzdHJpYnV0aW9uLmxhc3QoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biAwOworfQorCit9IC8vIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwKKyNlbmRpZiAvLyAhRU5BQkxF
KFNIQURPV19ET00pCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuaAppbmRleCA5ZGE5Njk4ODYxNDY0Y2QzZDBlNzJmMjE0NzY4MDczYTIzYmQzNmJh
Li4yYWQzN2Y2NzFkYTViNWNkYWMzZjgzNWFhMGEwOGRjZjU4Yjg3YmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKQEAgLTM4LDEzICszOCwzMiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIE9WRVJSSURFOwotCisgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sLCBOb2RlKiwgTm9kZSosIGludCk7CisgICAgRWxlbWVudCogZmFsbGJhY2tTdW1tYXJ5KCkg
Y29uc3Q7CiAgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CiAKICAgICBib29sIG1faXNP
cGVuOwogCiB9OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCitjbGFzcyBIVE1MQ29udGVudEVs
ZW1lbnQ7Cit0eXBlZGVmIEhUTUxDb250ZW50RWxlbWVudCBTaGFkb3dJbnNlcnRpb25Qb2ludFR5
cGU7CisjZWxzZQorY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7Cit0eXBlZGVmIEluc2VydGlvblBvaW50
IFNoYWRvd0luc2VydGlvblBvaW50VHlwZTsKKworbmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2
ZXJzYWwgeworCitjbGFzcyBQYXJlbnREZXRhaWxzOworCitOb2RlKiBwYXJlbnRPdmVySW5zZXJ0
aW9uUG9pbnQoY29uc3QgTm9kZSosIFBhcmVudERldGFpbHMqKTsKK05vZGUqIG5leHRTaWJsaW5n
T3Zlckluc2VydGlvblBvaW50KGNvbnN0IE5vZGUqLCBjb25zdCBOb2RlKiogY29udGludWVUcmF2
ZXJzaW5nRnJvbSk7CitOb2RlKiBwcmV2aW91c1NpYmxpbmdPdmVySW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZSosIGNvbnN0IE5vZGUqKiBjb250aW51ZVRyYXZlcnNpbmdGcm9tKTsKKworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxEZXRhaWxzRWxl
bWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA2YWFm
OTk0OThiNmEwMDQxMzk1YWY1NTVmNTJlMTcwYmVmZGZiZmI3Li5hMzBhZjFlZWNhNmFiOTljZmY3
MzVkOTA0MmMzZWU2ODYxYmEzMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTUzNyw4ICs1MzcsMTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRh
dGVUeXBlKCkKICAgICAgICAgICAgIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZSh0cnVlKTsKICAgICB9
CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVudFNoYWRvdyogZWxlbWVu
dFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKQogICAgICAgICBl
bGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisjZW5kaWYKIAogICAgIHNl
dENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGZhbHNlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IDkwMzliNDBiODAzNzQw
ZGY5YjIxNTgyYjA4OTUxYzU1MDg2NzhlMmIuLmVkZGMzYWI2YTIwNTg1OTE2MDY4ODNmY2JmMGQ3
N2M5ZDM2ODBiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5j
cHAKQEAgLTM3LDEzICszNywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLWNsYXNzIFN1bW1hcnlDb250ZW50RWxlbWVudCA6IHB1YmxpYyBI
VE1MQ29udGVudEVsZW1lbnQgeworY2xhc3MgU3VtbWFyeUNvbnRlbnRFbGVtZW50IDogcHVibGlj
IFNoYWRvd0luc2VydGlvblBvaW50VHlwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3VtbWFyeUNvbnRlbnRFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToK
ICAgICBTdW1tYXJ5Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgICAgICA6
IEhUTUxDb250ZW50RWxlbWVudChIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRv
Y3VtZW50KQorICAgICAgICA6IFNoYWRvd0luc2VydGlvblBvaW50VHlwZShIVE1MTmFtZXM6Ondl
YmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRvY3VtZW50KQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXgg
M2ZjYmY5ZDUwYmU2NTM0MDg4ZjFiYjU4NTg1MDY4MGI1NGUwZDg3ZS4uYTE5ZGRmNDExOGQ5ZjM3
MjMzYjJkYmY5YmZkYzQwZjc4MDkyYmY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAjaW5j
bHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgpA
QCAtNDQxLDMgKzQ0Myw1IEBAIHZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaWRTaGFkb3dCb3Vu
ZGFyeUNoYW5nZShFbGVtZW50KiBob3N0KQogfQogCiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hB
RE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1
dG9yLmgKaW5kZXggZGZlYWI4Y2M3ZmRiZTUwYWRmNjEwN2U4ZDYwYTBkZjIyODQxNmQwYi4uOTU1
MzFiNGI0YzU2NThmMWM1NjhlMWZkNjczNDRjMTY4ZTAwNTc2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTM3LDYgKzM3LDggQEAK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENv
bnRhaW5lck5vZGU7CkBAIC0xNjMsNCArMTY1LDUgQEAgaW5saW5lIGJvb2wgQ29udGVudERpc3Ry
aWJ1dG9yOjpuZWVkc0Rpc3RyaWJ1dGlvbigpIGNvbnN0CiAKIH0KIAorI2VuZGlmIC8vIEVOQUJM
RShTSEFET1dfRE9NKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTJhMGFjNWExZjkyZmFkY2U2YjAzM2M0
OGMwZGU2MTMwZGM4YzZkNi4uNDIxYWM4MGJiMGE5Mzk0ZmU5NGVhOTQ0ZGNmNTA0YzY0MWRiZWY4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9y
UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwog
I2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50Lmgi
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCkBAIC05MSwzICs5Myw1IEBAIGJvb2wgQ29u
dGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBz
aWJsaW5ncywgaW50IG50CiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVl
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgK
aW5kZXggNGQzOGVkZDFhNWM4NjEwZjc3MjkzMTMyNGE2YTZlZWRjZDM3YTcxNi4uZmUyNGQyZDNk
OGI3Y2VhN2MxMzBkMDc4YzViZmIxNGVjOGJhMjAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCkBAIC0zNyw2ICszNyw4IEBACiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVu
dDsKQEAgLTc2LDQgKzc4LDUgQEAgcHJpdmF0ZToKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNI
QURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IDQwNDQ3MTQwZmFhYWE4NzkxMGQ2MTU5MDdmYjQ3YTg5
OWRjMDZmZmYuLmM0ZjNhMTYyM2FmZTc2MmRhOTVhNGNhY2Q5YzgyZmI3NGM2MzkxNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApA
QCAtMzgsNiArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKwogdXNpbmcgSFRNTE5hbWVzOjpzZWxlY3RBdHRyOwogCiBjb25zdCBRdWFsaWZp
ZWROYW1lJiBIVE1MQ29udGVudEVsZW1lbnQ6OmNvbnRlbnRUYWdOYW1lKERvY3VtZW50KikKQEAg
LTUxLDggKzUzLDYgQEAgY29uc3QgUXVhbGlmaWVkTmFtZSYgSFRNTENvbnRlbnRFbGVtZW50Ojpj
b250ZW50VGFnTmFtZShEb2N1bWVudCopCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShTSEFET1df
RE9NKQotCiBQYXNzUmVmUHRyPEhUTUxDb250ZW50RWxlbWVudD4gSFRNTENvbnRlbnRFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTENvbnRlbnRFbGVtZW50KGNvbnRlbnRUYWdOYW1lKGRvY3VtZW50KSwgZG9jdW1lbnQpKTsK
QEAgLTIwMywxNyArMjAzLDYgQEAgYm9vbCBIVE1MQ29udGVudEVsZW1lbnQ6OnZhbGlkYXRlU2Vs
ZWN0KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2Vsc2UKLQotUGFzc1JlZlB0cjxI
VE1MQ29udGVudEVsZW1lbnQ+IEhUTUxDb250ZW50RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxDb250ZW50RWxlbWVudChj
b250ZW50VGFnTmFtZShkb2N1bWVudCksIGRvY3VtZW50KSk7Ci19Ci0KLUhUTUxDb250ZW50RWxl
bWVudDo6SFRNTENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEluc2VydGlvblBvaW50KHRhZ05hbWUsIGRvY3VtZW50
KQoteyB9Ci0KICNlbmRpZiAvLyBpZiBFTkFCTEUoU0hBRE9XX0RPTSkKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAppbmRleCA5ZDBjOGZj
NDM1M2JmOTZjZTI0ZDFhMjZmMjUxYWRjM2M5ODFhZDA4Li5hOTBiZGJjNzc2ZjlmNjA3ODY2NTIy
YmRjZGFjZjc3MDVjMmI4MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuaApAQCAtODEsMjMgKzgxLDYgQEAgaW5saW5lIGNvbnN0IENTU1Nl
bGVjdG9yTGlzdCYgSFRNTENvbnRlbnRFbGVtZW50OjpzZWxlY3Rvckxpc3QoKQogICAgIHJldHVy
biBtX3NlbGVjdG9yTGlzdDsKIH0KIAotI2Vsc2UKLQotLy8gRklYTUU6IHNob3VsZG4ndCBpbmhl
cml0IGZyb20gSW5zZXJ0aW9uUG9pbnQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDMzMzkKLWNsYXNzIEhUTUxDb250ZW50RWxlbWVudCA6IHB1YmxpYyBJbnNlcnRp
b25Qb2ludCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNvbnRl
bnRUYWdOYW1lKERvY3VtZW50Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Q
b2ludFR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDb250ZW50SW5zZXJ0aW9uUG9pbnQ7
IH0KLQotcHJvdGVjdGVkOgotICAgIEhUTUxDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKLQotfTsKLQotI2VuZGlmIC8vIGlmIEVOQUJMRShTSEFET1dfRE9N
KQotCiBpbmxpbmUgYm9vbCBpc0hUTUxDb250ZW50RWxlbWVudChjb25zdCBOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlKTsKQEAgLTExMCw2ICs5Myw4IEBAIGlubGluZSBIVE1MQ29udGVu
dEVsZW1lbnQqIHRvSFRNTENvbnRlbnRFbGVtZW50KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxDb250ZW50RWxlbWVudCo+KG5vZGUpOwogfQogCisjZW5kaWYgLy8gaWYg
RU5BQkxFKFNIQURPV19ET00pCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKaW5kZXggZTA4MzE4YmZmNWE4ZTBiYmMwNDQ0ZmM4
Nzg2ZDM5MTNmOThjN2M5Ni4uZmJiZDgzMzRmNzdkNTI3ZWRiZTg4NmE0MTZjZWUyMWZkNDdlZWQx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcApA
QCAtMzksMTAgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShT
SEFET1dfRE9NKQorCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBJbnNlcnRpb25Qb2lu
dDo6SW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUlu
c2VydGlvblBvaW50KQorICAgIDogU2ltcGxlSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9vdChmYWxzZSkKIHsKIH0KQEAgLTc5
LDI1ICs4MSw2IEBAIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OnNob3VsZFVzZUZhbGxiYWNrRWxlbWVu
dHMoKSBjb25zdAogICAgIHJldHVybiBpc0FjdGl2ZSgpICYmICFoYXNEaXN0cmlidXRpb24oKTsK
IH0KIAotYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSAmJiBpc0Fj
dGl2ZSgpOwotfQotCi1ib29sIEluc2VydGlvblBvaW50Ojppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0g
ICAgaWYgKCFjb250YWluaW5nU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgY29uc3QgTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKLSAgICB3aGlsZSAobm9kZSkgewot
ICAgICAgICBpZiAobm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnNlcnRpb25Qb2ludDo6
Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0CiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRv
d1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQpAQCAtMTExLDExICs5NCw2IEBAIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IEluc2VydGlvblBvaW50OjpnZXREaXN0cmlidXRlZE5vZGVzKCkgY29u
c3QKICAgICByZXR1cm4gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5vZGVzKTsKIH0KIAotYm9vbCBJ
bnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYgY29udGV4dCkKLXsKLSAgICByZXR1cm4gIWlzU2hhZG93Qm91bmRhcnkoKSAmJiBIVE1MRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKLX0KLQogdm9pZCBJbnNlcnRpb25Qb2lu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFu
Z2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIEhUTUxF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFm
dGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpAQCAtMjI5LDQgKzIwNywyMCBAQCBJbnNlcnRp
b25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBwcm9qZWN0ZWROb2RlKQog
ICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKIH0KIAorYm9vbCBJbnNlcnRpb25Qb2ludDo6aXNB
Y3RpdmUoKSBjb25zdAoreworICAgIGlmICghY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7Cisg
ICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50
Tm9kZSgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShT
SEFET1dfRE9NKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA3NDI0M2U5Y2FhNDUzN2M1OTRhOTI5MGI0
NjgxMWUzYjYwMDViY2U2Li5lNWZmNTQ2N2MzOTU4ZDdlYjk3NGRkMzMyODdmZTc3NTg5NDllYTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTQx
LDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNlcnRpb25Qb2lu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBTaW1wbGVJbnNlcnRpb25Qb2ludCA6IHB1
YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgU2hh
ZG93SW5zZXJ0aW9uUG9pbnQsCkBAIC01NCwxNyArNTQsMzUgQEAgcHVibGljOgogICAgICAgICBI
YXNUb01hdGNoU2VsZWN0b3IKICAgICB9OwogCisgICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hU
eXBlRm9yKE5vZGUqKSB7IHJldHVybiBBbHdheXNNYXRjaGVzOyB9CisKKyAgICBib29sIGFsd2F5
c01hdGNoZXMoTm9kZSogbm9kZSkgeyByZXR1cm4gbWF0Y2hUeXBlRm9yKG5vZGUpID09IEFsd2F5
c01hdGNoZXM7IH0KKworcHJvdGVjdGVkOgorICAgIFNpbXBsZUluc2VydGlvblBvaW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlSW5zZXJ0aW9uUG9pbnQpCisgICAg
eyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzSW5zZXJ0aW9uUG9pbnROb2RlKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREUgeyByZXR1cm4g
ZmFsc2U7IH0KK307CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKworY2xhc3MgSW5zZXJ0aW9u
UG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9pbnQgeworcHVibGljOgorCiAgICAgdmly
dHVhbCB+SW5zZXJ0aW9uUG9pbnQoKTsKIAogICAgIGJvb2wgaGFzRGlzdHJpYnV0aW9uKCkgY29u
c3QgeyByZXR1cm4gIW1fZGlzdHJpYnV0aW9uLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgc2V0RGlz
dHJpYnV0aW9uKENvbnRlbnREaXN0cmlidXRpb24mIGRpc3RyaWJ1dGlvbikgeyBtX2Rpc3RyaWJ1
dGlvbi5zd2FwKGRpc3RyaWJ1dGlvbik7IH0KICAgICB2b2lkIGNsZWFyRGlzdHJpYnV0aW9uKCkg
eyBtX2Rpc3RyaWJ1dGlvbi5jbGVhcigpOyB9Ci0gICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkg
Y29uc3Q7CisgICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gdHJlZVNj
b3BlKCktPnJvb3ROb2RlKCktPmlzU2hhZG93Um9vdCgpICYmIGlzQWN0aXZlKCk7IH0KICAgICBi
b29sIGlzQWN0aXZlKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXREaXN0
cmlidXRlZE5vZGVzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVG
b3IoTm9kZSopIHsgcmV0dXJuIEFsd2F5c01hdGNoZXM7IH0KICAgICB2aXJ0dWFsIGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KCkgeyByZXR1cm4gZW1wdHlTZWxlY3Rvckxpc3Qo
KTsgfQogICAgIHZpcnR1YWwgVHlwZSBpbnNlcnRpb25Qb2ludFR5cGUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGNhbkFmZmVjdFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTkwLDEyICsxMDgsMTIgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zZXJ0
aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklE
RTsKKworICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JiBjb250ZXh0KSBPVkVSUklERSB7IHJldHVybiAhaXNTaGFkb3dCb3VuZGFyeSgp
ICYmIEhUTUxFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnRleHQpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3Jl
Q2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50Tm9kZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKIApAQCAtMTAzLDMwICsxMjEsMTQgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fcmVnaXN0ZXJlZFdpdGhTaGFkb3dSb290OwogfTsKIAotaW5saW5lIEluc2Vy
dGlvblBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKCFu
b2RlIHx8IG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc2VydGlvblBvaW50Kj4obm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBJbnNlcnRpb25Qb2lu
dCogdG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2RlKQotewotICAgIEFTU0VSVCghbm9k
ZSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBJbnNlcnRpb25Qb2ludCo+KG5vZGUpOwotfQorSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0
aW9uUG9pbnQoTm9kZSopOworY29uc3QgSW5zZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQo
Y29uc3QgTm9kZSopOwogCiBpbmxpbmUgYm9vbCBpc0FjdGl2ZUluc2VydGlvblBvaW50KGNvbnN0
IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG5vZGUtPmlzSW5zZXJ0aW9uUG9pbnQoKSAmJiB0
b0luc2VydGlvblBvaW50KG5vZGUpLT5pc0FjdGl2ZSgpOwogfQogCi1pbmxpbmUgYm9vbCBpc0xv
d2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlIHx8
ICFub2RlLT5pc0luc2VydGlvblBvaW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gdG9JbnNlcnRpb25Qb2ludChub2RlKS0+aXNTaGFkb3dCb3VuZGFyeSgpOwotfQotCiBp
bmxpbmUgTm9kZSogcGFyZW50Tm9kZUZvckRpc3RyaWJ1dGlvbihjb25zdCBOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlKTsKQEAgLTE2MSw2ICsxNjMsNDAgQEAgaW5saW5lIEVsZW1lbnRT
aGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCiAK
IEluc2VydGlvblBvaW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqKTsKIAorI2Vs
c2UKKworY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMgU2ltcGxlSW5zZXJ0aW9uUG9pbnQg
eworcHJvdGVjdGVkOgorICAgIEluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkgOiBTaW1wbGVJbnNlcnRpb25Qb2ludCh0YWdOYW1l
LCBkb2N1bWVudCkgeyB9Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKK2lu
bGluZSBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQoreworICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0luc2VydGlvblBvaW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxJbnNlcnRpb25Qb2ludCo+KG5vZGUpOworfQorCitpbmxpbmUgY29uc3QgSW5z
ZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBB
U1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKworaW5saW5lIGJvb2wg
aXNMb3dlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeShOb2RlKiBub2RlKQoreworICAgIGlmICghbm9k
ZSB8fCAhbm9kZS0+aXNJbnNlcnRpb25Qb2ludCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
aWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgcmV0dXJuIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSkt
PmlzU2hhZG93Qm91bmRhcnkoKTsKKyNlbHNlCisgICAgLy8gaW4gbm9uLVNIQU9EV19ET00gd29y
bGQsIEluc2VydGlvblBvaW50IGlzIHVzZWQgb25seSBpbnRlcm5hbGx5IGFuZAorICAgIC8vIHNo
b3VsZCBiZSBhbHdheXMgYSBib3VuZGFyeS4KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNlcnRpb25Qb2ludF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5j
cHAKaW5kZXggNDY1MjJjNDQ1M2JjM2ViMDM2MWZkNDYxMWFkMTk2NzIyNmNkZDFjMC4uNmUyNzdh
NDBkOTRmMDlhNTFmMzYwZDYwZjk1ZjdjOWQ2OWE1Yzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcApAQCAtMzEsNiArMzEs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlbGVjdFJ1bGVGZWF0dXJlU2V0
LmgiCiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg1LDMgKzg3LDQgQEAgdm9pZCBTZWxlY3RSdWxl
RmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9y
KiBzZWxlY3QKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuaAppbmRleCBkMGYy
ZGU2ODIxYjMyNTA5MTZjN2VjMTZkZWQ0ZGI3NTk4NGEwODE3Li41YTk4ZWY1YmViMWVmOTE3NmE2
ODVmNTkzMDg2NDdhMWUwNDI4N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlbGVjdFJ1bGVGZWF0dXJlU2V0
IHsKQEAgLTg1LDQgKzg3LDUgQEAgaW5saW5lIGJvb2wgU2VsZWN0UnVsZUZlYXR1cmVTZXQ6Omhh
c1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgYXQKIAogfQogCisjZW5k
aWYgLy8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcAppbmRleCAyZGJiZTQxZDYwZmQzZGU1MWZjZWViMjJlMWZlOWM5NGNlYTQ1NzNiLi4x
MTQ4Zjk5MjUzZmMwZmFhMTFkNDg2OGIwMGQ4YzFlMTZjN2U1ZTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHls
ZS5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm9kZVRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKQEAgLTI4Nyw2ICsyODgsMTEgQEAgYm9vbCBTVkdVc2VF
bGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgU1ZHVXNlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlUmVuZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0KSBjb25zdAoreworICAgIHJldHVybiBj
aGlsZENvbnRleHQuaXNPblVwcGVyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgJiYgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGRDb250
ZXh0KTsKK30KKwogI2lmZGVmIERVTVBfSU5TVEFOQ0VfVFJFRQogc3RhdGljIHZvaWQgZHVtcElu
c3RhbmNlVHJlZSh1bnNpZ25lZCBpbnQmIGRlcHRoLCBTdHJpbmcmIHRleHQsIFNWR0VsZW1lbnRJ
bnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApp
bmRleCA2YmIyOWVjNjY0OTk2ZTEyMGJiYjE4MWIzMGNhNWViYzJmMzEwMmU1Li40NGMzMWM1ZTlh
MDdkZmJiZTgxMDYwYThhYTU1ZDYxZWFiZTc2ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKQEAgLTcwLDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNvbnN0IE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0aChQYXRoJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggY2NmMTQwNjBlYWNlOTJiMjI4
MWZjMWFiNDkzMWIwY2ZmZjNjMDY4MC4uNDJkOGY5NWIzM2VhYWQ0ZWI2ODc1YmE5YjUyZDhkYTdj
MDhjYTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzQ3LDcgKzM0
NywxMiBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KEVsZW1lbnQq
IGhvc3QsIGNvbnN0IFN0cmluZyYgaWRWYWx1ZSwgRQogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyAgICBVTlVTRURfUEFSQU0oaWRWYWx1ZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1
cmVTZXQoaG9zdC0+c2hhZG93KCkpLmhhc1NlbGVjdG9yRm9ySWQoaWRWYWx1ZSk7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0
b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTM1Nyw3ICszNjIsMTIgQEAgYm9vbCBJbnRlcm5hbHM6
Omhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcm
IGNsYXNzTmEKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKGNs
YXNzTmFtZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRv
dygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkp
Lmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvckF0dHJpYnV0ZUlu
U2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlTmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0zNjcsNyArMzc3LDEyIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxl
Y3RvckZvckF0dHJpYnV0ZUluU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgYXR0
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGVO
YW1lKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCkt
PmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFz
U2VsZWN0b3JGb3JBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQc2V1ZG9D
bGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcHNldWRvQ2xhc3MsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzc3LDYgKzM5Miw4IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNT
ZWxlY3RvckZvclBzZXVkb0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5n
JiBwCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFVOVVNFRF9QQVJBTShwc2V1ZG9D
bGFzcyk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1
cmVTZXQmIGZlYXR1cmVTZXQgPSBob3N0LT5zaGFkb3coKS0+ZGlzdHJpYnV0b3IoKS5lbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKTsKICAgICBpZiAocHNldWRvQ2xhc3MgPT0g
ImNoZWNrZWQiKQogICAgICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckNoZWNr
ZWQoKTsKQEAgLTM5NCw2ICs0MTEsNyBAQCBib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JQ
c2V1ZG9DbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgcAogICAgICAg
ICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvclZpc2l0ZWQoKTsKIAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NDEs
OCArNDU5LDExIEBAIGJvb2wgSW50ZXJuYWxzOjpwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVk
b0VsZW1lbnQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91CiAKIGJvb2wgSW50ZXJuYWxzOjpo
YXNTaGFkb3dJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKIHsKKyAgICBVTlVTRURfUEFSQU0ocm9vdCk7CisjaWYgRU5BQkxFKFNIQURPV19E
T00pCiAgICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVy
biBTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc1NoYWRvd0VsZW1lbnQodG9TaGFkb3dSb290
KHJvb3QpKTsKKyNlbmRpZgogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgcmV0
dXJuIDA7CkBAIC00NTAsOCArNDcxLDExIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTaGFkb3dJbnNl
cnRpb25Qb2ludChjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uCiAKIGJv
b2wgSW50ZXJuYWxzOjpoYXNDb250ZW50RWxlbWVudChjb25zdCBOb2RlKiByb290LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKIHsKKyAgICBVTlVTRURfUEFSQU0ocm9vdCk7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCiAgICAgaWYgKHJvb3QgJiYgcm9vdC0+aXNTaGFkb3dSb290KCkpCiAgICAg
ICAgIHJldHVybiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246Omhhc0NvbnRlbnRFbGVtZW50KHRv
U2hhZG93Um9vdChyb290KSk7CisjZW5kaWYKIAogICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OwogICAgIHJldHVybiAwOwpAQCAtNDY0LDcgKzQ4OCwxMSBAQCBzaXplX3QgSW50ZXJuYWxzOjpj
b3VudEVsZW1lbnRTaGFkb3coY29uc3QgTm9kZSogcm9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIHJldHVybiBTY29wZUNvbnRlbnREaXN0cmlidXRpb246OmNvdW50RWxlbWVudFNoYWRvdyh0
b1NoYWRvd1Jvb3Qocm9vdCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZiAKIH0KIAog
Ym9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpA
QCAtNDc5LDYgKzUwNyw3IEBAIGJvb2wgSW50ZXJuYWxzOjphdHRhY2hlZChOb2RlKiBub2RlLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogTm9kZSogSW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2Vy
KE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9N
KQogICAgIGlmICghbm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC00ODYsMTAgKzUxNSwxNiBAQCBOb2RlKiBJbnRlcm5hbHM6Om5l
eHRTaWJsaW5nQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIubmV4dFNpYmxp
bmcoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
bm9kZSk7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQog
CiBOb2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAt
NDk3LDEwICs1MzIsMTYgQEAgTm9kZSogSW50ZXJuYWxzOjpmaXJzdENoaWxkQnlXYWxrZXIoTm9k
ZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
IHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIuZmlyc3RDaGlsZCgpOwogICAgIHJldHVybiB3YWxr
ZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFS
QU0oZWMpOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6bGFz
dENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5B
QkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTUwOCwxMCArNTQ5LDE2IEBAIE5vZGUq
IEludGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxr
ZXIubGFzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7Cisj
ZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpuZXh0Tm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICgh
bm9kZSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJu
IDA7CkBAIC01MTksMTAgKzU2NiwxNiBAQCBOb2RlKiBJbnRlcm5hbHM6Om5leHROb2RlQnlXYWxr
ZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyIHdhbGtlcihub2RlKTsKICAgICB3YWxrZXIubmV4dCgpOwogICAgIHJldHVybiB3YWxr
ZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFS
QU0oZWMpOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5vZGUqIEludGVybmFsczo6cHJl
dmlvdXNOb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTUzMCw2ICs1ODMsMTEgQEAgTm9k
ZSogSW50ZXJuYWxzOjpwcmV2aW91c05vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAg
IHdhbGtlci5wcmV2aW91cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShub2RlKTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIHJldHVybiAw
OworI2VuZGlmCiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0
KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNjU5LDcgKzcxNywxMSBA
QCBFbGVtZW50KiBJbnRlcm5hbHM6OmluY2x1ZGVyRm9yKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQobm9kZSkuaW5zZXJ0aW9uUG9pbnQo
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogU3RyaW5nIEludGVybmFsczo6
c2hhZG93UHNldWRvSWQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVm
LmluIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5p
bgppbmRleCBkYTA2MTU2MDg3MjY1OWY2MWMxMWM0OWVlZTZhMmE0MTFhYjNlZjZiLi44YTMyNmQy
NTJkMzRhZTg3NzMyMTEyYzk3YWU4OWRjNDU5YjMwNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTIxOSwxOCAr
MjE5LDEyIEBAIEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JD
b250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRlbmRA
SW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/aXNB
Y3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAgID9p
c0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9O
QQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJF
X05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFs
dWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQ
dHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VX
YXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAg
ICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFB
RT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29u
dHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3Jl
QEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCi0g
ICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCi0gICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3Jl
QEBRQUVYWFoKLSAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2Vi
Q29yZUBAUUFFWFhaCi0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJD
b3JlQEBRQUVYWFoKLSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBX
ZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoK
ICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKICAgICAgICAgP251bWJl
ckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtMzE4LDcgKzMxMiw2IEBAIEVYUE9SVFMKICAg
ICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0
dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAg
ICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50
c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9O
SEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAg
ICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFB
RVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNv
cmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNv
cmVAQFNBWF9OQFoKQEAgLTYwNSwxOCArNTk4LDEyIEBAIEVYUE9SVFMKICAgICAgICAgP3NldFBy
b2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAg
ICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
WFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9O
UEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVz
b3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNB
cnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUds
b2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBA
QFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJr
ZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQ
QVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBl
c0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9maXJzdENoaWxkQENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2xhc3RDaGlsZEBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9uZXh0QENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3ByZXZpb3VzQENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP251bWJlckBT
dHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9B
VjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtNzA0
LDcgKzY5MSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNA
V2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBI
SEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3Jl
QEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxl
QERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Q
b2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRp
b25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BB
bmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91
bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKQEAgLTk5MSwxOCArOTc3LDEyIEBA
IEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVy
QFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNl
cnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1
c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAg
ICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJp
bmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQ
QVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0
cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRp
dEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9t
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmlu
Z0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBX
ZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdU
RkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9u
ZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAg
ICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoK
LSAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCi0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVY
WFoKLSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBR
QUVYWFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAg
P251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdA
V1RGQEBTQT9BVjEyQEhAWgpAQCAtMTA5MCw3ICsxMDcwLDYgQEAgRVhQT1JUUwogICAgICAgICA/
Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlc0BXZWJDb3JlQEBZQT9BVVZpZXdwb3J0QXR0cmlidXRl
c0AxQFVWaWV3cG9ydEFyZ3VtZW50c0AxQEhISE1WSW50U2l6ZUAxQEBaCiAgICAgICAgID92aWV3
cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoK
ICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKLSAg
ICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAg
P3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAg
ICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFF
WFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hhY2tzQFRleHRSdW5AV2ViQ29yZUBAU0FY
X05AWgpAQCAtMTM0MywxMCArMTMyMiw2IEBAIEVYUE9SVFMKICAgICAgICAgP2VxdWFsQFdURkBA
WUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAgP2VxdWFsSWdub3JpbmdDYXNlQFdURkBA
WUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgogICAgICAgICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQFBBVkVsZW1lbnRAMUBJQFoKLSAgICAgICAgP2Vu
c3VyZVNlbGVjdEZlYXR1cmVTZXRAQ29udGVudERpc3RyaWJ1dG9yQFdlYkNvcmVAQFFBRUFCVlNl
bGVjdFJ1bGVGZWF0dXJlU2V0QDJAUEFWRWxlbWVudFNoYWRvd0AyQEBaCi0gICAgICAgID9oYXNT
aGFkb3dFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hh
ZG93Um9vdEAyQEBaCi0gICAgICAgID9oYXNDb250ZW50RWxlbWVudEBTY29wZUNvbnRlbnREaXN0
cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jvb3RAMkBAWgotICAgICAgICA/Y291bnRF
bGVtZW50U2hhZG93QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQUlQQlZTaGFk
b3dSb290QDJAQFoKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoK
ICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlQQVYxMkBAWgogICAgICAgICA/YWJz
b2x1dGVDYXJldEJvdW5kc0BGcmFtZVNlbGVjdGlvbkBXZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJA
WFoKQEAgLTEzODEsMTggKzEzNTYsMjQgQEAgRVhQT1JUUwogICAgICAgICA/c2V0UHJvZmlsZXJF
bmFibGVkQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP2Rp
c2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogI2Vu
ZGlmCi0gICAgICAgID9pc0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2Rl
QDFAQFoKICAgICAgICAgP2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0
dXJlc0BXZWJDb3JlQEAwX05BCiAgICAgICAgID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxv
YWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9qc0FycmF5QFdl
YkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2Jq
ZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWgogICAg
ICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdl
YkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0
QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP21hcmtlcnNGb3JA
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3Vt
ZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3Vt
ZW50TWFya2VyQDJAQFoKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgP25leHRTaWJs
aW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP2Zp
cnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAg
ICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgor
ICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAUUJFX05YWgorICAgICAg
ICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEBDb250ZW50RGlzdHJpYnV0b3JAV2ViQ29yZUBAUUFF
QUJWU2VsZWN0UnVsZUZlYXR1cmVTZXRAMkBQQVZFbGVtZW50U2hhZG93QDJAQFoKKyAgICAgICAg
P2hhc1NoYWRvd0VsZW1lbnRAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBX05Q
QlZTaGFkb3dSb290QDJAQFoKKyAgICAgICAgP2hhc0NvbnRlbnRFbGVtZW50QFNjb3BlQ29udGVu
dERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCisgICAgICAgID9j
b3VudEVsZW1lbnRTaGFkb3dAU2NvcGVDb250ZW50RGlzdHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBC
VlNoYWRvd1Jvb3RAMkBAWgorI2VuZGlmCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/
QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfS0BaCiAgICAg
ICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBIQFoKQEAgLTE0ODAsNyArMTQ2MSw2IEBA
IEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/
QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBISEhNVkludFNpemVA
MUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3
cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdl
YkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3Jl
QEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVy
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250
cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BU
ZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNDQxYmQ4M2E4Y2E2ZDRkODJlYzlkZTcx
ZDA1MzczNzNhODJlZDJkLi4zNmU5OTZkNzE0NDRhNmViOTA0MWMyMTY1NjQwMmNlYmI2YmU3ZjFl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMDEtMjQgIEhhamltZSBNb3JyaXRhICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtTaGFkb3cgRE9NXSBQdXQgbm9kZSByZXByb2pl
Y3Rpb24gY29kZSBiZWhpbmQgRU5BQkxFKFNIQURPV19ET00pCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2NDMKKworICAgICAgICBSZWJhc2VsaW5l
cyBzbWFsbCBkaWZmZXJlbmNlcyB3aGljaCBoYXBwZW4gaW4gdGhlIG5vbi1TSEFET1dfRE9NCisg
ICAgICAgIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZHVlIHRvIGRpZmZlcmVuY2Ugb2YgaW1wbGVt
ZW50YXRpb24gZGV0YWlsCisgICAgICAgIGJ1dCBoYXMgb25seSB1bm5vdGljZWFibGUgdXNlciBv
YnNlcnZhYmxlIGRpZmZlcmVuY2UuCisKKyAgICAgICAgZnVsbC1zY3JlZW4tcmVuZGVyLWlubGlu
ZS5odG1sIHJlbmRlcnMgPGRldGFpbHM+IGRpZmZlcmVudGx5LgorICAgICAgICBUaGlzIGlzIGEg
bGltaXRhdGlvbiBvZiB0aGUgc2ltcGxpZmllZCBkaXN0cmlidXRpb24gYWxnb3JpdGhtLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0YWlscy1uZXN0
ZWQtMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3RlZC5wbmc6IEFkZGVkCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3RlZC50
eHQ6IEFkZGVkCisKIDIwMTMtMDEtMjQgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNYXJraW5nIHJlc2l6ZS1jb3JuZXItdHJhY2tpbmcq
IHRlc3RzIGFzIG5lZWRpbmcgcmViYXNlbGluZSBvbiBNYWMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWRmNjFmZDU3ZjJmZWVmOGFjMzQw
YjFiNzkyY2ZlMTJmMjM1MTkwMy4uYzBjZTdkMmY1M2RkYjRlY2RmMTI1MTFhZTVjYThmNDU1Njc5
ODgxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMjcxLDYgKzI3MSw3IEBAIHdlYmtpdC5vcmcvYi85ODk2MCBmYXN0L3BhcnNlci9kb2N1
bWVudC1vcGVuLWluLXVubG9hZC5odG1sIFsgU2tpcCBdCiAjIEVOQUJMRShTSEFET1dfRE9NKSBp
cyBkaXNhYmxlZC4KIHdlYmtpdC5vcmcvYi83NjM1OSBlZGl0aW5nL3NoYWRvdyBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzc2MzU5IGZhc3QvZG9tL3NoYWRvdyBbIFNraXAgXQoraW5zcGVjdG9yL2Vs
ZW1lbnRzL3NoYWRvdy1yb290Lmh0bWwgWyBTa2lwIF0KIAogIyBmYXN0L2V2ZW50cy9jb250cm9s
Y2xpY2stbm8tb25jbGljay5odG1sIGZhaWxzIG9uIE1hYyBXSzIKIHdlYmtpdC5vcmcvYi8xMDU5
NDggZmFzdC9ldmVudHMvY29udHJvbGNsaWNrLW5vLW9uY2xpY2suaHRtbCBbIEZhaWx1cmUgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAwNTQ5ZDc3Yjg5
M2ViODYxNDk3M2IwYTI5NmVjNDc5MDliMzcwYzM5Li44ZjVhMTE3Mzg0YjQwYTVhY2NiMjc1ZWNh
NDBiOTBmNDRhNjQ3MmVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNDI3LDYgKzQyNyw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxv
dy5odG1sCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL3NoYWRv
dwogZWRpdGluZy9zaGFkb3cKK2luc3BlY3Rvci9lbGVtZW50cy9zaGFkb3ctcm9vdC5odG1sCiBp
bnNwZWN0b3IvZWxlbWVudHMvdXBkYXRlLXNoYWRvd2RvbS5odG1sCiBhY2Nlc3NpYmlsaXR5L2Nv
cnJlc3BvbmRpbmctY29udHJvbC1kZWxldGVkLWNyYXNoLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLW5lc3RlZC0yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2h0bWwvZGV0YWlscy1uZXN0ZWQt
Mi1leHBlY3RlZC50eHQKaW5kZXggYzFmYzQ3ZmVhYjU3ZDc1N2Q1ZTU5OTU5OTAxZmEwYjExYTIz
ZTRiZS4uMmI5MmIwYjk5NzA3NGM5ZjQ3OTAzMDFmNDQ3ODVjMGVlYjA5NWQ4ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaHRtbC9kZXRhaWxzLW5lc3RlZC0yLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9odG1sL2RldGFp
bHMtbmVzdGVkLTItZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNiBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI0LDgpIHNpemUg
NjN4MTgKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyNCw4KSB3aWR0aCA1OiAiICIKICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgyOCw4KSB3aWR0aCA1OTogInN1bW1hcnkiCi0gICAgICAgIFJl
bmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg4LDQyKSBzaXplIDc2OHgwCiAgICAgICAgIFJlbmRl
ckJsb2NrIHtERVRBSUxTfSBhdCAoOCw0Mikgc2l6ZSA3Njh4NjggW2JvcmRlcjogKDhweCBzb2xp
ZCAjOTk1NTU1KV0KICAgICAgICAgICBSZW5kZXJCbG9jayB7U1VNTUFSWX0gYXQgKDgsOCkgc2l6
ZSA3NTJ4MzQgW2JvcmRlcjogKDhweCBzb2xpZCAjQ0M5OTk5KV0KICAgICAgICAgICAgIFJlbmRl
ckRldGFpbHNNYXJrZXIge0RJVn0gYXQgKDgsMTIpIHNpemUgMTF4MTE6IGRvd24KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbmRl
ci1pbmxpbmUtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Ex
ZmQ3YjZmMDNmYmU5NTYwMGRmMTdiMDFjZTc1NGNmNDZjZTUwMwpHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMTA3MzcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBS
em5rQjlnQ0NNNDckPVN1RnhlT18oCnpYLVFfNWhESF9eJHRoOzBzcGpVMXNmazd3I3pfV2RpNitM
RERXK2V9S1AoMDZZNCZ0KzQ1P3N6ZClLaz1ZTTYtWQp6I2dIUl5tZEE3JkY9VG5xYElHKXJjYkNr
JSkyQjxlV3FrUGhfeDx8KWYwUF49NyNOdllJME9fTjhWPDB0e1FHeW4Keipyb3xDMCVaSz48UGZN
QTFqfEUmZjZRb0xfJGpmS1RAYWBQcyErazxrMVRAY0BGMUNxPX1HYnhJVHg2YExxaHxACnokOHJS
WnB8UEtuVj91dm13RSlhJnBoNWZWbHojbUJeKCp0IT9mYypGX3h6YzVKWU5XSTxfQG18YHh8MXU/
JWI7Ygp6KlUtMmJYdnYhVyVZfjU/SWdGfHE0SWZ+dDk4RFZwXlRxeXU/fm04bCo4YVZ5eWw/O2h8
MVp3fUpgNT1YeiZZQisKejlobHYwbz01LWlNQ0FLRGFTamM4e3N+dCpMSkpGXiF0O1V4M2c+QHsp
ZD9ZbCl7NkAkdHA5JWBaVVZHcTAyVjY2CnpFRyNGQV9xRVAlSz91RU9XalhRTWV4dFl3eWFmM20h
XnJxKVBYMHI2TVRBZmxRMFNOYzgmKnpHKiN2YyQheXNeMAp6VzQhJnxodV48e19aUXlwazZmbXlK
Y3hHP25rKSM8ZnM5UHRqRXRLQ059QXl3WEp9TVc3KiNTRkV8NlJgbmkjO0AKemROaC1PaW5yMGtG
cSM8UEhPRlhUNyk9YkxpRDklWUhRSW0jSH5tTTghX25lIXZeWDNzNG84Y18oYyV5PilISz59Cno5
UEt5NCQxRnpeISlSZ3tPJD8pQiY3KW1+KFhQVTFTN0VmUEZ4cGlaP0pBNlI2LUZuWU45V1piWWJR
cWdOMkMzdAppKGYkI0FgYlVsUjRDUnU3PndoPVFTX0U5ZiQ+OGJnPWQjV3pwJFB5e15UQ1koCgps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbmRlci1pbmxp
bmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYjZmM2ZhMmI1NTNhM2M3ZGNmZWYyOGY1YWJi
YTg1N2IzNzAxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW5kZXItaW5saW5lLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIzIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7U1VNTUFSWX0gYXQgKDAs
MCkgc2l6ZSA3ODR4NjQKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkg
c2l6ZSA3ODR4MTYKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAx
NngxNgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTY6ICJhIgorICAgICAg
ICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNikgc2l6ZSA3ODR4MTYKKyAgICAgICAg
ICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMTZ4MTYKKyAgICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2eDE2CisgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE2OiAiYiIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91
cykgYXQgKDAsMzIpIHNpemUgNzg0eDE2CisgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTYKKyAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDE2eDE2CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2OiAi
YyIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsNDgpIHNpemUgNzg0eDE2
CisgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDE2eDE2CisgICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNngxNgorICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjogImQiCisgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxNiwwKSBzaXplIDE2eDE2CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MTYsMCkgd2lkdGggMTY6ICJlIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184698</attachid>
            <date>2013-01-25 01:32:47 -0800</date>
            <delta_ts>2013-09-28 20:43:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-106643-20130125182938.patch</filename>
            <type>text/plain</type>
            <size>65729</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhjNzg3NmM5OTk5MmQ3
YjQ1N2UxZjMyNTkyYjg0OTQ4ZGIwNDUyZS4uMTY3ZWMwYWNiMjY1YmVhZjhjYjNjYjIwZGJkY2Y0
MGFhMWUxYjcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAxMy0wMS0yNSAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1NoYWRvdyBET01d
IFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGhpZGVzIG9uZSBvZiB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJ0IG9mIFNoYWRvdyBET00KKyAg
ICAgICAgc3RhbmRhcmQsIHRoYXQgaXMgbm9kZSBkaXN0cmlidXRpb24uIE1ham9yIHNoYWRvdy1k
b20gY2xhc3NlcworICAgICAgICBpbmNsdWRpbmcgQ29udGVudERpc3RyaWJ1dG9yLCBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIsIEluc2VydGlvblBvaW50LAorICAgICAgICBIVE1MQ29udGVudEVs
ZW1lbnQgYW5kIEhUTUxTaGFkb3dFbGVtZW50IGFyZSBtb3ZlZCBiZWhpbmQKKyAgICAgICAgRU5B
QkxFX1NIQURPV19ET00gZmxhZy4KKworICAgICAgICBTaW5jZSA8ZGV0YWlsPiBhbmQgPHN1bW1h
cnk+IGFyZSByZWx5aW5nIG9uIHRoaXMgbWVjaGFuaXNtLAorICAgICAgICB0aGV5IGFyZSBub3cg
ZGlzYWJsZWQgd2hlbiBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgbm90IGdpdmVuLgorCisgICAgICAg
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBpcyByZXBsYWNlZCBieSBTaGFkb3dUcmVlV2Fsa2Vy
LAorICAgICAgICB3aGljaCBpcyBzaW1wbGlmaWVkIHZlcnNpb24gb2YgQ1NUVywgd2hlbiBTSEFP
RFdfRE9NIGlzIGRpc2FibGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1h
dGNoU2NvcGVkQXV0aG9yUnVsZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTY29wZVJlc29sdmVyOjphZGRIb3N0UnVsZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvU3R5bGVTY29wZVJlc29sdmVyLmg6
CisgICAgICAgIChTdHlsZVNjb3BlUmVzb2x2ZXIpOgorICAgICAgICAqIGRvbS9BbmNlc3RvckNo
YWluV2Fsa2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuY2VzdG9yQ2hhaW5XYWxrZXI6OnBh
cmVudCk6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAg
ICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldo
ZW5BdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpZEFmZmVj
dFNlbGVjdG9yKToKKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRTaGFkb3c6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93
OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuaDoKKyAg
ICAgICAgKEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
ZGlzdHJpYnV0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6aW52YWxpZGF0
ZURpc3RyaWJ1dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjplbnN1cmVE
aXN0cmlidXRpb24pOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjppc1NoYWRvd0JvdW5kYXJ5KToKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OmlzT25FbmNh
cHN1bGF0aW9uQm91bmRhcnkpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVyc2Fs
LmNwcDoKKyAgICAgICAgKE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwpOgorICAgICAgICAoU2hhZG93
VHJlZVdhbGtlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZl
cnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6U2hhZG93VHJlZVdhbGtlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93VHJlZVdhbGtlcjo6
cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRv
d1RyZWVXYWxrZXI6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzU2libGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpsYXN0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6U2hhZG93
VHJlZVdhbGtlcjo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
VHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6
OlNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVuZGVyaW5nVHJhdmVyc2FsOjpTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVByZXZpb3VzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6
OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ1RyYXZlcnNhbDo6UGFyZW50RGV0YWlsczo6aXNPbkVuY2Fwc3VsYXRpb25Cb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnRTbG93KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nU2xv
dyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwcmV2aW91c1Np
YmxpbmdTbG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5l
eHRJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnBy
ZXZpb3VzSW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nVHJhdmVyc2Fs
OjpwYXJlbnRJblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdUcmF2ZXJz
YWw6Omxhc3RDaGlsZEluU2NvcGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmg6CisgICAgICAgIChQYXJlbnREZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdUcmF2ZXJzYWw6OlBhcmVudERldGFpbHM6OmlzT25FbmNhcHN1bGF0aW9uQm91bmRh
cnkpOgorICAgICAgICAoTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpwYXJlbnQpOgorICAgICAgICAqIGRvbS9TaGFkb3dS
b290LmNwcDoKKyAgICAgICAgKFNhbWVTaXplQXNTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dS
b290OjpyZW1vdmVkRnJvbSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OmVuc3VyZVNjb3BlRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9v
dC5oOgorICAgICAgICAoU2hhZG93Um9vdCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAgICogaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50U2VsZWN0
b3JRdWVyeS5jcHA6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnku
aDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHA6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NlbGVjdFJ1bGVG
ZWF0dXJlU2V0LmNwcDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNl
dC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1VzZUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1VzZUVs
ZW1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yUHNldWRvQ2xhc3NJblNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQ29udGVudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb3VudEVsZW1lbnRTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjpuZXh0U2libGluZ0J5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6bGFzdENoaWxkQnlXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpuZXh0Tm9kZUJ5V2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cHJldmlv
dXNOb2RlQnlXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbmNsdWRlckZv
cik6CisKIDIwMTMtMDEtMjQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDllMjI5
OTA1ZTJiZjE5NjUzMTJjMzhiZWQxZmY0ZGQ1NDQ3MzRjYWUuLjRmMWMzMzExZWI5MWRkMWJmZjEz
NTdlZDE3NmI5YjkyMGM3NmY2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMy0wMS0yNCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgW1NoYWRvdyBET01dIFB1dCBub2RlIHJlcHJvamVjdGlvbiBjb2RlIGJlaGluZCBFTkFCTEUo
U0hBRE9XX0RPTSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbjogTW92ZWQgc29tZSBzeW1i
b2xzIGJlaGluZCBFTkFCTEUoU0hBRE9XX0RPTSkgZmxhZy4KKwogMjAxMy0wMS0yNCAgTWFyayBI
YWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamVjdGl2ZS1D
IEFQSTogUmVuYW1lIEpTVmFsdWUuaC9BUElKU1ZhbHVlLmggdG8gSlNDSlNWYWx1ZS5oL0pTVmFs
dWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4NGNiNGY5YTk0YmQ2NzBmYTdjYzA0YTRhYmQy
NDdiMWQzNWZhM2U1Li4zZmY0MWMwMjFjYmNiNGM4YjY4OTExY2RjMWE2MzcwMDhhY2IwZDA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTE4LDcgKzUxOCw2IEBAIF9fWk43V2ViQ29yZTE3dXNl
clZpc2libGVTdHJpbmdFUDVOU1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25D
MUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTEwUGFzdGVi
b2FyZDE3Z2VuZXJhbFBhc3RlYm9hcmRFdgogX19aTjdXZWJDb3JlMTBQYXN0ZWJvYXJkMTR3cml0
ZVBsYWluVGV4dEVSS04zV1RGNlN0cmluZ0VOUzBfMThTbWFydFJlcGxhY2VPcHRpb25FCi1fX1pO
N1dlYkNvcmUxOENvbnRlbnREaXN0cmlidXRvcjIyZW5zdXJlU2VsZWN0RmVhdHVyZVNldEVQTlNf
MTNFbGVtZW50U2hhZG93RQogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQxMHVuaXF1
ZU5hbWVFdgogX19aTjdXZWJDb3JlMThQbGF0Zm9ybVBhc3RlYm9hcmQxM2J1ZmZlckZvclR5cGVF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEzc3RyaW5n
Rm9yVHlwZUVSS04zV1RGNlN0cmluZ0UKQEAgLTY1NywxMSArNjU2LDYgQEAgX19aTjdXZWJDb3Jl
MjNlbmNvZGVIb3N0TmFtZVdpdGhSYW5nZUVQOE5TU3RyaW5nOF9OU1JhbmdlCiBfX1pON1dlYkNv
cmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25F
Uk4zV1RGN0hhc2hTZXRJTlMzXzZTdHJpbmdFTlMzXzEwU3RyaW5nSGFzaEVOUzNfMTBIYXNoVHJh
aXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTI0QmluYXJ5UHJvcGVydHlMaXN0V3JpdGVyMTd3cml0
ZVByb3BlcnR5TGlzdEV2CiBfX1pON1dlYkNvcmUyNENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTEx
c2V0UmVzb3VyY2VFUE5TXzE0Q2FjaGVkUmVzb3VyY2VFCi1fX1pON1dlYkNvcmUyNENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjEwZmlyc3RDaGlsZEV2Ci1fX1pON1dlYkNvcmUyNENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjExbmV4dFNpYmxpbmdFdgotX19aTjdXZWJDb3JlMjRDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI0bmV4dEV2Ci1fX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjhwcmV2aW91c0V2Ci1fX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjlsYXN0
Q2hpbGRFdgogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxMG1hcmtlcnNG
b3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQogX19aTjdXZWJD
b3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxM3JlbW92ZU1hcmtlcnNFTlNfMTREb2N1bWVu
dE1hcmtlcjExTWFya2VyVHlwZXNFCiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjE4YWRkVGV4dE1hdGNoTWFya2VyRVBLTlNfNVJhbmdlRWIKQEAgLTY3MSw5ICs2NjUsNiBA
QCBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjE0ZnJhbWVEZXN0cm95ZWRF
dgogX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIxNHdpbGxEZXRhY2hQYWdl
RXYKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzJFUE5TXzVGcmFtZUUK
IF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgotX19aTjdXZWJDb3Jl
MjRTY29wZUNvbnRlbnREaXN0cmlidXRpb24xNmhhc1NoYWRvd0VsZW1lbnRFUEtOU18xMFNoYWRv
d1Jvb3RFCi1fX1pON1dlYkNvcmUyNFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjE4Y291bnRFbGVt
ZW50U2hhZG93RVBLTlNfMTBTaGFkb3dSb290RQotX19aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnRE
aXN0cmlidXRpb24xN2hhc0NvbnRlbnRFbGVtZW50RVBLTlNfMTBTaGFkb3dSb290RQogX19aTjdX
ZWJDb3JlMjRjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0
cmluZ0VTNV9OU18yN0ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS04z
V1RGNlN0cmluZ0UKQEAgLTEyNTAsOCArMTI0MSw2IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2Vs
ZWN0aW9uMThpc0ZvY3VzZWRBbmRBY3RpdmVFdgogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b24zMWdldENsaXBwZWRWaXNpYmxlVGV4dFJlY3RhbmdsZXNFUk4zV1RGNlZlY3RvcklOU185Rmxv
YXRSZWN0RUxtMEVFRQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNnJvb3RFZGl0YWJs
ZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlv
bjZib3VuZHNFYgotX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQxOWdldERpc3RyaWJ1dGVk
Tm9kZXNFdgotX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVFdgogX19aTks3
V2ViQ29yZTE0UmVuZGVyTGlzdEl0ZW0xMG1hcmtlclRleHRFdgogX19aTks3V2ViQ29yZTE0UmVz
b3VyY2VCdWZmZXI0ZGF0YUV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRzaXplRXYK
QEAgLTI1MzksNiArMjUyOCwxOCBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjVzZXJ2aWNlU2Ny
aXB0ZWRBbmltYXRpb25zRWQKIF9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4
aXNTaGFkb3dET01FbmFibGVkRQogX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Mzdpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkRQogX19aTjdXZWJDb3JlNHRv
SlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dS
b290RQorX19aTjdXZWJDb3JlMThDb250ZW50RGlzdHJpYnV0b3IyMmVuc3VyZVNlbGVjdEZlYXR1
cmVTZXRFUE5TXzEzRWxlbWVudFNoYWRvd0UKK19fWk43V2ViQ29yZTI0U2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uMTZoYXNTaGFkb3dFbGVtZW50RVBLTlNfMTBTaGFkb3dSb290RQorX19aTks3V2Vi
Q29yZTE0SW5zZXJ0aW9uUG9pbnQxOWdldERpc3RyaWJ1dGVkTm9kZXNFdgorX19aTks3V2ViQ29y
ZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVFdgorX19aTjdXZWJDb3JlMjRTY29wZUNvbnRlbnRE
aXN0cmlidXRpb24xOGNvdW50RWxlbWVudFNoYWRvd0VQS05TXzEwU2hhZG93Um9vdEUKK19fWk43
V2ViQ29yZTI0U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uMTdoYXNDb250ZW50RWxlbWVudEVQS05T
XzEwU2hhZG93Um9vdEUKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyMTBm
aXJzdENoaWxkRXYKK19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyMTFuZXh0
U2libGluZ0V2CitfX1pON1dlYkNvcmUyNENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjRuZXh0RXYK
K19fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOHByZXZpb3VzRXYKK19fWk43
V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOWxhc3RDaGlsZEV2CitfX1pON1dlYkNv
cmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEUKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQpAQCAtMjczNiwxMCArMjczNyw2IEBAIF93a0NhcHRp
b25BcHBlYXJhbmNlR2V0VGV4dEVkZ2VTdHlsZQogX3drQ2FwdGlvbkFwcGVhcmFuY2VHZXRTZXR0
aW5nc0NoYW5nZWROb3RpZmljYXRpb24KICNlbmRpZgogCi0jaWYgRU5BQkxFKFNIQURPV19ET00p
Ci1fX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEUK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogX19aTjdXZWJDb3JlMjJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzMTlpc0NTU1JlZ2lvbnNFbmFibGVkRQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYjI2M2Q4MDZiODU5NTg2YzdjMTRjZmYzMWY5ODBh
NDMyNTIzNjViYS4uMjIxMzE4YTcwZDkzOWNjNjA0MWIyYmZhY2ZhOWMxNmMxN2QzOTE0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNzYyLDcgKzc2MiwxMCBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3Vs
dCwgYm9vbCBpbmNsdWRlRW1wdAogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgbWF0Y2hIb3N0UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1wdHlSdWxlcyk7Cisj
ZW5kaWYKKwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICAgICBVTlVTRURfUEFS
QU0oaW5jbHVkZUVtcHR5UnVsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2NvcGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29s
dmVyLmNwcAppbmRleCA4YWNhYmU1MGFlNzJkMWJlMTdkNGEzNWY3YjM2Y2YzNjRkYWYyMmI3Li5h
NjM1NzBhNDNiNTUzYzExZWM1YTI3Mzg4ZGE5MmExODA4MTdmNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmNwcApAQCAtMTkyLDcgKzE5Miw2IEBAIHZvaWQgU3R5
bGVTY29wZVJlc29sdmVyOjphZGRIb3N0UnVsZShTdHlsZVJ1bGVIb3N0KiBob3N0UnVsZSwgYm9v
bCBoYXNEb2N1bWVudFNlCiAgICAgICAgICAgICBydWxlLT5hZGRTdHlsZVJ1bGUoc3RhdGljX2Nh
c3Q8U3R5bGVSdWxlKj4oaG9zdFN0eWxpbmdSdWxlKSwgYWRkUnVsZUZsYWdzKTsKICAgICB9CiB9
Ci0jZW5kaWYKIAogYm9vbCBTdHlsZVNjb3BlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0
ZU1hdGNoZXNIb3N0UnVsZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKQEAgLTIzNyw2ICsy
MzYsNyBAQCB2b2lkIFN0eWxlU2NvcGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVsZXMoY29uc3QgRWxl
bWVudCogZWxlbWVudCwgVmVjdG9yPFJ1bGVTZXQqPgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQorI2VuZGlmCiAKIHZvaWQgU3R5bGVTY29wZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oCmluZGV4IDNiZTNmZjRmNzBjNzM3NWJkMDE0MjZh
MDBiYTQyNDEyODQ2MmNjMGUuLmM1Zjc3NmYzYWUxNDExNzQyNDg4OTdmNjk5ODgxM2U0Y2Y5MjQ4
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKQEAgLTc1LDkgKzc1
LDExIEBAIHB1YmxpYzoKICAgICBib29sIG1hdGNoZXNTdHlsZUJvdW5kcyhjb25zdCBTdGFja0Zy
YW1lJiBmcmFtZSkgY29uc3QgeyByZXR1cm4gZnJhbWUubV9hdXRob3JTdHlsZUJvdW5kc0luZGV4
ID09IG1fc3RhY2tQYXJlbnRCb3VuZHNJbmRleDsgfQogICAgIHZvaWQgY29sbGVjdEZlYXR1cmVz
VG8oUnVsZUZlYXR1cmVTZXQmKTsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHZvaWQg
YWRkSG9zdFJ1bGUoU3R5bGVSdWxlSG9zdCosIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdp
biwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUpOwogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2Fu
ZGlkYXRlTWF0Y2hlc0hvc3RSdWxlcyhjb25zdCBFbGVtZW50Kik7CiAgICAgdm9pZCBtYXRjaEhv
c3RSdWxlcyhjb25zdCBFbGVtZW50KiwgVmVjdG9yPFJ1bGVTZXQqPiYgbWF0Y2hlZFJ1bGVzKTsK
KyNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fs
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAppbmRl
eCA5NzBjZGMyMDU5N2M1MGIyMThkZjQzMTAzOGU2YzU4YjllYWJhYWU2Li41YjdjZWU4MmNkNTI1
MTkzYTE0YTcwNTU1NWU5NDBmNWJjZDhlMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FuY2Vz
dG9yQ2hhaW5XYWxrZXIuY3BwCkBAIC00NSw2ICs0NSw4IEBAIHZvaWQgQW5jZXN0b3JDaGFpbldh
bGtlcjo6cGFyZW50KCkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsKICAgICBBU1NFUlQobV9kaXN0
cmlidXRlZE5vZGUpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKEVsZW1lbnRT
aGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG1fbm9kZSkpIHsKICAgICAgICAgaWYgKElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5k
SW5zZXJ0aW9uUG9pbnRGb3IobV9kaXN0cmlidXRlZE5vZGUpKSB7CiAgICAgICAgICAgICBtX25v
ZGUgPSBpbnNlcnRpb25Qb2ludDsKQEAgLTUyLDIwICs1NCwzMCBAQCB2b2lkIEFuY2VzdG9yQ2hh
aW5XYWxrZXI6OnBhcmVudCgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CisjZW5kaWYKKwogICAgIGlmICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBt
X25vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICAgICAgaWYgKCEobV9ub2RlICYmIG1fbm9kZS0+aXNTaGFkb3dSb290KCkgJiYgU2NvcGVDb250
ZW50RGlzdHJpYnV0aW9uOjphc3NpZ25lZFRvKHRvU2hhZG93Um9vdChtX25vZGUpKSkpCiAgICAg
ICAgICAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKICAgICAgICAgbV9pc0Nyb3NzaW5n
SW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKKyNlbHNlCisgICAgICAgIG1fZGlzdHJpYnV0ZWROb2Rl
ID0gbV9ub2RlOworICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwor
I2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb25zdCBTaGFkb3dSb290KiBz
aGFkb3dSb290ID0gdG9TaGFkb3dSb290KG1fbm9kZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERp
c3RyaWJ1dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dSb290KSkgewogICAgICAgICBtX25vZGUgPSBp
bnNlcnRpb25Qb2ludDsKICAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSB0cnVl
OwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCisKICAgICBtX25vZGUgPSBzaGFkb3dS
b290LT5ob3N0KCk7CiAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CiAgICAgbV9pc0Ny
b3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXggYWI1OGQ2MTUyYmM2MGQ5MDUxN2FlNGFi
OGNlZWEwN2I0OGZjYjE4Yy4uZDIzMGY4NjQ4NzgyNDZmNjkwMzhjNGRhN2JhMzE2YzlmZmQ0NGUy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHAKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yOCw2ICsyNyw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgiCiAKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKwogI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCkBAIC0zMTMsMyAr
MzE0LDUgQEAgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzKCkKIH0KIAog
fSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCmluZGV4IDgzNDllMjFhYTk4
M2YwYTg0YTExM2MxNjc4MGU0OWVjNjc2NjRmM2UuLjJmMDJhN2MzYmM0NTUwNWY1YjQyODI4NTNl
YTZkMjgzZjM4ZmYxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyLmgKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nVHJh
dmVyc2FsLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTm9kZTsKQEAgLTE0Myw0ICsxNDUs
NSBAQCBpbmxpbmUgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIoY29uc3QgTm9kZSogbm9kZSwgUG9saQogCiB9IC8vIG5hbWVzcGFjZQogCisjZW5kaWYg
Ly8gRU5BQkxFKFNIQURPV19ET00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAw
Yjg1ZmZlMzMwZjc2ODIzZDVhYzNiNTAzYmFmNjZmYmVjNDcxY2VlLi4yZTY5MGViMzJhYjI4MTVl
Nzg4ODkwYjJlMjgzYmE5NmM4OGY0NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04MDgs
MTAgKzgwOCwxMiBAQCBzdGF0aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJ
ZENoYW5nZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZElkLCBjbwogCiB2b2lkIEVsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuZXdWYWx1ZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpZiAoRWxlbWVu
dFNoYWRvdyogcGFyZW50RWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0
aW9uKHRoaXMpKSB7CiAgICAgICAgIGlmIChzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hl
bkF0dHJpYnV0ZUNoYW5nZWQocGFyZW50RWxlbWVudFNoYWRvdywgbmFtZSwgbmV3VmFsdWUpKQog
ICAgICAgICAgICAgcGFyZW50RWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigp
OwogICAgIH0KKyNlbmRpZgogCiAgICAgcGFyc2VBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwog
CkBAIC05NDgsNiArOTUwLDcgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIAogYm9vbCBFbGVtZW50OjpzaG91
bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRv
dyogZWxlbWVudFNoYWRvdywgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBBU1NFUlQo
ZWxlbWVudFNoYWRvdyk7CiAgICAgY29uc3QgU2VsZWN0UnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVT
ZXQgPSBlbGVtZW50U2hhZG93LT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVjdEZlYXR1cmVTZXQo
ZWxlbWVudFNoYWRvdyk7CiAKQEAgLTk3OSw2ICs5ODIsMTIgQEAgYm9vbCBFbGVtZW50OjpzaG91
bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQoRWxlbWVudFNoYWRv
dyogZWwKICAgICB9CiAKICAgICByZXR1cm4gZmVhdHVyZVNldC5oYXNTZWxlY3RvckZvckF0dHJp
YnV0ZShuYW1lLmxvY2FsTmFtZSgpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnRT
aGFkb3cpOworICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKKyAgICBVTlVTRURfUEFSQU0obmV3VmFs
dWUpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiAvLyBSZXR1cm5zIHRydWUgaXMg
dGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpAQCAtMTQ1NSw5ICsxNDY0
LDEyIEBAIEVsZW1lbnRTaGFkb3cqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvdygpCiAKIHZvaWQgRWxl
bWVudDo6ZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sgbWFzaykKIHsKKyAg
ICBVTlVTRURfUEFSQU0obWFzayk7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQogICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0g
c2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFk
b3ctPmRpZEFmZmVjdFNlbGVjdG9yKG1hc2spOworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8U2hh
ZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJiBlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCAzMmRkNGYwNGQ1N2FlYWM0MDMyZWVh
ZjJmZDFlZmNjZjUyNjhhZTRkLi5jNGNlNjI0Nzc1MGZhZjM5MjMwYTZiN2VkOTVkNWFjZDkyNmY1
ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC04Miw3ICs4Miw5IEBA
IHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQ
YXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0SG9zdChzaGFkb3dI
b3N0KTsKICAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hhZG93SG9zdC0+dHJl
ZVNjb3BlKCkpOwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgpKTsKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtX2Rpc3RyaWJ1dG9yLmRpZFNoYWRvd0JvdW5kYXJ5
Q2hhbmdlKHNoYWRvd0hvc3QpOworI2VuZGlmCiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXIoc2hhZG93SG9zdCkubm90aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgLy8gRXhpc3Rl
bmNlIG9mIHNoYWRvdyByb290cyByZXF1aXJlcyB0aGUgaG9zdCBhbmQgaXRzIGNoaWxkcmVuIHRv
IGRvIHRyYXZlcnNhbCB1c2luZyBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuCkBAIC0xMTcsMTMg
KzExOSwxNiBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKICAg
ICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290
LmdldCgpKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBtX2Rpc3RyaWJ1
dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IENvbnRlbnREaXN0cmlidXRvcjo6ZW5zdXJlRGlzdHJpYnV0aW9uKHlvdW5nZXN0U2hhZG93Um9v
dCgpKTsKLQorI2VuZGlmCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFk
b3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAg
ICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKQEAg
LTE3Myw3ICsxNzgsMTAgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgICAgICBpbmZvLmFk
ZE1lbWJlcihzaGFkb3dSb290KTsKICAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm5l
eHQoKTsKICAgICB9CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBpbmZvLmFkZE1lbWJl
cihtX2Rpc3RyaWJ1dG9yKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmgKaW5kZXggODkzMzYzYmJhODdiNDg4ZTdhZmQxMmQwMjg1Y2Q0YTU0
NDQxZWE3My4uMDA1MmVjZDZhZmU5YWJkNjlhOGQ0NGQyNGZhN2Q5ZmFkOTMzNDJjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC02MywxOCArNjMsMjYgQEAgcHVibGljOgogICAg
IGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwogICAgIHZvaWQgcmVjYWxjU3R5bGUoTm9kZTo6U3R5
bGVDaGFuZ2UpOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCBpbnZhbGlkYXRl
RGlzdHJpYnV0aW9uKCkgeyBtX2Rpc3RyaWJ1dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oaG9z
dCgpKTsgfQogICAgIHZvaWQgZGlkQWZmZWN0U2VsZWN0b3IoQWZmZWN0ZWRTZWxlY3Rvck1hc2sg
bWFzaykgeyBtX2Rpc3RyaWJ1dG9yLmRpZEFmZmVjdFNlbGVjdG9yKGhvc3QoKSwgbWFzayk7IH0K
ICAgICB2b2lkIHdpbGxBZmZlY3RTZWxlY3RvcigpIHsgbV9kaXN0cmlidXRvci53aWxsQWZmZWN0
U2VsZWN0b3IoaG9zdCgpKTsgfQogCi0gICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRv
cigpOwotICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25zdDsK
KyAgICBDb250ZW50RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgeyByZXR1cm4gbV9kaXN0cmli
dXRvcjsgfQorICAgIGNvbnN0IENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3RyaWJ1dG9yOyB9CisjZWxzZQorICAgIHZvaWQgaW52YWxpZGF0ZURp
c3RyaWJ1dGlvbigpIHsgfQorICAgIHZvaWQgZW5zdXJlRGlzdHJpYnV0aW9uKCkgeyB9CisjZW5k
aWYKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwotcHJpdmF0ZToKIAorcHJpdmF0ZToKICAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+
IG1fc2hhZG93Um9vdHM7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb250ZW50RGlz
dHJpYnV0b3IgbV9kaXN0cmlidXRvcjsKKyNlbmRpZgogfTsKIAogaW5saW5lIFNoYWRvd1Jvb3Qq
IEVsZW1lbnRTaGFkb3c6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CkBAIC04NywxNiArOTUs
NiBAQCBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6b2xkZXN0U2hhZG93Um9vdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQogCi1pbmxpbmUgQ29u
dGVudERpc3RyaWJ1dG9yJiBFbGVtZW50U2hhZG93OjpkaXN0cmlidXRvcigpCi17Ci0gICAgcmV0
dXJuIG1fZGlzdHJpYnV0b3I7Ci19Ci0KLWlubGluZSBjb25zdCBDb250ZW50RGlzdHJpYnV0b3Im
IEVsZW1lbnRTaGFkb3c6OmRpc3RyaWJ1dG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kaXN0
cmlidXRvcjsKLX0KLQogaW5saW5lIEVsZW1lbnQqIEVsZW1lbnRTaGFkb3c6Omhvc3QoKSBjb25z
dAogewogICAgIEFTU0VSVCghbV9zaGFkb3dSb290cy5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5k
ZXggMTYxZTVlYzQzMWUyNmJjNWNiOTdlMGE3MDY5MTUyM2QzZmEzMjZlMS4uZjU1ZGU1YmNmNzI2
ODcwOGU3YWU4ZGZhMmQ3NGZmNzcxY2JjZmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNTEsNiArMjUx
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNEb2N1bWVudEZyYWdtZW50KCkgY29uc3QgeyByZXR1
cm4gZ2V0RmxhZyhJc0RvY3VtZW50RnJhZ21lbnRGbGFnKTsgfQogICAgIGJvb2wgaXNTaGFkb3dS
b290KCkgY29uc3QgeyByZXR1cm4gaXNEb2N1bWVudEZyYWdtZW50KCkgJiYgaXNUcmVlU2NvcGUo
KTsgfQogICAgIGJvb2wgaXNJbnNlcnRpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWco
TmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZykgJiYgaXNJbnNlcnRpb25Qb2ludE5vZGUoKTsgfQor
ICAgIGJvb2wgaXNTaGFkb3dCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIGlzU2hhZG93Um9vdCgp
IHx8IGlzSW5zZXJ0aW9uUG9pbnQoKTsgfQogCiAgICAgYm9vbCBuZWVkc1NoYWRvd1RyZWVXYWxr
ZXIoKSBjb25zdDsKICAgICBib29sIG5lZWRzU2hhZG93VHJlZVdhbGtlclNsb3coKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGJhZTUx
YTc0YjhiYjcyYjJjMTdiNjNhYzcyZjY1OTA1NGNmOTVkMDcuLmFmNTU4N2I3YWMyYzhhMDQ3NTdm
YmY1NTU0ODEwYWQ2N2RlNTJlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6Om1vdmVUb0Zsb3dUaHJlYWRJZk5lZWRlZCgpCiAKIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OmlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoKSBjb25zdAogewotICAgIHJldHVybiBpc09u
VXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSB8fCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5k
YXJ5KG1fcGFyZW50RGV0YWlscy5pbnNlcnRpb25Qb2ludCgpKSB8fCBpc0xvd2VyRW5jYXBzdWxh
dGlvbkJvdW5kYXJ5KG1fbm9kZS0+cGFyZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gaXNPblVwcGVy
RW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgfHwgbV9wYXJlbnREZXRhaWxzLmlzT25FbmNhcHN1bGF0
aW9uQm91bmRhcnkobV9ub2RlLT5wYXJlbnROb2RlKCkpOwogfQogCiBib29sIE5vZGVSZW5kZXJp
bmdDb250ZXh0Ojppc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCmluZGV4IDgzYmI3ZWM3
ZTc5ZWYyZjIxNjNlZjA3NzUzNzlkNzc3ZTY5ZWZmZjIuLjFjODMzZTM4ZTMzMjQ1ODhjOWQ4OGNi
MzU1MGM1OWViMGQ3NzFhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nVHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z1RyYXZlcnNhbC5jcHAKQEAgLTI4LDIwICsyOCw4NyBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJp
bmdUcmF2ZXJzYWwuaCIKIAogI2luY2x1ZGUgIkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oIgor
I2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwg
ewogCisvLyBBIHNpbXBsaWZpZWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLWNvbXBhdGlibGUg
d2Fsa2VyIGltcGxlbWVudGF0aW9uIGZvciBub24tU0hBRE9XX0RPTSBjb25maWd1cmF0aW9ucy4K
K2NsYXNzIFNoYWRvd1RyZWVXYWxrZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFNoYWRvd1Ry
ZWVXYWxrZXIoY29uc3QgTm9kZSogbm9kZSkKKyAgICAgICAgOiBtX25vZGUobm9kZSkKKyAgICB7
IH0KKworICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1f
bm9kZSk7IH0KKworICAgIHZvaWQgcGFyZW50KCkgeyBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudCht
X25vZGUpOyB9CisgICAgdm9pZCBuZXh0U2libGluZygpIHsgbV9ub2RlID0gbV9ub2RlLT5uZXh0
U2libGluZygpOyB9CisgICAgdm9pZCBwcmV2aW91c1NpYmxpbmcoKSB7IG1fbm9kZSA9IG1fbm9k
ZS0+cHJldmlvdXNTaWJsaW5nKCk7IH0KKyAgICB2b2lkIGxhc3RDaGlsZCgpIHsgbV9ub2RlID0g
bV9ub2RlLT5sYXN0Q2hpbGQoKTsgfQorICAgIHZvaWQgZmlyc3RDaGlsZCgpIHsgbV9ub2RlID0g
bV9ub2RlLT5maXJzdENoaWxkKCk7IH0KKworICAgIHZvaWQgbmV4dCgpIHsgbV9ub2RlID0gdHJh
dmVyc2VOZXh0KG1fbm9kZSk7IH0KKyAgICB2b2lkIHByZXZpb3VzKCkgeyBtX25vZGUgPSB0cmF2
ZXJzZVByZXZpb3VzKG1fbm9kZSk7IH0KKworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBhcmVu
dChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyogPSAwKTsKKworcHJpdmF0ZToKKyAgICBzdGF0
aWMgTm9kZSogdHJhdmVyc2VOZXh0KGNvbnN0IE5vZGUqKTsKKyAgICBzdGF0aWMgTm9kZSogdHJh
dmVyc2VQcmV2aW91cyhjb25zdCBOb2RlKik7CisKKyAgICBjb25zdCBOb2RlKiBtX25vZGU7Cit9
OworCitpbmxpbmUgTm9kZSogU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3Qg
Tm9kZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKK3sKKyAgICBmb3IgKE5vZGUqIHdh
bGsgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHdhbGs7IHdhbGsgPSB3YWxrLT5wYXJlbnRP
ckhvc3ROb2RlKCkpIHsKKyAgICAgICAgaWYgKCF3YWxrLT5pc1NoYWRvd0JvdW5kYXJ5KCkpCisg
ICAgICAgICAgICByZXR1cm4gd2FsazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5s
aW5lIE5vZGUqIFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dChjb25zdCBOb2RlKiBub2Rl
KQoreworICAgIGZvciAoTm9kZSogd2FsayA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSk7IHdh
bGs7IHdhbGsgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KHdhbGspKSB7CisgICAgICAgIGlmICghd2Fs
ay0+aXNTaGFkb3dCb3VuZGFyeSgpKQorICAgICAgICAgICAgcmV0dXJuIHdhbGs7CisgICAgfQor
CisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSBOb2RlKiBTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZVByZXZpb3VzKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgZm9yIChOb2RlKiB3YWxrID0g
Tm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSk7IHdhbGs7IHdhbGsgPSBOb2RlVHJhdmVyc2Fs
OjpwcmV2aW91cyh3YWxrKSkgeworICAgICAgICBpZiAoIXdhbGstPmlzU2hhZG93Qm91bmRhcnko
KSkKKyAgICAgICAgICAgIHJldHVybiB3YWxrOworICAgIH0KKworICAgIHJldHVybiAwOworfQor
CiB2b2lkIFBhcmVudERldGFpbHM6OmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9u
UG9pbnQqIGluc2VydGlvblBvaW50KQogewogICAgIGlmICghbV9pbnNlcnRpb25Qb2ludCkgewog
ICAgICAgICBtX2luc2VydGlvblBvaW50ID0gaW5zZXJ0aW9uUG9pbnQ7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgICAgIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlICA9IG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlIHx8IGluc2VydGlvblBvaW50LT5yZXNldFN0eWxlSW5oZXJpdGFuY2UoKTsK
KyNlbmRpZgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorYm9vbCBQYXJlbnRE
ZXRhaWxzOjppc09uRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KE5vZGUqIHRyZWVQYXJlbnQpIGNvbnN0
Cit7CisgICAgaXNMb3dlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeShtX2luc2VydGlvblBvaW50KSB8
fCBpc0xvd2VyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KHRyZWVQYXJlbnQpOworfQorI2VuZGlmCisK
IHZvaWQgUGFyZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0IFNoYWRvd1Jv
b3QqIHJvb3QpCiB7CiAgICAgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgID0gbV9yZXNldFN0eWxl
SW5oZXJpdGFuY2UgfHwgcm9vdC0+cmVzZXRTdHlsZUluaGVyaXRhbmNlKCk7CkBAIC00OSwxNCAr
MTE2LDI0IEBAIHZvaWQgUGFyZW50RGV0YWlsczo6ZGlkVHJhdmVyc2VTaGFkb3dSb290KGNvbnN0
IFNoYWRvd1Jvb3QqIHJvb3QpCiAKIENvbnRhaW5lck5vZGUqIHBhcmVudFNsb3coY29uc3QgTm9k
ZSogbm9kZSwgUGFyZW50RGV0YWlscyogZGV0YWlscykKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6Q3Jvc3NVcHBlckJvdW5kYXJ5LCBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXI6OkNhblN0YXJ0RnJvbVNoYWRvd0JvdW5kYXJ5KTsKKyNlbHNlCisgICAgU2hhZG93VHJlZVdh
bGtlciB3YWxrZXIobm9kZSk7CisjZW5kaWYKKwogICAgIENvbnRhaW5lck5vZGUqIGZvdW5kID0g
dG9Db250YWluZXJOb2RlKHdhbGtlci50cmF2ZXJzZVBhcmVudCh3YWxrZXIuZ2V0KCksIGRldGFp
bHMpKTsKLSAgICByZXR1cm4gZGV0YWlscy0+b3V0T2ZDb21wb3NpdGlvbigpID8gMCA6IGZvdW5k
OworICAgIHJldHVybiBkZXRhaWxzICYmIGRldGFpbHMtPm91dE9mQ29tcG9zaXRpb24oKSA/IDAg
OiBmb3VuZDsKIH0KIAogTm9kZSogbmV4dFNpYmxpbmdTbG93KGNvbnN0IE5vZGUqIG5vZGUpCiB7
CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdh
bGtlcihub2RlKTsKKyNlbHNlCisgICAgU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7Cisj
ZW5kaWYKKwogICAgIGlmIChub2RlLT5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSkgewogICAgICAg
ICB3YWxrZXIucGFyZW50KCk7CiAgICAgICAgIHdhbGtlci5maXJzdENoaWxkKCk7CkBAIC02OSwx
MyArMTQ2LDE3IEBAIE5vZGUqIG5leHRTaWJsaW5nU2xvdyhjb25zdCBOb2RlKiBub2RlKQogICAg
IE5vZGUqIHBhcmVudCA9IHdhbGtlci50cmF2ZXJzZVBhcmVudChub2RlKTsKICAgICBpZiAocGFy
ZW50ICYmIHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gdG9FbGVtZW50
KHBhcmVudCktPnBzZXVkb0VsZW1lbnQoQUZURVIpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKIE5v
ZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKIHsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwor
I2Vsc2UKKyAgICBTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcihub2RlKTsKKyNlbmRpZgorCiAgICAg
aWYgKG5vZGUtPmlzQWZ0ZXJQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgd2Fsa2VyLnBhcmVu
dCgpOwogICAgICAgICB3YWxrZXIubGFzdENoaWxkKCk7CkBAIC05NCwzNCArMTc1LDQ2IEBAIE5v
ZGUqIHByZXZpb3VzU2libGluZ1Nsb3coY29uc3QgTm9kZSogbm9kZSkKIAogTm9kZSogbmV4dElu
U2NvcGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyIHNob3VsZG4ndCBiZSB1c2VkIHdoZW4gIUVOQUJMRShTSEFET1dfRE9NKSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM5CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlciA9IENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcihub2RlLCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkRvTm90Q3Jv
c3NVcHBlckJvdW5kYXJ5KTsKICAgICB3YWxrZXIubmV4dCgpOwogICAgIHJldHVybiB3YWxrZXIu
Z2V0KCk7CisjZWxzZQorICAgIHJldHVybiBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpOworI2Vu
ZGlmCiB9CiAKIE5vZGUqIHByZXZpb3VzSW5TY29wZShjb25zdCBOb2RlKiBub2RlKQogewotICAg
IC8vIEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hl
biAhRU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5w
cmV2aW91cygpOwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBO
b2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlKTsKKyNlbmRpZgogfQogCiBOb2RlKiBwYXJlbnRJ
blNjb3BlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlciBzaG91bGRuJ3QgYmUgdXNlZCB3aGVuICFFTkFCTEUoU0hBRE9XX0RPTSkgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzOQorI2lmIEVOQUJMRShT
SEFET1dfRE9NKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIgPSBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIobm9kZSwgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpEb05vdENy
b3NzVXBwZXJCb3VuZGFyeSk7CiAgICAgd2Fsa2VyLnBhcmVudCgpOwogICAgIHJldHVybiB3YWxr
ZXIuZ2V0KCk7CisjZWxzZQorICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7CisjZW5kaWYK
IH0KIAogTm9kZSogbGFzdENoaWxkSW5TY29wZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIC8v
IEZJWE1FOiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgc2hvdWxkbid0IGJlIHVzZWQgd2hlbiAh
RU5BQkxFKFNIQURPV19ET00pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDMzMzkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXIgd2Fsa2VyID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyKG5vZGUsIENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlcjo6RG9Ob3RDcm9zc1VwcGVyQm91bmRhcnkpOwogICAgIHdhbGtlci5sYXN0
Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICByZXR1cm4gbm9k
ZS0+bGFzdENoaWxkKCk7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nVHJhdmVyc2FsLmgKaW5kZXggMmRiM2U3NTk1Y2FjYzBmOWMwNWY4NmZmYTExN2Jh
ZTQ4OGQ1ODgwNC4uZDMwN2Q2NTQ5MzE4NzZhMTM2MmIxODY3YzRmYzU1NmRiMzlmNzc4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oCkBAIC01OCwxMiAr
NTgsMTkgQEAgcHVibGljOgogICAgICAgICAgICAgJiYgbV9vdXRPZkNvbXBvc2l0aW9uID09IG90
aGVyLm1fb3V0T2ZDb21wb3NpdGlvbjsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KyAgICBib29sIGlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSopIGNvbnN0OworI2Vsc2UK
KyAgICBib29sIGlzT25FbmNhcHN1bGF0aW9uQm91bmRhcnkoTm9kZSopIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNl
cnRpb25Qb2ludDsKICAgICBib29sIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOwogICAgIGJvb2wg
bV9vdXRPZkNvbXBvc2l0aW9uOwogfTsKIAorQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5v
ZGUqKTsKIENvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyop
OwogQ29udGFpbmVyTm9kZSogcGFyZW50U2xvdyhjb25zdCBOb2RlKiwgUGFyZW50RGV0YWlscyop
OwogTm9kZSogbmV4dFNpYmxpbmcoY29uc3QgTm9kZSopOwpAQCAtNzYsNiArODMsMTIgQEAgTm9k
ZSogcHJldmlvdXNJblNjb3BlKGNvbnN0IE5vZGUqKTsKIE5vZGUqIHBhcmVudEluU2NvcGUoY29u
c3QgTm9kZSopOwogTm9kZSogbGFzdENoaWxkSW5TY29wZShjb25zdCBOb2RlKik7CiAKK2lubGlu
ZSBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBQYXJlbnRE
ZXRhaWxzIGRldGFpbHM7CisgICAgcmV0dXJuIHBhcmVudChub2RlLCAmZGV0YWlscyk7Cit9CisK
IGlubGluZSBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSogbm9kZSwgUGFyZW50RGV0
YWlscyogZGV0YWlscykKIHsKICAgICBpZiAoIW5vZGUtPm5lZWRzU2hhZG93VHJlZVdhbGtlcigp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggZTNhNDgyMjJiOTNkMzhkNjcwZWMy
YTIzODFmMGJmNmRhMTUxNzQyZC4uNzRlOTgyZDFjYzY0NDg1MzZiZDkzMzA4ZmRmNDYyYmU5N2Yw
NTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTcsNyArNTcsMTEgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNTaGFkb3dSb290IDogcHVibGlj
IERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxTaGFkb3dSb290PiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgdm9pZCog
cG9pbnRlcnNbM107CisjZWxzZQorICAgIHZvaWQqIHBvaW50ZXJzWzJdOworI2VuZGlmCiAgICAg
dW5zaWduZWQgY291bnRlcnNBbmRGbGFnc1sxXTsKIH07CiAKQEAgLTI2Miw2ICsyNjYsNyBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgU2hhZG93Um9vdDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIERvY3VtZW50RnJhZ21lbnQ6Omlu
c2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiAKICAgICBpZiAoIWluc2VydGlvblBvaW50LT5p
bkRvY3VtZW50KCkgfHwgIWlzT2xkZXN0KCkpCkBAIC0yNzksMTAgKzI4NCwxNCBAQCBOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNoYWRvd1Jvb3Q6Omluc2VydGVkSW50byhDb250
YWluZXJOb2RlKiBpbnNlcgogICAgIH0KIAogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOworI2Vs
c2UKKyAgICByZXR1cm4gRG9jdW1lbnRGcmFnbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBv
aW50KTsKKyNlbmRpZgogfQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUqIGluc2VydGlvblBvaW50KQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlm
IChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpICYmIG1fcmVnaXN0ZXJlZFdpdGhQYXJlbnRT
aGFkb3dSb290KSB7CiAgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBob3N0KCktPmNvbnRhaW5p
bmdTaGFkb3dSb290KCk7CiAgICAgICAgIGlmICghcm9vdCkKQEAgLTI5Miw3ICszMDEsNyBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50
KQogICAgICAgICAgICAgcm9vdC0+c2NvcGVEaXN0cmlidXRpb24oKS0+dW5yZWdpc3RlckVsZW1l
bnRTaGFkb3coKTsKICAgICAgICAgbV9yZWdpc3RlcmVkV2l0aFBhcmVudFNoYWRvd1Jvb3QgPSBm
YWxzZTsKICAgICB9Ci0KKyNlbmRpZgogICAgIERvY3VtZW50RnJhZ21lbnQ6OnJlbW92ZWRGcm9t
KGluc2VydGlvblBvaW50KTsKIH0KIApAQCAtMzE3LDYgKzMyNiw3IEBAIHZvaWQgU2hhZG93Um9v
dDo6dW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkKICAgICBzZXRIYXNTY29wZWRIVE1M
U3R5bGVDaGlsZChtX251bWJlck9mU3R5bGVzID4gMCk7CiB9CiAKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2NvcGVE
aXN0cmlidXRpb24oKQogewogICAgIGlmIChtX3Njb3BlRGlzdHJpYnV0aW9uKQpAQCAtMzI0LDcg
KzMzNCw4IEBAIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogU2hhZG93Um9vdDo6ZW5zdXJlU2Nv
cGVEaXN0cmlidXRpb24oKQogCiAgICAgbV9zY29wZURpc3RyaWJ1dGlvbiA9IGFkb3B0UHRyKG5l
dyBTY29wZUNvbnRlbnREaXN0cmlidXRpb24pOwogICAgIHJldHVybiBtX3Njb3BlRGlzdHJpYnV0
aW9uLmdldCgpOwotfSAgIAorfQorI2VuZGlmCiAKIHZvaWQgU2hhZG93Um9vdDo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKQEAg
LTMzMyw3ICszNDQsOSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgVHJlZVNjb3BlOjpyZXBv
cnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3By
ZXYpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbmV4dCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00p
CiAgICAgaW5mby5hZGRNZW1iZXIobV9zY29wZURpc3RyaWJ1dGlvbik7CisjZW5kaWYKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggMTUyNjkzOGVkZTUwNDBkZGM0MzM5ZjU4ZmY4
NjUxYTJjNzI1OWY3OS4uODU5ZjBkMjJkZWFkODJhZDhjN2RlMTA1NjRmMjgyMjI5MTQxY2U1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC04OCw5ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjb3BlZEhUTUxTdHlsZUNoaWxkKCkgT1ZFUlJJREU7
CiAKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBTY29wZUNvbnRlbnREaXN0cmlidXRpb24q
IHNjb3BlRGlzdHJpYnV0aW9uKCkgeyByZXR1cm4gbV9zY29wZURpc3RyaWJ1dGlvbi5nZXQoKTsg
fQogICAgIGNvbnN0IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbiogc2NvcGVEaXN0cmlidXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3Njb3BlRGlzdHJpYnV0aW9uLmdldCgpOyB9CiAgICAgU2NvcGVD
b250ZW50RGlzdHJpYnV0aW9uKiBlbnN1cmVTY29wZURpc3RyaWJ1dGlvbigpOworI2VuZGlmCiAK
ICAgICBTaGFkb3dSb290VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhvclNoYWRv
d1Jvb3QgPyBBdXRob3JTaGFkb3dSb290IDogVXNlckFnZW50U2hhZG93Um9vdDsgfQogICAgIGJv
b2wgaXNBY2Nlc3NpYmxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1dGhvclNoYWRvd1Jv
b3Q7IH0KQEAgLTExMCw3ICsxMTIsOSBAQCBwcml2YXRlOgogCiAgICAgU2hhZG93Um9vdCogbV9w
cmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAg
ICBPd25QdHI8U2NvcGVDb250ZW50RGlzdHJpYnV0aW9uPiBtX3Njb3BlRGlzdHJpYnV0aW9uOwor
I2VuZGlmCiAgICAgdW5zaWduZWQgbV9udW1iZXJPZlN0eWxlcyA6IDI4OwogICAgIHVuc2lnbmVk
IG1fYXBwbHlBdXRob3JTdHlsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHlsZUluaGVy
aXRhbmNlIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApp
bmRleCAwNWVlYmFiNDEwZDg4YjQxZWI4MTE5MzEyYWQ5ZDkxYzI1ZDQxZWMyLi43NzE0ZjE2YzI1
NTU4YjcyMWYxMTgxNzVhNWExMTljMDkzYTdlOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSFRNTERldGFpbHNFbGVtZW50LmgiCiAKLSNpZiBFTkFCTEUoREVUQUlM
U19FTEVNRU5UKQorI2lmIEVOQUJMRShERVRBSUxTX0VMRU1FTlQpICYmIEVOQUJMRShTSEFET1df
RE9NKQogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxTdW1tYXJ5RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERldGFpbHNFbGVtZW50LmgKaW5kZXggOWRhOTY5ODg2MTQ2NGNkM2QwZTcyZjIxNDc2ODA3
M2EyM2JkMzZiYS4uNmQxOGM5MTdmYzNhZDFiYmQ4OTFlOGFhNDBhY2JiODg5MDQ5ZmM5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCkBAIC0yNSw2ICsyNSwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKSAm
JiBFTkFCTEUoU0hBRE9XX0RPTSkKKworI2RlZmluZSBFTkFCTEVfREVUQUlMU19FTEVNRU5UX0FO
RF9TSEFET1dfRE9NIDEKKwogY2xhc3MgSFRNTERldGFpbHNFbGVtZW50IDogcHVibGljIEhUTUxF
bGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRGV0YWlsc0VsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQpOwpAQCAtNDUsNiArNDksOCBAQCBwcml2YXRlOgogCiB9OwogCisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSFRNTERldGFpbHNFbGVtZW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmlkbAppbmRleCBjYTM4OTRlMmZlNjJk
ZWY2ZjM0ZDFmYzcyMmU2NWI4ZGE4MDU3ZWYyLi42MjE2NzQ3MTExOWI0MDZmZmJkN2U0YmQ3NWUx
MzJjZmIzNDhjOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
aWRsCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIAogWwotICAgIENvbmRpdGlvbmFsPURFVEFJTFNf
RUxFTUVOVAorICAgIENvbmRpdGlvbmFsPURFVEFJTFNfRUxFTUVOVF9BTkRfU0hBRE9XX0RPTQog
XSBpbnRlcmZhY2UgSFRNTERldGFpbHNFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtSZWZs
ZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBvcGVuOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCmluZGV4IDZhYWY5OTQ5OGI2YTAwNDEzOTVhZjU1NWY1MmUxNzBiZWZk
ZmJmYjcuLmEzMGFmMWVlY2E2YWI5OWNmZjczNWQ5MDQyYzNlZTY4NjFiYTMyNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTM3LDggKzUzNywxMCBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgICAgICAgICAgdXBkYXRlRm9j
dXNBcHBlYXJhbmNlKHRydWUpOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAg
IGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0
cmlidXRpb24odGhpcykpCiAgICAgICAgIGVsZW1lbnRTaGFkb3ctPmludmFsaWRhdGVEaXN0cmli
dXRpb24oKTsKKyNlbmRpZgogCiAgICAgc2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hh
bmdlRXZlbnQoZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVu
dC5jcHAKaW5kZXggOTAzOWI0MGI4MDM3NDBkZjliMjE1ODJiMDg5NTFjNTUwODY3OGUyYi4uNTI1
YjMwNzBlY2U5YmZmZjJhOWUyYWQyMzUyMmNiZDg0NWUxOGZjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxTdW1tYXJ5RWxlbWVudC5oIgogCi0jaWYgRU5BQkxF
KERFVEFJTFNfRUxFTUVOVCkKKyNpZiBFTkFCTEUoREVUQUlMU19FTEVNRU5UKSAmJiBFTkFCTEUo
U0hBRE9XX0RPTSkKICNpbmNsdWRlICJEZXRhaWxzTWFya2VyQ29udHJvbC5oIgogI2luY2x1ZGUg
IkhUTUxDb250ZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEZXRhaWxzRWxlbWVudC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgKaW5kZXggMmM4YTkzZmI1ZWRi
NTdiMTFkNTIyZmVjNmNlZTBhNjc2NzU0MmYyMi4uNDhhNWJkNmUzZDZkOWQ1YjMyN2Q1MmY4Mzll
MzEwOWI0NGZhZjQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFy
eUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5o
CkBAIC0yNSw2ICsyNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIEVOQUJMRShE
RVRBSUxTX0VMRU1FTlQpICYmIEVOQUJMRShTSEFET1dfRE9NKQorCiBjbGFzcyBIVE1MRGV0YWls
c0VsZW1lbnQ7CiAKIGNsYXNzIEhUTUxTdW1tYXJ5RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVu
dCB7CkBAIC00Niw2ICs0OCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkg
Y29uc3QgT1ZFUlJJREU7CiB9OwogCisjZW5kaWYKKwogfQogCiAjZW5kaWYgLy8gSFRNTFN1bW1h
cnlFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVz
LmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KaW5kZXggMmE3OTZkNmM1
N2YwMDYwN2U5YWY2NDUxM2QwMWIyZDkzODY1NmY5Mi4uNWM2YzEzN2ZhNWQ1NmY3ZGJlNTA1MDE5
M2ViMTkzM2YyZTE5YWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFn
TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4KQEAgLTM2
LDcgKzM2LDcgQEAgd2Via2l0U2hhZG93Q29udGVudCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50
LCBub0NvbnN0cnVjdG9yCiBkYXRhbGlzdCBpbnRlcmZhY2VOYW1lPUhUTUxEYXRhTGlzdEVsZW1l
bnQsIGNvbmRpdGlvbmFsPURBVEFMSVNUX0VMRU1FTlQKIGRkIGludGVyZmFjZU5hbWU9SFRNTEVs
ZW1lbnQKIGRlbCBpbnRlcmZhY2VOYW1lPUhUTUxNb2RFbGVtZW50Ci1kZXRhaWxzIGNvbmRpdGlv
bmFsPURFVEFJTFNfRUxFTUVOVAorZGV0YWlscyBjb25kaXRpb25hbD1ERVRBSUxTX0VMRU1FTlRf
QU5EX1NIQURPV19ET00KIGRmbiBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBkaXIgaW50ZXJm
YWNlTmFtZT1IVE1MRGlyZWN0b3J5RWxlbWVudAogZGlhbG9nIGNvbmRpdGlvbmFsPURJQUxPR19F
TEVNRU5ULCBjb250ZXh0Q29uZGl0aW9uYWw9ZGlhbG9nRWxlbWVudApAQCAtMTE5LDcgKzExOSw3
IEBAIHN0cmlrZSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBzdHJvbmcgaW50ZXJmYWNlTmFt
ZT1IVE1MRWxlbWVudAogc3R5bGUgY29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcgogc3Vi
IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKLXN1bW1hcnkgaW50ZXJmYWNlTmFtZT1IVE1MU3Vt
bWFyeUVsZW1lbnQsIEpTSW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudCwgY29uZGl0aW9uYWw9REVU
QUlMU19FTEVNRU5UCitzdW1tYXJ5IGludGVyZmFjZU5hbWU9SFRNTFN1bW1hcnlFbGVtZW50LCBK
U0ludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQsIGNvbmRpdGlvbmFsPURFVEFJTFNfRUxFTUVOVF9B
TkRfU0hBRE9XX0RPTQogc3VwIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQKIHRhYmxlCiB0Ym9k
eSBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCAzZmNiZjlkNTBi
ZTY1MzQwODhmMWJiNTg1ODUwNjgwYjU0ZTBkODdlLi5hMTlkZGY0MTE4ZDlmMzcyMzNiMmRiZjli
ZmRjNDBmNzgwOTJiZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
b250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Nv
bnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKIAorI2lmIEVOQUJMRShTSEFET1df
RE9NKQorCiAjaW5jbHVkZSAiQ29udGVudFNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJFbGVt
ZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCkBAIC00NDEsMyAr
NDQzLDUgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdl
KEVsZW1lbnQqIGhvc3QpCiB9CiAKIH0KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRl
eCBkZmVhYjhjYzdmZGJlNTBhZGY2MTA3ZThkNjBhMGRmMjI4NDE2ZDBiLi45NTUzMWI0YjRjNTY1
OGYxYzU2OGUxZmQ2NzM0NGMxNjhlMDA1NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9k
ZTsKQEAgLTE2Myw0ICsxNjUsNSBAQCBpbmxpbmUgYm9vbCBDb250ZW50RGlzdHJpYnV0b3I6Om5l
ZWRzRGlzdHJpYnV0aW9uKCkgY29uc3QKIAogfQogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19E
T00pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnRTZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcAppbmRleCA1MmEwYWM1YTFmOTJmYWRjZTZiMDMzYzQ4YzBkZTYxMzBk
YzhjNmQ2Li40MjFhYzgwYmIwYTkzOTRmZTk0ZWE5NDRkY2Y1MDRjNjQxZGJlZjg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3Bw
CkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlbGVjdG9yUXVlcnkuaCIKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRl
ICJTZWxlY3RvckNoZWNrZXIuaCIKQEAgLTkxLDMgKzkzLDUgQEAgYm9vbCBDb250ZW50U2VsZWN0
b3JRdWVyeTo6bWF0Y2hlcyhjb25zdCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdzLCBp
bnQgbnQKIH0KIAogfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAppbmRleCA0ZDM4
ZWRkMWE1Yzg2MTBmNzcyOTMxMzI0YTZhNmVlZGNkMzdhNzE2Li5mZTI0ZDJkM2Q4YjdjZWE3YzEz
MGQwNzhjNWJmYjE0ZWM4YmEyMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwpAQCAtNzYs
NCArNzgsNSBAQCBwcml2YXRlOgogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01h
cmtlckNvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtl
ckNvbnRyb2wuY3BwCmluZGV4IDdiODNiN2JhODllZDIwYTJiZDk5ZDM2NWMxZWRiYWU1Y2FkYTY5
YjYuLjkxYWVhZDg0YjdjOTQwYWQzNmJjOTkzNzc3MmMwZDBmMjAzODNmNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIgogCi0jaWYgRU5BQkxFKERFVEFJTFNfRUxFTUVOVCkKKyNpZiBFTkFCTEUo
REVUQUlMU19FTEVNRU5UKSAmJiBFTkFCTEUoU0hBRE9XX0RPTSkKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJIVE1MU3VtbWFyeUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJE
ZXRhaWxzTWFya2VyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRFbGVtZW50LmNwcAppbmRleCA0MDQ0NzE0MGZhYWFhODc5MTBkNjE1OTA3ZmI0N2E4OTlk
YzA2ZmZmLi5jNGYzYTE2MjNhZmU3NjJkYTk1YTRjYWNkOWM4MmZiNzRjNjM5MTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAg
LTM4LDYgKzM4LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisKIHVzaW5nIEhUTUxOYW1lczo6c2VsZWN0QXR0cjsKIAogY29uc3QgUXVhbGlmaWVk
TmFtZSYgSFRNTENvbnRlbnRFbGVtZW50Ojpjb250ZW50VGFnTmFtZShEb2N1bWVudCopCkBAIC01
MSw4ICs1Myw2IEBAIGNvbnN0IFF1YWxpZmllZE5hbWUmIEhUTUxDb250ZW50RWxlbWVudDo6Y29u
dGVudFRhZ05hbWUoRG9jdW1lbnQqKQogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKLQogUGFzc1JlZlB0cjxIVE1MQ29udGVudEVsZW1lbnQ+IEhUTUxDb250ZW50RWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxDb250ZW50RWxlbWVudChjb250ZW50VGFnTmFtZShkb2N1bWVudCksIGRvY3VtZW50KSk7CkBA
IC0yMDMsMTcgKzIwMyw2IEBAIGJvb2wgSFRNTENvbnRlbnRFbGVtZW50Ojp2YWxpZGF0ZVNlbGVj
dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNlbHNlCi0KLVBhc3NSZWZQdHI8SFRN
TENvbnRlbnRFbGVtZW50PiBIVE1MQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQ29udGVudEVsZW1lbnQoY29u
dGVudFRhZ05hbWUoZG9jdW1lbnQpLCBkb2N1bWVudCkpOwotfQotCi1IVE1MQ29udGVudEVsZW1l
bnQ6OkhUTUxDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCi0gICAgOiBJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkK
LXsgfQotCiAjZW5kaWYgLy8gaWYgRU5BQkxFKFNIQURPV19ET00pCiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXggOWQwYzhmYzQz
NTNiZjk2Y2UyNGQxYTI2ZjI1MWFkYzNjOTgxYWQwOC4uYTkwYmRiYzc3NmY5ZjYwNzg2NjUyMmJk
Y2RhY2Y3NzA1YzJiODMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRFbGVtZW50LmgKQEAgLTgxLDIzICs4MSw2IEBAIGlubGluZSBjb25zdCBDU1NTZWxl
Y3Rvckxpc3QmIEhUTUxDb250ZW50RWxlbWVudDo6c2VsZWN0b3JMaXN0KCkKICAgICByZXR1cm4g
bV9zZWxlY3Rvckxpc3Q7CiB9CiAKLSNlbHNlCi0KLS8vIEZJWE1FOiBzaG91bGRuJ3QgaW5oZXJp
dCBmcm9tIEluc2VydGlvblBvaW50OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMzM5Ci1jbGFzcyBIVE1MQ29udGVudEVsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0aW9u
UG9pbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjb250ZW50
VGFnTmFtZShEb2N1bWVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50RWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIFR5cGUgaW5zZXJ0aW9uUG9p
bnRUeXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gQ29udGVudEluc2VydGlvblBvaW50OyB9
Ci0KLXByb3RlY3RlZDoKLSAgICBIVE1MQ29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7Ci0KLX07Ci0KLSNlbmRpZiAvLyBpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
LQogaW5saW5lIGJvb2wgaXNIVE1MQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQobm9kZSk7CkBAIC0xMTAsNiArOTMsOCBAQCBpbmxpbmUgSFRNTENvbnRlbnRF
bGVtZW50KiB0b0hUTUxDb250ZW50RWxlbWVudChOb2RlKiBub2RlKQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MQ29udGVudEVsZW1lbnQqPihub2RlKTsKIH0KIAorI2VuZGlmIC8vIGlmIEVO
QUJMRShTSEFET1dfRE9NKQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IGUwODMxOGJmZjVhOGUwYmJjMDQ0NGZjODc4
NmQzOTEzZjk4YzdjOTYuLmRmNjU5ZGMxYTk0NjExM2E0MDMxN2ZhMWQ2Y2FmY2FkZTBlMjU3M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKQEAg
LTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEluc2VydGlvblBvaW50OjpJ
bnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCkBAIC0yMjksNCArMjMxLDYgQEAgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2pl
Y3Rpb24oY29uc3QgTm9kZSogcHJvamVjdGVkTm9kZSkKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9p
bnQ7CiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5k
ZXggNzQyNDNlOWNhYTQ1MzdjNTk0YTkyOTBiNDY4MTFlM2I2MDA1YmNlNi4uZmZiN2JmOWYwZWYw
YmZmMjc4OWRmNjE3MDI4YmFhZWM3YThhNzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC00MSw2ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiBjbGFzcyBJbnNlcnRpb25Qb2ludCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKQEAgLTE2MSw2
ICsxNjMsOCBAQCBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmli
dXRpb24oY29uc3QgTm9kZSogbm9kZSkKIAogSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2pl
Y3Rpb24oY29uc3QgTm9kZSopOwogCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmNwcApp
bmRleCA0NjUyMmM0NDUzYmMzZWIwMzYxZmQ0NjExYWQxOTY3MjI2Y2RkMWMwLi42ZTI3N2E0MGQ5
NGYwOWE1MWYzNjBkNjBmOTVmN2M5ZDY5YTVjOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2VsZWN0UnVsZUZlYXR1cmVTZXQuY3BwCkBAIC0zMSw2ICszMSw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCIK
IAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsMyArODcsNCBAQCB2b2lkIFNlbGVjdFJ1bGVGZWF0
dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNl
bGVjdAogCiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TZWxlY3RSdWxlRmVhdHVyZVNldC5oCmluZGV4IGQwZjJkZTY4
MjFiMzI1MDkxNmM3ZWMxNmRlZDRkYjc1OTg0YTA4MTcuLjVhOThlZjViZWIxZWY5MTc2YTY4NWY1
OTMwODY0N2ExZTA0Mjg3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NlbGVjdFJ1bGVGZWF0dXJlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2VsZWN0UnVsZUZlYXR1cmVTZXQuaApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VsZWN0UnVsZUZlYXR1cmVTZXQgewpA
QCAtODUsNCArODcsNSBAQCBpbmxpbmUgYm9vbCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6aGFzU2Vs
ZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBhdAogCiB9CiAKKyNlbmRpZiAv
LyBFTkFCTEUoU0hBRE9XX0RPTSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCmluZGV4IDJkYmJlNDFkNjBmZDNkZTUxZmNlZWIyMmUxZmU5Yzk0Y2VhNDU3M2IuLjExNDhm
OTkyNTNmYzBmYWExMWQ0ODY4YjAwZDhjMWUxNmM3ZTVlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVy
c2FsLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdSZXNvdXJjZS5oIgpAQCAtMjg3LDYgKzI4OCwxMSBAQCBib29sIFNWR1VzZUVsZW1l
bnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBTVkdVc2VFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVS
ZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoaWxk
Q29udGV4dC5pc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSAmJiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQp
OworfQorCiAjaWZkZWYgRFVNUF9JTlNUQU5DRV9UUkVFCiBzdGF0aWMgdm9pZCBkdW1wSW5zdGFu
Y2VUcmVlKHVuc2lnbmVkIGludCYgZGVwdGgsIFN0cmluZyYgdGV4dCwgU1ZHRWxlbWVudEluc3Rh
bmNlKiB0YXJnZXRJbnN0YW5jZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4
IDZiYjI5ZWM2NjQ5OTZlMTIwYmJiMTgxYjMwY2E1ZWJjMmYzMTAyZTUuLjQ0YzMxYzVlOWEwN2Rm
YmJlODEwNjBhOGFhNTVkNjFlYWJlNzZlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
aApAQCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxs
UmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjY2YxNDA2MGVhY2U5MmIyMjgxZmMx
YWI0OTMxYjBjZmZmM2MwNjgwLi40MmQ4Zjk1YjMzZWFhZDRlYjY4NzViYTliNTJkOGRhN2MwOGNh
N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDcsNyArMzQ3LDEy
IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvcklkSW5TaGFkb3coRWxlbWVudCogaG9z
dCwgY29uc3QgU3RyaW5nJiBpZFZhbHVlLCBFCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAor
ICAgIFVOVVNFRF9QQVJBTShpZFZhbHVlKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBy
ZXR1cm4gaG9zdC0+c2hhZG93KCktPmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNl
dChob3N0LT5zaGFkb3coKSkuaGFzU2VsZWN0b3JGb3JJZChpZFZhbHVlKTsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZv
ckNsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzU3LDcgKzM2MiwxMiBAQCBib29sIEludGVybmFsczo6aGFz
U2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVsZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xh
c3NOYQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBVTlVTRURfUEFSQU0oY2xhc3NO
YW1lKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICByZXR1cm4gaG9zdC0+c2hhZG93KCkt
PmRpc3RyaWJ1dG9yKCkuZW5zdXJlU2VsZWN0RmVhdHVyZVNldChob3N0LT5zaGFkb3coKSkuaGFz
U2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKIH0KIAogYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFk
b3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTM2Nyw3ICszNzcsMTIgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVjdG9y
Rm9yQXR0cmlidXRlSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBhdHQKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKGF0dHJpYnV0ZU5hbWUp
OworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIHJldHVybiBob3N0LT5zaGFkb3coKS0+ZGlz
dHJpYnV0b3IoKS5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0KGhvc3QtPnNoYWRvdygpKS5oYXNTZWxl
Y3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCiB9CiAKIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVkb0NsYXNz
SW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9DbGFzcywgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0zNzcsNiArMzkyLDggQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NlbGVj
dG9yRm9yUHNldWRvQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIHAK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgVU5VU0VEX1BBUkFNKHBzZXVkb0NsYXNz
KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBjb25zdCBTZWxlY3RSdWxlRmVhdHVyZVNl
dCYgZmVhdHVyZVNldCA9IGhvc3QtPnNoYWRvdygpLT5kaXN0cmlidXRvcigpLmVuc3VyZVNlbGVj
dEZlYXR1cmVTZXQoaG9zdC0+c2hhZG93KCkpOwogICAgIGlmIChwc2V1ZG9DbGFzcyA9PSAiY2hl
Y2tlZCIpCiAgICAgICAgIHJldHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yQ2hlY2tlZCgp
OwpAQCAtMzk0LDYgKzQxMSw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTZWxlY3RvckZvclBzZXVk
b0NsYXNzSW5TaGFkb3coRWxlbWVudCogaG9zdCwgY29uc3QgU3RyaW5nJiBwCiAgICAgICAgIHJl
dHVybiBmZWF0dXJlU2V0Lmhhc1NlbGVjdG9yRm9yVmlzaXRlZCgpOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0MSw4ICs0
NTksMTEgQEAgYm9vbCBJbnRlcm5hbHM6OnBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudChjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3UKIAogYm9vbCBJbnRlcm5hbHM6Omhhc1No
YWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogeworICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIFNj
b3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzU2hhZG93RWxlbWVudCh0b1NoYWRvd1Jvb3Qocm9v
dCkpOworI2VuZGlmCiAKICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICByZXR1cm4g
MDsKQEAgLTQ1MCw4ICs0NzEsMTEgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlv
blBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb24KIAogYm9vbCBJ
bnRlcm5hbHM6Omhhc0NvbnRlbnRFbGVtZW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogeworICAgIFVOVVNFRF9QQVJBTShyb290KTsKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKICAgICBpZiAocm9vdCAmJiByb290LT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAg
cmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6aGFzQ29udGVudEVsZW1lbnQodG9TaGFk
b3dSb290KHJvb3QpKTsKKyNlbmRpZgogCiAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAg
ICAgcmV0dXJuIDA7CkBAIC00NjQsNyArNDg4LDExIEBAIHNpemVfdCBJbnRlcm5hbHM6OmNvdW50
RWxlbWVudFNoYWRvdyhjb25zdCBOb2RlKiByb290LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAg
cmV0dXJuIFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6Y291bnRFbGVtZW50U2hhZG93KHRvU2hh
ZG93Um9vdChyb290KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmIAogfQogCiBib29s
IEludGVybmFsczo6YXR0YWNoZWQoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00
NzksNiArNTA3LDcgQEAgYm9vbCBJbnRlcm5hbHM6OmF0dGFjaGVkKE5vZGUqIG5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHRTaWJsaW5nQnlXYWxrZXIoTm9k
ZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKQEAgLTQ4NiwxMCArNTE1LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dFNp
YmxpbmdCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0U2libGluZygp
OwogICAgIHJldHVybiB3YWxrZXIuZ2V0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2Rl
KTsKKyAgICBVTlVTRURfUEFSQU0oZWMpOworICAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIE5v
ZGUqIEludGVybmFsczo6Zmlyc3RDaGlsZEJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGlmICghbm9kZSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC00OTcs
MTAgKzUzMiwxNiBAQCBOb2RlKiBJbnRlcm5hbHM6OmZpcnN0Q2hpbGRCeVdhbGtlcihOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fs
a2VyKG5vZGUpOwogICAgIHdhbGtlci5maXJzdENoaWxkKCk7CiAgICAgcmV0dXJuIHdhbGtlci5n
ZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpsYXN0Q2hp
bGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTA4LDEwICs1NDksMTYgQEAgTm9kZSogSW50
ZXJuYWxzOjpsYXN0Q2hpbGRCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5s
YXN0Q2hpbGQoKTsKICAgICByZXR1cm4gd2Fsa2VyLmdldCgpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0obm9kZSk7CisgICAgVU5VU0VEX1BBUkFNKGVjKTsKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgogfQogCiBOb2RlKiBJbnRlcm5hbHM6Om5leHROb2RlQnlXYWxrZXIoTm9kZSogbm9kZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgaWYgKCFub2Rl
KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsK
QEAgLTUxOSwxMCArNTY2LDE2IEBAIE5vZGUqIEludGVybmFsczo6bmV4dE5vZGVCeVdhbGtlcihO
b2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIgd2Fsa2VyKG5vZGUpOwogICAgIHdhbGtlci5uZXh0KCk7CiAgICAgcmV0dXJuIHdhbGtlci5n
ZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShl
Yyk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogTm9kZSogSW50ZXJuYWxzOjpwcmV2aW91
c05vZGVCeVdhbGtlcihOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTMwLDYgKzU4MywxMSBAQCBOb2RlKiBJ
bnRlcm5hbHM6OnByZXZpb3VzTm9kZUJ5V2Fsa2VyKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciB3YWxrZXIobm9kZSk7CiAgICAgd2Fs
a2VyLnByZXZpb3VzKCk7CiAgICAgcmV0dXJuIHdhbGtlci5nZXQoKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKG5vZGUpOworICAgIFVOVVNFRF9QQVJBTShlYyk7CisgICAgcmV0dXJuIDA7Cisj
ZW5kaWYKIH0KIAogU3RyaW5nIEludGVybmFsczo6ZWxlbWVudFJlbmRlclRyZWVBc1RleHQoRWxl
bWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC02NTksNyArNzE3LDExIEBAIEVs
ZW1lbnQqIEludGVybmFsczo6aW5jbHVkZXJGb3IoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChub2RlKS5pbnNlcnRpb25Qb2ludCgpOwor
I2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBTdHJpbmcgSW50ZXJuYWxzOjpzaGFk
b3dQc2V1ZG9JZChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vZmVhdHVyZXMuZ3lwaQppbmRleCAxNzFhZjFiMzQzZWJkNjQyNjNmNzBmYmJkMTM1
M2IzOTNjYzVmNzk0Li4wM2E3M2Q3NzJjNzQxYjUzODMxZGYyMGZhZmNiZThiNTAyODYzNzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC0xMDksNyArMTA5LDcgQEAKICAg
ICAgICdFTkFCTEVfUlVCWT0xJywKICAgICAgICdFTkFCTEVfU0FOREJPWD0xJywKICAgICAgICdF
TkFCTEVfU0NSSVBURURfU1BFRUNIPTEnLAotICAgICAgJ0VOQUJMRV9TSEFET1dfRE9NPTEnLAor
ICAgICAgJ0VOQUJMRV9TSEFET1dfRE9NPTAnLAogICAgICAgJ0VOQUJMRV9TTU9PVEhfU0NST0xM
SU5HPTEnLAogICAgICAgJ0VOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTPTAnLAogICAgICAgJ0VOQUJM
RV9TUUxfREFUQUJBU0U9MScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCBkYTA2MTU2MDg3MjY1OWY2MWMxMWM0OWVl
ZTZhMmE0MTFhYjNlZjZiLi44YTMyNmQyNTJkMzRhZTg3NzMyMTEyYzk3YWU4OWRjNDU5YjMwNDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9y
dHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhw
b3J0cy5kZWYuaW4KQEAgLTIxOSwxOCArMjE5LDEyIEBAIEVYUE9SVFMKICAgICAgICAgP3NldFBy
b2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAg
ICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
WFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9O
UEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVz
b3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNB
cnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUds
b2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBA
QFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
c0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJr
ZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQ
QVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBl
c0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9maXJzdENoaWxkQENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2xhc3RDaGlsZEBDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9uZXh0QENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3ByZXZpb3VzQENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP251bWJlckBT
dHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9B
VjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtMzE4
LDcgKzMxMiw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNA
V2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRBcmd1bWVudHNAMUBI
SEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3Jl
QEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxl
QERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Q
b2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRp
b25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BB
bmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91
bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKQEAgLTYwNSwxOCArNTk4LDEyIEBA
IEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5hYmxlZEBJbnNwZWN0b3JDb250cm9sbGVy
QFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9y
Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRpZgotICAgICAgICA/aXNBY3RpdmVJbnNl
cnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaCiAgICAgICAgID9pc0NTU0V4Y2x1
c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAg
ICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJp
bmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQ
QVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0
cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRp
dEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9t
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQYWdlQFdlYkNvcmVAQFFBRT9BVlN0cmlu
Z0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBX
ZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdU
RkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCi0gICAgICAgID9u
ZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAg
ICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoK
LSAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCi0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVY
WFoKLSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBR
QUVYWFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9KQFoKICAgICAgICAg
P251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdA
V1RGQEBTQT9BVjEyQEhAWgpAQCAtNzA0LDcgKzY5MSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2Nv
bXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNA
MUBVVmlld3BvcnRBcmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3Bv
cnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAg
ICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAg
ICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9z
dXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhY
WgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9O
QFoKQEAgLTk5MSwxOCArOTc3LDEyIEBAIEVYUE9SVFMKICAgICAgICAgP3NldFByb2ZpbGVyRW5h
YmxlZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9kaXNj
b25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICNlbmRp
ZgotICAgICAgICA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAx
QEBaCiAgICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/anNBcnJheUBXZWJD
b3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVj
dEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFoKICAgICAg
ICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJD
b3JlQEBRQkVfTlhaCiAgICAgICAgID9tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dEBQ
YWdlQFdlYkNvcmVAQFFBRT9BVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID9tYXJrZXJzRm9yQERv
Y3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVu
dE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVu
dE1hcmtlckAyQEBaCi0gICAgICAgID9uZXh0U2libGluZ0BDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9maXJzdENoaWxkQENvbXBvc2VkU2hhZG93VHJl
ZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP2xhc3RDaGlsZEBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9uZXh0QENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKLSAgICAgICAgP3ByZXZpb3VzQENvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RG
QEBTQT9BVjEyQF9KQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoK
ICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgpAQCAtMTA5MCw3ICsxMDcw
LDYgQEAgRVhQT1JUUwogICAgICAgICA/Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlc0BXZWJDb3Jl
QEBZQT9BVVZpZXdwb3J0QXR0cmlidXRlc0AxQFVWaWV3cG9ydEFyZ3VtZW50c0AxQEhISE1WSW50
U2l6ZUAxQEBaCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9B
VVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1l
bnRAV2ViQ29yZUBAUUFFX05IQFoKLSAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdl
YkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRy
b2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1hdGlv
bkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hh
Y2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpAQCAtMTM0MywxMCArMTMyMiw2IEBAIEVYUE9S
VFMKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAg
P2VxdWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgogICAgICAg
ICA/ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkBXZWJDb3JlQEBZQT9BVlN0cmluZ0BXVEZAQFBBVkVs
ZW1lbnRAMUBJQFoKLSAgICAgICAgP2Vuc3VyZVNlbGVjdEZlYXR1cmVTZXRAQ29udGVudERpc3Ry
aWJ1dG9yQFdlYkNvcmVAQFFBRUFCVlNlbGVjdFJ1bGVGZWF0dXJlU2V0QDJAUEFWRWxlbWVudFNo
YWRvd0AyQEBaCi0gICAgICAgID9oYXNTaGFkb3dFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hhZG93Um9vdEAyQEBaCi0gICAgICAgID9oYXNDb250ZW50
RWxlbWVudEBTY29wZUNvbnRlbnREaXN0cmlidXRpb25AV2ViQ29yZUBAU0FfTlBCVlNoYWRvd1Jv
b3RAMkBAWgotICAgICAgICA/Y291bnRFbGVtZW50U2hhZG93QFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbkBXZWJDb3JlQEBTQUlQQlZTaGFkb3dSb290QDJAQFoKICAgICAgICAgP2ZpbmRAU3RyaW5n
SW1wbEBXVEZAQFFBRUlQQVYxMkBJQFoKICAgICAgICAgP2ZpbmRAU3RyaW5nSW1wbEBXVEZAQFFB
RUlQQVYxMkBAWgogICAgICAgICA/YWJzb2x1dGVDYXJldEJvdW5kc0BGcmFtZVNlbGVjdGlvbkBX
ZWJDb3JlQEBRQUU/QVZJbnRSZWN0QDJAWFoKQEAgLTEzODEsMTggKzEzNTYsMjQgQEAgRVhQT1JU
UwogICAgICAgICA/c2V0UHJvZmlsZXJFbmFibGVkQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFWF9OQFoKICAgICAgICAgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9s
bGVyQFdlYkNvcmVAQFFBRVhYWgogI2VuZGlmCi0gICAgICAgID9pc0FjdGl2ZUluc2VydGlvblBv
aW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFoKICAgICAgICAgP2lzQ1NTRXhjbHVzaW9uc0Vu
YWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05BCiAgICAgICAgID9pc1By
ZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZA
QEBaCiAgICAgICAgID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNT
dGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlz
dEBXZWJDb3JlQEBAV1RGQEBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP21haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBA
WFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVA
QFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZO
b2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKICAgICAgICAgP25leHRTaWJsaW5nQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJD
b3JlQEBRQUVYWFoKICAgICAgICAgP2ZpcnN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/aXNBY3RpdmVASW5zZXJ0aW9uUG9pbnRA
V2ViQ29yZUBAUUJFX05YWgorICAgICAgICA/ZW5zdXJlU2VsZWN0RmVhdHVyZVNldEBDb250ZW50
RGlzdHJpYnV0b3JAV2ViQ29yZUBAUUFFQUJWU2VsZWN0UnVsZUZlYXR1cmVTZXRAMkBQQVZFbGVt
ZW50U2hhZG93QDJAQFoKKyAgICAgICAgP2hhc1NoYWRvd0VsZW1lbnRAU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uQFdlYkNvcmVAQFNBX05QQlZTaGFkb3dSb290QDJAQFoKKyAgICAgICAgP2hhc0Nv
bnRlbnRFbGVtZW50QFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbkBXZWJDb3JlQEBTQV9OUEJWU2hh
ZG93Um9vdEAyQEBaCisgICAgICAgID9jb3VudEVsZW1lbnRTaGFkb3dAU2NvcGVDb250ZW50RGlz
dHJpYnV0aW9uQFdlYkNvcmVAQFNBSVBCVlNoYWRvd1Jvb3RAMkBAWgorI2VuZGlmCiAgICAgICAg
ID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBfSkBaCiAgICAgICAgID9udW1iZXJAU3RyaW5n
QFdURkBAU0E/QVYxMkBfS0BaCiAgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBI
QFoKQEAgLTE0ODAsNyArMTQ2MSw2IEBAIEVYUE9SVFMKICAgICAgICAgP2NvbXB1dGVWaWV3cG9y
dEF0dHJpYnV0ZXNAV2ViQ29yZUBAWUE/QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBVVmlld3BvcnRB
cmd1bWVudHNAMUBISEhNVkludFNpemVAMUBAWgogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNA
UGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1Bh
Z2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCi0gICAgICAgID9pc0FjdGl2
ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9zdXNwZW5kQW5pbWF0
aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cmVzdW1l
QW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/
c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNvcmVAQFNBWF9OQFoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBm
NDQxYmQ4M2E4Y2E2ZDRkODJlYzlkZTcxZDA1MzczNzNhODJlZDJkLi4zNmU5OTZkNzE0NDRhNmVi
OTA0MWMyMTY1NjQwMmNlYmI2YmU3ZjFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMDEt
MjQgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFtTaGFk
b3cgRE9NXSBQdXQgbm9kZSByZXByb2plY3Rpb24gY29kZSBiZWhpbmQgRU5BQkxFKFNIQURPV19E
T00pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2
NDMKKworICAgICAgICBSZWJhc2VsaW5lcyBzbWFsbCBkaWZmZXJlbmNlcyB3aGljaCBoYXBwZW4g
aW4gdGhlIG5vbi1TSEFET1dfRE9NCisgICAgICAgIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZHVl
IHRvIGRpZmZlcmVuY2Ugb2YgaW1wbGVtZW50YXRpb24gZGV0YWlsCisgICAgICAgIGJ1dCBoYXMg
b25seSB1bm5vdGljZWFibGUgdXNlciBvYnNlcnZhYmxlIGRpZmZlcmVuY2UuCisKKyAgICAgICAg
ZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS5odG1sIHJlbmRlcnMgPGRldGFpbHM+IGRpZmZlcmVu
dGx5LgorICAgICAgICBUaGlzIGlzIGEgbGltaXRhdGlvbiBvZiB0aGUgc2ltcGxpZmllZCBkaXN0
cmlidXRpb24gYWxnb3JpdGhtLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9mYXN0L2h0bWwvZGV0YWlscy1uZXN0ZWQtMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVuZGVyLWlubGluZS1leHBlY3RlZC5w
bmc6IEFkZGVkCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
cmVuZGVyLWlubGluZS1leHBlY3RlZC50eHQ6IEFkZGVkCisKIDIwMTMtMDEtMjQgIEtlaXNoaSBI
YXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNYXJraW5n
IHJlc2l6ZS1jb3JuZXItdHJhY2tpbmcqIHRlc3RzIGFzIG5lZWRpbmcgcmViYXNlbGluZSBvbiBN
YWMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggOWRmNjFmZDU3ZjJmZWVmOGFjMzQwYjFiNzkyY2ZlMTJmMjM1MTkwMy4uYzBjZTdkMmY1M2Rk
YjRlY2RmMTI1MTFhZTVjYThmNDU1Njc5ODgxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjcxLDYgKzI3MSw3IEBAIHdlYmtpdC5vcmcv
Yi85ODk2MCBmYXN0L3BhcnNlci9kb2N1bWVudC1vcGVuLWluLXVubG9hZC5odG1sIFsgU2tpcCBd
CiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIHdlYmtpdC5vcmcvYi83NjM1OSBl
ZGl0aW5nL3NoYWRvdyBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzc2MzU5IGZhc3QvZG9tL3NoYWRv
dyBbIFNraXAgXQoraW5zcGVjdG9yL2VsZW1lbnRzL3NoYWRvdy1yb290Lmh0bWwgWyBTa2lwIF0K
IAogIyBmYXN0L2V2ZW50cy9jb250cm9sY2xpY2stbm8tb25jbGljay5odG1sIGZhaWxzIG9uIE1h
YyBXSzIKIHdlYmtpdC5vcmcvYi8xMDU5NDggZmFzdC9ldmVudHMvY29udHJvbGNsaWNrLW5vLW9u
Y2xpY2suaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAwNTQ5ZDc3Yjg5M2ViODYxNDk3M2IwYTI5NmVjNDc5MDliMzcwYzM5Li44
ZjVhMTE3Mzg0YjQwYTVhY2NiMjc1ZWNhNDBiOTBmNDRhNjQ3MmVjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDI3LDYgKzQyNyw3IEBAIGZhc3QvcmVn
aW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5odG1sCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBk
aXNhYmxlZC4KIGZhc3QvZG9tL3NoYWRvdwogZWRpdGluZy9zaGFkb3cKK2luc3BlY3Rvci9lbGVt
ZW50cy9zaGFkb3ctcm9vdC5odG1sCiBpbnNwZWN0b3IvZWxlbWVudHMvdXBkYXRlLXNoYWRvd2Rv
bS5odG1sCiBhY2Nlc3NpYmlsaXR5L2NvcnJlc3BvbmRpbmctY29udHJvbC1kZWxldGVkLWNyYXNo
Lmh0bWwKIAo=
</data>
<flag name="review"
          id="203511"
          type_id="1"
          status="-"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="203541"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>