<?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>132794</bug_id>
          
          <creation_ts>2014-05-10 17:31:32 -0700</creation_ts>
          <short_desc>REGRESSION (iOS WebKit2): requestAnimationFrame fires more than once between layer tree commits</short_desc>
          <delta_ts>2014-05-23 19:19:31 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1008346</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-10 17:31:32 -0700</bug_when>
    <thetext>Because remote layer tree flushing is decoupled from CoreAnimation/render server commits, the display link callback that we use to drive requestAnimation frame can fire more than once per frame-that-actually-makes-it-to-the-screen.

This means two things:

1) Benchmarks are broken, because they use the rate of rAF to determine how responsive painting is/how much their benchmarking is slowing things down.
2) We can be doing a lot (*lot*, in the case of canvas) of unnecessary work in rAF callbacks that just ends up getting thrown away/never makes it to the screen.

Running http://www.kevs3d.co.uk/dev/canvasmark/ I see between 1 and 3 callbacks per frame, but I don&apos;t think there&apos;s any reason it couldn&apos;t be more than that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008347</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-05-10 17:31:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/16877909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008348</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-10 17:53:25 -0700</bug_when>
    <thetext>This makes http://www.kevs3d.co.uk/dev/canvasmark/ much, much smoother (to the eye), and drops Web process JSC time (including time under the rAF callback) by about 30%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008351</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-10 17:55:18 -0700</bug_when>
    <thetext>By &quot;this&quot;, I mean: I hacked it up so that we send a rAF callback from RemoteLayerTreeDrawingArea::didUpdate(), which comes from the UI process after it commits the previous frame. It&apos;s a bit of a hack, and not the ideal fix (it means the rAF callback has nothing to do with the screen/window server, and more to do with the Web process&apos; rendering -- maybe that&apos;s a good thing?), but I&apos;m less sure what the correct fix is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008352</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-10 17:59:33 -0700</bug_when>
    <thetext>One obvious problem with that approach is that if the rAF callback doesn&apos;t cause a layer tree update, we&apos;ll never get another rAF callback (until someone else causes a layer tree update, either via user interaction or a timer or whatever).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011398</commentid>
    <comment_count>5</comment_count>
      <attachid>231999</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-23 16:04:09 -0700</bug_when>
    <thetext>Created attachment 231999
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011399</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-23 16:05:05 -0700</bug_when>
    <thetext>Attachment 231999 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/DisplayRefreshMonitor.h:45:  The parameter name &quot;factory&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp:63:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp:87:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/ios/DisplayRefreshMonitorIOS.mm:97:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.h:32:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.h:50:  The parameter name &quot;drawingArea&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 30 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>1011414</commentid>
    <comment_count>7</comment_count>
      <attachid>231999</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-05-23 16:46:33 -0700</bug_when>
    <thetext>Comment on attachment 231999
patch

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

&gt; Source/WebCore/dom/ScriptedAnimationController.h:95
&gt; +    virtual DisplayRefreshMonitorFactory* displayRefreshMonitorFactory() const override;

Do we really need a factory class, or can we just ask it to create a DisplayRefreshMonitor?

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:42
&gt; +    if (factory)
&gt; +        return factory-&gt;createDisplayRefreshMonitor(displayID);

It&apos;s a bit weird for the create() method to just turn around and use the factory passed in.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitorClient.cpp:2
&gt; + * Copyright (C) 2010 Apple Inc. All rights reserved.

2014?

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp:63
&gt; +    if (!client-&gt;m_displayIDIsSet)

Weird to access internal state.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitorManager.cpp:71
&gt; +    if (!client-&gt;m_displayIDIsSet)

Ditto.

&gt; Source/WebCore/platform/graphics/GraphicsLayerUpdater.cpp:86
&gt; +DisplayRefreshMonitorFactory* GraphicsLayerUpdater::displayRefreshMonitorFactory() const
&gt; +{
&gt; +    return m_client ? m_client-&gt;displayRefreshMonitorFactory() : nullptr;
&gt; +}
&gt; +#endif

Maybe push the 82DisplayRefreshMonitor onto the GraphicsLayerUpdater?

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:3937
&gt; +DisplayRefreshMonitorFactory* RenderLayerCompositor::displayRefreshMonitorFactory() const
&gt; +{
&gt; +    Frame&amp; frame = m_renderView.frameView().frame();
&gt; +    Page* page = frame.page();
&gt; +    if (!page)
&gt; +        return nullptr;
&gt; +
&gt; +    return page-&gt;chrome().client().displayRefreshMonitorFactory();
&gt; +}
&gt; +

Can this go away?

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:392
&gt; +    DisplayRefreshMonitorFactory* displayRefreshMonitorFactory() const;

Why does RLC have to be a factory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011437</commentid>
    <comment_count>8</comment_count>
      <attachid>231999</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-23 17:36:17 -0700</bug_when>
    <thetext>Comment on attachment 231999
patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsLayerUpdater.cpp:86
&gt;&gt; +#endif
&gt; 
&gt; Maybe push the 82DisplayRefreshMonitor onto the GraphicsLayerUpdater?

No, GraphicsLayerUpdater doesn’t want to know about DisplayRefreshMonitors, it’s just acting as a way for the Manager to get to the ChromeClient associated with the GraphicsLayerUpdater so that the ChromeClient can create the right DisplayRefreshMonitor subclass. Plus, it can have an arbitrary number of DisplayRefreshMonitors.

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:3937
&gt;&gt; +
&gt; 
&gt; Can this go away?

Ditto for RLC. I can certainly make this createDisplayRefreshMonitor() instead, but RLC and GraphicsLayerUpdater will still need to be involved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011454</commentid>
    <comment_count>9</comment_count>
      <attachid>232011</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-23 18:57:59 -0700</bug_when>
    <thetext>Created attachment 232011
for ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011456</commentid>
    <comment_count>10</comment_count>
      <attachid>232012</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-23 19:10:14 -0700</bug_when>
    <thetext>Created attachment 232012
for ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011460</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-23 19:19:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/169299</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231999</attachid>
            <date>2014-05-23 16:04:09 -0700</date>
            <delta_ts>2014-05-23 18:57:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>raf.diff</filename>
            <type>text/plain</type>
            <size>83981</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZTlmNDI5Li5hYzFiNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkg
QEAKKzIwMTQtMDUtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUkVHUkVTU0lPTiAoaU9TIFdlYktpdDIpOiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
ZmlyZXMgbW9yZSB0aGFuIG9uY2UgYmV0d2VlbiBsYXllciB0cmVlIGNvbW1pdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjc5NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTY4Nzc5MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVmlydHVhbGl6ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgKGFuZCBh
Y3F1aXJlIGEgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSBmcm9tIHRoZSBDaHJvbWVDbGll
bnQpCisgICAgICAgIHNvIHRoYXQgV2ViS2l0MiBjYW4gaW1wbGVtZW50IGl0cyBvd24gRGlzcGxh
eVJlZnJlc2hNb25pdG9yIGZvciBVSS1zaWRlIGNvbXBvc2l0aW5nIHZpZXdzLgorICAgICAgICBU
aGlzIGFsbG93cyB0aGUgc3luY2hyb25pemF0aW9uIG9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSBj
YWxsYmFja3Mgd2l0aCBVSS1zaWRlIGNvbXBvc2l0aW5nIHBhaW50aW5nLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpncmFwaGljc0xheWVyRmFjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclVwZGF0ZXI6OmRpc3BsYXlSZWZy
ZXNoTW9uaXRvckZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJVcGRhdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpc3BsYXlS
ZWZyZXNoTW9uaXRvckZhY3RvcnkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaDoKKyAgICAgICAgQWRkIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkgYW5k
IGdpdmUgdGhlIENocm9tZUNsaWVudCBhIGNoYW5jZSB0bworICAgICAgICBwcm92aWRlIHVzIHdp
dGggb25lLiBJZiBpdCBkb2VzIG5vdCwgd2UnbGwgZmFsbCBiYWNrIHRvIG1ha2luZyBhCisgICAg
ICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyBvciBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1Mg
ZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKworICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oOiBBZGRlZC4KKyAgICAg
ICAgU3BsaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBpbnRvIG9uZSBmaWxlIHBlciBjbGFz
cy4KKyAgICAgICAgVXNlIHJlZmVyZW5jZXMgaW4gYSBmZXcgcGxhY2VzLgorICAgICAgICBSZW1v
dmUgc29tZSB1c2VsZXNzIGNvbW1lbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2gpOgorICAgICAgICBVc2UgdGFrZUFueSgpIGFu
ZCByZW1vdmUgYSBGSVhNRSBhYm91dCBpdCBub3QgZXhpc3RpbmcuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlS
ZWZyZXNoSWZOZWVkZWQpOgorICAgICAgICBVc2UgYW4gZWFybHkgcmV0dXJuIGluc3RlYWQgb2Yg
aGF2aW5nIHRoZSB3aG9sZSBmdW5jdGlvbiBib2R5IGluIGFuIGlmKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmg6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1Mu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5oOiBBZGRlZC4KKyAgICAgICAgVmlydHVhbGl6ZSBEaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MgYW5kIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYywKKyAgICAgICAgYW5kIG1vdmUg
dGhpbmdzIHNwZWNpZmljIHRvIGVhY2ggb2YgdGhlbSBvdXQgb2YgRGlzcGxheVJlZnJlc2hNb25p
dG9yIGl0c2VsZi4KKwogMjAxNC0wNS0yMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTUzOTE3KTogQ2hhcnQgZm9yIHRoZSBDYXRl
Z29yeSBFeHBsb3JlciB3aXRoaW4gUXVpY2tlbiBFc3NlbnRpYWxzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IGJmMjVhZTAuLmFlMGVmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NzUsNiAr
ODc1LDkgQEAgX19aTjdXZWJDb3JlMjFCbG9iRGF0YUZpbGVSZWZlcmVuY2VDMkVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIxQmxvYkRhdGFGaWxlUmVmZXJlbmNlRDJFdgogX19aTjdXZWJD
b3JlMjFDcm9zc1RocmVhZENvcGllckJhc2VJTGIwRUxiMEVOM1dURjZTdHJpbmdFRTRjb3B5RVJL
UzJfCiBfX1pON1dlYkNvcmUyMUNyb3NzVGhyZWFkQ29waWVyQmFzZUlMYjBFTGIwRU5TXzE5SURC
RGF0YWJhc2VNZXRhZGF0YUVFNGNvcHlFUktTMV8KK19fWk43V2ViQ29yZTIxRGlzcGxheVJlZnJl
c2hNb25pdG9yNDZoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFk
RVB2CitfX1pON1dlYkNvcmUyMURpc3BsYXlSZWZyZXNoTW9uaXRvckMyRWoKK19fWk43V2ViQ29y
ZTIxRGlzcGxheVJlZnJlc2hNb25pdG9yRDJFdgogX19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIxMlJlbGllZkxvZ2dlcjE2c19sb2dnaW5nRW5hYmxlZEUKIF9fWk43V2ViQ29yZTIx
TWVtb3J5UHJlc3N1cmVIYW5kbGVyMTNyZWxlYXNlTWVtb3J5RWIKIF9fWk43V2ViQ29yZTIxTWVt
b3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUyYjFkZjkuLjRmNzE0YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwNjgsNiArMTA2OCwxMiBAQAogCQkyRDBCNEFBQzE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJm
YWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQw
QjRBQUExOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5tbSAqLzsgfTsKIAkJMkQyNTM5NjIx
OENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUzOTYwMThDRTdG
NjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAgKi87IH07CiAJ
CTJEMjUzOTYzMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyNTM5
NjExOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmggKi87
IH07CisJCTJEMjlFQ0M1MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQyOUVDQzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5j
cHAgKi87IH07CisJCTJEMjlFQ0M2MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEMjlFQ0MyMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQky
RDI5RUNDNzE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUND
MzE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgKi87
IH07CisJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJEMjlF
Q0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0M5MTkyRjFGMUQw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaCAqLzsgfTsKKwkJMkQyOUVDQ0Mx
OTJGMjZGRjAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0NCMTkyRjI2RkYw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1
QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQzQTBFMzUxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJv
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJE
M0VGNDQ4MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0VG
NDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDNF
RjQ0OTE5MTc5MTVDMDAwMzQxODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzRUY0
NDUxOTE3OTE1QzAwMDM0MTg0IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5t
bSAqLzsgfTsKQEAgLTEwOTgsNiArMTEwNCw3IEBACiAJCTJEOUEyNDc1MTVCOUMyRTMwMEQzNDUy
NyAvKiBET01ET01TZWN1cml0eVBvbGljeUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDlBMjQ3MTE1QjlDMjk1MDBEMzQ1MjcgLyogRE9N
RE9NU2VjdXJpdHlQb2xpY3lJbnRlcm5hbC5oICovOyB9OwogCQkyRDlBMjQ3NjE1QjlDMkY0MDBE
MzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3kuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUEyNDcwMTVCOUMyOTUwMEQz
NDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JG
MDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdC
LmljYyAqLzsgfTsKKwkJMkRFNzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRFNzAwMjIxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5o
ICovOyB9OwogCQkyRTA4ODhENDExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTA4ODhEMjEx
NDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5jcHAgKi87IH07CiAJCTJFMDg4OEQ1MTE0
ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTA4ODhEMzExNDg4NDhBMDBBRjQyNjUgLyogSlNET01G
b3JtRGF0YS5oICovOyB9OwogCQkyRTA4ODhFNjExNDg4NEUyMDBBRjQyNjUgLyogSlNET01Gb3Jt
RGF0YUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTA4ODhFNTExNDg4NEUyMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAg
Ki87IH07CkBAIC04MDE2LDYgKzgwMjMsMTIgQEAKIAkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUx
IC8qIElPU3VyZmFjZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IElPU3VyZmFjZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyNTM5NjAxOENF
N0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyNTM5NjExOENFN0Y2MjAw
MjcwMjIyIC8qIEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjlFQ0MxMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkQyOUVDQzIxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQy
OUVDQzMxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjlFQ0M0MTky
RUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyOUVDQzkxOTJGMUYxRDAwOTg0Qjc4IC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkQyOUVDQ0IxOTJGMjZGRjAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckZh
Y3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVJlZnJlc2hN
b25pdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NDE0
NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyog
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYzNjMzIC8qIEdyYWRpZW50SW1hZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhZGllbnRJbWFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDQ1LDYgKzgwNTgsNyBAQAogCQkyRDlBMjQ3MTE1QjlD
Mjk1MDBEMzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3lJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01ET01TZWN1cml0eVBvbGljeUludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOUEyNDcyMTVCOUMyQzcwMEQzNDUyNyAvKiBE
T01ET01TZWN1cml0eVBvbGljeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERPTURPTVNlY3VyaXR5UG9saWN5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDlGMEUxMjE0RkYxQ0JGMDBCQTBGRjcgLyogbGluZWFyU1JHQi5pY2MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gbGlu
ZWFyU1JHQi5pY2M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERTcwMDIyMTkyRkU4
MkEwMEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEMzMTE0ODgzQTkwMEFGNDI2NSAvKiBET01Gb3JtRGF0
YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NRm9ybURhdGEuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTA4ODhEMjExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3Jt
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUZvcm1E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUwODg4RDMxMTQ4ODQ4QTAw
QUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNET01Gb3JtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU1NTgs
NiArMTU1NzIsNyBAQAogCQk0NDFBRjBBNzBFQkE3QkJGMDA0NEVENEIgLyogaW9zICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRDI5RUNDOTE5MkYxRjFE
MDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmggKi8sCiAJCQkJMEY5N0E2NTcx
NTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLywKIAkJCQkz
NzI3REZENDE0MkFBRTQ1MDBENDQ5Q0IgLyogRm9udENhY2hlSU9TLm1tICovLAogCQkJCUM1ODM2
MUE3MTc0NDUyM0YwMDE3MzUxMSAvKiBGb250U2VydmljZXNJT1MuaCAqLywKQEAgLTIwMTMxLDYg
KzIwMTQ2LDcgQEAKIAkJCQkzN0MyMzYwRTEwOTdFRTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcCAqLywKIAkJCQkzN0MyMzYwRjEwOTdFRTc3MDBFRjlGNzIgLyogQ29tcGxl
eFRleHRDb250cm9sbGVyLmggKi8sCiAJCQkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8qIENv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tICovLAorCQkJCTJERTcwMDIyMTkyRkU4MkEw
MEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCAqLywKIAkJCQk0OUFGMkQ2QjE0
NDM1RDIxMDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCAqLywKIAkJCQlC
Mjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLywKIAkJCQlCMjc1
MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0TWFjLm1tICovLApAQCAtMjAxOTEsNiAr
MjAyMDcsMTEgQEAKIAkJCQlBOENCNDEwMjBFODVCOEE1MDAzMkM0RjAgLyogRGFzaEFycmF5Lmgg
Ki8sCiAJCQkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAgKi8sCiAJCQkJNDlBRjJENjgxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNo
TW9uaXRvci5oICovLAorCQkJCTJEMjlFQ0MxMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQuY3BwICovLAorCQkJCTJEMjlFQ0MyMTkyRUNDODMwMDk4NEI3OCAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaCAqLywKKwkJCQkyRDI5RUNDQjE5MkYyNkZG
MDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeS5oICovLAorCQkJCTJEMjlF
Q0MzMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcCAq
LywKKwkJCQkyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlci5oICovLAogCQkJCTZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0QuaCAqLywKIAkJCQlCMjc1MzUzQTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5jcHAg
Ki8sCiAJCQkJQjI3NTM1M0IwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnQuaCAqLywKQEAg
LTIzMTcxLDYgKzIzMTkyLDcgQEAKIAkJCQlCRTg4RTBEOTE3MTVEMkEyMDA2NThEOTggLyogQXVk
aW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4OEUwREMxNzE1RDJBMjAwNjU4RDk4IC8q
IEF1ZGlvVHJhY2tMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhCNUE0QzE4MEUxN0MwMDA4
QjhFNjUgLyogQXVkaW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREU3
MDAyMzE5MkZFODJBMDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCRUYyOUVFQjE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERTNBODU0MTdGNUZDRTYwMEM1QkUyMCAvKiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFM0E4NTgxN0Y2MDIwNDAw
QzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MzMxOCw2ICsyMzM0MCw3IEBACiAJCQkJQTU4NEZFMzUxODY0RDVBRjAwODQzQjEwIC8qIENvbW1h
bmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFMkMxODYzODcwRjAwODQz
QjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUy
NjE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBMjA5OURGMDI3MDA5MEQ3
ODEgLyogQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFGRTEzNzUxODQwMkE2NzAwODky
RjEzIC8qIENvbW1vbkNyeXB0b1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDMjM2
MTExMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMzY3MCw2ICsyMzY5Myw3IEBACiAJCQkJODVFNzExOUQwQUM1RDUzNTAwNTMyNzBG
IC8qIERPTUhUTUxCYXNlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUVD
QkVFRDBBQTc2MjY5MDA1NDRGMEIgLyogRE9NSFRNTEJhc2VGb250RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODVFNzExOUUwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxCYXNlRm9udEVs
ZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQyOUVDQ0ExOTJGMUYxRDAwOTg0
Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5
QTlDNDkwQUE1RTNCRDAwQjY5NEIyIC8qIERPTUhUTUxCb2R5RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODVFNzExOUYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxCb2R5RWxlbWVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTE4M0I0MjBBQTY5MjYxMDBGMTlGQTMgLyog
RE9NSFRNTEJSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDA1OSw2ICsyNDA4Myw3IEBA
CiAJCQkJMDg0NTY4MDgxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGN0EwMzRDNDEyNkJGNkJFMDA3REMxOUUgLyogRm9udE9yaWVudGF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNTMyMEQ2QjEyMkEyNEU5MDAyRDE0NDAgLyogRm9udFBsYXRm
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQyOUVDQ0MxOTJGMjZGRjAwOTg0Qjc4IC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QUND
RTQyMERBMjk4MEYwMDg5RTYwMiAvKiBGb250UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJDM0RBNkIwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRTZWxlY3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzU4MzYxQTkxNzQ0NTIzRjAwMTczNTExIC8qIEZvbnRTZXJ2aWNlc0lPUy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDg2NCw2ICsyNDg4OSw3IEBACiAJCQkJQjJGQTNEQUQwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RB
RjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyN0IyODJBMENFRjBDMDcwMEQzOUQ1NCAvKiBKU1NWR01pc3NpbmdHbHlwaEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEMjlFQ0M2MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0OTZFM0EwMTM5
ODEzQTUwMDNFRTMyQSAvKiBKU1NWR01QYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODU0MkE3OTcwQUU1Qzk0MzAwREY1OERGIC8qIEpTU1ZHTnVtYmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkZBM0RCMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdOdW1iZXJMaXN0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI4NDcwLDYgKzI4NDk2LDcgQEAKIAkJCQlCRThFRjA0QzE3MUM5MDE0MDA5
QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTZERjcw
RDE3MUNBMkM1MDBERDUyQjggLyogSlNWaWRlb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NzAzRTFCRjE1REM0RTM3MDAxRjI0QzggLyogSlNWb2lkQ2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMkQyOUVDQzUxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTIwNTA4MTE4QTQ2
MEJDMDA4MDY0N0UgLyogSlNWVFRDdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3Rjcx
M0Q0QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTdEMjBGNjIxMDdGNDA2OTAwQTgwMzkyIC8qIEpTV2ViR0xBY3RpdmVJbmZvLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjkxNDQsNiArMjkxNzEsNyBAQAogCQkJCTkzMzA5RTEzMDk5RTY0OTIw
MDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUUxNTA5OUU2NDkyMDA1NkU1ODEgLyogU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMg
LyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMjlFQ0M3MTkyRUND
ODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3QkM2QTNFMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxFeGNlcHRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUEyRTZFN0EwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhv
cml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMjQ2NDkwQ0M5OEREQjAwQzA1MjQwIC8q
IFNRTGl0ZURhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBjYTU4MmFkLi5kOGNl
ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQogCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVk
ZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAg
LTE3MSw3ICsxNzMsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6d2luZG93
U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYQogICAgIGlmIChtX2RvY3Vt
ZW50LT5zZXR0aW5ncygpICYmICFtX2RvY3VtZW50LT5zZXR0aW5ncygpLT5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwg
dGhpcyk7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZGlzcGxheUlEKTsKICNlbmRpZgpAQCAtMTg1LDcgKzE4Nyw3IEBAIHZvaWQgU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAjaWYgVVNFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgaWYgKCFtX2lzVXNpbmdUaW1lciAmJiAhbV9pc1Ro
cm90dGxlZCkgewotICAgICAgICBpZiAoRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLT5zY2hlZHVsZUFuaW1hdGlvbih0aGlzKSkKKyAgICAgICAgaWYgKERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlv
bih0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2lzVXNpbmdUaW1lciA9
IHRydWU7CkBAIC0yMjMsNiArMjI1LDExIEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJsZSBtb25vdG9uaWNUaW1lTm93KQogI2VuZGlm
CiAKIAorRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOjpkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5kaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWN0b3J5KCk7Cit9CisKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggZjI4MDhlNy4uN2ZkMThiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAt
MzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2lmIFVTRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9USU1FUikKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQotI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2lu
Y2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIgogI2VuZGlmCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNlbmRpZgpAQCAtNDEsNiArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnk7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFJl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOwogCkBAIC04OSw2ICs5Miw3IEBAIHByaXZhdGU6
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICAv
LyBPdmVycmlkZSBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFtcCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIG1faXNVc2luZ1RpbWVyOwog
ICAgIGJvb2wgbV9pc1Rocm90dGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4
IDYxZDViYWIuLjdkM2FjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNjMs
NiArNjMsNyBAQCBjbGFzcyBDb2xvckNob29zZXI7CiBjbGFzcyBDb2xvckNob29zZXJDbGllbnQ7
CiBjbGFzcyBEYXRlVGltZUNob29zZXI7CiBjbGFzcyBEYXRlVGltZUNob29zZXJDbGllbnQ7Citj
bGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5OwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZpbGVDaG9vc2VyOwogY2xhc3MgRmlsZUljb25Mb2FkZXI7CkBAIC0yNzksNyArMjgwLDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRFbnRpcmVDb250ZW50cygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBBbGxvd3MgcG9ydHMgdG8gY3VzdG9taXpl
IHRoZSB0eXBlIG9mIGdyYXBoaWNzIGxheWVycyBjcmVhdGVkIGJ5IHRoaXMgcGFnZS4KLSAgICB2
aXJ0dWFsIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGlj
c0xheWVyRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKworI2lmIFVTRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgdmlydHVhbCBEaXNwbGF5
UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAKICAgICAvLyBQYXNzIDAgYXMgdGhlIEdy
YXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKaW5kZXggYjc4NmM3NC4uZDljMjBmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwCkBAIC0yNCwzMiArMjQsMjkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogCi0jaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5o
PgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkRp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCIKKyNpbmNs
dWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQoKQotICAgIDogbV9zY2hlZHVsZWQoZmFsc2UpCi0gICAgLCBtX2Rpc3BsYXlJRElzU2V0
KGZhbHNlKQotewotfQotCi1EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6On5EaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQoKQorUGFzc1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IERp
c3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnkq
IGZhY3RvcnksIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPnVucmVnaXN0ZXJDbGllbnQodGhp
cyk7Ci19CisgICAgaWYgKGZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWN0b3J5LT5jcmVhdGVE
aXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKIAotdm9pZCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQ6OmZpcmVEaXNwbGF5UmVmcmVzaElmTmVlZGVkKGRvdWJsZSB0aW1lc3RhbXAp
Ci17Ci0gICAgaWYgKG1fc2NoZWR1bGVkKSB7Ci0gICAgICAgIG1fc2NoZWR1bGVkID0gZmFsc2U7
Ci0gICAgICAgIGRpc3BsYXlSZWZyZXNoRmlyZWQodGltZXN0YW1wKTsKLSAgICB9CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHJldHVybiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmNyZWF0ZShk
aXNwbGF5SUQpOworI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1M6OmNyZWF0ZShkaXNwbGF5SUQpOworI2VuZGlmCiB9CiAKIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCkKQEAgLTYwLDkgKzU3LDEwIEBAIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6RGlz
cGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICAsIG1f
dW5zY2hlZHVsZWRGaXJlQ291bnQoMCkKICAgICAsIG1fZGlzcGxheUlEKGRpc3BsYXlJRCkKICAg
ICAsIG1fY2xpZW50c1RvQmVOb3RpZmllZChudWxscHRyKQotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgICwgbV9kaXNwbGF5TGluaygwKQotI2VuZGlmCit7Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvcigpCiB7CiB9CiAKQEAgLTg3LDYgKzg1LDcgQEAg
Ym9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlbW92ZUNsaWVudChEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQqIGNsaWVudCkKIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5
RGlkUmVmcmVzaCgpCiB7CiAgICAgZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZTsK
KwogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgaWYg
KCFtX3NjaGVkdWxlZCkKQEAgLTEwNywxMiArMTA2LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKCkKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCo+IGNsaWVudHNUb0JlTm90aWZpZWQgPSBtX2NsaWVudHM7CiAgICAgbV9jbGll
bnRzVG9CZU5vdGlmaWVkID0gJmNsaWVudHNUb0JlTm90aWZpZWQ7CiAgICAgd2hpbGUgKCFjbGll
bnRzVG9CZU5vdGlmaWVkLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBUYWtlIGEgcmFuZG9tIGNs
aWVudCBvdXQgb2YgdGhlIHNldC4gT3JkZXJpbmcgZG9lc24ndCBtYXR0ZXIuCi0gICAgICAgIC8v
IEZJWE1FOiBXb3VsZCByZWFkIG1vcmUgY2xlYW5seSBpZiBIYXNoU2V0IGhhZCBhIHRha2UgZnVu
Y3Rpb24uCi0gICAgICAgIGF1dG8gaXQgPSBjbGllbnRzVG9CZU5vdGlmaWVkLmJlZ2luKCk7Ci0g
ICAgICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50ID0gKml0OwotICAgICAg
ICBjbGllbnRzVG9CZU5vdGlmaWVkLnJlbW92ZShpdCk7Ci0KKyAgICAgICAgRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50KiBjbGllbnQgPSBjbGllbnRzVG9CZU5vdGlmaWVkLnRha2VBbnkoKTsK
ICAgICAgICAgY2xpZW50LT5maXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZChtb25vdG9uaWNBbmlt
YXRpb25TdGFydFRpbWUpOwogCiAgICAgICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRoaXMgZnVuY3Rp
b24gd2FzIHJlZW50ZXJlZC4gSW4gdGhhdCBjYXNlLCBzdG9wIGl0ZXJhdGluZwpAQCAtMTIwLDYg
KzExNCw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgp
CiAgICAgICAgIGlmIChtX2NsaWVudHNUb0JlTm90aWZpZWQgIT0gJmNsaWVudHNUb0JlTm90aWZp
ZWQpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CisKICAgICBpZiAobV9jbGllbnRzVG9CZU5v
dGlmaWVkID09ICZjbGllbnRzVG9CZU5vdGlmaWVkKQogICAgICAgICBtX2NsaWVudHNUb0JlTm90
aWZpZWQgPSBudWxscHRyOwogCkBAIC0xMjgsODIgKzEyMyw3IEBAIHZvaWQgRGlzcGxheVJlZnJl
c2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCiAgICAgICAgIG1fcHJldmlvdXNGcmFtZURv
bmUgPSB0cnVlOwogICAgIH0KICAgICAKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCktPmRpc3BsYXlEaWRSZWZyZXNoKHRoaXMpOwotfQotCi1EaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkKLXsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlciwgbWFuYWdlciwgKCkpOwotICAgIHJldHVybiAmbWFuYWdl
cjsKLX0KLQotRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyOjplbnN1cmVNb25pdG9yRm9yQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCog
Y2xpZW50KQotewotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hcDo6aXRlcmF0b3IgaXQgPSBt
X21vbml0b3JzLmZpbmQoY2xpZW50LT5tX2Rpc3BsYXlJRCk7Ci0gICAgaWYgKGl0ID09IG1fbW9u
aXRvcnMuZW5kKCkpIHsKLSAgICAgICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9u
aXRvciA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudC0+bV9kaXNwbGF5SUQp
OwotICAgICAgICBtb25pdG9yLT5hZGRDbGllbnQoY2xpZW50KTsKLSAgICAgICAgRGlzcGxheVJl
ZnJlc2hNb25pdG9yKiByZXN1bHQgPSBtb25pdG9yLmdldCgpOwotICAgICAgICBtX21vbml0b3Jz
LmFkZChjbGllbnQtPm1fZGlzcGxheUlELCBtb25pdG9yLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotICAgIGl0LT52YWx1ZS0+YWRkQ2xpZW50KGNsaWVudCk7Ci0g
ICAgcmV0dXJuIGl0LT52YWx1ZS5nZXQoKTsKLX0KLQotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYW5hZ2VyOjpyZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNs
aWVudCkKLXsKLSAgICBpZiAoIWNsaWVudC0+bV9kaXNwbGF5SURJc1NldCkKLSAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICBlbnN1cmVNb25pdG9yRm9yQ2xpZW50KGNsaWVudCk7Ci19Ci0K
LXZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6dW5yZWdpc3RlckNsaWVudChEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKLXsKLSAgICBpZiAoIWNsaWVudC0+bV9k
aXNwbGF5SURJc1NldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFwOjppdGVyYXRvciBpdCA9IG1fbW9uaXRvcnMuZmluZChjbGllbnQtPm1fZGlzcGxheUlE
KTsKLSAgICBpZiAoaXQgPT0gbV9tb25pdG9ycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvciA9IGl0LT52YWx1ZS5nZXQoKTsK
LSAgICBpZiAobW9uaXRvci0+cmVtb3ZlQ2xpZW50KGNsaWVudCkpIHsKLSAgICAgICAgaWYgKCFt
b25pdG9yLT5oYXNDbGllbnRzKCkpCi0gICAgICAgICAgICBtX21vbml0b3JzLnJlbW92ZShpdCk7
Ci0gICAgfQotfQotCi1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNjaGVkdWxl
QW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50KQotewotICAgIGlm
ICghY2xpZW50LT5tX2Rpc3BsYXlJRElzU2V0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIAotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvciA9IGVuc3VyZU1vbml0b3JG
b3JDbGllbnQoY2xpZW50KTsKLQotICAgIGNsaWVudC0+bV9zY2hlZHVsZWQgPSB0cnVlOwotICAg
IHJldHVybiBtb25pdG9yLT5yZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCk7Ci19Ci0KLXZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheURpZFJlZnJlc2goRGlzcGxheVJlZnJl
c2hNb25pdG9yKiBtb25pdG9yKQotewotICAgIGlmIChtb25pdG9yLT5zaG91bGRCZVRlcm1pbmF0
ZWQoKSkgewotICAgICAgICBBU1NFUlQobV9tb25pdG9ycy5jb250YWlucyhtb25pdG9yLT5kaXNw
bGF5SUQoKSkpOwotICAgICAgICBtX21vbml0b3JzLnJlbW92ZShtb25pdG9yLT5kaXNwbGF5SUQo
KSk7Ci0gICAgfQotfQotCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OndpbmRv
d1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCogY2xpZW50KQotewotICAgIGlmIChjbGllbnQtPm1fZGlzcGxheUlE
SXNTZXQgJiYgY2xpZW50LT5tX2Rpc3BsYXlJRCA9PSBkaXNwbGF5SUQpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICB1bnJlZ2lzdGVyQ2xpZW50KGNsaWVudCk7Ci0gICAgY2xpZW50LT5zZXRE
aXNwbGF5SUQoZGlzcGxheUlEKTsKLSAgICByZWdpc3RlckNsaWVudChjbGllbnQpOwotICAgIGlm
IChjbGllbnQtPm1fc2NoZWR1bGVkKQotICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbihjbGllbnQp
OworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5kaXNw
bGF5RGlkUmVmcmVzaCh0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAppbmRleCAyZDk1MTg0
Li43OTk0OTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaApAQCAtMjksNjUgKzI5LDI1IEBACiAjaWYgVVNF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKIAogI2luY2x1ZGUgIlBs
YXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotdHlwZWRlZiBzdHJ1Y3QgX19DVkRpc3BsYXlMaW5rICpDVkRpc3BsYXlMaW5rUmVmOwotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGlzcGxheUFuaW1hdGlvbkNsaWVu
dDsKLWNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKLWNsYXNzIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXI7Ci0KLS8vCi0vLyBBYnN0cmFjdCB2aXJ0dWFsIGNsaWVudCB3aGljaCByZWNl
aXZlcyByZWZyZXNoIGZpcmVkIG1lc3NhZ2VzIG9uIHRoZSBtYWluIHRocmVhZAotLy8KLWNsYXNz
IERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCB7Ci0gICAgZnJpZW5kIGNsYXNzIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjsKLSAgICBmcmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlcjsKLSAgICAKLXB1YmxpYzoKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsK
LSAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKLSAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1wKSA9IDA7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZChkb3VibGUgdGlt
ZXN0YW1wKTsKLSAgICAKLSAgICB2b2lkIHNldERpc3BsYXlJRChQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCi0gICAgewotICAgICAgICBtX2Rpc3BsYXlJRCA9IGRpc3BsYXlJRDsKLSAgICAg
ICAgbV9kaXNwbGF5SURJc1NldCA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgbV9zY2hl
ZHVsZWQ7Ci0gICAgYm9vbCBtX2Rpc3BsYXlJRElzU2V0OwotICAgIFBsYXRmb3JtRGlzcGxheUlE
IG1fZGlzcGxheUlEOwotfTsKLQotLy8KLS8vIE1vbml0b3IgZm9yIGRpc3BsYXkgcmVmcmVzaCBt
ZXNzYWdlcyBmb3IgYSBnaXZlbiBzY3JlZW4KLS8vCitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQ7CitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5OwogCiBjbGFzcyBE
aXNwbGF5UmVmcmVzaE1vbml0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXNwbGF5UmVmcmVzaE1v
bml0b3I+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1v
bml0b3I+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpKTsK
LSAgICB9Ci0gICAgCi0gICAgfkRpc3BsYXlSZWZyZXNoTW9uaXRvcigpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlKERpc3BsYXlSZWZyZXNoTW9u
aXRvckZhY3RvcnkqIGZhY3RvcnksIFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICB2aXJ0dWFsIH5E
aXNwbGF5UmVmcmVzaE1vbml0b3IoKTsKICAgICAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBjYWxs
YmFjayByZXF1ZXN0IHdhcyBzY2hlZHVsZWQsIGZhbHNlIGlmIGl0IGNvdWxkbid0IGJlCiAgICAg
Ly8gKGUuZy4sIGhhcmR3YXJlIHJlZnJlc2ggaXMgbm90IGF2YWlsYWJsZSkKLSAgICBib29sIHJl
cXVlc3RSZWZyZXNoQ2FsbGJhY2soKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFJlZnJlc2hD
YWxsYmFjaygpID0gMDsKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCk7CiAgICAgCiAgICAgYm9vbCBoYXNDbGllbnRzKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnRzLnNpemUoKTsgfQpAQCAtMTAxLDEyICs2MSwyNiBAQCBwdWJsaWM6CiAgICAgICAgIGNv
bnN0IGludCBtYXhJbmFjdGl2ZUZpcmVDb3VudCA9IDEwOwogICAgICAgICByZXR1cm4gIW1fc2No
ZWR1bGVkICYmIG1fdW5zY2hlZHVsZWRGaXJlQ291bnQgPiBtYXhJbmFjdGl2ZUZpcmVDb3VudDsK
ICAgICB9Ci0gICAgCi1wcml2YXRlOgorCisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlOyB9CisgICAgdm9pZCBzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2Fj
dGl2ZSA9IGFjdGl2ZTsgfQorCisgICAgYm9vbCBpc1NjaGVkdWxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NoZWR1bGVkOyB9CisgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIHNjaGVkdWxlZCkg
eyBtX3NjaGVkdWxlZCA9IHNjaGVkdWxlZDsgfQorCisgICAgYm9vbCBpc1ByZXZpb3VzRnJhbWVE
b25lKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c0ZyYW1lRG9uZTsgfQorICAgIHZvaWQgc2V0
SXNQcmV2aW91c0ZyYW1lRG9uZShib29sIGRvbmUpIHsgbV9wcmV2aW91c0ZyYW1lRG9uZSA9IGRv
bmU7IH0KKworICAgIHZvaWQgc2V0TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKGRvdWJsZSBz
dGFydFRpbWUpIHsgbV9tb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUgPSBzdGFydFRpbWU7IH0K
KworICAgIE11dGV4JiBtdXRleCgpIHsgcmV0dXJuIG1fbXV0ZXg7IH0KKworcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCk7Cisg
ICAgc3RhdGljIHZvaWQgaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNhdGlvbk9uTWFpblRo
cmVhZCh2b2lkKiBkYXRhKTsKIAorcHJpdmF0ZToKICAgICB2b2lkIGRpc3BsYXlEaWRSZWZyZXNo
KCk7Ci0gICAgc3RhdGljIHZvaWQgaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNhdGlvbk9u
TWFpblRocmVhZCh2b2lkKiBkYXRhKTsKIAogICAgIGRvdWJsZSBtX21vbm90b25pY0FuaW1hdGlv
blN0YXJ0VGltZTsKICAgICBib29sIG1fYWN0aXZlOwpAQCAtMTE4LDUwICs5Miw2IEBAIHByaXZh
dGU6CiAKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+IG1fY2xpZW50
czsKICAgICBIYXNoU2V0PERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCo+KiBtX2NsaWVudHNU
b0JlTm90aWZpZWQ7Ci0KLSNpZiBQTEFURk9STShNQUMpCi1wdWJsaWM6Ci0gICAgdm9pZCBkaXNw
bGF5TGlua0ZpcmVkKGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMp
OwotcHJpdmF0ZToKLSAgICBDVkRpc3BsYXlMaW5rUmVmIG1fZGlzcGxheUxpbms7Ci0jZW5kaWYK
LQotI2lmIFBMQVRGT1JNKElPUykKLXB1YmxpYzoKLSAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQo
ZG91YmxlIG5vd1NlY29uZHMpOwotcHJpdmF0ZToKLSAgICB2b2lkKiBtX2Rpc3BsYXlMaW5rOwot
I2VuZGlmCi19OwotCi0vLwotLy8gU2luZ2xldG9uIG1hbmFnZXIgZm9yIGFsbCB0aGUgRGlzcGxh
eVJlZnJlc2hNb25pdG9ycy4gVGhpcyBpcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSAKLS8vIG91dHNp
ZGUgd29ybGQuIEl0IGRpc3RyaWJ1dGVzIHJlcXVlc3RzIHRvIHRoZSBhcHByb3ByaWF0ZSBtb25p
dG9yLiBXaGVuIHRoZSBkaXNwbGF5Ci0vLyByZWZyZXNoIGV2ZW50IGZpcmVzLCB0aGUgcGFzc2Vk
IERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCBpcyBjYWxsZWQgZGlyZWN0bHkgb24KLS8vIHRo
ZSBtYWluIHRocmVhZC4KLS8vCi1jbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciogc2hhcmVk
TWFuYWdlcigpOwotICAgIAotICAgIHZvaWQgcmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50Kik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCopOwotCi0gICAgYm9vbCBzY2hlZHVsZUFuaW1hdGlvbihEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQqKTsKLSAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kik7Ci0KLXByaXZhdGU6
Ci0gICAgZnJpZW5kIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKLSAgICB2b2lkIGRpc3Bs
YXlEaWRSZWZyZXNoKERpc3BsYXlSZWZyZXNoTW9uaXRvciopOwotICAgIAotICAgIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXIoKSB7IH0KLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIGVu
c3VyZU1vbml0b3JGb3JDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kik7Ci0KLSAg
ICAvLyBXZSBrbm93IG5vdGhpbmcgYWJvdXQgdGhlIHZhbHVlcyBvZiBQbGF0Zm9ybURpc3BsYXlJ
RHMsIHNvIHVzZSBVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cy4KLSAgICAvLyBGSVhNRTog
U2luY2Ugd2Uga25vdyBub3RoaW5nIGFib3V0IHRoZXNlIHZhbHVlcywgdGhpcyBpcyBub3Qgc3Vm
ZmljaWVudC4KLSAgICAvLyBFdmVuIHdpdGggVW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHMs
IHRoZXJlIGFyZSBzdGlsbCB0d28gc3BlY2lhbCB2YWx1ZXMgdXNlZCBmb3IgZW1wdHkgYW5kIGRl
bGV0ZWQgaGFzaCB0YWJsZSBzbG90cy4KLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+LCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFwOwotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hcCBtX21vbml0b3JzOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTU4YmQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKQEAgLTAs
MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50LmgiCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSAiRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudDo6RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KCkKKyAg
ICA6IG1fc2NoZWR1bGVkKGZhbHNlKQorICAgICwgbV9kaXNwbGF5SURJc1NldChmYWxzZSkKK3sK
K30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Ojp+RGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50KCkKK3sKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkudW5yZWdpc3RlckNsaWVudCh0aGlzKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQ6OmZpcmVEaXNwbGF5UmVmcmVzaElmTmVlZGVkKGRvdWJsZSB0aW1lc3RhbXAp
Cit7CisgICAgaWYgKCFtX3NjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY2hl
ZHVsZWQgPSBmYWxzZTsKKyAgICBkaXNwbGF5UmVmcmVzaEZpcmVkKHRpbWVzdGFtcCk7Cit9CisK
K30KKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjJlOTRkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50X2gKKyNkZWZpbmUgRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50X2gKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZ
X01PTklUT1IpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKK2NsYXNzIERpc3BsYXlSZWZy
ZXNoTW9uaXRvckZhY3Rvcnk7CitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOwor
CitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQgeworICAgIGZyaWVuZCBjbGFzcyBE
aXNwbGF5UmVmcmVzaE1vbml0b3I7CisgICAgZnJpZW5kIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXI7CisgICAgCitwdWJsaWM6CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50KCk7CisgICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KCk7CisKKyAg
ICAvLyBBbHdheXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1wKSA9IDA7CisKKyAgICB2aXJ0dWFs
IERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rv
cnkoKSBjb25zdCA9IDA7CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaXJlRGlzcGxheVJlZnJlc2hJ
Zk5lZWRlZChkb3VibGUgdGltZXN0YW1wKTsKKyAgICAKKyAgICB2b2lkIHNldERpc3BsYXlJRChQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAgeworICAgICAgICBtX2Rpc3BsYXlJRCA9
IGRpc3BsYXlJRDsKKyAgICAgICAgbV9kaXNwbGF5SURJc1NldCA9IHRydWU7CisgICAgfQorICAg
IAorICAgIGJvb2wgbV9zY2hlZHVsZWQ7CisgICAgYm9vbCBtX2Rpc3BsYXlJRElzU2V0OworICAg
IFBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOworfTsKKworfQorCisjZW5kaWYgLy8gVVNF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JGYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZmVkN2MyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaApAQCAtMCwwICsxLDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5X2gKKyNkZWZp
bmUgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeV9oCisKKyNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9y
RmFjdG9yeSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yRmFj
dG9yeSgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRv
cj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSA9IDA7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjZW5kaWYgLy8gRGlzcGxheVJlZnJlc2hN
b25pdG9yRmFjdG9yeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNWM2N2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlci5oIgorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X0RJU1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgor
I2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXI6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyKCkKK3sKK30KKworRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciYgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9
CisKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvciogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6
ZW5zdXJlTW9uaXRvckZvckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVu
dCkKK3sKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA6Oml0ZXJhdG9yIGl0ID0gbV9tb25p
dG9ycy5maW5kKGNsaWVudC0+bV9kaXNwbGF5SUQpOworICAgIGlmIChpdCA9PSBtX21vbml0b3Jz
LmVuZCgpKSB7CisgICAgICAgIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IG1vbml0b3Ig
PSBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShjbGllbnQtPmRpc3BsYXlSZWZyZXNoTW9u
aXRvckZhY3RvcnkoKSwgY2xpZW50LT5tX2Rpc3BsYXlJRCk7CisgICAgICAgIG1vbml0b3ItPmFk
ZENsaWVudChjbGllbnQpOworICAgICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIHJlc3VsdCA9
IG1vbml0b3IuZ2V0KCk7CisgICAgICAgIG1fbW9uaXRvcnMuYWRkKGNsaWVudC0+bV9kaXNwbGF5
SUQsIG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgaXQtPnZhbHVlLT5hZGRDbGllbnQoY2xpZW50KTsKKyAgICByZXR1cm4gaXQtPnZhbHVlLmdl
dCgpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnJlZ2lzdGVyQ2xp
ZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50KQoreworICAgIGlmICghY2xp
ZW50LT5tX2Rpc3BsYXlJRElzU2V0KQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGVu
c3VyZU1vbml0b3JGb3JDbGllbnQoY2xpZW50KTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjp1bnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVu
dCogY2xpZW50KQoreworICAgIGlmICghY2xpZW50LT5tX2Rpc3BsYXlJRElzU2V0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9tb25pdG9ycy5maW5kKGNsaWVudC0+bV9kaXNwbGF5SUQpOworICAgIGlmIChpdCA9PSBtX21v
bml0b3JzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRGlzcGxheVJlZnJlc2hN
b25pdG9yKiBtb25pdG9yID0gaXQtPnZhbHVlLmdldCgpOworICAgIGlmIChtb25pdG9yLT5yZW1v
dmVDbGllbnQoY2xpZW50KSkgeworICAgICAgICBpZiAoIW1vbml0b3ItPmhhc0NsaWVudHMoKSkK
KyAgICAgICAgICAgIG1fbW9uaXRvcnMucmVtb3ZlKGl0KTsKKyAgICB9Cit9CisKK2Jvb2wgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2NoZWR1bGVBbmltYXRpb24oRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQtPm1fZGlzcGxheUlE
SXNTZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgRGlzcGxheVJlZnJl
c2hNb25pdG9yKiBtb25pdG9yID0gZW5zdXJlTW9uaXRvckZvckNsaWVudChjbGllbnQpOworCisg
ICAgY2xpZW50LT5tX3NjaGVkdWxlZCA9IHRydWU7CisgICAgcmV0dXJuIG1vbml0b3ItPnJlcXVl
c3RSZWZyZXNoQ2FsbGJhY2soKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyOjpkaXNwbGF5RGlkUmVmcmVzaChEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IpCit7
CisgICAgaWYgKG1vbml0b3ItPnNob3VsZEJlVGVybWluYXRlZCgpKSB7CisgICAgICAgIEFTU0VS
VChtX21vbml0b3JzLmNvbnRhaW5zKG1vbml0b3ItPmRpc3BsYXlJRCgpKSk7CisgICAgICAgIG1f
bW9uaXRvcnMucmVtb3ZlKG1vbml0b3ItPmRpc3BsYXlJRCgpKTsKKyAgICB9Cit9CisKK3ZvaWQg
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGll
bnQpCit7CisgICAgaWYgKGNsaWVudC0+bV9kaXNwbGF5SURJc1NldCAmJiBjbGllbnQtPm1fZGlz
cGxheUlEID09IGRpc3BsYXlJRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHVucmVnaXN0
ZXJDbGllbnQoY2xpZW50KTsKKyAgICBjbGllbnQtPnNldERpc3BsYXlJRChkaXNwbGF5SUQpOwor
ICAgIHJlZ2lzdGVyQ2xpZW50KGNsaWVudCk7CisgICAgaWYgKGNsaWVudC0+bV9zY2hlZHVsZWQp
CisgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKGNsaWVudCk7Cit9CisKK30KKworI2VuZGlmIC8v
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNj
N2UzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlcl9oCisjZGVmaW5lIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXJfaAorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikK
KworI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciB7CisgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI+OworcHVibGlj
OgorICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyJiBzaGFyZWRNYW5hZ2Vy
KCk7CisgICAgCisgICAgdm9pZCByZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50Kik7CisKKyAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCopOworICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOworICAgIHZvaWQgZGlzcGxheURpZFJl
ZnJlc2goRGlzcGxheVJlZnJlc2hNb25pdG9yKik7CisgICAgCisgICAgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlcigpIHsgfQorICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXIoKTsKKworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogZW5zdXJlTW9uaXRvckZvckNs
aWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworICAgIC8vIFdlIGtub3cgbm90
aGluZyBhYm91dCB0aGUgdmFsdWVzIG9mIFBsYXRmb3JtRGlzcGxheUlEcywgc28gdXNlIFVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzLgorICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBrbm93IG5v
dGhpbmcgYWJvdXQgdGhlc2UgdmFsdWVzLCB0aGlzIGlzIG5vdCBzdWZmaWNpZW50LgorICAgIC8v
IEV2ZW4gd2l0aCBVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cywgdGhlcmUgYXJlIHN0aWxs
IHR3byBzcGVjaWFsIHZhbHVlcyB1c2VkIGZvciBlbXB0eSBhbmQgZGVsZXRlZCBoYXNoIHRhYmxl
IHNsb3RzLgorICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4sIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA7CisgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFwIG1fbW9uaXRvcnM7Cit9OworCit9CisKKyNlbmRpZiAv
LyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJVcGRhdGVyLmNwcAppbmRleCA4OTg2N2RmLi41Y2ViMzRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIu
Y3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllclVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM2LDkgKzM2LDkgQEAgR3JhcGhpY3NMYXllclVwZGF0ZXI6OkdyYXBo
aWNzTGF5ZXJVcGRhdGVyKEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50KiBjbGllbnQsIFAKICAg
ICAsIG1fc2NoZWR1bGVkKGZhbHNlKQogewogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpCi0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLT5yZWdpc3RlckNsaWVudCh0aGlzKTsKLSAgICBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQsIHRoaXMpOwotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS0+c2NoZWR1bGVBbmltYXRpb24odGhpcyk7CisgICAgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlZ2lzdGVyQ2xpZW50KHRoaXMpOworICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS53aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NoZWR1bGVBbmltYXRpb24odGhpcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOwogI2VuZGlmCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclVwZGF0ZXI6OnNjaGVkdWxlVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwog
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKLSAgICBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPnNjaGVkdWxlQW5p
bWF0aW9uKHRoaXMpOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlvbih0aGlzKTsKICNlbmRpZgogICAgIG1fc2NoZWR1bGVk
ID0gdHJ1ZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6
c2NoZWR1bGVVcGRhdGUoKQogdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6c2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwg
dGhpcyk7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZGlzcGxheUlEKTsKICNlbmRpZgpAQCAtNzgsNCArNzgsMTEgQEAgdm9pZCBHcmFw
aGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1wKQog
ICAgICAgICBtX2NsaWVudC0+Zmx1c2hMYXllcnNTb29uKHRoaXMpOwogfQogCisjaWYgVVNFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvckZhY3RvcnkqIEdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpkaXNwbGF5UmVmcmVzaE1vbml0b3JG
YWN0b3J5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+ZGlzcGxh
eVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIDogbnVsbHB0cjsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuaAppbmRleCA1OGUxOTBkLi5hMWUxNjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBk
YXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJVcGRhdGVyLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllclVwZGF0
ZXJfaAogI2RlZmluZSBHcmFwaGljc0xheWVyVXBkYXRlcl9oCiAKLSNpbmNsdWRlICJEaXNwbGF5
UmVmcmVzaE1vbml0b3IuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNyw2ICszNyw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyVXBkYXRlckNsaWVudCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBmbHVzaExheWVyc1Nvb24oR3JhcGhpY3NMYXllclVwZGF0ZXIqKSA9IDA7Cisg
ICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWN0b3J5KCkgY29uc3QgPSAwOwogfTsKIAogY2xhc3MgR3JhcGhpY3NMYXllclVwZGF0
ZXIKQEAgLTUxLDYgKzUyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlVXBkYXRlKCk7
CiAgICAgdm9pZCBzY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOwogCisjaWYgVVNF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKyAgICB2aXJ0dWFsIERp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnko
KSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9T
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFlMmE1Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TX2gKKyNkZWZpbmUgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TX2gKKworI2lmIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNpbmNsdWRlICJE
aXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09C
SkNfQ0xBU1MgV2ViRGlzcGxheUxpbmtIYW5kbGVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyA6IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1v
bml0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUz4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKGRpc3BsYXlJ
RCkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1Mo
KTsKKworICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZChkb3VibGUgbm93U2Vjb25kcyk7CisgICAg
dmlydHVhbCBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoUGxhdGZvcm1EaXNwbGF5
SUQpOworICAgIFJldGFpblB0cjxXZWJEaXNwbGF5TGlua0hhbmRsZXI+IG1faGFuZGxlcjsKK307
CisKK30KKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0KaW5kZXggYzMz
OGUwZi4uMTU4OTY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tCkBAIC0yMywz
OCArMjMsMzMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgi
CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogCi0j
aW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCi0KLSNpbmNsdWRlIDxRdWFydHpDb3Jl
L1F1YXJ0ekNvcmUuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgotCiAjaW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCisjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgorI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBp
bnRlcmZhY2UgV2ViRGlzcGxheUxpbmtIYW5kbGVyIDogTlNPYmplY3QKIHsKLSAgICBXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1fbW9uaXRvcjsKLSAgICBDQURpc3BsYXlMaW5rKiBt
X2Rpc3BsYXlMaW5rOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyogbV9tb25pdG9yOwor
ICAgIENBRGlzcGxheUxpbmsgKm1fZGlzcGxheUxpbms7CiB9CiAKLS0gKGlkKWluaXRXaXRoTW9u
aXRvcjooV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yKiltb25pdG9yOworLSAoaWQpaW5p
dFdpdGhNb25pdG9yOihEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MqKW1vbml0b3I7CiAtICh2b2lk
KWhhbmRsZURpc3BsYXlMaW5rOihDQURpc3BsYXlMaW5rICopc2VuZGVyOwogLSAodm9pZClpbnZh
bGlkYXRlOwogCiBAZW5kCiAKLXN0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShD
RlRpbWVJbnRlcnZhbCB0KQotewotICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSArIHQgLSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKLX0KLQogQGltcGxlbWVudGF0aW9uIFdl
YkRpc3BsYXlMaW5rSGFuZGxlcgogCi0tIChpZClpbml0V2l0aE1vbml0b3I6KFdlYkNvcmU6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvciopbW9uaXRvcgorLSAoaWQpaW5pdFdpdGhNb25pdG9yOihEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1MqKW1vbml0b3IKIHsKICAgICBpZiAoc2VsZiA9IFtzdXBlciBp
bml0XSkgewogICAgICAgICBtX21vbml0b3IgPSBtb25pdG9yOwpAQCAtODYsMzQgKzgxLDQ0IEBA
IHN0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQog
QGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gCi1EaXNwbGF5UmVmcmVzaE1vbml0b3I6On5E
aXNwbGF5UmVmcmVzaE1vbml0b3IoKQorCitEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OkRpc3Bs
YXlSZWZyZXNoTW9uaXRvcklPUyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAgOiBE
aXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQogewotICAgIFsoV2ViRGlzcGxheUxpbmtI
YW5kbGVyKikgbV9kaXNwbGF5TGluayBpbnZhbGlkYXRlXTsKLSAgICBbKFdlYkRpc3BsYXlMaW5r
SGFuZGxlciopIG1fZGlzcGxheUxpbmsgcmVsZWFzZV07CiB9CiAKLWJvb2wgRGlzcGxheVJlZnJl
c2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUzo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUygpCiB7Ci0gICAgaWYgKCFtX2FjdGl2ZSkK
KyAgICBbbV9oYW5kbGVyIGludmFsaWRhdGVdOworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCit7CisgICAgaWYgKCFpc0FjdGl2ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIGlmICghbV9kaXNwbGF5TGlu
aykgewotICAgICAgICBtX2Rpc3BsYXlMaW5rID0gW1tXZWJEaXNwbGF5TGlua0hhbmRsZXIgYWxs
b2NdIGluaXRXaXRoTW9uaXRvcjp0aGlzXTsKLSAgICAgICAgbV9hY3RpdmUgPSB0cnVlOworICAg
IGlmICghbV9oYW5kbGVyKSB7CisgICAgICAgIG1faGFuZGxlciA9IGFkb3B0TlMoW1tXZWJEaXNw
bGF5TGlua0hhbmRsZXIgYWxsb2NdIGluaXRXaXRoTW9uaXRvcjp0aGlzXSk7CisgICAgICAgIHNl
dElzQWN0aXZlKHRydWUpOwogICAgIH0KIAotICAgIG1fc2NoZWR1bGVkID0gdHJ1ZTsKKyAgICBz
ZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMpCitzdGF0
aWMgZG91YmxlIG1lZGlhVGltZVRvQ3VycmVudFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBtYXkgYmUgYSBuby1vcCBpZiBDQUN1cnJlbnRNZWRpYVRpbWUgaXMg
Kmd1YXJhbnRlZWQqIHRvIGJlIG1hY2hfYWJzb2x1dGVfdGltZS4KKyAgICByZXR1cm4gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyB0IC0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7Cit9CisK
K3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpkaXNwbGF5TGlua0ZpcmVkKGRvdWJsZSBu
b3dTZWNvbmRzKQogewotICAgIGlmICghbV9wcmV2aW91c0ZyYW1lRG9uZSkKKyAgICBpZiAoIWlz
UHJldmlvdXNGcmFtZURvbmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2aW91c0Zy
YW1lRG9uZSA9IGZhbHNlOwotICAgIG1fbW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lID0gbWVk
aWFUaW1lVG9DdXJyZW50VGltZShub3dTZWNvbmRzKTsKKyAgICBzZXRJc1ByZXZpb3VzRnJhbWVE
b25lKGZhbHNlKTsKKyAgICBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUobWVkaWFUaW1l
VG9DdXJyZW50VGltZShub3dTZWNvbmRzKSk7CiAKICAgICBoYW5kbGVEaXNwbGF5UmVmcmVzaGVk
Tm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjLmNwcAppbmRleCBlNTQyY2JmLi5hZDEyMDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmNwcApAQCAtMjQsNDcgKzI0LDUyIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIgogCiAjaWYgVVNFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKIAotI2luY2x1ZGUgIkRpc3Bs
YXlSZWZyZXNoTW9uaXRvci5oIgotCiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtD
YWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCogbm93LCBjb25zdCBD
VlRpbWVTdGFtcCogb3V0cHV0VGltZSwgQ1ZPcHRpb25GbGFncywgQ1ZPcHRpb25GbGFncyosIHZv
aWQqIGRhdGEpCitEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAgOiBEaXNwbGF5UmVmcmVzaE1v
bml0b3IoZGlzcGxheUlEKQorICAgICwgbV9kaXNwbGF5TGluayhudWxscHRyKQogewotICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvciA9IHN0YXRpY19jYXN0PERpc3BsYXlSZWZyZXNo
TW9uaXRvcio+KGRhdGEpOwotCi0gICAgZG91YmxlIG5vd1NlY29uZHMgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KG5vdy0+dmlkZW9UaW1lKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obm93LT52aWRlb1Rp
bWVTY2FsZSk7Ci0gICAgZG91YmxlIG91dHB1dFRpbWVTZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihvdXRwdXRUaW1lLT52aWRlb1RpbWUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihvdXRwdXRU
aW1lLT52aWRlb1RpbWVTY2FsZSk7Ci0gICAgbW9uaXRvci0+ZGlzcGxheUxpbmtGaXJlZChub3dT
ZWNvbmRzLCBvdXRwdXRUaW1lU2Vjb25kcyk7Ci0KLSAgICByZXR1cm4ga0NWUmV0dXJuU3VjY2Vz
czsKIH0KIAotRGlzcGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkK
K0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYygpCiB7
CiAgICAgaWYgKG1fZGlzcGxheUxpbmspIHsKICAgICAgICAgQ1ZEaXNwbGF5TGlua1N0b3AobV9k
aXNwbGF5TGluayk7CiAgICAgICAgIENWRGlzcGxheUxpbmtSZWxlYXNlKG1fZGlzcGxheUxpbmsp
OwotICAgICAgICBtX2Rpc3BsYXlMaW5rID0gMDsKKyAgICAgICAgbV9kaXNwbGF5TGluayA9IG51
bGxwdHI7CiAgICAgfQogCiAgICAgY2FuY2VsQ2FsbE9uTWFpblRocmVhZChEaXNwbGF5UmVmcmVz
aE1vbml0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQs
IHRoaXMpOwogfQogCi1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hD
YWxsYmFjaygpCitzdGF0aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlM
aW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCogbm93LCBjb25zdCBDVlRpbWVTdGFtcCogb3V0cHV0
VGltZSwgQ1ZPcHRpb25GbGFncywgQ1ZPcHRpb25GbGFncyosIHZvaWQqIGRhdGEpCit7CisgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKiBtb25pdG9yID0gc3RhdGljX2Nhc3Q8RGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjKj4oZGF0YSk7CisKKyAgICBkb3VibGUgbm93U2Vjb25kcyA9IHN0YXRp
Y19jYXN0PGRvdWJsZT4obm93LT52aWRlb1RpbWUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ct
PnZpZGVvVGltZVNjYWxlKTsKKyAgICBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZSkgLyBzdGF0aWNfY2FzdDxkb3VibGU+
KG91dHB1dFRpbWUtPnZpZGVvVGltZVNjYWxlKTsKKyAgICBtb25pdG9yLT5kaXNwbGF5TGlua0Zp
cmVkKG5vd1NlY29uZHMsIG91dHB1dFRpbWVTZWNvbmRzKTsKKworICAgIHJldHVybiBrQ1ZSZXR1
cm5TdWNjZXNzOworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJl
ZnJlc2hDYWxsYmFjaygpCiB7Ci0gICAgaWYgKCFtX2FjdGl2ZSkKKyAgICBpZiAoIWlzQWN0aXZl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9kaXNwbGF5TGluaykgewot
ICAgICAgICBtX2FjdGl2ZSA9IGZhbHNlOwotICAgICAgICBDVlJldHVybiBlcnJvciA9IENWRGlz
cGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5KG1fZGlzcGxheUlELCAmbV9kaXNwbGF5TGluayk7
CisgICAgICAgIHNldElzQWN0aXZlKGZhbHNlKTsKKyAgICAgICAgQ1ZSZXR1cm4gZXJyb3IgPSBD
VkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheShkaXNwbGF5SUQoKSwgJm1fZGlzcGxheUxp
bmspOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTc2LDI2ICs4MSwyNiBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpCiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICBtX2FjdGl2ZSA9IHRydWU7CisgICAgICAgIHNldElzQWN0aXZlKHRydWUp
OwogICAgIH0KIAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgbV9zY2hlZHVs
ZWQgPSB0cnVlOworICAgIE11dGV4TG9ja2VyIGxvY2sobXV0ZXgoKSk7CisgICAgc2V0SXNTY2hl
ZHVsZWQodHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0
VGltZVNlY29uZHMpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6ZGlzcGxheUxpbmtG
aXJlZChkb3VibGUgbm93U2Vjb25kcywgZG91YmxlIG91dHB1dFRpbWVTZWNvbmRzKQogewotICAg
IE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgaWYgKCFtX3ByZXZpb3VzRnJhbWVEb25l
KQorICAgIE11dGV4TG9ja2VyIGxvY2sobXV0ZXgoKSk7CisgICAgaWYgKCFpc1ByZXZpb3VzRnJh
bWVEb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJldmlvdXNGcmFtZURvbmUgPSBm
YWxzZTsKKyAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKIAogICAgIGRvdWJsZSB3
ZWJLaXRNb25vdG9uaWNOb3cgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBk
b3VibGUgdGltZVVudGlsT3V0cHV0ID0gb3V0cHV0VGltZVNlY29uZHMgLSBub3dTZWNvbmRzOwog
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB1c2luZyB3ZWJLaXRNb25vdG9uaWNOb3c/Ci0g
ICAgbV9tb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUgPSB3ZWJLaXRNb25vdG9uaWNOb3cgKyB0
aW1lVW50aWxPdXRwdXQ7CisgICAgc2V0TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKHdlYktp
dE1vbm90b25pY05vdyArIHRpbWVVbnRpbE91dHB1dCk7CiAKICAgICBjYWxsT25NYWluVGhyZWFk
KGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQsIHRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjkyZmYzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hY19oCisjZGVmaW5lIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hY19oCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05J
VE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisKK3R5cGVkZWYgc3Ry
dWN0IF9fQ1ZEaXNwbGF5TGluayAqQ1ZEaXNwbGF5TGlua1JlZjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMgOiBwdWJsaWMgRGlzcGxheVJl
ZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWM+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhk
aXNwbGF5SUQpKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjKCk7CisKKyAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMs
IGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcyk7CisgICAgdmlydHVhbCBib29sIHJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMoUGxhdGZvcm1EaXNwbGF5SUQpOworICAgIENWRGlzcGxheUxpbmtS
ZWYgbV9kaXNwbGF5TGluazsKK307CisKK30KKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAxMGFjMDkzLi43
MmU3YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcApAQCAtMzkyNSw0ICszOTI1LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpwYWludFJlbGF0ZWRNaWxlc3RvbmVzVGltZXJGaXJlZChUaW1lcjxSZW5kZXJMYXll
ckNvCiAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmZpcmVQYWludFJlbGF0ZWRNaWxlc3Rv
bmVzSWZOZWVkZWQoKTsKIH0KIAorRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QKK3sK
KyAgICBGcmFtZSYgZnJhbWUgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZnJhbWUoKTsKKyAg
ICBQYWdlKiBwYWdlID0gZnJhbWUucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlzcGxh
eVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5k
ZXggZTcwZjU1OGRkLi5jM2Q1NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0zODksNiArMzg5LDcgQEAgcHJpdmF0ZToKICAg
ICBQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgCiAgICAgR3JhcGhpY3NMYXllckZhY3RvcnkqIGdy
YXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Q7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFj
dG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0OwogICAgIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcigpIGNvbnN0OwogCiAgICAgLy8gV2hl
dGhlciBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciBhbmltYXRpb24gZW5mb3JjZXMgdGhlIG5lZWQg
Zm9yIGEgY29tcG9zaXRpbmcgbGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjUwYjlhMi4uOGE3NThkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE0LTA1LTIzICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKGlPUyBXZWJLaXQy
KTogcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZpcmVzIG1vcmUgdGhhbiBvbmNlIGJldHdlZW4gbGF5
ZXIgdHJlZSBjb21taXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzI3OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2ODc3OTA5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Z3JhcGhp
Y3NMYXllckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6ZGlzcGxheVJl
ZnJlc2hNb25pdG9yRmFjdG9yeSk6CisgICAgICAgIFBsdW1iIHRoZSBEaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWN0b3J5IHJlcXVlc3QgdGhyb3VnaCB0byB0aGUgRHJhd2luZ0FyZWEuCisgICAgICAg
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIHdpbGwgaW1wbGVtZW50IGFuZCByZXR1cm4gYSBS
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90
ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6UmVtb3RlTGF5ZXJUcmVl
RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
RGlzcGxheVJlZnJlc2hNb25pdG9yOjp+UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25p
dG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgV2hlbiByZXF1ZXN0aW5nIGEg
ZGlzcGxheSByZWZyZXNoIGNhbGxiYWNrLCBzY2hlZHVsZSBhIGxheWVyIGNvbW1pdC4KKyAgICAg
ICAgSXQgbWF5IGVuZCB1cCBiZWluZyBlbXB0eSwgYnV0IHdpbGwgc3RpbGwgY2FsbCB1cyBiYWNr
IHdpdGggYSBkaWRVcGRhdGUsCisgICAgICAgIHVwb24gd2hpY2ggd2UnbGwgZmlyZSB0aGUgY2Fs
bGJhY2suCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpkaWRVcGRhdGVMYXllcnMpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6d2lsbERl
c3Ryb3lEaXNwbGF5UmVmcmVzaE1vbml0b3IpOgorICAgICAgICBLZWVwIHRyYWNrIG9mIHRoZSBz
ZXQgb2YgRGlzcGxheVJlZnJlc2hNb25pdG9ycy4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6ZGlkVXBkYXRlKToKKyAgICAgICAgRmlyZSByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUgY2FsbGJhY2tzIG9uY2UgdGhlIFVJIHByb2Nlc3MgY29tbWl0cyB0aGUgbmV3
IGxheWVyIHRyZWUuCisKIDIwMTQtMDUtMjAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBwZXIgYXBwIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9y
IHdlYnNpdGUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDBjYWU1ZWUuLmYxMTY5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzMCw2ICs1MzAsOCBA
QAogCQkyRDI4RjNFNTE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOEYzRTEx
ODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkRhdGFiYXNlTWFuYWdlcklPUy5tbSAqLzsgfTsKIAkJMkQy
OEYzRTYxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkVkaXRvckNsaWVudElPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjhGM0UyMTg4NUNDQzEwMDRC
OUVBRSAvKiBXZWJFZGl0b3JDbGllbnRJT1MubW0gKi87IH07CiAJCTJEMjhGM0U3MTg4NUNDQzEw
MDRCOUVBRSAvKiBXZWJGcmFtZUxvYWRlckNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjhGM0UzMTg4NUNDQzEwMDRCOUVBRSAvKiBX
ZWJGcmFtZUxvYWRlckNsaWVudElPUy5tbSAqLzsgfTsKKwkJMkQyOUVDRDAxOTJGMkMyRTAwOTg0
Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOUVDQ0UxOTJGMkMyRTAwOTg0
Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovOyB9OworCQky
RDI5RUNEMTE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hN
b25pdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQyOUVDQ0YxOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvci5tbSAqLzsgfTsKIAkJMkQyQURGMDkxNjM2MkRENTAwMTk3RTQ3IC8qIFBERlBsdWdp
blRleHRBbm5vdGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQyQURGMDYxNjM2MkRDNzAwMTk3RTQ3IC8qIFBERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tICovOyB9OwogCQkyRDJBREYwQjE2MzYyRERCMDAxOTdFNDcgLyogUERGUGx1Z2luQW5u
b3RhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tICovOyB9
OwogCQkyRDJBREYxMDE2MzY0RDgyMDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFE
RjBFMTYzNjREODIwMDE5N0U0NyAvKiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tICovOyB9
OwpAQCAtMjQ2Myw2ICsyNDY1LDggQEAKIAkJMkQyOEYzRTExODg1Q0NDMTAwNEI5RUFFIC8qIFdl
YkRhdGFiYXNlTWFuYWdlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdlYkRhdGFiYXNlTWFuYWdlcklPUy5tbTsgcGF0aCA9IGlvcy9XZWJEYXRhYmFzZU1h
bmFnZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMjhGM0UyMTg4NUND
QzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGllbnRJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJFZGl0b3JDbGllbnRJT1MubW07IHBhdGggPSBpb3MvV2Vi
RWRpdG9yQ2xpZW50SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDI4RjNF
MzE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJGcmFtZUxvYWRlckNsaWVudElPUy5t
bTsgcGF0aCA9IGlvcy9XZWJGcmFtZUxvYWRlckNsaWVudElPUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkQyOUVDQ0UxOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkQyOUVDQ0YxOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyQURGMDIxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBs
dWdpbkFubm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGUGx1
Z2luQW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdpbkFubm90YXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyQURGMDMxNjM2MjQzNTAwMTk3RTQ3IC8qIFBERlBs
dWdpbkFubm90YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tOyBwYXRoID0gUERGL1BERlBsdWdpbkFubm90YXRpb24u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEMkFERjA1MTYzNjJEQzcwMDE5N0U0
NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOyBwYXRoID0gUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjQ1LDYgKzQ2
NDksMTUgQEAKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQkyRDI5RUNDRDE5MkYyQzJFMDA5ODRCNzggLyogQ29jb2EgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTJEMjlFQ0NFMTkyRjJDMkUwMDk4NEI3OCAv
KiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCAqLywKKwkJCQkyRDI5RUND
RjE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9y
Lm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBDb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTJEQTk0NDc3MTg4NEUzQUIwMEVEODZEQiAvKiBpb3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNTU0MCw2ICs1NTUzLDcgQEAKIAkJ
QkMwMzJENUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJEMjlFQ0NEMTkyRjJDMkUwMDk4NEI3OCAvKiBD
b2NvYSAqLywKIAkJCQkyREE5NDRCNDE4ODRFQTJBMDBFRDg2REIgLyogaW9zICovLAogCQkJCUJD
OTYzRDZDMTEzREQxOTUwMDU3NEJFMiAvKiBtYWMgKi8sCiAJCQkJOTNGQzY3OUQxMkQzQ0M3NDAw
QTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmNwcCAqLywKQEAgLTc0MTYsNiArNzQzMCw3IEBACiAJ
CQkJMjY4NDA1NDQxOEI4NUE2MzAwMjJDMzhCIC8qIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTQ4NDA0MTUwQzM1MDYwMEU1MkNFOSAvKiBXZWJS
ZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMzUxRjYxODBGNUM3NTAwRTUzQkU5
IC8qIFdlYklEQkZhY3RvcnlCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDI5RUNEMDE5
MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVy
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIxNzQ2NTE2NEMyMTM3MDAzN0E1QzEgLyog
V2ViUmVzb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMzY3NjMwMTMwQzk5OTgw
MDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC04
Nzk4LDYgKzg4MTMsNyBAQAogCQkJCTFBRTExN0Y2MTFEQkIzMDkwMDk4MTYxNSAvKiBQcm9jZXNz
TGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMUQxMTJGNUZFNjAwMzM3QkFC
IC8qIFByb2Nlc3NMYXVuY2hlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUU5MTY0
QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMkQyOUVDRDExOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUIwMzc5MTg1QTdDNkEwMEVE
RjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUREMTY0
ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQjE2QUUxMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggMWJlZjg1YS4uMmIwNmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzgwLDYg
Kzc4MCwxMyBAQCBHcmFwaGljc0xheWVyRmFjdG9yeSogV2ViQ2hyb21lQ2xpZW50OjpncmFwaGlj
c0xheWVyRmFjdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+
Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKIH0KIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpCitEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXZWJD
aHJvbWVDbGllbnQ6OmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rv
cnkoKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBo
aWNzTGF5ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBpZiAobGF5ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAxM2NiODJkLi5jNjUwMGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTIwNCw2ICsyMDQsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGRvY3VtZW50T3ZlcmxheUxheWVyRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWUmKSBvdmVycmlkZTsKIAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpCisgICAgdmlydHVhbCBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7
CisjZW5kaWYKKwogICAgIHZpcnR1YWwgQ29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENv
bXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzPigKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9SZW1vdGVM
YXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zZTJjODk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3Jf
aAorI2RlZmluZSBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3JfaAorCisjaWYg
VVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+CisjaW5jbHVkZSAiUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxh
eWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbW90ZUxheWVy
VHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCwgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEmIGRyYXdpbmdBcmVhKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3IoZGlzcGxheUlELCBkcmF3aW5nQXJlYSkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFs
IH5SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IoKTsKKworICAgIHZpcnR1YWwg
Ym9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZFVw
ZGF0ZUxheWVycygpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJlbW90ZUxheWVyVHJlZURp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCwgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEmIGRyYXdpbmdBcmVhKTsKKworICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
JiBtX2RyYXdpbmdBcmVhOworfTsKKworfQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2VuZGlmIC8vIFJlbW90ZUxheWVyVHJlZURp
c3BsYXlSZWZyZXNoTW9uaXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43OTBkMTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbQpA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmgiCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorCisjaW1wb3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbXBvcnQgPHd0
Zi9NYWluVGhyZWFkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpSZW1vdGVM
YXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
LCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSYgZHJhd2luZ0FyZWEpCisgICAgOiBEaXNwbGF5
UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQorICAgICwgbV9kcmF3aW5nQXJlYShkcmF3aW5nQXJl
YSkKK3sKK30KKworUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjp+UmVtb3Rl
TGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKCkKK3sKKyAgICBtX2RyYXdpbmdBcmVhLndp
bGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKHRoaXMpOworfQorCitib29sIFJlbW90ZUxh
eWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCit7
CisgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWlzU2NoZWR1bGVkKCkpCisgICAgICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhJj4obV9kcmF3
aW5nQXJlYSkuc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKKworICAgIHNldElzQWN0
aXZlKHRydWUpOworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlkVXBkYXRl
TGF5ZXJzKCkKK3sKKyAgICBzZXRJc1NjaGVkdWxlZChmYWxzZSk7CisKKyAgICBpZiAoIWlzUHJl
dmlvdXNGcmFtZURvbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0SXNQcmV2aW91c0Zy
YW1lRG9uZShmYWxzZSk7CisgICAgc2V0TW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKworICAgIGhhbmRsZURpc3BsYXlSZWZyZXNoZWRO
b3RpZmljYXRpb25Pbk1haW5UaHJlYWQodGhpcyk7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDgyNjc4NjMuLmEyM2Yx
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIE1lc3NhZ2VEZWNvZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5OwogY2xhc3Mg
RnJhbWVWaWV3OwogY2xhc3MgR3JhcGhpY3NMYXllcjsKIGNsYXNzIEdyYXBoaWNzTGF5ZXJGYWN0
b3J5OwpAQCAtOTUsMTAgKzk2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJhbWVWaWV3Kikg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZh
Y3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
V2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXll
cihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpID0gMDsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIHZpcnR1YWwgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXggcm9vdExheWVyVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFJvb3RMYXllclRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggOWFjMTRkZC4u
YTQ2YzdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyQ0FSZW1vdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckZh
Y3RvcnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8YXRvbWljPgpAQCAtNDUsOCArNDYsMTAg
QEAgY2xhc3MgTWVzc2FnZUVuY29kZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dDsKK2NsYXNzIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvcjsKIAotY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJh
d2luZ0FyZWEsIHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNzIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIDogcHVibGljIERyYXdpbmdBcmVhLCBwdWJsaWMgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNsaWVudCwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvckZhY3RvcnkgeworICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVMYXllclRyZWVEaXNwbGF5
UmVmcmVzaE1vbml0b3I7CiBwdWJsaWM6CiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEo
V2ViUGFnZSosIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2aXJ0dWFs
IH5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpOwpAQCAtNjIsNiArNjUsMTAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0
aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgb3Zl
cnJpZGUgeyByZXR1cm4gdGhpczsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9y
bURpc3BsYXlJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveURpc3BsYXlSZWZyZXNo
TW9uaXRvcihXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IqKTsKKwogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJh
bWVWaWV3Kikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpIG92ZXJyaWRlOwpAQCAtMTM2LDYgKzE0Myw4IEBA
IHByaXZhdGU6CiAKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fY29tbWl0UXVldWU7CiAgICAgUmVm
UHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXI7CisK
KyAgICBIYXNoU2V0PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcio+IG1fZGlz
cGxheVJlZnJlc2hNb25pdG9yczsKIH07CiAKIERSQVdJTkdfQVJFQV9UWVBFX0NBU1RTKFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLCB0eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5
ZXJUcmVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDlmNWY3
YzEuLjZjMDE2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAt
MzEsNiArMzEsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0
ICJSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZUxh
eWVyVHJlZUNvbnRleHQuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvci5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VzLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAi
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIgpAQCAtOTEsNiArOTIsMTgg
QEAgR3JhcGhpY3NMYXllckZhY3RvcnkqIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpncmFw
aGljc0xheWVyRmFjdG9yeSgpCiAgICAgcmV0dXJuIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5n
ZXQoKTsKIH0KIAorUGFzc1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlEKQoreworICAgIFJlZlB0cjxSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3I+IG1vbml0b3IgPSBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OmNyZWF0ZShkaXNwbGF5SUQsICp0aGlzKTsKKyAgICBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRv
cnMuYWRkKG1vbml0b3IuZ2V0KCkpOworICAgIHJldHVybiBtb25pdG9yLnJlbGVhc2UoKTsKK30K
Kwordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6d2lsbERlc3Ryb3lEaXNwbGF5UmVm
cmVzaE1vbml0b3IoRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yKQoreworICAgIG1fZGlz
cGxheVJlZnJlc2hNb25pdG9ycy5yZW1vdmUoc3RhdGljX2Nhc3Q8UmVtb3RlTGF5ZXJUcmVlRGlz
cGxheVJlZnJlc2hNb25pdG9yKj4obW9uaXRvcikpOworfQorCiB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGljc0xheWVyKiByb290
TGF5ZXIpCiB7CiAgICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXIgKj4gY2hpbGRyZW47CkBAIC0zMDks
NiArMzIyLDkgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6ZGlkVXBkYXRlKCkK
ICAgICAvLyBUaGlzIGVtcHR5IHRyYW5zYWN0aW9uIHNlcnZlcyB0byB0cmlnZ2VyIENBJ3MgZ2Fy
YmFnZSBjb2xsZWN0aW9uIG9mIElPU3VyZmFjZXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTYxMTA2
ODc+CiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1p
dF07CisKKyAgICBmb3IgKGF1dG8mIG1vbml0b3IgOiBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcnMp
CisgICAgICAgIG1vbml0b3ItPmRpZFVwZGF0ZUxheWVycygpOwogfQogCiB2b2lkIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjptYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgSW50
U2l6ZSYgY29udGVudHNTaXplKQo=
</data>
<flag name="review"
          id="256472"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232011</attachid>
            <date>2014-05-23 18:57:59 -0700</date>
            <delta_ts>2014-05-23 19:10:14 -0700</delta_ts>
            <desc>for ews</desc>
            <filename>raf.diff</filename>
            <type>text/plain</type>
            <size>82579</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0M2E0OGRkLi42MjIxM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAg
QEAKIDIwMTQtMDUtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgUkVHUkVTU0lPTiAoaU9TIFdlYktpdDIpOiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
ZmlyZXMgbW9yZSB0aGFuIG9uY2UgYmV0d2VlbiBsYXllciB0cmVlIGNvbW1pdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjc5NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTY4Nzc5MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVmlydHVhbGl6ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3Igc28gdGhh
dCBXZWJLaXQyIGNhbiBpbXBsZW1lbnQgaXRzIG93biBEaXNwbGF5UmVmcmVzaE1vbml0b3IgZm9y
IFVJLXNpZGUgY29tcG9zaXRpbmcgdmlld3MuCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBzeW5j
aHJvbml6YXRpb24gb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcyB3aXRoIFVJLXNp
ZGUgY29tcG9zaXRpbmcgcGFpbnRpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIAorICAg
ICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnQ6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICBH
aXZlIHRoZSBDaHJvbWVDbGllbnQgYSBjaGFuY2UgdG8gcHJvdmlkZSB1cyB3aXRoIGEgY3VzdG9t
IERpc3BsYXlSZWZyZXNoTW9uaXRvci4KKyAgICAgICAgSWYgaXQgZG9lcyBub3QsIHdlJ2xsIGZh
bGwgYmFjayB0byBtYWtpbmcgYSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMgb3IKKyAgICAgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisKKyAg
ICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBk
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIFNwbGl0IERpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHAgaW50byBvbmUgZmlsZSBwZXIgY2xhc3MuCisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluIGEg
ZmV3IHBsYWNlcy4KKyAgICAgICAgUmVtb3ZlIHNvbWUgdXNlbGVzcyBjb21tZW50cy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKToK
KyAgICAgICAgVXNlIHRha2VBbnkoKSBhbmQgcmVtb3ZlIGEgRklYTUUgYWJvdXQgaXQgbm90IGV4
aXN0aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQ6OmZpcmVEaXNwbGF5UmVmcmVzaElmTmVlZGVkKToKKyAgICAgICAgVXNlIGFu
IGVhcmx5IHJldHVybiBpbnN0ZWFkIG9mIGhhdmluZyB0aGUgd2hvbGUgZnVuY3Rpb24gYm9keSBp
biBhbiBpZigpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaDogQWRkZWQuCisgICAgICAgIFZp
cnR1YWxpemUgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TIGFuZCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMsCisgICAgICAgIGFuZCBtb3ZlIHRoaW5ncyBzcGVjaWZpYyB0byBlYWNoIG9mIHRoZW0g
b3V0IG9mIERpc3BsYXlSZWZyZXNoTW9uaXRvciBpdHNlbGYuCisKKzIwMTQtMDUtMjMgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgW2lPU10gV0tQREZW
aWV3IHNob3VsZCBoYXZlIGEgcGFnZSBpbmRpY2F0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzEwOQogICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTYzODMwMDM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGJmMjVhZTAuLmFlMGVmYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC04NzUsNiArODc1LDkgQEAgX19aTjdXZWJDb3JlMjFCbG9iRGF0
YUZpbGVSZWZlcmVuY2VDMkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxQmxvYkRhdGFG
aWxlUmVmZXJlbmNlRDJFdgogX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENvcGllckJhc2VJTGIw
RUxiMEVOM1dURjZTdHJpbmdFRTRjb3B5RVJLUzJfCiBfX1pON1dlYkNvcmUyMUNyb3NzVGhyZWFk
Q29waWVyQmFzZUlMYjBFTGIwRU5TXzE5SURCRGF0YWJhc2VNZXRhZGF0YUVFNGNvcHlFUktTMV8K
K19fWk43V2ViQ29yZTIxRGlzcGxheVJlZnJlc2hNb25pdG9yNDZoYW5kbGVEaXNwbGF5UmVmcmVz
aGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkRVB2CitfX1pON1dlYkNvcmUyMURpc3BsYXlSZWZy
ZXNoTW9uaXRvckMyRWoKK19fWk43V2ViQ29yZTIxRGlzcGxheVJlZnJlc2hNb25pdG9yRDJFdgog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXIxMlJlbGllZkxvZ2dlcjE2c19sb2dn
aW5nRW5hYmxlZEUKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMTNyZWxlYXNl
TWVtb3J5RWIKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDUyYjFkZjkuLjdiMGJjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjgsNiArMTA2OCwxMSBAQAogCQkyRDBCNEFB
QzE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8qIElPU3Vy
ZmFjZS5tbSAqLzsgfTsKIAkJMkQyNTM5NjIxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEMjUzOTYwMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHAgKi87IH07CiAJCTJEMjUzOTYzMThDRTdGNjIwMDI3MDIyMiAvKiBJ
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyNTM5NjExOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjLmggKi87IH07CisJCTJEMjlFQ0M1MTkyRUNDODMwMDk4NEI3
OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOUVDQzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi87IH07CisJCTJEMjlFQ0M2MTkyRUNDODMw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0MyMTkyRUNDODMwMDk4NEI3OCAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyRDI5RUNDNzE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUNDMzE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgKi87IH07CisJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3
OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MuaCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdF
cnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQz
QTBFMzUxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEM0VGNDQ4MTkxNzkxNUMwMDAz
NDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4
NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDNFRjQ0OTE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzRUY0NDUxOTE3OTE1QzAwMDM0MTg0
IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbSAqLzsgfTsKQEAgLTEwOTgs
NiArMTEwMyw3IEBACiAJCTJEOUEyNDc1MTVCOUMyRTMwMEQzNDUyNyAvKiBET01ET01TZWN1cml0
eVBvbGljeUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDlBMjQ3MTE1QjlDMjk1MDBEMzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3lJ
bnRlcm5hbC5oICovOyB9OwogCQkyRDlBMjQ3NjE1QjlDMkY0MDBEMzQ1MjcgLyogRE9NRE9NU2Vj
dXJpdHlQb2xpY3kuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUEyNDcwMTVCOUMyOTUwMEQzNDUyNyAvKiBET01ET01TZWN1
cml0eVBvbGljeS5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBGRjcgLyogbGluZWFy
U1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyAqLzsgfTsKKwkJMkRF
NzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNzAwMjIxOTJGRTgy
QTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovOyB9OwogCQkyRTA4ODhE
NDExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTA4ODhEMjExNDg4NDhBMDBBRjQyNjUgLyog
SlNET01Gb3JtRGF0YS5jcHAgKi87IH07CiAJCTJFMDg4OEQ1MTE0ODg0OEEwMEFGNDI2NSAvKiBK
U0RPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTA4ODhEMzExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5oICovOyB9Owog
CQkyRTA4ODhFNjExNDg4NEUyMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTA4ODhFNTExNDg4
NEUyMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgKi87IH07CkBAIC04MDE2LDYg
KzgwMjIsMTEgQEAKIAkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElPU3VyZmFjZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyNTM5NjAxOENFN0Y2MjAwMjcwMjIyIC8qIElt
YWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyNTM5NjExOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJEMjlFQ0MxMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQy
OUVDQzIxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyOUVDQzMxOTJFQ0M4MzAwOTg0
Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjlFQ0M0MTkyRUNDODMwMDk4NEI3OCAvKiBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkQyOUVDQzkxOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTQxNDYw
Q0Q2RjAwMjYzNjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYzNjMzIC8qIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMkZDMDU2MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODA0NSw2ICs4MDU2LDcgQEAKIAkJMkQ5QTI0NzExNUI5QzI5
NTAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NU2VjdXJpdHlQb2xpY3lJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDlBMjQ3MjE1QjlDMkM3MDBEMzQ1MjcgLyogRE9N
RE9NU2VjdXJpdHlQb2xpY3kubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBET01ET01TZWN1cml0eVBvbGljeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ5RjBFMTIxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IGxpbmVh
clNSR0IuaWNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU3MDAyMjE5MkZFODJB
MDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTA4ODhDMzExNDg4M0E5MDBBRjQyNjUgLyogRE9NRm9ybURhdGEu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUZvcm1EYXRhLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Gb3JtRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQzMTE0ODg0OEEwMEFG
NDI2NSAvKiBKU0RPTUZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NRm9ybURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NTU4LDYg
KzE1NTcwLDcgQEAKIAkJNDQxQUYwQTcwRUJBN0JCRjAwNDRFRDRCIC8qIGlvcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQyOUVDQzkxOTJGMUYxRDAw
OTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oICovLAogCQkJCTBGOTdBNjU3MTU1
REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0gKi8sCiAJCQkJMzcy
N0RGRDQxNDJBQUU0NTAwRDQ0OUNCIC8qIEZvbnRDYWNoZUlPUy5tbSAqLywKIAkJCQlDNTgzNjFB
NzE3NDQ1MjNGMDAxNzM1MTEgLyogRm9udFNlcnZpY2VzSU9TLmggKi8sCkBAIC0yMDEzMSw2ICsy
MDE0NCw3IEBACiAJCQkJMzdDMjM2MEUxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAgKi8sCiAJCQkJMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5oICovLAogCQkJCTM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21w
bGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSAqLywKKwkJCQkyREU3MDAyMjE5MkZFODJBMDBC
MDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggKi8sCiAJCQkJNDlBRjJENkIxNDQz
NUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgKi8sCiAJCQkJQjI3
NTM1NEIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRNYWMubW0gKi8sCiAJCQkJQjI3NTM1
NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdE1hYy5tbSAqLywKQEAgLTIwMTkxLDYgKzIw
MjA1LDEwIEBACiAJCQkJQThDQjQxMDIwRTg1QjhBNTAwMzJDNEYwIC8qIERhc2hBcnJheS5oICov
LAogCQkJCTQ5RkM3QTRGMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwICovLAogCQkJCTQ5QUYyRDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3IuaCAqLywKKwkJCQkyRDI5RUNDMTE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50LmNwcCAqLywKKwkJCQkyRDI5RUNDMjE5MkVDQzgzMDA5ODRCNzggLyog
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggKi8sCisJCQkJMkQyOUVDQzMxOTJFQ0M4MzAw
OTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwICovLAorCQkJCTJEMjlF
Q0M0MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggKi8s
CiAJCQkJNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovLAogCQkJ
CUIyNzUzNTNBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKIAkJCQlCMjc1
MzUzQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5oICovLApAQCAtMjMxNzEsNiArMjMx
ODksNyBAQAogCQkJCUJFODhFMEQ5MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEI1QTRDMTgwRTE3QzAwMDhCOEU2NSAvKiBBdWRp
b1RyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERTcwMDIzMTkyRkU4MkEw
MEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRl
QVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMzE4LDYgKzIzMzM3
LDcgQEAKIAkJCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTI2MTg2MzdEQUIwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkQyOUVDQzgxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUZFMTM3NTE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9u
Q3J5cHRvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0MyMzYxMTEwOTdFRTc3MDBF
RjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNjcw
LDYgKzIzNjkwLDcgQEAKIAkJCQk4NUU3MTE5RDBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEJh
c2VFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUNCRUVEMEFBNzYyNjkw
MDU0NEYwQiAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NUU3MTE5RTBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEJhc2VGb250RWxlbWVudEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDI5RUNDQTE5MkYxRjFEMDA5ODRCNzggLyogRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTlBOUM0OTBBQTVFM0JE
MDBCNjk0QjIgLyogRE9NSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3
MTE5RjBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEJvZHlFbGVtZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1MTgzQjQyMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MQlJFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0ODY0LDYgKzI0ODg1LDcgQEAKIAkJCQlCMkZBM0RB
RDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
RkEzREFGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjI3QjI4MkEwQ0VGMEMwNzAwRDM5RDU0IC8qIEpTU1ZHTWlzc2luZ0dseXBo
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQyOUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ5NkUz
QTAxMzk4MTNBNTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTQyQTc5NzBBRTVDOTQzMDBERjU4REYgLyogSlNTVkdOdW1iZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyRkEzREIxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR051bWJlckxpc3QuaCBp
biBIZWFkZXJzICovLApAQCAtMjg0NzAsNiArMjg0OTIsNyBAQAogCQkJCUJFOEVGMDRDMTcxQzkw
MTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJF
NkRGNzBEMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAvKiBKU1ZvaWRDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDI5RUNDNTE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFMjA1MDgx
MThBNDYwQkMwMDgwNjQ3RSAvKiBKU1ZUVEN1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDgy
RDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBN0QyMEY2MjEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yOTE0NCw2ICsyOTE2Nyw3IEBACiAJCQkJOTMzMDlFMTMwOTlF
NjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzMzA5RTE1MDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29udGFpbmluZ0Vs
ZW1lbnRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0
QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQyOUVDQzcx
OTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTdCQzZBM0UxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEV4Y2VwdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJFNkU3QTBDQzU1NkQ1MDA0QTIwNjIgLyogU1FMaXRl
QXV0aG9yaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIyNDY0OTBDQzk4RERCMDBDMDUy
NDAgLyogU1FMaXRlRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGNhNTgyYWQu
LjYyNmJkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUUpCiAKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNp
bmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgpAQCAtMTcxLDcgKzE3Myw3IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjp3
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxhCiAgICAgaWYgKG1f
ZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYgIW1fZG9jdW1lbnQtPnNldHRpbmdzKCktPnJlcXVlc3RB
bmltYXRpb25GcmFtZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogI2lmIFVTRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCi0gICAgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxh
eUlELCB0aGlzKTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOwogI2VuZGlmCkBAIC0xODUsNyArMTg3LDcgQEAgdm9p
ZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKCkKICNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIpCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICBpZiAoIW1faXNVc2luZ1RpbWVyICYmICFt
X2lzVGhyb3R0bGVkKSB7Ci0gICAgICAgIGlmIChEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCktPnNjaGVkdWxlQW5pbWF0aW9uKHRoaXMpKQorICAgICAgICBpZiAo
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjaGVkdWxlQW5p
bWF0aW9uKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1faXNVc2luZ1Rp
bWVyID0gdHJ1ZTsKQEAgLTIyMyw2ICsyMjUsMTMgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIG1vbm90b25pY1RpbWVOb3cpCiAj
ZW5kaWYKIAogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UikKK1Bhc3NSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCk7Cit9Cisj
ZW5kaWYKKwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIuaAppbmRleCBmMjgwOGU3Li43MzI5NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC0zMCw3ICszMCw5IEBA
CiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX1RJTUVSKQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklU
T1IpCi0jaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSAiQ2hyb21l
LmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50LmgiCiAjZW5kaWYKICNpbmNsdWRlICJUaW1lci5oIgogI2VuZGlmCkBAIC04
OSw2ICs5MSw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKICAgICAvLyBPdmVycmlkZSBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVz
dGFtcCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1VzaW5nVGltZXI7CiAgICAgYm9vbCBtX2lzVGhy
b3R0bGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggNjFkNWJhYi4uYzRmNWYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNp
bmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAi
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAt
Mjc5LDcgKzI4MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50RW50
aXJlQ29udGVudHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQWxsb3dzIHBv
cnRzIHRvIGN1c3RvbWl6ZSB0aGUgdHlwZSBvZiBncmFwaGljcyBsYXllcnMgY3JlYXRlZCBieSB0
aGlzIHBhZ2UuCi0gICAgdmlydHVhbCBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXll
ckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVy
RmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQorI2VuZGlmCiAKICAgICAvLyBQYXNzIDAgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRj
aCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5
ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXgg
Yjc4NmM3NC4uMDU1OWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwzMiArMjQsMzAgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgiCiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQogCi0jaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgIkRpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5o
IgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpCi0g
ICAgOiBtX3NjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1fZGlzcGxheUlESXNTZXQoZmFsc2UpCitQ
YXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpj
cmVhdGUoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCiB7Ci19CisgICAgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEID0gY2xpZW50LT5kaXNwbGF5SUQoKTsKIAotRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50Ojp+RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KCkKLXsK
LSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPnVucmVn
aXN0ZXJDbGllbnQodGhpcyk7Ci19CisgICAgaWYgKFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IG1vbml0b3IgPSBjbGllbnQtPmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5
SUQpKQorICAgICAgICByZXR1cm4gbW9uaXRvci5yZWxlYXNlKCk7CiAKLXZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZChkb3VibGUgdGlt
ZXN0YW1wKQotewotICAgIGlmIChtX3NjaGVkdWxlZCkgewotICAgICAgICBtX3NjaGVkdWxlZCA9
IGZhbHNlOwotICAgICAgICBkaXNwbGF5UmVmcmVzaEZpcmVkKHRpbWVzdGFtcCk7Ci0gICAgfQor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpj
cmVhdGUoZGlzcGxheUlEKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4g
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpjcmVhdGUoZGlzcGxheUlEKTsKKyNlbmRpZgogfQog
CiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCkBAIC02MCw5ICs1OCwxMCBAQCBEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAg
ICAgLCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50KDApCiAgICAgLCBtX2Rpc3BsYXlJRChkaXNwbGF5
SUQpCiAgICAgLCBtX2NsaWVudHNUb0JlTm90aWZpZWQobnVsbHB0cikKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAsIG1fZGlzcGxheUxpbmsoMCkKLSNlbmRpZgoreworfQorCitEaXNwbGF5UmVm
cmVzaE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKQogewogfQogCkBAIC04Nyw2ICs4
Niw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
ZGlzcGxheURpZFJlZnJlc2goKQogewogICAgIGRvdWJsZSBtb25vdG9uaWNBbmltYXRpb25TdGFy
dFRpbWU7CisKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAg
ICAgIGlmICghbV9zY2hlZHVsZWQpCkBAIC0xMDcsMTIgKzEwNyw3IEBAIHZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCiAgICAgSGFzaFNldDxEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQqPiBjbGllbnRzVG9CZU5vdGlmaWVkID0gbV9jbGllbnRzOwogICAg
IG1fY2xpZW50c1RvQmVOb3RpZmllZCA9ICZjbGllbnRzVG9CZU5vdGlmaWVkOwogICAgIHdoaWxl
ICghY2xpZW50c1RvQmVOb3RpZmllZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gVGFrZSBhIHJh
bmRvbSBjbGllbnQgb3V0IG9mIHRoZSBzZXQuIE9yZGVyaW5nIGRvZXNuJ3QgbWF0dGVyLgotICAg
ICAgICAvLyBGSVhNRTogV291bGQgcmVhZCBtb3JlIGNsZWFubHkgaWYgSGFzaFNldCBoYWQgYSB0
YWtlIGZ1bmN0aW9uLgotICAgICAgICBhdXRvIGl0ID0gY2xpZW50c1RvQmVOb3RpZmllZC5iZWdp
bigpOwotICAgICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCA9ICppdDsK
LSAgICAgICAgY2xpZW50c1RvQmVOb3RpZmllZC5yZW1vdmUoaXQpOwotCisgICAgICAgIERpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50ID0gY2xpZW50c1RvQmVOb3RpZmllZC50YWtl
QW55KCk7CiAgICAgICAgIGNsaWVudC0+ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQobW9ub3Rv
bmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKIAogICAgICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGlz
IGZ1bmN0aW9uIHdhcyByZWVudGVyZWQuIEluIHRoYXQgY2FzZSwgc3RvcCBpdGVyYXRpbmcKQEAg
LTEyMCw2ICsxMTUsNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJl
ZnJlc2goKQogICAgICAgICBpZiAobV9jbGllbnRzVG9CZU5vdGlmaWVkICE9ICZjbGllbnRzVG9C
ZU5vdGlmaWVkKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgaWYgKG1fY2xpZW50
c1RvQmVOb3RpZmllZCA9PSAmY2xpZW50c1RvQmVOb3RpZmllZCkKICAgICAgICAgbV9jbGllbnRz
VG9CZU5vdGlmaWVkID0gbnVsbHB0cjsKIApAQCAtMTI4LDgyICsxMjQsNyBAQCB2b2lkIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2goKQogICAgICAgICBtX3ByZXZpb3Vz
RnJhbWVEb25lID0gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLT5kaXNwbGF5RGlkUmVmcmVzaCh0aGlzKTsKLX0KLQot
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIsIG1hbmFnZXIsICgpKTsKLSAgICByZXR1cm4g
Jm1hbmFnZXI7Ci19Ci0KLURpc3BsYXlSZWZyZXNoTW9uaXRvciogRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6ZW5zdXJlTW9uaXRvckZvckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQqIGNsaWVudCkKLXsKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9tb25pdG9ycy5maW5kKGNsaWVudC0+bV9kaXNwbGF5SUQpOwotICAgIGlmIChpdCA9
PSBtX21vbml0b3JzLmVuZCgpKSB7Ci0gICAgICAgIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IG1vbml0b3IgPSBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShjbGllbnQtPm1fZGlz
cGxheUlEKTsKLSAgICAgICAgbW9uaXRvci0+YWRkQ2xpZW50KGNsaWVudCk7Ci0gICAgICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvciogcmVzdWx0ID0gbW9uaXRvci5nZXQoKTsKLSAgICAgICAgbV9t
b25pdG9ycy5hZGQoY2xpZW50LT5tX2Rpc3BsYXlJRCwgbW9uaXRvci5yZWxlYXNlKCkpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBpdC0+dmFsdWUtPmFkZENsaWVudChjbGll
bnQpOwotICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7Ci19Ci0KLXZvaWQgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcjo6cmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50KiBjbGllbnQpCi17Ci0gICAgaWYgKCFjbGllbnQtPm1fZGlzcGxheUlESXNTZXQpCi0gICAg
ICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgZW5zdXJlTW9uaXRvckZvckNsaWVudChjbGllbnQp
OwotfQotCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGll
bnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgaWYgKCFjbGll
bnQtPm1fZGlzcGxheUlESXNTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIERpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hcDo6aXRlcmF0b3IgaXQgPSBtX21vbml0b3JzLmZpbmQoY2xpZW50LT5tX2Rp
c3BsYXlJRCk7Ci0gICAgaWYgKGl0ID09IG1fbW9uaXRvcnMuZW5kKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IgPSBpdC0+dmFsdWUu
Z2V0KCk7Ci0gICAgaWYgKG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGllbnQpKSB7Ci0gICAgICAg
IGlmICghbW9uaXRvci0+aGFzQ2xpZW50cygpKQotICAgICAgICAgICAgbV9tb25pdG9ycy5yZW1v
dmUoaXQpOwotICAgIH0KLX0KLQotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpz
Y2hlZHVsZUFuaW1hdGlvbihEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKLXsK
LSAgICBpZiAoIWNsaWVudC0+bV9kaXNwbGF5SURJc1NldCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IgPSBlbnN1cmVN
b25pdG9yRm9yQ2xpZW50KGNsaWVudCk7Ci0KLSAgICBjbGllbnQtPm1fc2NoZWR1bGVkID0gdHJ1
ZTsKLSAgICByZXR1cm4gbW9uaXRvci0+cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpOwotfQotCi12
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRpc3BsYXlEaWRSZWZyZXNoKERpc3Bs
YXlSZWZyZXNoTW9uaXRvciogbW9uaXRvcikKLXsKLSAgICBpZiAobW9uaXRvci0+c2hvdWxkQmVU
ZXJtaW5hdGVkKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fbW9uaXRvcnMuY29udGFpbnMobW9uaXRv
ci0+ZGlzcGxheUlEKCkpKTsKLSAgICAgICAgbV9tb25pdG9ycy5yZW1vdmUobW9uaXRvci0+ZGlz
cGxheUlEKCkpOwotICAgIH0KLX0KLQotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKLXsKLSAgICBpZiAoY2xpZW50LT5tX2Rp
c3BsYXlJRElzU2V0ICYmIGNsaWVudC0+bV9kaXNwbGF5SUQgPT0gZGlzcGxheUlEKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgdW5yZWdpc3RlckNsaWVudChjbGllbnQpOwotICAgIGNsaWVu
dC0+c2V0RGlzcGxheUlEKGRpc3BsYXlJRCk7Ci0gICAgcmVnaXN0ZXJDbGllbnQoY2xpZW50KTsK
LSAgICBpZiAoY2xpZW50LT5tX3NjaGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVBbmltYXRpb24o
Y2xpZW50KTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuZGlzcGxheURpZFJlZnJlc2godGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXgg
MmQ5NTE4NC4uOGZlYjM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDY1ICsyOSwyNCBAQAogI2lm
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybVNjcmVlbi5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBQTEFURk9STShD
T0NPQSkKLXR5cGVkZWYgc3RydWN0IF9fQ1ZEaXNwbGF5TGluayAqQ1ZEaXNwbGF5TGlua1JlZjsK
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpc3BsYXlBbmltYXRpb25D
bGllbnQ7Ci1jbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3I7Ci1jbGFzcyBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyOwotCi0vLwotLy8gQWJzdHJhY3QgdmlydHVhbCBjbGllbnQgd2hpY2gg
cmVjZWl2ZXMgcmVmcmVzaCBmaXJlZCBtZXNzYWdlcyBvbiB0aGUgbWFpbiB0aHJlYWQKLS8vCi1j
bGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQgewotICAgIGZyaWVuZCBjbGFzcyBEaXNw
bGF5UmVmcmVzaE1vbml0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXI7Ci0gICAgCi1wdWJsaWM6Ci0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50
KCk7Ci0gICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KCk7Ci0gICAgCi0g
ICAgdmlydHVhbCB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFtcCkgPSAw
OwotCi1wcml2YXRlOgotICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91Ymxl
IHRpbWVzdGFtcCk7Ci0gICAgCi0gICAgdm9pZCBzZXREaXNwbGF5SUQoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQotICAgIHsKLSAgICAgICAgbV9kaXNwbGF5SUQgPSBkaXNwbGF5SUQ7Ci0g
ICAgICAgIG1fZGlzcGxheUlESXNTZXQgPSB0cnVlOwotICAgIH0KLSAgICAKLSAgICBib29sIG1f
c2NoZWR1bGVkOwotICAgIGJvb2wgbV9kaXNwbGF5SURJc1NldDsKLSAgICBQbGF0Zm9ybURpc3Bs
YXlJRCBtX2Rpc3BsYXlJRDsKLX07Ci0KLS8vCi0vLyBNb25pdG9yIGZvciBkaXNwbGF5IHJlZnJl
c2ggbWVzc2FnZXMgZm9yIGEgZ2l2ZW4gc2NyZWVuCi0vLworY2xhc3MgRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50OwogCiBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgOiBwdWJsaWMgUmVm
Q291bnRlZDxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlSZWZy
ZXNoTW9uaXRvcihkaXNwbGF5SUQpKTsKLSAgICB9Ci0gICAgCi0gICAgfkRpc3BsYXlSZWZyZXNo
TW9uaXRvcigpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
Y3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCopOworICAgIHZpcnR1YWwgfkRpc3Bs
YXlSZWZyZXNoTW9uaXRvcigpOwogICAgIAogICAgIC8vIFJldHVybiB0cnVlIGlmIGNhbGxiYWNr
IHJlcXVlc3Qgd2FzIHNjaGVkdWxlZCwgZmFsc2UgaWYgaXQgY291bGRuJ3QgYmUKICAgICAvLyAo
ZS5nLiwgaGFyZHdhcmUgcmVmcmVzaCBpcyBub3QgYXZhaWxhYmxlKQotICAgIGJvb2wgcmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKCkgPSAwOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlEKTsKICAgICAKICAgICBib29sIGhhc0NsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dHMuc2l6ZSgpOyB9CkBAIC0xMDEsMTIgKzYwLDI2IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3Qg
aW50IG1heEluYWN0aXZlRmlyZUNvdW50ID0gMTA7CiAgICAgICAgIHJldHVybiAhbV9zY2hlZHVs
ZWQgJiYgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA+IG1heEluYWN0aXZlRmlyZUNvdW50OwogICAg
IH0KLSAgICAKLXByaXZhdGU6CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmU7IH0KKyAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1fYWN0aXZl
ID0gYWN0aXZlOyB9CisKKyAgICBib29sIGlzU2NoZWR1bGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
Y2hlZHVsZWQ7IH0KKyAgICB2b2lkIHNldElzU2NoZWR1bGVkKGJvb2wgc2NoZWR1bGVkKSB7IG1f
c2NoZWR1bGVkID0gc2NoZWR1bGVkOyB9CisKKyAgICBib29sIGlzUHJldmlvdXNGcmFtZURvbmUo
KSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzRnJhbWVEb25lOyB9CisgICAgdm9pZCBzZXRJc1By
ZXZpb3VzRnJhbWVEb25lKGJvb2wgZG9uZSkgeyBtX3ByZXZpb3VzRnJhbWVEb25lID0gZG9uZTsg
fQorCisgICAgdm9pZCBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUoZG91YmxlIHN0YXJ0
VGltZSkgeyBtX21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQorCisg
ICAgTXV0ZXgmIG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQorCitwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBz
dGF0aWMgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFk
KHZvaWQqIGRhdGEpOwogCitwcml2YXRlOgogICAgIHZvaWQgZGlzcGxheURpZFJlZnJlc2goKTsK
LSAgICBzdGF0aWMgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWlu
VGhyZWFkKHZvaWQqIGRhdGEpOwogCiAgICAgZG91YmxlIG1fbW9ub3RvbmljQW5pbWF0aW9uU3Rh
cnRUaW1lOwogICAgIGJvb2wgbV9hY3RpdmU7CkBAIC0xMTgsNTAgKzkxLDYgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hTZXQ8RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwog
ICAgIEhhc2hTZXQ8RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kj4qIG1fY2xpZW50c1RvQmVO
b3RpZmllZDsKLQotI2lmIFBMQVRGT1JNKE1BQykKLXB1YmxpYzoKLSAgICB2b2lkIGRpc3BsYXlM
aW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMsIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcyk7Ci1w
cml2YXRlOgotICAgIENWRGlzcGxheUxpbmtSZWYgbV9kaXNwbGF5TGluazsKLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oSU9TKQotcHVibGljOgotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZChkb3Vi
bGUgbm93U2Vjb25kcyk7Ci1wcml2YXRlOgotICAgIHZvaWQqIG1fZGlzcGxheUxpbms7Ci0jZW5k
aWYKLX07Ci0KLS8vCi0vLyBTaW5nbGV0b24gbWFuYWdlciBmb3IgYWxsIHRoZSBEaXNwbGF5UmVm
cmVzaE1vbml0b3JzLiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIAotLy8gb3V0c2lkZSB3
b3JsZC4gSXQgZGlzdHJpYnV0ZXMgcmVxdWVzdHMgdG8gdGhlIGFwcHJvcHJpYXRlIG1vbml0b3Iu
IFdoZW4gdGhlIGRpc3BsYXkKLS8vIHJlZnJlc2ggZXZlbnQgZmlyZXMsIHRoZSBwYXNzZWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50IGlzIGNhbGxlZCBkaXJlY3RseSBvbgotLy8gdGhlIG1h
aW4gdGhyZWFkLgotLy8KLWNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgewotcHVi
bGljOgotICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyKiBzaGFyZWRNYW5h
Z2VyKCk7Ci0gICAgCi0gICAgdm9pZCByZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQqKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50Kik7Ci0KLSAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCopOwotICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKLQotcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOwotICAgIHZvaWQgZGlzcGxheURp
ZFJlZnJlc2goRGlzcGxheVJlZnJlc2hNb25pdG9yKik7Ci0gICAgCi0gICAgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcigpIHsgfQotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogZW5zdXJl
TW9uaXRvckZvckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKLQotICAgIC8v
IFdlIGtub3cgbm90aGluZyBhYm91dCB0aGUgdmFsdWVzIG9mIFBsYXRmb3JtRGlzcGxheUlEcywg
c28gdXNlIFVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzLgotICAgIC8vIEZJWE1FOiBTaW5j
ZSB3ZSBrbm93IG5vdGhpbmcgYWJvdXQgdGhlc2UgdmFsdWVzLCB0aGlzIGlzIG5vdCBzdWZmaWNp
ZW50LgotICAgIC8vIEV2ZW4gd2l0aCBVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cywgdGhl
cmUgYXJlIHN0aWxsIHR3byBzcGVjaWFsIHZhbHVlcyB1c2VkIGZvciBlbXB0eSBhbmQgZGVsZXRl
ZCBoYXNoIHRhYmxlIHNsb3RzLgotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4sIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYXA7Ci0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFwIG1fbW9uaXRvcnM7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jMmNkYTM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQuaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklU
T1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNpbmNsdWRlICJEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKQor
ICAgIDogbV9zY2hlZHVsZWQoZmFsc2UpCisgICAgLCBtX2Rpc3BsYXlJRElzU2V0KGZhbHNlKQor
eworfQorCitEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6On5EaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQoKQoreworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS51bnJlZ2lzdGVyQ2xpZW50KHRoaXMpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFt
cCkKK3sKKyAgICBpZiAoIW1fc2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nj
aGVkdWxlZCA9IGZhbHNlOworICAgIGRpc3BsYXlSZWZyZXNoRmlyZWQodGltZXN0YW1wKTsKK30K
KworfQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9O
SVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjZlZThkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnRfaAorI2RlZmluZSBEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnRfaAorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X0RJU1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOworY2xhc3MgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKKyAg
ICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKKworICAgIC8vIEFsd2F5
cyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVm
cmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApID0gMDsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0
Zm9ybURpc3BsYXlJRCkgY29uc3QgPSAwOworCisgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KKyAgICBib29sIGhhc0Rpc3BsYXlJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlESXNTZXQ7IH0KKyAgICB2b2lkIHNldERpc3Bs
YXlJRChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAgeworICAgICAgICBtX2Rpc3Bs
YXlJRCA9IGRpc3BsYXlJRDsKKyAgICAgICAgbV9kaXNwbGF5SURJc1NldCA9IHRydWU7CisgICAg
fQorCisgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIGlzU2NoZWR1bGVkKSB7IG1fc2NoZWR1
bGVkID0gaXNTY2hlZHVsZWQ7IH0KKyAgICBib29sIGlzU2NoZWR1bGVkKCkgY29uc3QgeyByZXR1
cm4gbV9zY2hlZHVsZWQ7IH0KKworICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQo
ZG91YmxlIHRpbWVzdGFtcCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3NjaGVkdWxlZDsKKyAg
ICBib29sIG1fZGlzcGxheUlESXNTZXQ7CisgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5
SUQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3ZWI5MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCisKKyNpZiBVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJl
c2hNb25pdG9yLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgiCisj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIo
KQoreworfQorCitEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyJiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFu
YWdlci5nZXQoKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjplbnN1cmVNb25pdG9yRm9yQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudCogY2xpZW50KQoreworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hcDo6aXRlcmF0
b3IgaXQgPSBtX21vbml0b3JzLmZpbmQoY2xpZW50LT5kaXNwbGF5SUQoKSk7CisgICAgaWYgKGl0
ID09IG1fbW9uaXRvcnMuZW5kKCkpIHsKKyAgICAgICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gbW9uaXRvciA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7Cisg
ICAgICAgIG1vbml0b3ItPmFkZENsaWVudChjbGllbnQpOworICAgICAgICBEaXNwbGF5UmVmcmVz
aE1vbml0b3IqIHJlc3VsdCA9IG1vbml0b3IuZ2V0KCk7CisgICAgICAgIG1fbW9uaXRvcnMuYWRk
KGNsaWVudC0+ZGlzcGxheUlEKCksIG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgaXQtPnZhbHVlLT5hZGRDbGllbnQoY2xpZW50KTsKKyAgICBy
ZXR1cm4gaXQtPnZhbHVlLmdldCgpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50
KQoreworICAgIGlmICghY2xpZW50LT5oYXNEaXNwbGF5SUQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZW5zdXJlTW9uaXRvckZvckNsaWVudChjbGllbnQpOworfQorCit2b2lkIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQtPmhhc0Rpc3BsYXlJRCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9tb25pdG9ycy5maW5kKGNsaWVudC0+ZGlzcGxheUlEKCkpOworICAgIGlmIChpdCA9
PSBtX21vbml0b3JzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBEaXNwbGF5UmVmcmVz
aE1vbml0b3IqIG1vbml0b3IgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgaWYgKG1vbml0b3ItPnJl
bW92ZUNsaWVudChjbGllbnQpKSB7CisgICAgICAgIGlmICghbW9uaXRvci0+aGFzQ2xpZW50cygp
KQorICAgICAgICAgICAgbV9tb25pdG9ycy5yZW1vdmUoaXQpOworICAgIH0KK30KKworYm9vbCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzY2hlZHVsZUFuaW1hdGlvbihEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoIWNsaWVudC0+aGFzRGlzcGxh
eUlEKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
ciogbW9uaXRvciA9IGVuc3VyZU1vbml0b3JGb3JDbGllbnQoY2xpZW50KTsKKworICAgIGNsaWVu
dC0+c2V0SXNTY2hlZHVsZWQodHJ1ZSk7CisgICAgcmV0dXJuIG1vbml0b3ItPnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpk
aXNwbGF5RGlkUmVmcmVzaChEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IpCit7CisgICAg
aWYgKG1vbml0b3ItPnNob3VsZEJlVGVybWluYXRlZCgpKSB7CisgICAgICAgIEFTU0VSVChtX21v
bml0b3JzLmNvbnRhaW5zKG1vbml0b3ItPmRpc3BsYXlJRCgpKSk7CisgICAgICAgIG1fbW9uaXRv
cnMucmVtb3ZlKG1vbml0b3ItPmRpc3BsYXlJRCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7
CisgICAgaWYgKGNsaWVudC0+aGFzRGlzcGxheUlEKCkgJiYgY2xpZW50LT5kaXNwbGF5SUQoKSA9
PSBkaXNwbGF5SUQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1bnJlZ2lzdGVyQ2xpZW50
KGNsaWVudCk7CisgICAgY2xpZW50LT5zZXREaXNwbGF5SUQoZGlzcGxheUlEKTsKKyAgICByZWdp
c3RlckNsaWVudChjbGllbnQpOworICAgIGlmIChjbGllbnQtPmlzU2NoZWR1bGVkKCkpCisgICAg
ICAgIHNjaGVkdWxlQW5pbWF0aW9uKGNsaWVudCk7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2YTdjOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlcl9oCisjZGVmaW5lIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXJfaAorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikK
KworI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciB7CisgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI+OworcHVibGlj
OgorICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyJiBzaGFyZWRNYW5hZ2Vy
KCk7CisgICAgCisgICAgdm9pZCByZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50Kik7CisKKyAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCopOworICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOworICAgIHZvaWQgZGlzcGxheURpZFJl
ZnJlc2goRGlzcGxheVJlZnJlc2hNb25pdG9yKik7CisgICAgCisgICAgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlcigpIHsgfQorICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXIoKTsKKworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogZW5zdXJlTW9uaXRvckZvckNs
aWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworICAgIC8vIFdlIGtub3cgbm90
aGluZyBhYm91dCB0aGUgdmFsdWVzIG9mIFBsYXRmb3JtRGlzcGxheUlEcywgc28gdXNlIFVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzLgorICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBrbm93IG5v
dGhpbmcgYWJvdXQgdGhlc2UgdmFsdWVzLCB0aGlzIGlzIG5vdCBzdWZmaWNpZW50LgorICAgIC8v
IEV2ZW4gd2l0aCBVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cywgdGhlcmUgYXJlIHN0aWxs
IHR3byBzcGVjaWFsIHZhbHVlcyB1c2VkIGZvciBlbXB0eSBhbmQgZGVsZXRlZCBoYXNoIHRhYmxl
IHNsb3RzLgorICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4sIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA7CisgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFwIG1fbW9uaXRvcnM7Cit9OworCit9CisKKyNlbmRpZiAv
LyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJVcGRhdGVyLmNwcAppbmRleCA4OTg2N2RmLi5jYjY2ZjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIu
Y3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllclVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM2LDkgKzM2LDkgQEAgR3JhcGhpY3NMYXllclVwZGF0ZXI6OkdyYXBo
aWNzTGF5ZXJVcGRhdGVyKEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50KiBjbGllbnQsIFAKICAg
ICAsIG1fc2NoZWR1bGVkKGZhbHNlKQogewogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpCi0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLT5yZWdpc3RlckNsaWVudCh0aGlzKTsKLSAgICBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQsIHRoaXMpOwotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS0+c2NoZWR1bGVBbmltYXRpb24odGhpcyk7CisgICAgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlZ2lzdGVyQ2xpZW50KHRoaXMpOworICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS53aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NoZWR1bGVBbmltYXRpb24odGhpcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOwogI2VuZGlmCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclVwZGF0ZXI6OnNjaGVkdWxlVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwog
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKLSAgICBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPnNjaGVkdWxlQW5p
bWF0aW9uKHRoaXMpOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlvbih0aGlzKTsKICNlbmRpZgogICAgIG1fc2NoZWR1bGVk
ID0gdHJ1ZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6
c2NoZWR1bGVVcGRhdGUoKQogdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6c2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwg
dGhpcyk7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZGlzcGxheUlEKTsKICNlbmRpZgpAQCAtNzgsNCArNzgsMTEgQEAgdm9pZCBHcmFw
aGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1wKQog
ICAgICAgICBtX2NsaWVudC0+Zmx1c2hMYXllcnNTb29uKHRoaXMpOwogfQogCisjaWYgVVNFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKK1Bhc3NSZWZQdHI8RGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBHcmFwaGljc0xheWVyVXBkYXRlcjo6Y3JlYXRlRGlzcGxheVJlZnJl
c2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3Bs
YXlJRCkgOiBudWxscHRyOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
VXBkYXRlci5oCmluZGV4IDU4ZTE5MGQuLjNiYmI2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuaApAQCAtMjYs
NyArMjYsNyBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVXBkYXRlcl9oCiAjZGVmaW5lIEdyYXBo
aWNzTGF5ZXJVcGRhdGVyX2gKIAotI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgor
I2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgR3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkdy
YXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoTGF5
ZXJzU29vbihHcmFwaGljc0xheWVyVXBkYXRlciopID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxh
dGZvcm1EaXNwbGF5SUQpIGNvbnN0ID0gMDsKIH07CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJVcGRh
dGVyCkBAIC01MSw2ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZVVwZGF0ZSgp
OwogICAgIHZvaWQgc2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIAorI2lmIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25p
dG9yKFBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXAp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmFlMmE1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TX2gKKyNkZWZpbmUgRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TX2gKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgV2ViRGlzcGxheUxpbmtIYW5kbGVyOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyA6IHB1
YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUz4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TKGRpc3BsYXlJRCkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIH5EaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1MoKTsKKworICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZChkb3Vi
bGUgbm93U2Vjb25kcyk7CisgICAgdmlydHVhbCBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2so
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MoUGxhdGZvcm1EaXNwbGF5SUQpOworICAgIFJldGFpblB0cjxXZWJEaXNwbGF5TGlua0hh
bmRsZXI+IG1faGFuZGxlcjsKK307CisKK30KKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1B
VElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3JJT1MubW0KaW5kZXggYzMzOGUwZi4uZThlMjc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywzOCArMjMsMzMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
bmNsdWRlICJjb25maWcuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRGlzcGxheVJl
ZnJlc2hNb25pdG9ySU9TLmgiCiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQogCi0jaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCi0KLSNp
bmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotCiAjaW1wb3J0ICJXZWJDb3JlVGhy
ZWFkLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9D
dXJyZW50VGltZS5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV2ViRGlzcGxheUxpbmtIYW5kbGVyIDogTlNPYmpl
Y3QKIHsKLSAgICBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1fbW9uaXRvcjsKLSAg
ICBDQURpc3BsYXlMaW5rKiBtX2Rpc3BsYXlMaW5rOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUyogbV9tb25pdG9yOworICAgIENBRGlzcGxheUxpbmsgKm1fZGlzcGxheUxpbms7CiB9CiAK
LS0gKGlkKWluaXRXaXRoTW9uaXRvcjooV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yKilt
b25pdG9yOworLSAoaWQpaW5pdFdpdGhNb25pdG9yOihEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1Mq
KW1vbml0b3I7CiAtICh2b2lkKWhhbmRsZURpc3BsYXlMaW5rOihDQURpc3BsYXlMaW5rICopc2Vu
ZGVyOwogLSAodm9pZClpbnZhbGlkYXRlOwogCiBAZW5kCiAKLXN0YXRpYyBkb3VibGUgbWVkaWFU
aW1lVG9DdXJyZW50VGltZShDRlRpbWVJbnRlcnZhbCB0KQotewotICAgIHJldHVybiBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIHQgLSBDQUN1cnJlbnRNZWRpYVRpbWUoKTsKLX0KLQog
QGltcGxlbWVudGF0aW9uIFdlYkRpc3BsYXlMaW5rSGFuZGxlcgogCi0tIChpZClpbml0V2l0aE1v
bml0b3I6KFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvciopbW9uaXRvcgorLSAoaWQpaW5p
dFdpdGhNb25pdG9yOihEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MqKW1vbml0b3IKIHsKICAgICBp
ZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewogICAgICAgICBtX21vbml0b3IgPSBtb25pdG9yOwpA
QCAtODYsMzQgKzgxLDQ0IEBAIHN0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShD
RlRpbWVJbnRlcnZhbCB0KQogQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gCi1EaXNwbGF5
UmVmcmVzaE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKQorCitEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1M6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyhQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCisgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQogewotICAg
IFsoV2ViRGlzcGxheUxpbmtIYW5kbGVyKikgbV9kaXNwbGF5TGluayBpbnZhbGlkYXRlXTsKLSAg
ICBbKFdlYkRpc3BsYXlMaW5rSGFuZGxlciopIG1fZGlzcGxheUxpbmsgcmVsZWFzZV07CiB9CiAK
LWJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUygpCiB7Ci0g
ICAgaWYgKCFtX2FjdGl2ZSkKKyAgICBbbV9oYW5kbGVyIGludmFsaWRhdGVdOworfQorCitib29s
IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCit7Cisg
ICAgaWYgKCFpc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAg
IGlmICghbV9kaXNwbGF5TGluaykgewotICAgICAgICBtX2Rpc3BsYXlMaW5rID0gW1tXZWJEaXNw
bGF5TGlua0hhbmRsZXIgYWxsb2NdIGluaXRXaXRoTW9uaXRvcjp0aGlzXTsKLSAgICAgICAgbV9h
Y3RpdmUgPSB0cnVlOworCisgICAgaWYgKCFtX2hhbmRsZXIpIHsKKyAgICAgICAgbV9oYW5kbGVy
ID0gYWRvcHROUyhbW1dlYkRpc3BsYXlMaW5rSGFuZGxlciBhbGxvY10gaW5pdFdpdGhNb25pdG9y
OnRoaXNdKTsKKyAgICAgICAgc2V0SXNBY3RpdmUodHJ1ZSk7CiAgICAgfQogCi0gICAgbV9zY2hl
ZHVsZWQgPSB0cnVlOworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheUxpbmtGaXJlZChkb3Vi
bGUgbm93U2Vjb25kcykKK3N0YXRpYyBkb3VibGUgbWVkaWFUaW1lVG9DdXJyZW50VGltZShDRlRp
bWVJbnRlcnZhbCB0KQoreworICAgIC8vIEZJWE1FOiBUaGlzIG1heSBiZSBhIG5vLW9wIGlmIENB
Q3VycmVudE1lZGlhVGltZSBpcyAqZ3VhcmFudGVlZCogdG8gYmUgbWFjaF9hYnNvbHV0ZV90aW1l
LgorICAgIHJldHVybiBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIHQgLSBDQUN1cnJl
bnRNZWRpYVRpbWUoKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OmRpc3Bs
YXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMpCiB7Ci0gICAgaWYgKCFtX3ByZXZpb3VzRnJh
bWVEb25lKQorICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3ByZXZpb3VzRnJhbWVEb25lID0gZmFsc2U7Ci0gICAgbV9tb25vdG9uaWNBbmlt
YXRpb25TdGFydFRpbWUgPSBtZWRpYVRpbWVUb0N1cnJlbnRUaW1lKG5vd1NlY29uZHMpOworICAg
IHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOworICAgIHNldE1vbm90b25pY0FuaW1hdGlv
blN0YXJ0VGltZShtZWRpYVRpbWVUb0N1cnJlbnRUaW1lKG5vd1NlY29uZHMpKTsKIAogICAgIGhh
bmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQodGhpcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCmluZGV4IGU1NDJjYmYuLjUxMjViYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCw0NyArMjQsNTIgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmgiCiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQog
Ci0jaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCi0KICNpbmNsdWRlIDxRdWFydHpD
b3JlL1F1YXJ0ekNvcmUuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDVlJl
dHVybiBkaXNwbGF5TGlua0NhbGxiYWNrKENWRGlzcGxheUxpbmtSZWYsIGNvbnN0IENWVGltZVN0
YW1wKiBub3csIGNvbnN0IENWVGltZVN0YW1wKiBvdXRwdXRUaW1lLCBDVk9wdGlvbkZsYWdzLCBD
Vk9wdGlvbkZsYWdzKiwgdm9pZCogZGF0YSkKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKKyAgICA6
IERpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCisgICAgLCBtX2Rpc3BsYXlMaW5rKG51
bGxwdHIpCiB7Ci0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yKiBtb25pdG9yID0gc3RhdGljX2Nh
c3Q8RGlzcGxheVJlZnJlc2hNb25pdG9yKj4oZGF0YSk7Ci0KLSAgICBkb3VibGUgbm93U2Vjb25k
cyA9IHN0YXRpY19jYXN0PGRvdWJsZT4obm93LT52aWRlb1RpbWUpIC8gc3RhdGljX2Nhc3Q8ZG91
YmxlPihub3ctPnZpZGVvVGltZVNjYWxlKTsKLSAgICBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZSkgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZVNjYWxlKTsKLSAgICBtb25pdG9yLT5kaXNw
bGF5TGlua0ZpcmVkKG5vd1NlY29uZHMsIG91dHB1dFRpbWVTZWNvbmRzKTsKLQotICAgIHJldHVy
biBrQ1ZSZXR1cm5TdWNjZXNzOwogfQogCi1EaXNwbGF5UmVmcmVzaE1vbml0b3I6On5EaXNwbGF5
UmVmcmVzaE1vbml0b3IoKQorRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjp+RGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjKCkKIHsKICAgICBpZiAobV9kaXNwbGF5TGluaykgewogICAgICAgICBDVkRp
c3BsYXlMaW5rU3RvcChtX2Rpc3BsYXlMaW5rKTsKICAgICAgICAgQ1ZEaXNwbGF5TGlua1JlbGVh
c2UobV9kaXNwbGF5TGluayk7Ci0gICAgICAgIG1fZGlzcGxheUxpbmsgPSAwOworICAgICAgICBt
X2Rpc3BsYXlMaW5rID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBjYW5jZWxDYWxsT25NYWluVGhy
ZWFkKERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6aGFuZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNh
dGlvbk9uTWFpblRocmVhZCwgdGhpcyk7CiB9CiAKLWJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3N0YXRpYyBDVlJldHVybiBkaXNwbGF5TGlua0Nh
bGxiYWNrKENWRGlzcGxheUxpbmtSZWYsIGNvbnN0IENWVGltZVN0YW1wKiBub3csIGNvbnN0IENW
VGltZVN0YW1wKiBvdXRwdXRUaW1lLCBDVk9wdGlvbkZsYWdzLCBDVk9wdGlvbkZsYWdzKiwgdm9p
ZCogZGF0YSkKK3sKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMqIG1vbml0b3IgPSBzdGF0
aWNfY2FzdDxEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMqPihkYXRhKTsKKworICAgIGRvdWJsZSBu
b3dTZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZSkgLyBzdGF0aWNf
Y2FzdDxkb3VibGU+KG5vdy0+dmlkZW9UaW1lU2NhbGUpOworICAgIGRvdWJsZSBvdXRwdXRUaW1l
U2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lKSAvIHN0
YXRpY19jYXN0PGRvdWJsZT4ob3V0cHV0VGltZS0+dmlkZW9UaW1lU2NhbGUpOworICAgIG1vbml0
b3ItPmRpc3BsYXlMaW5rRmlyZWQobm93U2Vjb25kcywgb3V0cHV0VGltZVNlY29uZHMpOworCisg
ICAgcmV0dXJuIGtDVlJldHVyblN1Y2Nlc3M7Cit9CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAgICBpZiAoIW1fYWN0aXZlKQor
ICAgIGlmICghaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFt
X2Rpc3BsYXlMaW5rKSB7Ci0gICAgICAgIG1fYWN0aXZlID0gZmFsc2U7Ci0gICAgICAgIENWUmV0
dXJuIGVycm9yID0gQ1ZEaXNwbGF5TGlua0NyZWF0ZVdpdGhDR0Rpc3BsYXkobV9kaXNwbGF5SUQs
ICZtX2Rpc3BsYXlMaW5rKTsKKyAgICAgICAgc2V0SXNBY3RpdmUoZmFsc2UpOworICAgICAgICBD
VlJldHVybiBlcnJvciA9IENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5KGRpc3BsYXlJ
RCgpLCAmbV9kaXNwbGF5TGluayk7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNzYsMjYgKzgxLDI2IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKICAgICAgICAgaWYgKGVycm9yKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAg
c2V0SXNBY3RpdmUodHJ1ZSk7CiAgICAgfQogCi0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4
KTsKLSAgICBtX3NjaGVkdWxlZCA9IHRydWU7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtdXRleCgp
KTsKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29u
ZHMsIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcykKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpkaXNwbGF5TGlua0ZpcmVkKGRvdWJsZSBub3dTZWNvbmRzLCBkb3VibGUgb3V0cHV0VGlt
ZVNlY29uZHMpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKLSAgICBpZiAoIW1f
cHJldmlvdXNGcmFtZURvbmUpCisgICAgTXV0ZXhMb2NrZXIgbG9jayhtdXRleCgpKTsKKyAgICBp
ZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcmV2
aW91c0ZyYW1lRG9uZSA9IGZhbHNlOworICAgIHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2Up
OwogCiAgICAgZG91YmxlIHdlYktpdE1vbm90b25pY05vdyA9IG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOwogICAgIGRvdWJsZSB0aW1lVW50aWxPdXRwdXQgPSBvdXRwdXRUaW1lU2Vjb25k
cyAtIG5vd1NlY29uZHM7CiAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIHVzaW5nIHdlYktp
dE1vbm90b25pY05vdz8KLSAgICBtX21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IHdlYktp
dE1vbm90b25pY05vdyArIHRpbWVVbnRpbE91dHB1dDsKKyAgICBzZXRNb25vdG9uaWNBbmltYXRp
b25TdGFydFRpbWUod2ViS2l0TW9ub3RvbmljTm93ICsgdGltZVVudGlsT3V0cHV0KTsKIAogICAg
IGNhbGxPbk1haW5UaHJlYWQoaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5vdGlmaWNhdGlvbk9uTWFp
blRocmVhZCwgdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJmZjM5MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjX2gKKyNkZWZpbmUg
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjX2gKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aCIKKwordHlwZWRlZiBzdHJ1Y3QgX19DVkRpc3BsYXlMaW5rICpDVkRpc3BsYXlMaW5rUmVmOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyA6
IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYz4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjKGRpc3BsYXlJRCkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIH5E
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoKTsKKworICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZChk
b3VibGUgbm93U2Vjb25kcywgZG91YmxlIG91dHB1dFRpbWVTZWNvbmRzKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyhQbGF0Zm9ybURpc3BsYXlJRCk7Cisg
ICAgQ1ZEaXNwbGF5TGlua1JlZiBtX2Rpc3BsYXlMaW5rOworfTsKKworfQorCisjZW5kaWYgLy8g
VVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CmluZGV4IDEwYWMwOTMuLjBkMjhiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0zOTI1LDQgKzM5MjUsMTQgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50UmVsYXRlZE1pbGVzdG9uZXNUaW1lckZpcmVk
KFRpbWVyPFJlbmRlckxheWVyQ28KICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZmlyZVBh
aW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogfQogCitQYXNzUmVmUHRyPERpc3BsYXlS
ZWZyZXNoTW9uaXRvcj4gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjcmVhdGVEaXNwbGF5UmVmcmVz
aE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKSBjb25zdAoreworICAgIEZyYW1l
JiBmcmFtZSA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5mcmFtZSgpOworICAgIFBhZ2UqIHBh
Z2UgPSBmcmFtZS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5jcmVhdGVEaXNwbGF5UmVm
cmVzaE1vbml0b3IoZGlzcGxheUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4
IGU3MGY1NThkZC4uMDFmOTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMzg5LDYgKzM4OSw3IEBAIHByaXZhdGU6CiAgICAg
UGFnZSogcGFnZSgpIGNvbnN0OwogICAgIAogICAgIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFw
aGljc0xheWVyRmFjdG9yeSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RGlzcGxheVJlZnJlc2hN
b25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNv
bnN0OwogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcigpIGNv
bnN0OwogCiAgICAgLy8gV2hldGhlciBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciBhbmltYXRpb24g
ZW5mb3JjZXMgdGhlIG5lZWQgZm9yIGEgY29tcG9zaXRpbmcgbGF5ZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
N2VmYWFjYy4uOTFiOGZlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNC0wNS0y
MyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdS
RVNTSU9OIChpT1MgV2ViS2l0Mik6IHJlcXVlc3RBbmltYXRpb25GcmFtZSBmaXJlcyBtb3JlIHRo
YW4gb25jZSBiZXR3ZWVuIGxheWVyIHRyZWUgY29tbWl0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNzk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xNjg3NzkwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYTo6Z3JhcGhpY3NMYXllckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpEcmF3
aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgUGx1bWIgdGhl
IERpc3BsYXlSZWZyZXNoTW9uaXRvciByZXF1ZXN0IHRocm91Z2ggdG8gdGhlIERyYXdpbmdBcmVh
LgorICAgICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSB3aWxsIGltcGxlbWVudCBhbmQg
cmV0dXJuIGEgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW06IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OlJlbW90
ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6flJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgIFdoZW4gcmVx
dWVzdGluZyBhIGRpc3BsYXkgcmVmcmVzaCBjYWxsYmFjaywgc2NoZWR1bGUgYSBsYXllciBjb21t
aXQuCisgICAgICAgIEl0IG1heSBlbmQgdXAgYmVpbmcgZW1wdHksIGJ1dCB3aWxsIHN0aWxsIGNh
bGwgdXMgYmFjayB3aXRoIGEgZGlkVXBkYXRlLAorICAgICAgICB1cG9uIHdoaWNoIHdlJ2xsIGZp
cmUgdGhlIGNhbGxiYWNrLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6ZGlkVXBkYXRlTGF5ZXJzKToKKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJl
ZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OndpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgS2VlcCB0cmFj
ayBvZiB0aGUgc2V0IG9mIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMuCisKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZSk6CisgICAgICAgIEZpcmUg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcyBvbmNlIHRoZSBVSSBwcm9jZXNzIGNvbW1p
dHMgdGhlIG5ldyBsYXllciB0cmVlLgorCiAyMDE0LTA1LTIzICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFuIGFzc2VydGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
Nzg0ODM0Li40MjZiYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzAsNiArNTMwLDggQEAKIAkJMkQyOEYzRTUxODg1Q0ND
MTAwNEI5RUFFIC8qIFdlYkRhdGFiYXNlTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjhGM0UxMTg4NUNDQzEwMDRCOUVBRSAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXJJT1MubW0gKi87IH07CiAJCTJEMjhGM0U2MTg4NUNDQzEwMDRCOUVB
RSAvKiBXZWJFZGl0b3JDbGllbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDI4RjNFMjE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRpdG9yQ2xp
ZW50SU9TLm1tICovOyB9OwogCQkyRDI4RjNFNzE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRnJhbWVM
b2FkZXJDbGllbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDI4RjNFMzE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRnJhbWVMb2FkZXJDbGllbnRJ
T1MubW0gKi87IH07CisJCTJEMjlFQ0QwMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRy
ZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0NFMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRy
ZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCAqLzsgfTsKKwkJMkQyOUVDRDExOTJGMkMyRTAwOTg0
Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0NGMTkyRjJDMkUwMDk4
NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0gKi87IH07CiAJ
CTJEMkFERjA5MTYzNjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkFERjA2MTYz
NjJEQzcwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQy
QURGMEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwMzE2MzYyNDM1MDAx
OTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQyQURGMTAxNjM2NEQ4
MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwRTE2MzY0RDgyMDAxOTdFNDcg
LyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSAqLzsgfTsKQEAgLTI0NjUsNiArMjQ2Nyw4
IEBACiAJCTJEMjhGM0UxMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEYXRhYmFzZU1h
bmFnZXJJT1MubW07IHBhdGggPSBpb3MvV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDI4RjNFMjE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRWRp
dG9yQ2xpZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
V2ViRWRpdG9yQ2xpZW50SU9TLm1tOyBwYXRoID0gaW9zL1dlYkVkaXRvckNsaWVudElPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEYzRTMxODg1Q0NDMTAwNEI5RUFFIC8q
IFdlYkZyYW1lTG9hZGVyQ2xpZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW07IHBhdGggPSBpb3MvV2ViRnJh
bWVMb2FkZXJDbGllbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjlF
Q0NFMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlRGlz
cGxheVJlZnJlc2hNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjlF
Q0NGMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXll
clRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEMkFERjAyMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdpbkFubm90YXRpb24uaDsgcGF0
aCA9IFBERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2luQW5ub3RhdGlv
bi5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRDJBREYwNTE2MzYyREM3MDAxOTdFNDcgLyogUERGUGx1Z2luVGV4dEFu
bm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERGUGx1Z2luVGV4
dEFubm90YXRpb24uaDsgcGF0aCA9IFBERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0OSw2ICs0NjUzLDE1IEBACiAJCQluYW1lID0g
aW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMkQyOUVDQ0QxOTJGMkMy
RTAwOTg0Qjc4IC8qIENvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkyRDI5RUNDRTE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlz
cGxheVJlZnJlc2hNb25pdG9yLmggKi8sCisJCQkJMkQyOUVDQ0YxOTJGMkMyRTAwOTg0Qjc4IC8q
IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbSAqLywKKwkJCSk7CisJCQlw
YXRoID0gQ29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkyREE5NDQ3
NzE4ODRFM0FCMDBFRDg2REIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTU1NDYsNiArNTU1OSw3IEBACiAJCUJDMDMyRDVFMTBGNDM3MkIwMDU4
QzE1QSAvKiBXZWJQYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkyRDI5RUNDRDE5MkYyQzJFMDA5ODRCNzggLyogQ29jb2EgKi8sCiAJCQkJMkRBOTQ0
QjQxODg0RUEyQTAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJCQlCQzk2M0Q2QzExM0REMTk1MDA1NzRC
RTIgLyogbWFjICovLAogCQkJCTkzRkM2NzlEMTJEM0NDNzQwMEE2MDYxMCAvKiBEZWNvZGVyQWRh
cHRlci5jcHAgKi8sCkBAIC03NDIzLDYgKzc0MzcsNyBAQAogCQkJCTI2ODQwNTQ0MThCODVBNjMw
MDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzNzk0ODQwNDE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRTM1MUY2MTgwRjVDNzUwMEU1M0JFOSAvKiBXZWJJREJGYWN0b3J5QmFj
a2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQyOUVDRDAxOTJGMkMyRTAwOTg0Qjc4IC8qIFJl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mzc2MDg4MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEyMTc0NjUxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzM2NzYzMDEzMEM5OTk4MDA2QzlERTIgLyogV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtODgwNiw2ICs4ODIxLDcgQEAKIAkJ
CQkxQUUxMTdGNjExREJCMzA5MDA5ODE2MTUgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMTExQjFEMTEyRjVGRTYwMDMzN0JBQiAvKiBQcm9jZXNzTGF1bmNoZXJN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFOTE2NEIzQTg4MDAyOTBENjIgLyogUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEMjlFQ0QxMTkyRjJD
MkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQUFCMDM3OTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFMTE2
NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDFiZWY4NWEuLjY3ZDIxNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4MCw2ICs3ODAsMTMgQEAgR3JhcGhpY3NM
YXllckZhY3RvcnkqIFdlYkNocm9tZUNsaWVudDo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25z
dAogICAgIHJldHVybiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNzTGF5ZXJGYWN0b3J5
KCk7CiB9CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQorUGFzc1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5jcmVhdGVE
aXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVy
KiBsYXllcikKIHsKICAgICBpZiAobGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAxM2Ni
ODJkLi5lYjRkMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwNCw2ICsyMDQsMTAgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2go
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGRvY3VtZW50
T3ZlcmxheUxheWVyRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUmKSBvdmVycmlkZTsKIAorI2lmIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJl
ZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgor
CiAgICAgdmlydHVhbCBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRpbmdU
cmlnZ2VycygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9z
aXRpbmdUcmlnZ2VyRmxhZ3M+KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURp
c3BsYXlSZWZyZXNoTW9uaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmE4NmU3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisjZGVmaW5l
IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisKKyNpZiBVU0UoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRGlz
cGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBjcmVhdGUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYSYgZHJhd2luZ0FyZWEpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNw
bGF5SUQsIGRyYXdpbmdBcmVhKSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgflJlbW90ZUxh
eWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcigpOworCisgICAgdmlydHVhbCBib29sIHJlcXVl
c3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworICAgIHZvaWQgZGlkVXBkYXRlTGF5ZXJz
KCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlELCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSYp
OworCisgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEmIG1fZHJhd2luZ0FyZWE7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05J
VE9SKQorCisjZW5kaWYgLy8gUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9SZW1v
dGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9y
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YzY0YzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3Rl
TGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKwor
I2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNpbXBv
cnQgPHd0Zi9DdXJyZW50VGltZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCwgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEmIGRyYXdpbmdBcmVhKQorICAgIDog
RGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKKyAgICAsIG1fZHJhd2luZ0FyZWEoZHJh
d2luZ0FyZWEpCit7Cit9CisKK1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
flJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcigpCit7CisgICAgbV9kcmF3aW5n
QXJlYS53aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcih0aGlzKTsKK30KKworYm9vbCBS
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJh
Y2soKQoreworICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFpc1NjaGVkdWxlZCgpKQorICAgICAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYSY+
KG1fZHJhd2luZ0FyZWEpLnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CisKKyAgICBz
ZXRJc0FjdGl2ZSh0cnVlKTsKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRp
ZFVwZGF0ZUxheWVycygpCit7CisgICAgc2V0SXNTY2hlZHVsZWQoZmFsc2UpOworCisgICAgaWYg
KCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldElzUHJl
dmlvdXNGcmFtZURvbmUoZmFsc2UpOworICAgIHNldE1vbm90b25pY0FuaW1hdGlvblN0YXJ0VGlt
ZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisKKyAgICBoYW5kbGVEaXNwbGF5UmVm
cmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOworfQorCit9CisKKyNlbmRpZiAv
LyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggMTQ5
YTk5NS4uODk4YWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
PgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAKQEAgLTkxLDQgKzkyLDExIEBAIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IERyYXdpbmdBcmVhOjpyb290TGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAog
ICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogfQogCisjaWYgVVNFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBEcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25p
dG9yKFBsYXRmb3JtRGlzcGxheUlEKQoreworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA4MjY3ODYzLi44ZDBkZDEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdTdGF0ZS5oPgog
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQxLDYg
KzQyLDcgQEAgY2xhc3MgTWVzc2FnZURlY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdy
YXBoaWNzTGF5ZXI7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKQEAgLTk1LDEwICs5Nywx
NCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9y
RnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyopIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVy
RmFjdG9yeSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1
c2goKSA9IDA7CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05J
VE9SKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCk7CisjZW5k
aWYKKwogICAgIHZpcnR1YWwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdExheWVy
VHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RMYXllclRyYW5zZm9y
bShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggOWFjMTRkZC4uNzEyYjI3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3MgTWVz
c2FnZUVuY29kZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dDsKK2NsYXNzIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjsKIAog
Y2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2luZ0FyZWEsIHB1
YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBmcmllbmQgY2xhc3MgUmVt
b3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOwogcHVibGljOgogICAgIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CiAgICAgdmlydHVhbCB+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKTsKQEAgLTYy
LDYgKzY0LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5n
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxh
eVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKKyAgICB2b2lkIHdp
bGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvciopOworCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1l
Vmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgb3ZlcnJp
ZGU7CkBAIC0xMzYsNiArMTQxLDggQEAgcHJpdmF0ZToKIAogICAgIGRpc3BhdGNoX3F1ZXVlX3Qg
bV9jb21taXRRdWV1ZTsKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gbV9wZW5kaW5n
QmFja2luZ1N0b3JlRmx1c2hlcjsKKworICAgIEhhc2hTZXQ8UmVtb3RlTGF5ZXJUcmVlRGlzcGxh
eVJlZnJlc2hNb25pdG9yKj4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3JzOwogfTsKIAogRFJBV0lO
R19BUkVBX1RZUEVfQ0FTVFMoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEsIHR5cGUoKSA9PSBE
cmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KaW5kZXggOWY1ZjdjMS4uNmMwMTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlv
bi5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIgorI2ltcG9ydCAiUmVtb3Rl
TGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uLmgiCkBAIC05MSw2ICs5MiwxOCBAQCBHcmFwaGljc0xheWVyRmFjdG9yeSogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKICAgICByZXR1cm4gbV9y
ZW1vdGVMYXllclRyZWVDb250ZXh0LmdldCgpOwogfQogCitQYXNzUmVmUHRyPERpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAgUmVmUHRyPFJl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9IFJlbW90ZUxheWVy
VHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgKnRoaXMpOworICAg
IG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5nZXQoKSk7CisgICAgcmV0dXJu
IG1vbml0b3IucmVsZWFzZSgpOworfQorCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Ojp3aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcihEaXNwbGF5UmVmcmVzaE1vbml0b3Iq
IG1vbml0b3IpCit7CisgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3JzLnJlbW92ZShzdGF0aWNf
Y2FzdDxSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IqPihtb25pdG9yKSk7Cit9
CisKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcikKIHsKICAgICBWZWN0b3I8R3JhcGhpY3NMYXll
ciAqPiBjaGlsZHJlbjsKQEAgLTMwOSw2ICszMjIsOSBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpkaWRVcGRhdGUoKQogICAgIC8vIFRoaXMgZW1wdHkgdHJhbnNhY3Rpb24gc2Vy
dmVzIHRvIHRyaWdnZXIgQ0EncyBnYXJiYWdlIGNvbGxlY3Rpb24gb2YgSU9TdXJmYWNlcy4gU2Vl
IDxyZGFyOi8vcHJvYmxlbS8xNjExMDY4Nz4KICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAg
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKKworICAgIGZvciAoYXV0byYgbW9uaXRvciA6IG1f
ZGlzcGxheVJlZnJlc2hNb25pdG9ycykKKyAgICAgICAgbW9uaXRvci0+ZGlkVXBkYXRlTGF5ZXJz
KCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6Om1haW5GcmFtZUNvbnRl
bnRTaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232012</attachid>
            <date>2014-05-23 19:10:14 -0700</date>
            <delta_ts>2014-05-23 19:10:27 -0700</delta_ts>
            <desc>for ews</desc>
            <filename>raf.diff</filename>
            <type>text/plain</type>
            <size>82873</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0M2E0OGRkLi42MjIxM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAg
QEAKIDIwMTQtMDUtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgUkVHUkVTU0lPTiAoaU9TIFdlYktpdDIpOiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUg
ZmlyZXMgbW9yZSB0aGFuIG9uY2UgYmV0d2VlbiBsYXllciB0cmVlIGNvbW1pdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjc5NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTY4Nzc5MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVmlydHVhbGl6ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3Igc28gdGhh
dCBXZWJLaXQyIGNhbiBpbXBsZW1lbnQgaXRzIG93biBEaXNwbGF5UmVmcmVzaE1vbml0b3IgZm9y
IFVJLXNpZGUgY29tcG9zaXRpbmcgdmlld3MuCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBzeW5j
aHJvbml6YXRpb24gb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcyB3aXRoIFVJLXNp
ZGUgY29tcG9zaXRpbmcgcGFpbnRpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIAorICAg
ICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnQ6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJVcGRhdGVyOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICBH
aXZlIHRoZSBDaHJvbWVDbGllbnQgYSBjaGFuY2UgdG8gcHJvdmlkZSB1cyB3aXRoIGEgY3VzdG9t
IERpc3BsYXlSZWZyZXNoTW9uaXRvci4KKyAgICAgICAgSWYgaXQgZG9lcyBub3QsIHdlJ2xsIGZh
bGwgYmFjayB0byBtYWtpbmcgYSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMgb3IKKyAgICAgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisKKyAg
ICAgICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBk
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIFNwbGl0IERpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHAgaW50byBvbmUgZmlsZSBwZXIgY2xhc3MuCisgICAgICAgIFVzZSByZWZlcmVuY2VzIGluIGEg
ZmV3IHBsYWNlcy4KKyAgICAgICAgUmVtb3ZlIHNvbWUgdXNlbGVzcyBjb21tZW50cy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKToK
KyAgICAgICAgVXNlIHRha2VBbnkoKSBhbmQgcmVtb3ZlIGEgRklYTUUgYWJvdXQgaXQgbm90IGV4
aXN0aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQ6OmZpcmVEaXNwbGF5UmVmcmVzaElmTmVlZGVkKToKKyAgICAgICAgVXNlIGFu
IGVhcmx5IHJldHVybiBpbnN0ZWFkIG9mIGhhdmluZyB0aGUgd2hvbGUgZnVuY3Rpb24gYm9keSBp
biBhbiBpZigpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaDogQWRkZWQuCisgICAgICAgIFZp
cnR1YWxpemUgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TIGFuZCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWMsCisgICAgICAgIGFuZCBtb3ZlIHRoaW5ncyBzcGVjaWZpYyB0byBlYWNoIG9mIHRoZW0g
b3V0IG9mIERpc3BsYXlSZWZyZXNoTW9uaXRvciBpdHNlbGYuCisKKzIwMTQtMDUtMjMgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgW2lPU10gV0tQREZW
aWV3IHNob3VsZCBoYXZlIGEgcGFnZSBpbmRpY2F0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzEwOQogICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTYzODMwMDM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGJmMjVhZTAuLmFlMGVmYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC04NzUsNiArODc1LDkgQEAgX19aTjdXZWJDb3JlMjFCbG9iRGF0
YUZpbGVSZWZlcmVuY2VDMkVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxQmxvYkRhdGFG
aWxlUmVmZXJlbmNlRDJFdgogX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENvcGllckJhc2VJTGIw
RUxiMEVOM1dURjZTdHJpbmdFRTRjb3B5RVJLUzJfCiBfX1pON1dlYkNvcmUyMUNyb3NzVGhyZWFk
Q29waWVyQmFzZUlMYjBFTGIwRU5TXzE5SURCRGF0YWJhc2VNZXRhZGF0YUVFNGNvcHlFUktTMV8K
K19fWk43V2ViQ29yZTIxRGlzcGxheVJlZnJlc2hNb25pdG9yNDZoYW5kbGVEaXNwbGF5UmVmcmVz
aGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkRVB2CitfX1pON1dlYkNvcmUyMURpc3BsYXlSZWZy
ZXNoTW9uaXRvckMyRWoKK19fWk43V2ViQ29yZTIxRGlzcGxheVJlZnJlc2hNb25pdG9yRDJFdgog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXIxMlJlbGllZkxvZ2dlcjE2c19sb2dn
aW5nRW5hYmxlZEUKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyMTNyZWxlYXNl
TWVtb3J5RWIKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3RhbGxFdgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDUyYjFkZjkuLjdiMGJjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjgsNiArMTA2OCwxMSBAQAogCQkyRDBCNEFB
QzE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8qIElPU3Vy
ZmFjZS5tbSAqLzsgfTsKIAkJMkQyNTM5NjIxOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29udHJv
bHNCdXR0b25FbGVtZW50TWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEMjUzOTYwMThDRTdGNjIwMDI3MDIyMiAvKiBJbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5jcHAgKi87IH07CiAJCTJEMjUzOTYzMThDRTdGNjIwMDI3MDIyMiAvKiBJ
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyNTM5NjExOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjLmggKi87IH07CisJCTJEMjlFQ0M1MTkyRUNDODMwMDk4NEI3
OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyOUVDQzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi87IH07CisJCTJEMjlFQ0M2MTkyRUNDODMw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0MyMTkyRUNDODMwMDk4NEI3OCAv
KiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyRDI5RUNDNzE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUNDMzE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgKi87IH07CisJCTJEMjlFQ0M4MTkyRUNDODMwMDk4NEI3
OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTJEMjlFQ0NBMTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJEMjlFQ0M5MTkyRjFGMUQwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MuaCAqLzsgfTsKIAkJMkQzQTBFMzYxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdF
cnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQz
QTBFMzUxM0E3RDc2MTAwRTg1QUYwIC8qIFNWR1BhcnNpbmdFcnJvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEM0VGNDQ4MTkxNzkxNUMwMDAz
NDE4NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4
NCAvKiBXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDNFRjQ0OTE5MTc5MTVDMDAwMzQx
ODQgLyogV2ViQWN0aW9uRGlzYWJsaW5nQ0FMYXllckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQzRUY0NDUxOTE3OTE1QzAwMDM0MTg0
IC8qIFdlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5tbSAqLzsgfTsKQEAgLTEwOTgs
NiArMTEwMyw3IEBACiAJCTJEOUEyNDc1MTVCOUMyRTMwMEQzNDUyNyAvKiBET01ET01TZWN1cml0
eVBvbGljeUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDlBMjQ3MTE1QjlDMjk1MDBEMzQ1MjcgLyogRE9NRE9NU2VjdXJpdHlQb2xpY3lJ
bnRlcm5hbC5oICovOyB9OwogCQkyRDlBMjQ3NjE1QjlDMkY0MDBEMzQ1MjcgLyogRE9NRE9NU2Vj
dXJpdHlQb2xpY3kuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUEyNDcwMTVCOUMyOTUwMEQzNDUyNyAvKiBET01ET01TZWN1
cml0eVBvbGljeS5oICovOyB9OwogCQkyRDlGMEUxMzE0RkYxQ0JGMDBCQTBGRjcgLyogbGluZWFy
U1JHQi5pY2MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEOUYwRTEyMTRGRjFDQkYwMEJBMEZGNyAvKiBsaW5lYXJTUkdCLmljYyAqLzsgfTsKKwkJMkRF
NzAwMjMxOTJGRTgyQTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNzAwMjIxOTJGRTgy
QTAwQjA5NzVDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovOyB9OwogCQkyRTA4ODhE
NDExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTA4ODhEMjExNDg4NDhBMDBBRjQyNjUgLyog
SlNET01Gb3JtRGF0YS5jcHAgKi87IH07CiAJCTJFMDg4OEQ1MTE0ODg0OEEwMEFGNDI2NSAvKiBK
U0RPTUZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTA4ODhEMzExNDg4NDhBMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YS5oICovOyB9Owog
CQkyRTA4ODhFNjExNDg4NEUyMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTA4ODhFNTExNDg4
NEUyMDBBRjQyNjUgLyogSlNET01Gb3JtRGF0YUN1c3RvbS5jcHAgKi87IH07CkBAIC04MDE2LDYg
KzgwMjIsMTEgQEAKIAkJMkQwQjRBQUExOERBMUNDRDAwNDM0REUxIC8qIElPU3VyZmFjZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElPU3VyZmFjZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyNTM5NjAxOENFN0Y2MjAwMjcwMjIyIC8qIElt
YWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyNTM5NjExOENFN0Y2MjAwMjcwMjIyIC8qIEltYWdlQ29u
dHJvbHNCdXR0b25FbGVtZW50TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJEMjlFQ0MxMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQy
OUVDQzIxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQyOUVDQzMxOTJFQ0M4MzAwOTg0
Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEMjlFQ0M0MTkyRUNDODMwMDk4NEI3OCAvKiBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkQyOUVDQzkxOTJGMUYxRDAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTQxNDYw
Q0Q2RjAwMjYzNjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYzNjMzIC8qIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEMkZDMDU2MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50SW1hZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODA0NSw2ICs4MDU2LDcgQEAKIAkJMkQ5QTI0NzExNUI5QzI5
NTAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NU2VjdXJpdHlQb2xpY3lJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDlBMjQ3MjE1QjlDMkM3MDBEMzQ1MjcgLyogRE9N
RE9NU2VjdXJpdHlQb2xpY3kubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBET01ET01TZWN1cml0eVBvbGljeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ5RjBFMTIxNEZGMUNCRjAwQkEwRkY3IC8qIGxpbmVhclNSR0IuaWNjICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IGxpbmVh
clNSR0IuaWNjOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREU3MDAyMjE5MkZFODJB
MDBCMDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTA4ODhDMzExNDg4M0E5MDBBRjQyNjUgLyogRE9NRm9ybURhdGEu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUZvcm1EYXRhLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Gb3JtRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQzMTE0ODg0OEEwMEFG
NDI2NSAvKiBKU0RPTUZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NRm9ybURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NTU4LDYg
KzE1NTcwLDcgQEAKIAkJNDQxQUYwQTcwRUJBN0JCRjAwNDRFRDRCIC8qIGlvcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQyOUVDQzkxOTJGMUYxRDAw
OTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oICovLAogCQkJCTBGOTdBNjU3MTU1
REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0gKi8sCiAJCQkJMzcy
N0RGRDQxNDJBQUU0NTAwRDQ0OUNCIC8qIEZvbnRDYWNoZUlPUy5tbSAqLywKIAkJCQlDNTgzNjFB
NzE3NDQ1MjNGMDAxNzM1MTEgLyogRm9udFNlcnZpY2VzSU9TLmggKi8sCkBAIC0yMDEzMSw2ICsy
MDE0NCw3IEBACiAJCQkJMzdDMjM2MEUxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAgKi8sCiAJCQkJMzdDMjM2MEYxMDk3RUU3NzAwRUY5RjcyIC8qIENvbXBsZXhU
ZXh0Q29udHJvbGxlci5oICovLAogCQkJCTM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21w
bGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSAqLywKKwkJCQkyREU3MDAyMjE5MkZFODJBMDBC
MDk3NUMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggKi8sCiAJCQkJNDlBRjJENkIxNDQz
NUQyMTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgKi8sCiAJCQkJQjI3
NTM1NEIwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRNYWMubW0gKi8sCiAJCQkJQjI3NTM1
NEMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdE1hYy5tbSAqLywKQEAgLTIwMTkxLDYgKzIw
MjA1LDEwIEBACiAJCQkJQThDQjQxMDIwRTg1QjhBNTAwMzJDNEYwIC8qIERhc2hBcnJheS5oICov
LAogCQkJCTQ5RkM3QTRGMTQ0NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
Y3BwICovLAogCQkJCTQ5QUYyRDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3IuaCAqLywKKwkJCQkyRDI5RUNDMTE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50LmNwcCAqLywKKwkJCQkyRDI5RUNDMjE5MkVDQzgzMDA5ODRCNzggLyog
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmggKi8sCisJCQkJMkQyOUVDQzMxOTJFQ0M4MzAw
OTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwICovLAorCQkJCTJEMjlF
Q0M0MTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggKi8s
CiAJCQkJNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovLAogCQkJ
CUIyNzUzNTNBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmNwcCAqLywKIAkJCQlCMjc1
MzUzQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5oICovLApAQCAtMjMxNzEsNiArMjMx
ODksNyBAQAogCQkJCUJFODhFMEQ5MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRTg4RTBEQzE3MTVEMkEyMDA2NThEOTggLyogQXVkaW9UcmFja0xp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEI1QTRDMTgwRTE3QzAwMDhCOEU2NSAvKiBBdWRp
b1RyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERTcwMDIzMTkyRkU4MkEw
MEIwOTc1QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJFRjI5RUVCMTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRl
QVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMzE4LDYgKzIzMzM3
LDcgQEAKIAkJCQlBNTg0RkUzNTE4NjRENUFGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElIb3N0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0RkUyQzE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFu
ZExpbmVBUElNb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODRGRTI2MTg2MzdEQUIwMDg0
M0IxMCAvKiBDb21tYW5kTGluZUFQSU1vZHVsZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MkQyOUVDQzgxOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEyMDk5REYwMjcwMDkwRDc4MSAvKiBDb21tZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUZFMTM3NTE4NDAyQTY3MDA4OTJGMTMgLyogQ29tbW9u
Q3J5cHRvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0MyMzYxMTEwOTdFRTc3MDBF
RjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNjcw
LDYgKzIzNjkwLDcgQEAKIAkJCQk4NUU3MTE5RDBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEJh
c2VFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUNCRUVEMEFBNzYyNjkw
MDU0NEYwQiAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NUU3MTE5RTBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEJhc2VGb250RWxlbWVudEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDI5RUNDQTE5MkYxRjFEMDA5ODRCNzggLyogRGlzcGxh
eVJlZnJlc2hNb25pdG9ySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTlBOUM0OTBBQTVFM0JE
MDBCNjk0QjIgLyogRE9NSFRNTEJvZHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3
MTE5RjBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTEJvZHlFbGVtZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1MTgzQjQyMEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MQlJFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0ODY0LDYgKzI0ODg1LDcgQEAKIAkJCQlCMkZBM0RB
RDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
RkEzREFGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjI3QjI4MkEwQ0VGMEMwNzAwRDM5RDU0IC8qIEpTU1ZHTWlzc2luZ0dseXBo
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQyOUVDQzYxOTJFQ0M4MzAwOTg0Qjc4IC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ5NkUz
QTAxMzk4MTNBNTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTQyQTc5NzBBRTVDOTQzMDBERjU4REYgLyogSlNTVkdOdW1iZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyRkEzREIxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR051bWJlckxpc3QuaCBp
biBIZWFkZXJzICovLApAQCAtMjg0NzAsNiArMjg0OTIsNyBAQAogCQkJCUJFOEVGMDRDMTcxQzkw
MTQwMDlCNDhDMyAvKiBKU1ZpZGVvVHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJF
NkRGNzBEMTcxQ0EyQzUwMERENTJCOCAvKiBKU1ZpZGVvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAvKiBKU1ZvaWRDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDI5RUNDNTE5MkVDQzgzMDA5ODRCNzggLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFMjA1MDgx
MThBNDYwQkMwMDgwNjQ3RSAvKiBKU1ZUVEN1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDgy
RDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBN0QyMEY2MjEwN0Y0MDY5MDBBODAzOTIgLyogSlNXZWJHTEFjdGl2ZUluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yOTE0NCw2ICsyOTE2Nyw3IEBACiAJCQkJOTMzMDlFMTMwOTlF
NjQ5MjAwNTZFNTgxIC8qIFNwbGl0VGV4dE5vZGVDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzMzA5RTE1MDk5RTY0OTIwMDU2RTU4MSAvKiBTcGxpdFRleHROb2RlQ29udGFpbmluZ0Vs
ZW1lbnRDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0
QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkQyOUVDQzcx
OTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTdCQzZBM0UxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTEV4Y2VwdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJFNkU3QTBDQzU1NkQ1MDA0QTIwNjIgLyogU1FMaXRl
QXV0aG9yaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIyNDY0OTBDQzk4RERCMDBDMDUy
NDAgLyogU1FMaXRlRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGNhNTgyYWQu
LjYyNmJkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUUpCiAKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNp
bmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgpAQCAtMTcxLDcgKzE3Myw3IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjp3
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxhCiAgICAgaWYgKG1f
ZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYgIW1fZG9jdW1lbnQtPnNldHRpbmdzKCktPnJlcXVlc3RB
bmltYXRpb25GcmFtZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogI2lmIFVTRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCi0gICAgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxh
eUlELCB0aGlzKTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5h
Z2VyKCkud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwgdGhpcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOwogI2VuZGlmCkBAIC0xODUsNyArMTg3LDcgQEAgdm9p
ZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKCkKICNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIpCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICBpZiAoIW1faXNVc2luZ1RpbWVyICYmICFt
X2lzVGhyb3R0bGVkKSB7Ci0gICAgICAgIGlmIChEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCktPnNjaGVkdWxlQW5pbWF0aW9uKHRoaXMpKQorICAgICAgICBpZiAo
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjaGVkdWxlQW5p
bWF0aW9uKHRoaXMpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1faXNVc2luZ1Rp
bWVyID0gdHJ1ZTsKQEAgLTIyMyw2ICsyMjUsMTMgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIG1vbm90b25pY1RpbWVOb3cpCiAj
ZW5kaWYKIAogCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UikKK1Bhc3NSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXI6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCk7Cit9Cisj
ZW5kaWYKKwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIuaAppbmRleCBmMjgwOGU3Li43MzI5NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC0zMCw3ICszMCw5IEBA
CiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX1RJTUVSKQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklU
T1IpCi0jaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSAiQ2hyb21l
LmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50LmgiCiAjZW5kaWYKICNpbmNsdWRlICJUaW1lci5oIgogI2VuZGlmCkBAIC04
OSw2ICs5MSw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKICAgICAvLyBPdmVycmlkZSBmb3IgRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVz
dGFtcCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1VzaW5nVGltZXI7CiAgICAgYm9vbCBtX2lzVGhy
b3R0bGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggNjFkNWJhYi4uYzRmNWYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNp
bmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAi
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAt
Mjc5LDcgKzI4MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50RW50
aXJlQ29udGVudHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gQWxsb3dzIHBv
cnRzIHRvIGN1c3RvbWl6ZSB0aGUgdHlwZSBvZiBncmFwaGljcyBsYXllcnMgY3JlYXRlZCBieSB0
aGlzIHBhZ2UuCi0gICAgdmlydHVhbCBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXll
ckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHcmFwaGljc0xheWVy
RmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
CisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlS
ZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQorI2VuZGlmCiAKICAgICAvLyBQYXNzIDAgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRj
aCB0aGUgcm9vdCBsYXllci4KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5
ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXgg
Yjc4NmM3NC4uMDU1OWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwzMiArMjQsMzAgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgiCiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQogCi0jaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgIkRpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudC5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5o
IgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIgorI2luY2x1ZGUgIkRpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCgpCi0g
ICAgOiBtX3NjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1fZGlzcGxheUlESXNTZXQoZmFsc2UpCitQ
YXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpj
cmVhdGUoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCiB7Ci19CisgICAgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEID0gY2xpZW50LT5kaXNwbGF5SUQoKTsKIAotRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50Ojp+RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KCkKLXsK
LSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPnVucmVn
aXN0ZXJDbGllbnQodGhpcyk7Ci19CisgICAgaWYgKFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IG1vbml0b3IgPSBjbGllbnQtPmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5
SUQpKQorICAgICAgICByZXR1cm4gbW9uaXRvci5yZWxlYXNlKCk7CiAKLXZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50OjpmaXJlRGlzcGxheVJlZnJlc2hJZk5lZWRlZChkb3VibGUgdGlt
ZXN0YW1wKQotewotICAgIGlmIChtX3NjaGVkdWxlZCkgewotICAgICAgICBtX3NjaGVkdWxlZCA9
IGZhbHNlOwotICAgICAgICBkaXNwbGF5UmVmcmVzaEZpcmVkKHRpbWVzdGFtcCk7Ci0gICAgfQor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpj
cmVhdGUoZGlzcGxheUlEKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4g
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpjcmVhdGUoZGlzcGxheUlEKTsKKyNlbmRpZgogfQog
CiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCkBAIC02MCw5ICs1OCwxMCBAQCBEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAg
ICAgLCBtX3Vuc2NoZWR1bGVkRmlyZUNvdW50KDApCiAgICAgLCBtX2Rpc3BsYXlJRChkaXNwbGF5
SUQpCiAgICAgLCBtX2NsaWVudHNUb0JlTm90aWZpZWQobnVsbHB0cikKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAsIG1fZGlzcGxheUxpbmsoMCkKLSNlbmRpZgoreworfQorCitEaXNwbGF5UmVm
cmVzaE1vbml0b3I6On5EaXNwbGF5UmVmcmVzaE1vbml0b3IoKQogewogfQogCkBAIC04Nyw2ICs4
Niw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlzcGxheVJl
ZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
ZGlzcGxheURpZFJlZnJlc2goKQogewogICAgIGRvdWJsZSBtb25vdG9uaWNBbmltYXRpb25TdGFy
dFRpbWU7CisKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CiAgICAg
ICAgIGlmICghbV9zY2hlZHVsZWQpCkBAIC0xMDcsMTIgKzEwNyw3IEBAIHZvaWQgRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCiAgICAgSGFzaFNldDxEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQqPiBjbGllbnRzVG9CZU5vdGlmaWVkID0gbV9jbGllbnRzOwogICAg
IG1fY2xpZW50c1RvQmVOb3RpZmllZCA9ICZjbGllbnRzVG9CZU5vdGlmaWVkOwogICAgIHdoaWxl
ICghY2xpZW50c1RvQmVOb3RpZmllZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gVGFrZSBhIHJh
bmRvbSBjbGllbnQgb3V0IG9mIHRoZSBzZXQuIE9yZGVyaW5nIGRvZXNuJ3QgbWF0dGVyLgotICAg
ICAgICAvLyBGSVhNRTogV291bGQgcmVhZCBtb3JlIGNsZWFubHkgaWYgSGFzaFNldCBoYWQgYSB0
YWtlIGZ1bmN0aW9uLgotICAgICAgICBhdXRvIGl0ID0gY2xpZW50c1RvQmVOb3RpZmllZC5iZWdp
bigpOwotICAgICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCA9ICppdDsK
LSAgICAgICAgY2xpZW50c1RvQmVOb3RpZmllZC5yZW1vdmUoaXQpOwotCisgICAgICAgIERpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50ID0gY2xpZW50c1RvQmVOb3RpZmllZC50YWtl
QW55KCk7CiAgICAgICAgIGNsaWVudC0+ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQobW9ub3Rv
bmljQW5pbWF0aW9uU3RhcnRUaW1lKTsKIAogICAgICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGlz
IGZ1bmN0aW9uIHdhcyByZWVudGVyZWQuIEluIHRoYXQgY2FzZSwgc3RvcCBpdGVyYXRpbmcKQEAg
LTEyMCw2ICsxMTUsNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJl
ZnJlc2goKQogICAgICAgICBpZiAobV9jbGllbnRzVG9CZU5vdGlmaWVkICE9ICZjbGllbnRzVG9C
ZU5vdGlmaWVkKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgaWYgKG1fY2xpZW50
c1RvQmVOb3RpZmllZCA9PSAmY2xpZW50c1RvQmVOb3RpZmllZCkKICAgICAgICAgbV9jbGllbnRz
VG9CZU5vdGlmaWVkID0gbnVsbHB0cjsKIApAQCAtMTI4LDgyICsxMjQsNyBAQCB2b2lkIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2goKQogICAgICAgICBtX3ByZXZpb3Vz
RnJhbWVEb25lID0gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLT5kaXNwbGF5RGlkUmVmcmVzaCh0aGlzKTsKLX0KLQot
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpCi17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIsIG1hbmFnZXIsICgpKTsKLSAgICByZXR1cm4g
Jm1hbmFnZXI7Ci19Ci0KLURpc3BsYXlSZWZyZXNoTW9uaXRvciogRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6ZW5zdXJlTW9uaXRvckZvckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQqIGNsaWVudCkKLXsKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9tb25pdG9ycy5maW5kKGNsaWVudC0+bV9kaXNwbGF5SUQpOwotICAgIGlmIChpdCA9
PSBtX21vbml0b3JzLmVuZCgpKSB7Ci0gICAgICAgIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0
b3I+IG1vbml0b3IgPSBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShjbGllbnQtPm1fZGlz
cGxheUlEKTsKLSAgICAgICAgbW9uaXRvci0+YWRkQ2xpZW50KGNsaWVudCk7Ci0gICAgICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvciogcmVzdWx0ID0gbW9uaXRvci5nZXQoKTsKLSAgICAgICAgbV9t
b25pdG9ycy5hZGQoY2xpZW50LT5tX2Rpc3BsYXlJRCwgbW9uaXRvci5yZWxlYXNlKCkpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBpdC0+dmFsdWUtPmFkZENsaWVudChjbGll
bnQpOwotICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7Ci19Ci0KLXZvaWQgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcjo6cmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50KiBjbGllbnQpCi17Ci0gICAgaWYgKCFjbGllbnQtPm1fZGlzcGxheUlESXNTZXQpCi0gICAg
ICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgZW5zdXJlTW9uaXRvckZvckNsaWVudChjbGllbnQp
OwotfQotCi12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGll
bnQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgaWYgKCFjbGll
bnQtPm1fZGlzcGxheUlESXNTZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIERpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hcDo6aXRlcmF0b3IgaXQgPSBtX21vbml0b3JzLmZpbmQoY2xpZW50LT5tX2Rp
c3BsYXlJRCk7Ci0gICAgaWYgKGl0ID09IG1fbW9uaXRvcnMuZW5kKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IgPSBpdC0+dmFsdWUu
Z2V0KCk7Ci0gICAgaWYgKG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGllbnQpKSB7Ci0gICAgICAg
IGlmICghbW9uaXRvci0+aGFzQ2xpZW50cygpKQotICAgICAgICAgICAgbV9tb25pdG9ycy5yZW1v
dmUoaXQpOwotICAgIH0KLX0KLQotYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpz
Y2hlZHVsZUFuaW1hdGlvbihEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKLXsK
LSAgICBpZiAoIWNsaWVudC0+bV9kaXNwbGF5SURJc1NldCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKLSAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IgPSBlbnN1cmVN
b25pdG9yRm9yQ2xpZW50KGNsaWVudCk7Ci0KLSAgICBjbGllbnQtPm1fc2NoZWR1bGVkID0gdHJ1
ZTsKLSAgICByZXR1cm4gbW9uaXRvci0+cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpOwotfQotCi12
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OmRpc3BsYXlEaWRSZWZyZXNoKERpc3Bs
YXlSZWZyZXNoTW9uaXRvciogbW9uaXRvcikKLXsKLSAgICBpZiAobW9uaXRvci0+c2hvdWxkQmVU
ZXJtaW5hdGVkKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fbW9uaXRvcnMuY29udGFpbnMobW9uaXRv
ci0+ZGlzcGxheUlEKCkpKTsKLSAgICAgICAgbV9tb25pdG9ycy5yZW1vdmUobW9uaXRvci0+ZGlz
cGxheUlEKCkpOwotICAgIH0KLX0KLQotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKLXsKLSAgICBpZiAoY2xpZW50LT5tX2Rp
c3BsYXlJRElzU2V0ICYmIGNsaWVudC0+bV9kaXNwbGF5SUQgPT0gZGlzcGxheUlEKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgdW5yZWdpc3RlckNsaWVudChjbGllbnQpOwotICAgIGNsaWVu
dC0+c2V0RGlzcGxheUlEKGRpc3BsYXlJRCk7Ci0gICAgcmVnaXN0ZXJDbGllbnQoY2xpZW50KTsK
LSAgICBpZiAoY2xpZW50LT5tX3NjaGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVBbmltYXRpb24o
Y2xpZW50KTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2Vy
KCkuZGlzcGxheURpZFJlZnJlc2godGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKaW5kZXgg
MmQ5NTE4NC4uOGZlYjM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDY1ICsyOSwyNCBAQAogI2lm
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybVNjcmVlbi5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBQTEFURk9STShD
T0NPQSkKLXR5cGVkZWYgc3RydWN0IF9fQ1ZEaXNwbGF5TGluayAqQ1ZEaXNwbGF5TGlua1JlZjsK
LSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERpc3BsYXlBbmltYXRpb25D
bGllbnQ7Ci1jbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3I7Ci1jbGFzcyBEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyOwotCi0vLwotLy8gQWJzdHJhY3QgdmlydHVhbCBjbGllbnQgd2hpY2gg
cmVjZWl2ZXMgcmVmcmVzaCBmaXJlZCBtZXNzYWdlcyBvbiB0aGUgbWFpbiB0aHJlYWQKLS8vCi1j
bGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQgewotICAgIGZyaWVuZCBjbGFzcyBEaXNw
bGF5UmVmcmVzaE1vbml0b3I7Ci0gICAgZnJpZW5kIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hbmFnZXI7Ci0gICAgCi1wdWJsaWM6Ci0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50
KCk7Ci0gICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KCk7Ci0gICAgCi0g
ICAgdmlydHVhbCB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFtcCkgPSAw
OwotCi1wcml2YXRlOgotICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91Ymxl
IHRpbWVzdGFtcCk7Ci0gICAgCi0gICAgdm9pZCBzZXREaXNwbGF5SUQoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQotICAgIHsKLSAgICAgICAgbV9kaXNwbGF5SUQgPSBkaXNwbGF5SUQ7Ci0g
ICAgICAgIG1fZGlzcGxheUlESXNTZXQgPSB0cnVlOwotICAgIH0KLSAgICAKLSAgICBib29sIG1f
c2NoZWR1bGVkOwotICAgIGJvb2wgbV9kaXNwbGF5SURJc1NldDsKLSAgICBQbGF0Zm9ybURpc3Bs
YXlJRCBtX2Rpc3BsYXlJRDsKLX07Ci0KLS8vCi0vLyBNb25pdG9yIGZvciBkaXNwbGF5IHJlZnJl
c2ggbWVzc2FnZXMgZm9yIGEgZ2l2ZW4gc2NyZWVuCi0vLworY2xhc3MgRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50OwogCiBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3IgOiBwdWJsaWMgUmVm
Q291bnRlZDxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlSZWZy
ZXNoTW9uaXRvcihkaXNwbGF5SUQpKTsKLSAgICB9Ci0gICAgCi0gICAgfkRpc3BsYXlSZWZyZXNo
TW9uaXRvcigpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
Y3JlYXRlKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCopOworICAgIHZpcnR1YWwgfkRpc3Bs
YXlSZWZyZXNoTW9uaXRvcigpOwogICAgIAogICAgIC8vIFJldHVybiB0cnVlIGlmIGNhbGxiYWNr
IHJlcXVlc3Qgd2FzIHNjaGVkdWxlZCwgZmFsc2UgaWYgaXQgY291bGRuJ3QgYmUKICAgICAvLyAo
ZS5nLiwgaGFyZHdhcmUgcmVmcmVzaCBpcyBub3QgYXZhaWxhYmxlKQotICAgIGJvb2wgcmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKCkgPSAwOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlEKTsKICAgICAKICAgICBib29sIGhhc0NsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dHMuc2l6ZSgpOyB9CkBAIC0xMDEsMTIgKzYwLDI2IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3Qg
aW50IG1heEluYWN0aXZlRmlyZUNvdW50ID0gMTA7CiAgICAgICAgIHJldHVybiAhbV9zY2hlZHVs
ZWQgJiYgbV91bnNjaGVkdWxlZEZpcmVDb3VudCA+IG1heEluYWN0aXZlRmlyZUNvdW50OwogICAg
IH0KLSAgICAKLXByaXZhdGU6CisKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV9hY3RpdmU7IH0KKyAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1fYWN0aXZl
ID0gYWN0aXZlOyB9CisKKyAgICBib29sIGlzU2NoZWR1bGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
Y2hlZHVsZWQ7IH0KKyAgICB2b2lkIHNldElzU2NoZWR1bGVkKGJvb2wgc2NoZWR1bGVkKSB7IG1f
c2NoZWR1bGVkID0gc2NoZWR1bGVkOyB9CisKKyAgICBib29sIGlzUHJldmlvdXNGcmFtZURvbmUo
KSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzRnJhbWVEb25lOyB9CisgICAgdm9pZCBzZXRJc1By
ZXZpb3VzRnJhbWVEb25lKGJvb2wgZG9uZSkgeyBtX3ByZXZpb3VzRnJhbWVEb25lID0gZG9uZTsg
fQorCisgICAgdm9pZCBzZXRNb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUoZG91YmxlIHN0YXJ0
VGltZSkgeyBtX21vbm90b25pY0FuaW1hdGlvblN0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQorCisg
ICAgTXV0ZXgmIG11dGV4KCkgeyByZXR1cm4gbV9tdXRleDsgfQorCitwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBz
dGF0aWMgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFk
KHZvaWQqIGRhdGEpOwogCitwcml2YXRlOgogICAgIHZvaWQgZGlzcGxheURpZFJlZnJlc2goKTsK
LSAgICBzdGF0aWMgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWlu
VGhyZWFkKHZvaWQqIGRhdGEpOwogCiAgICAgZG91YmxlIG1fbW9ub3RvbmljQW5pbWF0aW9uU3Rh
cnRUaW1lOwogICAgIGJvb2wgbV9hY3RpdmU7CkBAIC0xMTgsNTAgKzkxLDYgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hTZXQ8RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kj4gbV9jbGllbnRzOwog
ICAgIEhhc2hTZXQ8RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Kj4qIG1fY2xpZW50c1RvQmVO
b3RpZmllZDsKLQotI2lmIFBMQVRGT1JNKE1BQykKLXB1YmxpYzoKLSAgICB2b2lkIGRpc3BsYXlM
aW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMsIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcyk7Ci1w
cml2YXRlOgotICAgIENWRGlzcGxheUxpbmtSZWYgbV9kaXNwbGF5TGluazsKLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oSU9TKQotcHVibGljOgotICAgIHZvaWQgZGlzcGxheUxpbmtGaXJlZChkb3Vi
bGUgbm93U2Vjb25kcyk7Ci1wcml2YXRlOgotICAgIHZvaWQqIG1fZGlzcGxheUxpbms7Ci0jZW5k
aWYKLX07Ci0KLS8vCi0vLyBTaW5nbGV0b24gbWFuYWdlciBmb3IgYWxsIHRoZSBEaXNwbGF5UmVm
cmVzaE1vbml0b3JzLiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIAotLy8gb3V0c2lkZSB3
b3JsZC4gSXQgZGlzdHJpYnV0ZXMgcmVxdWVzdHMgdG8gdGhlIGFwcHJvcHJpYXRlIG1vbml0b3Iu
IFdoZW4gdGhlIGRpc3BsYXkKLS8vIHJlZnJlc2ggZXZlbnQgZmlyZXMsIHRoZSBwYXNzZWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50IGlzIGNhbGxlZCBkaXJlY3RseSBvbgotLy8gdGhlIG1h
aW4gdGhyZWFkLgotLy8KLWNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIgewotcHVi
bGljOgotICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyKiBzaGFyZWRNYW5h
Z2VyKCk7Ci0gICAgCi0gICAgdm9pZCByZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQqKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50Kik7Ci0KLSAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCopOwotICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKLQotcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOwotICAgIHZvaWQgZGlzcGxheURp
ZFJlZnJlc2goRGlzcGxheVJlZnJlc2hNb25pdG9yKik7Ci0gICAgCi0gICAgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcigpIHsgfQotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogZW5zdXJl
TW9uaXRvckZvckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKLQotICAgIC8v
IFdlIGtub3cgbm90aGluZyBhYm91dCB0aGUgdmFsdWVzIG9mIFBsYXRmb3JtRGlzcGxheUlEcywg
c28gdXNlIFVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzLgotICAgIC8vIEZJWE1FOiBTaW5j
ZSB3ZSBrbm93IG5vdGhpbmcgYWJvdXQgdGhlc2UgdmFsdWVzLCB0aGlzIGlzIG5vdCBzdWZmaWNp
ZW50LgotICAgIC8vIEV2ZW4gd2l0aCBVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cywgdGhl
cmUgYXJlIHN0aWxsIHR3byBzcGVjaWFsIHZhbHVlcyB1c2VkIGZvciBlbXB0eSBhbmQgZGVsZXRl
ZCBoYXNoIHRhYmxlIHNsb3RzLgotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PERpc3BsYXlSZWZyZXNoTW9uaXRvcj4sIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYXA7Ci0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFwIG1fbW9uaXRvcnM7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jMmNkYTM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcApAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQuaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklU
T1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNpbmNsdWRlICJEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKQor
ICAgIDogbV9zY2hlZHVsZWQoZmFsc2UpCisgICAgLCBtX2Rpc3BsYXlJRElzU2V0KGZhbHNlKQor
eworfQorCitEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6On5EaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQoKQoreworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS51bnJlZ2lzdGVyQ2xpZW50KHRoaXMpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQoZG91YmxlIHRpbWVzdGFt
cCkKK3sKKyAgICBpZiAoIW1fc2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nj
aGVkdWxlZCA9IGZhbHNlOworICAgIGRpc3BsYXlSZWZyZXNoRmlyZWQodGltZXN0YW1wKTsKK30K
KworfQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9O
SVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjZlZThkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnRfaAorI2RlZmluZSBEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnRfaAorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
X0RJU1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOworY2xhc3MgRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKKyAg
ICB2aXJ0dWFsIH5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQoKTsKKworICAgIC8vIEFsd2F5
cyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5UmVm
cmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApID0gMDsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0
Zm9ybURpc3BsYXlJRCkgY29uc3QgPSAwOworCisgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KKyAgICBib29sIGhhc0Rpc3BsYXlJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlESXNTZXQ7IH0KKyAgICB2b2lkIHNldERpc3Bs
YXlJRChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAgeworICAgICAgICBtX2Rpc3Bs
YXlJRCA9IGRpc3BsYXlJRDsKKyAgICAgICAgbV9kaXNwbGF5SURJc1NldCA9IHRydWU7CisgICAg
fQorCisgICAgdm9pZCBzZXRJc1NjaGVkdWxlZChib29sIGlzU2NoZWR1bGVkKSB7IG1fc2NoZWR1
bGVkID0gaXNTY2hlZHVsZWQ7IH0KKyAgICBib29sIGlzU2NoZWR1bGVkKCkgY29uc3QgeyByZXR1
cm4gbV9zY2hlZHVsZWQ7IH0KKworICAgIHZvaWQgZmlyZURpc3BsYXlSZWZyZXNoSWZOZWVkZWQo
ZG91YmxlIHRpbWVzdGFtcCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3NjaGVkdWxlZDsKKyAg
ICBib29sIG1fZGlzcGxheUlESXNTZXQ7CisgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5
SUQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3ZWI5MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvck1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCisKKyNpZiBVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJl
c2hNb25pdG9yLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmgiCisj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6fkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIo
KQoreworfQorCitEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyJiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFu
YWdlci5nZXQoKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yKiBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjplbnN1cmVNb25pdG9yRm9yQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudCogY2xpZW50KQoreworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hcDo6aXRlcmF0
b3IgaXQgPSBtX21vbml0b3JzLmZpbmQoY2xpZW50LT5kaXNwbGF5SUQoKSk7CisgICAgaWYgKGl0
ID09IG1fbW9uaXRvcnMuZW5kKCkpIHsKKyAgICAgICAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gbW9uaXRvciA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGNsaWVudCk7Cisg
ICAgICAgIG1vbml0b3ItPmFkZENsaWVudChjbGllbnQpOworICAgICAgICBEaXNwbGF5UmVmcmVz
aE1vbml0b3IqIHJlc3VsdCA9IG1vbml0b3IuZ2V0KCk7CisgICAgICAgIG1fbW9uaXRvcnMuYWRk
KGNsaWVudC0+ZGlzcGxheUlEKCksIG1vbml0b3IucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgaXQtPnZhbHVlLT5hZGRDbGllbnQoY2xpZW50KTsKKyAgICBy
ZXR1cm4gaXQtPnZhbHVlLmdldCgpOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnJlZ2lzdGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCogY2xpZW50
KQoreworICAgIGlmICghY2xpZW50LT5oYXNEaXNwbGF5SUQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZW5zdXJlTW9uaXRvckZvckNsaWVudChjbGllbnQpOworfQorCit2b2lkIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQtPmhhc0Rpc3BsYXlJRCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9tb25pdG9ycy5maW5kKGNsaWVudC0+ZGlzcGxheUlEKCkpOworICAgIGlmIChpdCA9
PSBtX21vbml0b3JzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBEaXNwbGF5UmVmcmVz
aE1vbml0b3IqIG1vbml0b3IgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgaWYgKG1vbml0b3ItPnJl
bW92ZUNsaWVudChjbGllbnQpKSB7CisgICAgICAgIGlmICghbW9uaXRvci0+aGFzQ2xpZW50cygp
KQorICAgICAgICAgICAgbV9tb25pdG9ycy5yZW1vdmUoaXQpOworICAgIH0KK30KKworYm9vbCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzY2hlZHVsZUFuaW1hdGlvbihEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQqIGNsaWVudCkKK3sKKyAgICBpZiAoIWNsaWVudC0+aGFzRGlzcGxh
eUlEKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRv
ciogbW9uaXRvciA9IGVuc3VyZU1vbml0b3JGb3JDbGllbnQoY2xpZW50KTsKKworICAgIGNsaWVu
dC0+c2V0SXNTY2hlZHVsZWQodHJ1ZSk7CisgICAgcmV0dXJuIG1vbml0b3ItPnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpk
aXNwbGF5RGlkUmVmcmVzaChEaXNwbGF5UmVmcmVzaE1vbml0b3IqIG1vbml0b3IpCit7CisgICAg
aWYgKG1vbml0b3ItPnNob3VsZEJlVGVybWluYXRlZCgpKSB7CisgICAgICAgIEFTU0VSVChtX21v
bml0b3JzLmNvbnRhaW5zKG1vbml0b3ItPmRpc3BsYXlJRCgpKSk7CisgICAgICAgIG1fbW9uaXRv
cnMucmVtb3ZlKG1vbml0b3ItPmRpc3BsYXlJRCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCwgRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KiBjbGllbnQpCit7
CisgICAgaWYgKGNsaWVudC0+aGFzRGlzcGxheUlEKCkgJiYgY2xpZW50LT5kaXNwbGF5SUQoKSA9
PSBkaXNwbGF5SUQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1bnJlZ2lzdGVyQ2xpZW50
KGNsaWVudCk7CisgICAgY2xpZW50LT5zZXREaXNwbGF5SUQoZGlzcGxheUlEKTsKKyAgICByZWdp
c3RlckNsaWVudChjbGllbnQpOworICAgIGlmIChjbGllbnQtPmlzU2NoZWR1bGVkKCkpCisgICAg
ICAgIHNjaGVkdWxlQW5pbWF0aW9uKGNsaWVudCk7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3JNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2YTdjOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlcl9oCisjZGVmaW5lIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXJfaAorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikK
KworI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlciB7CisgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI+OworcHVibGlj
OgorICAgIHN0YXRpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyJiBzaGFyZWRNYW5hZ2Vy
KCk7CisgICAgCisgICAgdm9pZCByZWdpc3RlckNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJlc2hNb25pdG9y
Q2xpZW50Kik7CisKKyAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCopOworICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOworICAgIHZvaWQgZGlzcGxheURpZFJl
ZnJlc2goRGlzcGxheVJlZnJlc2hNb25pdG9yKik7CisgICAgCisgICAgRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlcigpIHsgfQorICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXIoKTsKKworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogZW5zdXJlTW9uaXRvckZvckNs
aWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqKTsKKworICAgIC8vIFdlIGtub3cgbm90
aGluZyBhYm91dCB0aGUgdmFsdWVzIG9mIFBsYXRmb3JtRGlzcGxheUlEcywgc28gdXNlIFVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzLgorICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBrbm93IG5v
dGhpbmcgYWJvdXQgdGhlc2UgdmFsdWVzLCB0aGlzIGlzIG5vdCBzdWZmaWNpZW50LgorICAgIC8v
IEV2ZW4gd2l0aCBVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0cywgdGhlcmUgYXJlIHN0aWxs
IHR3byBzcGVjaWFsIHZhbHVlcyB1c2VkIGZvciBlbXB0eSBhbmQgZGVsZXRlZCBoYXNoIHRhYmxl
IHNsb3RzLgorICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERpc3BsYXlSZWZy
ZXNoTW9uaXRvcj4sIFdURjo6SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYXA7CisgICAg
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFwIG1fbW9uaXRvcnM7Cit9OworCit9CisKKyNlbmRpZiAv
LyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJVcGRhdGVyLmNwcAppbmRleCA4OTg2N2RmLi5jYjY2ZjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIu
Y3BwCkBAIC0yNCw5ICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllclVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTM2LDkgKzM2LDkgQEAgR3JhcGhpY3NMYXllclVwZGF0ZXI6OkdyYXBo
aWNzTGF5ZXJVcGRhdGVyKEdyYXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50KiBjbGllbnQsIFAKICAg
ICAsIG1fc2NoZWR1bGVkKGZhbHNlKQogewogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpCi0gICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hh
cmVkTWFuYWdlcigpLT5yZWdpc3RlckNsaWVudCh0aGlzKTsKLSAgICBEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNw
bGF5SUQsIHRoaXMpOwotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS0+c2NoZWR1bGVBbmltYXRpb24odGhpcyk7CisgICAgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlZ2lzdGVyQ2xpZW50KHRoaXMpOworICAgIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS53aW5kb3dTY3JlZW5E
aWRDaGFuZ2UoZGlzcGxheUlELCB0aGlzKTsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2NoZWR1bGVBbmltYXRpb24odGhpcyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShkaXNwbGF5SUQpOwogI2VuZGlmCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllclVwZGF0ZXI6OnNjaGVkdWxlVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwog
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKLSAgICBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCktPnNjaGVkdWxlQW5p
bWF0aW9uKHRoaXMpOworICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlvbih0aGlzKTsKICNlbmRpZgogICAgIG1fc2NoZWR1bGVk
ID0gdHJ1ZTsKIH0KQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6
c2NoZWR1bGVVcGRhdGUoKQogdm9pZCBHcmFwaGljc0xheWVyVXBkYXRlcjo6c2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCwg
dGhpcyk7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigp
LndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQsIHRoaXMpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZGlzcGxheUlEKTsKICNlbmRpZgpAQCAtNzgsNCArNzgsMTEgQEAgdm9pZCBHcmFw
aGljc0xheWVyVXBkYXRlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1wKQog
ICAgICAgICBtX2NsaWVudC0+Zmx1c2hMYXllcnNTb29uKHRoaXMpOwogfQogCisjaWYgVVNFKFJF
UVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKK1Bhc3NSZWZQdHI8RGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBHcmFwaGljc0xheWVyVXBkYXRlcjo6Y3JlYXRlRGlzcGxheVJlZnJl
c2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3Bs
YXlJRCkgOiBudWxscHRyOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
VXBkYXRlci5oCmluZGV4IDU4ZTE5MGQuLmMzZDczYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclVwZGF0ZXIuaApAQCAtMjYs
NyArMjYsNyBAQAogI2lmbmRlZiBHcmFwaGljc0xheWVyVXBkYXRlcl9oCiAjZGVmaW5lIEdyYXBo
aWNzTGF5ZXJVcGRhdGVyX2gKIAotI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgor
I2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDYgKzM3LDkgQEAgY2xh
c3MgR3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkdy
YXBoaWNzTGF5ZXJVcGRhdGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoTGF5
ZXJzU29vbihHcmFwaGljc0xheWVyVXBkYXRlciopID0gMDsKKyNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEaXNw
bGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURp
c3BsYXlJRCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiBjbGFzcyBHcmFwaGljc0xheWVyVXBk
YXRlcgpAQCAtNTEsNiArNTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1bGVVcGRhdGUo
KTsKICAgICB2b2lkIHNjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKKyNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9u
aXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUgdGltZXN0YW1w
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmJhZTJhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPU19oCisjZGVmaW5lIERpc3BsYXlSZWZyZXNo
TW9uaXRvcklPU19oCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIFdlYkRpc3BsYXlMaW5rSGFuZGxlcjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MgOiBw
dWJsaWMgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUyhkaXNwbGF5SUQpKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+RGlz
cGxheVJlZnJlc2hNb25pdG9ySU9TKCk7CisKKyAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoZG91
YmxlIG5vd1NlY29uZHMpOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNr
KCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25p
dG9ySU9TKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBSZXRhaW5QdHI8V2ViRGlzcGxheUxpbmtI
YW5kbGVyPiBtX2hhbmRsZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hN
b25pdG9ySU9TLm1tCmluZGV4IGMzMzhlMGYuLmU4ZTI3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvcklPUy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMzggKzIzLDMzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aW5jbHVkZSAiY29uZmlnLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcklPUy5oIgogCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKIAotI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgotCi0j
aW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQogI2ltcG9ydCAiV2ViQ29yZVRo
cmVhZC5oIgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDx3dGYv
Q3VycmVudFRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdlYkRpc3BsYXlMaW5rSGFuZGxlciA6IE5TT2Jq
ZWN0CiB7Ci0gICAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yKiBtX21vbml0b3I7Ci0g
ICAgQ0FEaXNwbGF5TGluayogbV9kaXNwbGF5TGluazsKKyAgICBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MqIG1fbW9uaXRvcjsKKyAgICBDQURpc3BsYXlMaW5rICptX2Rpc3BsYXlMaW5rOwogfQog
Ci0tIChpZClpbml0V2l0aE1vbml0b3I6KFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvciop
bW9uaXRvcjsKKy0gKGlkKWluaXRXaXRoTW9uaXRvcjooRGlzcGxheVJlZnJlc2hNb25pdG9ySU9T
Kiltb25pdG9yOwogLSAodm9pZCloYW5kbGVEaXNwbGF5TGluazooQ0FEaXNwbGF5TGluayAqKXNl
bmRlcjsKIC0gKHZvaWQpaW52YWxpZGF0ZTsKIAogQGVuZAogCi1zdGF0aWMgZG91YmxlIG1lZGlh
VGltZVRvQ3VycmVudFRpbWUoQ0ZUaW1lSW50ZXJ2YWwgdCkKLXsKLSAgICByZXR1cm4gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyB0IC0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7Ci19Ci0K
IEBpbXBsZW1lbnRhdGlvbiBXZWJEaXNwbGF5TGlua0hhbmRsZXIKIAotLSAoaWQpaW5pdFdpdGhN
b25pdG9yOihXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3IqKW1vbml0b3IKKy0gKGlkKWlu
aXRXaXRoTW9uaXRvcjooRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TKiltb25pdG9yCiB7CiAgICAg
aWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKICAgICAgICAgbV9tb25pdG9yID0gbW9uaXRvcjsK
QEAgLTg2LDM0ICs4MSw0NCBAQCBzdGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3VycmVudFRpbWUo
Q0ZUaW1lSW50ZXJ2YWwgdCkKIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotIAotRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjp+RGlzcGxheVJlZnJlc2hNb25pdG9yKCkKKworRGlzcGxheVJlZnJl
c2hNb25pdG9ySU9TOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKQorICAgIDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKIHsKLSAg
ICBbKFdlYkRpc3BsYXlMaW5rSGFuZGxlciopIG1fZGlzcGxheUxpbmsgaW52YWxpZGF0ZV07Ci0g
ICAgWyhXZWJEaXNwbGF5TGlua0hhbmRsZXIqKSBtX2Rpc3BsYXlMaW5rIHJlbGVhc2VdOwogfQog
Ci1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCitE
aXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MoKQogewot
ICAgIGlmICghbV9hY3RpdmUpCisgICAgW21faGFuZGxlciBpbnZhbGlkYXRlXTsKK30KKworYm9v
bCBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1M6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQorewor
ICAgIGlmICghaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAg
ICBpZiAoIW1fZGlzcGxheUxpbmspIHsKLSAgICAgICAgbV9kaXNwbGF5TGluayA9IFtbV2ViRGlz
cGxheUxpbmtIYW5kbGVyIGFsbG9jXSBpbml0V2l0aE1vbml0b3I6dGhpc107Ci0gICAgICAgIG1f
YWN0aXZlID0gdHJ1ZTsKKworICAgIGlmICghbV9oYW5kbGVyKSB7CisgICAgICAgIG1faGFuZGxl
ciA9IGFkb3B0TlMoW1tXZWJEaXNwbGF5TGlua0hhbmRsZXIgYWxsb2NdIGluaXRXaXRoTW9uaXRv
cjp0aGlzXSk7CisgICAgICAgIHNldElzQWN0aXZlKHRydWUpOwogICAgIH0KIAotICAgIG1fc2No
ZWR1bGVkID0gdHJ1ZTsKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQoZG91
YmxlIG5vd1NlY29uZHMpCitzdGF0aWMgZG91YmxlIG1lZGlhVGltZVRvQ3VycmVudFRpbWUoQ0ZU
aW1lSW50ZXJ2YWwgdCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBtYXkgYmUgYSBuby1vcCBpZiBD
QUN1cnJlbnRNZWRpYVRpbWUgaXMgKmd1YXJhbnRlZWQqIHRvIGJlIG1hY2hfYWJzb2x1dGVfdGlt
ZS4KKyAgICByZXR1cm4gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgKyB0IC0gQ0FDdXJy
ZW50TWVkaWFUaW1lKCk7Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TOjpkaXNw
bGF5TGlua0ZpcmVkKGRvdWJsZSBub3dTZWNvbmRzKQogewotICAgIGlmICghbV9wcmV2aW91c0Zy
YW1lRG9uZSkKKyAgICBpZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcmV2aW91c0ZyYW1lRG9uZSA9IGZhbHNlOwotICAgIG1fbW9ub3RvbmljQW5p
bWF0aW9uU3RhcnRUaW1lID0gbWVkaWFUaW1lVG9DdXJyZW50VGltZShub3dTZWNvbmRzKTsKKyAg
ICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKKyAgICBzZXRNb25vdG9uaWNBbmltYXRp
b25TdGFydFRpbWUobWVkaWFUaW1lVG9DdXJyZW50VGltZShub3dTZWNvbmRzKSk7CiAKICAgICBo
YW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCBlNTQyY2JmLi41MTI1YmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNDcgKzI0LDUyIEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5oIgogCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikK
IAotI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgotCiAjaW5jbHVkZSA8UXVhcnR6
Q29yZS9RdWFydHpDb3JlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgQ1ZS
ZXR1cm4gZGlzcGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVT
dGFtcCogbm93LCBjb25zdCBDVlRpbWVTdGFtcCogb3V0cHV0VGltZSwgQ1ZPcHRpb25GbGFncywg
Q1ZPcHRpb25GbGFncyosIHZvaWQqIGRhdGEpCitEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OkRp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYyhQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAg
OiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQorICAgICwgbV9kaXNwbGF5TGluayhu
dWxscHRyKQogewotICAgIERpc3BsYXlSZWZyZXNoTW9uaXRvciogbW9uaXRvciA9IHN0YXRpY19j
YXN0PERpc3BsYXlSZWZyZXNoTW9uaXRvcio+KGRhdGEpOwotCi0gICAgZG91YmxlIG5vd1NlY29u
ZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5vdy0+dmlkZW9UaW1lKSAvIHN0YXRpY19jYXN0PGRv
dWJsZT4obm93LT52aWRlb1RpbWVTY2FsZSk7Ci0gICAgZG91YmxlIG91dHB1dFRpbWVTZWNvbmRz
ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihvdXRwdXRUaW1lLT52aWRlb1RpbWUpIC8gc3RhdGljX2Nh
c3Q8ZG91YmxlPihvdXRwdXRUaW1lLT52aWRlb1RpbWVTY2FsZSk7Ci0gICAgbW9uaXRvci0+ZGlz
cGxheUxpbmtGaXJlZChub3dTZWNvbmRzLCBvdXRwdXRUaW1lU2Vjb25kcyk7Ci0KLSAgICByZXR1
cm4ga0NWUmV0dXJuU3VjY2VzczsKIH0KIAotRGlzcGxheVJlZnJlc2hNb25pdG9yOjp+RGlzcGxh
eVJlZnJlc2hNb25pdG9yKCkKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6fkRpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYygpCiB7CiAgICAgaWYgKG1fZGlzcGxheUxpbmspIHsKICAgICAgICAgQ1ZE
aXNwbGF5TGlua1N0b3AobV9kaXNwbGF5TGluayk7CiAgICAgICAgIENWRGlzcGxheUxpbmtSZWxl
YXNlKG1fZGlzcGxheUxpbmspOwotICAgICAgICBtX2Rpc3BsYXlMaW5rID0gMDsKKyAgICAgICAg
bV9kaXNwbGF5TGluayA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgY2FuY2VsQ2FsbE9uTWFpblRo
cmVhZChEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmlj
YXRpb25Pbk1haW5UaHJlYWQsIHRoaXMpOwogfQogCi1ib29sIERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCitzdGF0aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtD
YWxsYmFjayhDVkRpc3BsYXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCogbm93LCBjb25zdCBD
VlRpbWVTdGFtcCogb3V0cHV0VGltZSwgQ1ZPcHRpb25GbGFncywgQ1ZPcHRpb25GbGFncyosIHZv
aWQqIGRhdGEpCit7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKiBtb25pdG9yID0gc3Rh
dGljX2Nhc3Q8RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKj4oZGF0YSk7CisKKyAgICBkb3VibGUg
bm93U2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4obm93LT52aWRlb1RpbWUpIC8gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihub3ctPnZpZGVvVGltZVNjYWxlKTsKKyAgICBkb3VibGUgb3V0cHV0VGlt
ZVNlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZSkgLyBz
dGF0aWNfY2FzdDxkb3VibGU+KG91dHB1dFRpbWUtPnZpZGVvVGltZVNjYWxlKTsKKyAgICBtb25p
dG9yLT5kaXNwbGF5TGlua0ZpcmVkKG5vd1NlY29uZHMsIG91dHB1dFRpbWVTZWNvbmRzKTsKKwor
ICAgIHJldHVybiBrQ1ZSZXR1cm5TdWNjZXNzOworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiB7Ci0gICAgaWYgKCFtX2FjdGl2ZSkK
KyAgICBpZiAoIWlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgh
bV9kaXNwbGF5TGluaykgewotICAgICAgICBtX2FjdGl2ZSA9IGZhbHNlOwotICAgICAgICBDVlJl
dHVybiBlcnJvciA9IENWRGlzcGxheUxpbmtDcmVhdGVXaXRoQ0dEaXNwbGF5KG1fZGlzcGxheUlE
LCAmbV9kaXNwbGF5TGluayk7CisgICAgICAgIHNldElzQWN0aXZlKGZhbHNlKTsKKyAgICAgICAg
Q1ZSZXR1cm4gZXJyb3IgPSBDVkRpc3BsYXlMaW5rQ3JlYXRlV2l0aENHRGlzcGxheShkaXNwbGF5
SUQoKSwgJm1fZGlzcGxheUxpbmspOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTc2LDI2ICs4MSwyNiBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiAgICAgICAgIGlmIChlcnJvcikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2FjdGl2ZSA9IHRydWU7CisgICAgICAg
IHNldElzQWN0aXZlKHRydWUpOwogICAgIH0KIAotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRl
eCk7Ci0gICAgbV9zY2hlZHVsZWQgPSB0cnVlOworICAgIE11dGV4TG9ja2VyIGxvY2sobXV0ZXgo
KSk7CisgICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKGRvdWJsZSBub3dTZWNv
bmRzLCBkb3VibGUgb3V0cHV0VGltZVNlY29uZHMpCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6ZGlzcGxheUxpbmtGaXJlZChkb3VibGUgbm93U2Vjb25kcywgZG91YmxlIG91dHB1dFRp
bWVTZWNvbmRzKQogewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgaWYgKCFt
X3ByZXZpb3VzRnJhbWVEb25lKQorICAgIE11dGV4TG9ja2VyIGxvY2sobXV0ZXgoKSk7CisgICAg
aWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJl
dmlvdXNGcmFtZURvbmUgPSBmYWxzZTsKKyAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNl
KTsKIAogICAgIGRvdWJsZSB3ZWJLaXRNb25vdG9uaWNOb3cgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKICAgICBkb3VibGUgdGltZVVudGlsT3V0cHV0ID0gb3V0cHV0VGltZVNlY29u
ZHMgLSBub3dTZWNvbmRzOwogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB1c2luZyB3ZWJL
aXRNb25vdG9uaWNOb3c/Ci0gICAgbV9tb25vdG9uaWNBbmltYXRpb25TdGFydFRpbWUgPSB3ZWJL
aXRNb25vdG9uaWNOb3cgKyB0aW1lVW50aWxPdXRwdXQ7CisgICAgc2V0TW9ub3RvbmljQW5pbWF0
aW9uU3RhcnRUaW1lKHdlYktpdE1vbm90b25pY05vdyArIHRpbWVVbnRpbE91dHB1dCk7CiAKICAg
ICBjYWxsT25NYWluVGhyZWFkKGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1h
aW5UaHJlYWQsIHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZmYzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hY19oCisjZGVmaW5l
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hY19oCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9y
LmgiCisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZEaXNwbGF5TGluayAqQ1ZEaXNwbGF5TGlua1JlZjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMg
OiBwdWJsaWMgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJ
RCBkaXNwbGF5SUQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYyhkaXNwbGF5SUQpKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB+
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjKCk7CisKKyAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQo
ZG91YmxlIG5vd1NlY29uZHMsIGRvdWJsZSBvdXRwdXRUaW1lU2Vjb25kcyk7CisgICAgdmlydHVh
bCBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMoUGxhdGZvcm1EaXNwbGF5SUQpOwor
ICAgIENWRGlzcGxheUxpbmtSZWYgbV9kaXNwbGF5TGluazsKK307CisKK30KKworI2VuZGlmIC8v
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCAxMGFjMDkzLi43NTVkNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMzkyNSw0ICszOTI1LDE2IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludFJlbGF0ZWRNaWxlc3RvbmVzVGltZXJGaXJl
ZChUaW1lcjxSZW5kZXJMYXllckNvCiAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmZpcmVQ
YWludFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKIH0KIAorI2lmIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCitQYXNzUmVmUHRyPERpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKSBjb25zdAoreworICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5mcmFtZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBm
cmFtZS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5jcmVhdGVEaXNwbGF5UmVmcmVzaE1v
bml0b3IoZGlzcGxheUlEKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5k
ZXggZTcwZjU1OGRkLi4xMDU3M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIHByaXZhdGU6CiAg
ICAgR3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Q7CiAg
ICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3Q7CiAK
KyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorICAgIFBh
c3NSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0
b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0OworI2VuZGlmCisKICAgICAvLyBXaGV0aGVyIGEg
cnVubmluZyB0cmFuc2l0aW9uIG9yIGFuaW1hdGlvbiBlbmZvcmNlcyB0aGUgbmVlZCBmb3IgYSBj
b21wb3NpdGluZyBsYXllci4KICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRp
b24oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21w
b3NpdGluZ0ZvclRyYW5zZm9ybShSZW5kZXJMYXllck1vZGVsT2JqZWN0JikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggN2VmYWFjYy4uOTFiOGZlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAor
MjAxNC0wNS0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBSRUdSRVNTSU9OIChpT1MgV2ViS2l0Mik6IHJlcXVlc3RBbmltYXRpb25GcmFtZSBmaXJl
cyBtb3JlIHRoYW4gb25jZSBiZXR3ZWVuIGxheWVyIHRyZWUgY29tbWl0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNzk0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xNjg3NzkwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9y
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAo
V2ViS2l0OjpEcmF3aW5nQXJlYTo6Z3JhcGhpY3NMYXllckZhY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAg
UGx1bWIgdGhlIERpc3BsYXlSZWZyZXNoTW9uaXRvciByZXF1ZXN0IHRocm91Z2ggdG8gdGhlIERy
YXdpbmdBcmVhLgorICAgICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSB3aWxsIGltcGxl
bWVudCBhbmQgcmV0dXJuIGEgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3Bs
YXlSZWZyZXNoTW9uaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW06IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3I6OlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6flJlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAg
IFdoZW4gcmVxdWVzdGluZyBhIGRpc3BsYXkgcmVmcmVzaCBjYWxsYmFjaywgc2NoZWR1bGUgYSBs
YXllciBjb21taXQuCisgICAgICAgIEl0IG1heSBlbmQgdXAgYmVpbmcgZW1wdHksIGJ1dCB3aWxs
IHN0aWxsIGNhbGwgdXMgYmFjayB3aXRoIGEgZGlkVXBkYXRlLAorICAgICAgICB1cG9uIHdoaWNo
IHdlJ2xsIGZpcmUgdGhlIGNhbGxiYWNrLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlkVXBkYXRlTGF5ZXJzKToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Y3JlYXRl
RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OndpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKToKKyAgICAgICAg
S2VlcCB0cmFjayBvZiB0aGUgc2V0IG9mIERpc3BsYXlSZWZyZXNoTW9uaXRvcnMuCisKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmRpZFVwZGF0ZSk6CisgICAg
ICAgIEZpcmUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcyBvbmNlIHRoZSBVSSBwcm9j
ZXNzIGNvbW1pdHMgdGhlIG5ldyBsYXllciB0cmVlLgorCiAyMDE0LTA1LTIzICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFuIGFzc2VydGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyNzg0ODM0Li40MjZiYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzAsNiArNTMwLDggQEAKIAkJMkQyOEYz
RTUxODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkRhdGFiYXNlTWFuYWdlcklPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjhGM0UxMTg4NUNDQzEwMDRC
OUVBRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJJT1MubW0gKi87IH07CiAJCTJEMjhGM0U2MTg4NUND
QzEwMDRCOUVBRSAvKiBXZWJFZGl0b3JDbGllbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDI4RjNFMjE4ODVDQ0MxMDA0QjlFQUUgLyogV2Vi
RWRpdG9yQ2xpZW50SU9TLm1tICovOyB9OwogCQkyRDI4RjNFNzE4ODVDQ0MxMDA0QjlFQUUgLyog
V2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDI4RjNFMzE4ODVDQ0MxMDA0QjlFQUUgLyogV2ViRnJhbWVMb2Fk
ZXJDbGllbnRJT1MubW0gKi87IH07CisJCTJEMjlFQ0QwMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1v
dGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0NFMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1v
dGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCAqLzsgfTsKKwkJMkQyOUVDRDExOTJG
MkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjlFQ0NGMTky
RjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0g
Ki87IH07CiAJCTJEMkFERjA5MTYzNjJERDUwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
MkFERjA2MTYzNjJEQzcwMDE5N0U0NyAvKiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSAqLzsg
fTsKIAkJMkQyQURGMEIxNjM2MkREQjAwMTk3RTQ3IC8qIFBERlBsdWdpbkFubm90YXRpb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwMzE2
MzYyNDM1MDAxOTdFNDcgLyogUERGUGx1Z2luQW5ub3RhdGlvbi5tbSAqLzsgfTsKIAkJMkQyQURG
MTAxNjM2NEQ4MjAwMTk3RTQ3IC8qIFBERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJBREYwRTE2MzY0RDgy
MDAxOTdFNDcgLyogUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSAqLzsgfTsKQEAgLTI0NjUs
NiArMjQ2Nyw4IEBACiAJCTJEMjhGM0UxMTg4NUNDQzEwMDRCOUVBRSAvKiBXZWJEYXRhYmFzZU1h
bmFnZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJE
YXRhYmFzZU1hbmFnZXJJT1MubW07IHBhdGggPSBpb3MvV2ViRGF0YWJhc2VNYW5hZ2VySU9TLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDI4RjNFMjE4ODVDQ0MxMDA0QjlFQUUg
LyogV2ViRWRpdG9yQ2xpZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV2ViRWRpdG9yQ2xpZW50SU9TLm1tOyBwYXRoID0gaW9zL1dlYkVkaXRvckNsaWVu
dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQyOEYzRTMxODg1Q0NDMTAw
NEI5RUFFIC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW07IHBhdGggPSBp
b3MvV2ViRnJhbWVMb2FkZXJDbGllbnRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJEMjlFQ0NFMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGF5
ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJEMjlFQ0NGMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEMkFERjAyMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBERlBsdWdpbkFubm90YXRp
b24uaDsgcGF0aCA9IFBERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEMkFERjAzMTYzNjI0MzUwMDE5N0U0NyAvKiBQREZQbHVnaW5Bbm5vdGF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDJBREYwNTE2MzYyREM3MDAxOTdFNDcgLyogUERGUGx1
Z2luVGV4dEFubm90YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUERG
UGx1Z2luVGV4dEFubm90YXRpb24uaDsgcGF0aCA9IFBERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0OSw2ICs0NjUzLDE1IEBACiAJ
CQluYW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMkQyOUVD
Q0QxOTJGMkMyRTAwOTg0Qjc4IC8qIENvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkyRDI5RUNDRTE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5
ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCisJCQkJMkQyOUVDQ0YxOTJGMkMyRTAw
OTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5tbSAqLywKKwkJ
CSk7CisJCQlwYXRoID0gQ29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQkyREE5NDQ3NzE4ODRFM0FCMDBFRDg2REIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTU1NDYsNiArNTU1OSw3IEBACiAJCUJDMDMyRDVFMTBG
NDM3MkIwMDU4QzE1QSAvKiBXZWJQYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkyRDI5RUNDRDE5MkYyQzJFMDA5ODRCNzggLyogQ29jb2EgKi8sCiAJ
CQkJMkRBOTQ0QjQxODg0RUEyQTAwRUQ4NkRCIC8qIGlvcyAqLywKIAkJCQlCQzk2M0Q2QzExM0RE
MTk1MDA1NzRCRTIgLyogbWFjICovLAogCQkJCTkzRkM2NzlEMTJEM0NDNzQwMEE2MDYxMCAvKiBE
ZWNvZGVyQWRhcHRlci5jcHAgKi8sCkBAIC03NDIzLDYgKzc0MzcsNyBAQAogCQkJCTI2ODQwNTQ0
MThCODVBNjMwMDIyQzM4QiAvKiBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzNzk0ODQwNDE1MEMzNTA2MDBFNTJDRTkgLyogV2ViUmVuZGVyTGF5ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUY2MTgwRjVDNzUwMEU1M0JFOSAvKiBXZWJJREJG
YWN0b3J5QmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQyOUVDRDAxOTJGMkMyRTAwOTg0
Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc2MDg4MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyMTc0NjUxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNl
QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzM2NzYzMDEzMEM5OTk4MDA2QzlERTIgLyog
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtODgwNiw2ICs4ODIx
LDcgQEAKIAkJCQkxQUUxMTdGNjExREJCMzA5MDA5ODE2MTUgLyogUHJvY2Vzc0xhdW5jaGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQjFEMTEyRjVGRTYwMDMzN0JBQiAvKiBQcm9jZXNz
TGF1bmNoZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFFOTE2NEIzQTg4MDAyOTBE
NjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJEMjlF
Q0QxMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFCMDM3OTE4NUE3QzZBMDBFREY1MDEgLyogTWVz
c2FnZVNlbmRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUIxNkFERDE2NDg1OTg0MDAyOTBE
NjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QUIxNkFFMTE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDFiZWY4NWEu
LjY3ZDIxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4MCw2ICs3ODAsMTMgQEAg
R3JhcGhpY3NMYXllckZhY3RvcnkqIFdlYkNocm9tZUNsaWVudDo6Z3JhcGhpY3NMYXllckZhY3Rv
cnkoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCk7CiB9CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExB
WV9NT05JVE9SKQorUGFzc1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5kcmF3aW5nQXJlYSgp
LT5jcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKTsKK30KKyNlbmRpZgorCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBHcmFw
aGljc0xheWVyKiBsYXllcikKIHsKICAgICBpZiAobGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCAxM2NiODJkLi5lYjRkMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTIwNCw2ICsy
MDQsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyRmx1c2goKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
IGRvY3VtZW50T3ZlcmxheUxheWVyRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUmKSBvdmVycmlkZTsK
IAorI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRl
RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBvdmVycmlkZTsK
KyNlbmRpZgorCiAgICAgdmlydHVhbCBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29t
cG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3M+KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxh
eWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmE4NmU3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9y
LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcl9o
CisjZGVmaW5lIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcl9oCisKKyNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAi
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yIDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3RlTGF5ZXJU
cmVlRGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlELCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSYgZHJhd2luZ0FyZWEpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvcihkaXNwbGF5SUQsIGRyYXdpbmdBcmVhKSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
flJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcigpOworCisgICAgdmlydHVhbCBi
b29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworICAgIHZvaWQgZGlkVXBk
YXRlTGF5ZXJzKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmVtb3RlTGF5ZXJUcmVlRGlz
cGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlELCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYSYpOworCisgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEmIG1fZHJhd2luZ0Fy
ZWE7Cit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorCisjZW5kaWYgLy8gUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hN
b25pdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJl
c2hNb25pdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YzY0YzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCkBAIC0wLDAgKzEsNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0
b3IuaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1Ip
CisKKyNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvcjo6UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCwgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEmIGRyYXdpbmdBcmVh
KQorICAgIDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKKyAgICAsIG1fZHJhd2lu
Z0FyZWEoZHJhd2luZ0FyZWEpCit7Cit9CisKK1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNo
TW9uaXRvcjo6flJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcigpCit7CisgICAg
bV9kcmF3aW5nQXJlYS53aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcih0aGlzKTsKK30K
KworYm9vbCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKQoreworICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFpc1NjaGVkdWxlZCgpKQorICAgICAgICBzdGF0aWNfY2FzdDxEcmF3
aW5nQXJlYSY+KG1fZHJhd2luZ0FyZWEpLnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7
CisKKyAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmRpZFVwZGF0ZUxheWVycygpCit7CisgICAgc2V0SXNTY2hlZHVsZWQoZmFsc2UpOwor
CisgICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOworICAgIHNldE1vbm90b25pY0FuaW1hdGlv
blN0YXJ0VGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisKKyAgICBoYW5kbGVE
aXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOworfQorCit9CisK
KyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAK
aW5kZXggMTQ5YTk5NS4uODk4YWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAKQEAgLTkxLDQgKzkyLDEx
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IERyYXdpbmdBcmVhOjpyb290TGF5ZXJUcmFuc2Zvcm0o
KSBjb25zdAogICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogfQogCisjaWYgVVNF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKK1Bhc3NSZWZQdHI8V2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJl
ZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKQoreworICAgIHJldHVybiBudWxscHRyOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA4MjY3ODYzLi44ZDBkZDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdT
dGF0ZS5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTQxLDYgKzQyLDcgQEAgY2xhc3MgTWVzc2FnZURlY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lVmlldzsK
IGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBHcmFwaGljc0xheWVyRmFjdG9yeTsKQEAgLTk1
LDEwICs5NywxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlVGlsZWRC
YWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyopIHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFw
aGljc0xheWVyRmFjdG9yeSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGlu
Z0xheWVyRmx1c2goKSA9IDA7CiAKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJ
RCk7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgg
cm9vdExheWVyVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RMYXll
clRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggOWFjMTRkZC4uNzEyYjI3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtNDUsOCArNDUsMTAgQEAg
Y2xhc3MgTWVzc2FnZUVuY29kZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dDsKK2NsYXNzIFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvcjsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgOiBwdWJsaWMgRHJhd2lu
Z0FyZWEsIHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBmcmllbmQg
Y2xhc3MgUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yOwogcHVibGljOgogICAg
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCB+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEo
KTsKQEAgLTYyLDYgKzY0LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENv
bXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwogCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3Jl
YXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHdpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvciopOworCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZVRpbGVkQmFja2lu
Z0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcqKSBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jikgb3ZlcnJpZGU7CkBAIC0xMzYsNiArMTQxLDggQEAgcHJpdmF0ZToKIAogICAgIGRpc3BhdGNo
X3F1ZXVlX3QgbV9jb21taXRRdWV1ZTsKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4g
bV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlcjsKKworICAgIEhhc2hTZXQ8UmVtb3RlTGF5ZXJU
cmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKj4gbV9kaXNwbGF5UmVmcmVzaE1vbml0b3JzOwogfTsK
IAogRFJBV0lOR19BUkVBX1RZUEVfQ0FTVFMoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEsIHR5
cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggOWY1ZjdjMS4uNmMwMTY5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIgorI2ltcG9y
dCAiUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAjaW1wb3J0ICJSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmgiCkBAIC05MSw2ICs5MiwxOCBAQCBHcmFwaGljc0xheWVyRmFjdG9yeSog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKICAgICBy
ZXR1cm4gbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LmdldCgpOwogfQogCitQYXNzUmVmUHRyPERp
c3BsYXlSZWZyZXNoTW9uaXRvcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmNyZWF0ZURp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAg
UmVmUHRyPFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcj4gbW9uaXRvciA9IFJl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgKnRo
aXMpOworICAgIG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycy5hZGQobW9uaXRvci5nZXQoKSk7Cisg
ICAgcmV0dXJuIG1vbml0b3IucmVsZWFzZSgpOworfQorCit2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjp3aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcihEaXNwbGF5UmVmcmVz
aE1vbml0b3IqIG1vbml0b3IpCit7CisgICAgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3JzLnJlbW92
ZShzdGF0aWNfY2FzdDxSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IqPihtb25p
dG9yKSk7Cit9CisKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldFJvb3RDb21w
b3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIHJvb3RMYXllcikKIHsKICAgICBWZWN0b3I8R3Jh
cGhpY3NMYXllciAqPiBjaGlsZHJlbjsKQEAgLTMwOSw2ICszMjIsOSBAQCB2b2lkIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpkaWRVcGRhdGUoKQogICAgIC8vIFRoaXMgZW1wdHkgdHJhbnNh
Y3Rpb24gc2VydmVzIHRvIHRyaWdnZXIgQ0EncyBnYXJiYWdlIGNvbGxlY3Rpb24gb2YgSU9TdXJm
YWNlcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNjExMDY4Nz4KICAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKKworICAgIGZvciAoYXV0byYgbW9u
aXRvciA6IG1fZGlzcGxheVJlZnJlc2hNb25pdG9ycykKKyAgICAgICAgbW9uaXRvci0+ZGlkVXBk
YXRlTGF5ZXJzKCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6Om1haW5G
cmFtZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>