<?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>236573</bug_id>
          
          <creation_ts>2022-02-13 15:56:04 -0800</creation_ts>
          <short_desc>[GPU Process] Make SVGFEImageElement::filterEffect() create an ImageBuffer compatible with the destination GraphicsContext</short_desc>
          <delta_ts>2022-04-06 15:42:55 -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>Layout and Rendering</component>
          <version>WebKit 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>
          <dependson>236574</dependson>
          <blocked>236508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1841083</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-13 15:56:04 -0800</bug_when>
    <thetext>This requires passing a GraphicsContext to SVGFilter::create() and CSSFilter::create(). This already can be done for SVGFilter since it is created in RenderSVGResourceFilter::applyResource(). But creating the CSSFilter is a little problematic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844087</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-20 15:57:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/89209695&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858236</commentid>
    <comment_count>2</comment_count>
      <attachid>456668</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-04 22:02:39 -0700</bug_when>
    <thetext>Created attachment 456668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858501</commentid>
    <comment_count>3</comment_count>
      <attachid>456668</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-04-05 12:34:00 -0700</bug_when>
    <thetext>Comment on attachment 456668
Patch

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

&gt; Source/WebCore/rendering/CSSFilter.cpp:259
&gt; +static RefPtr&lt;SVGFilter&gt; createReferenceFilter(CSSFilter&amp; filter, const ReferenceFilterOperation&amp; filterOperation, RenderElement&amp; renderer, const FloatRect&amp; targetBoundingBox, const GraphicsContext&amp; context)

Can we all it &quot;destinationContext&quot; to avoid any ambiguity with contexts related to the filter&apos;s internal buffers.

&gt; Source/WebCore/rendering/CSSFilter.cpp:271
&gt; +bool CSSFilter::buildFilterFunctions(RenderElement&amp; renderer, const FilterOperations&amp; operations, const FloatRect&amp; targetBoundingBox, const GraphicsContext&amp; context)

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858978</commentid>
    <comment_count>4</comment_count>
      <attachid>456850</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-06 12:37:53 -0700</bug_when>
    <thetext>Created attachment 456850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859060</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-06 15:42:50 -0700</bug_when>
    <thetext>Committed r292512 (249354@main): &lt;https://commits.webkit.org/249354@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456850.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456668</attachid>
            <date>2022-04-04 22:02:39 -0700</date>
            <delta_ts>2022-04-05 12:34:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236573-20220404220238.patch</filename>
            <type>text/plain</type>
            <size>62719</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQyYTAwZTQ1ZGMzM2Ez
ZDcyM2I5ZmMyNTkyMDA4MzNlZGIzMTdlNy4uY2I1NjRiZDI0MmU2ZDIwNjc1MDMzNDRhY2M3ZWQz
MWU0NTkyYTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAyMi0wNC0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCgpIGNyZWF0ZSBhbiBJbWFnZUJ1
ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGRlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTczCisgICAg
ICAgIHJkYXI6Ly84OTIwOTY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFBhc3MgYSBHcmFwaGljc0NvbnRleHQgdG8gQ1NTRmlsdGVyOjpjcmVhdGUo
KSBhbmQgU1ZHRmlsdGVyOjpjcmVhdGUoKS4KKyAgICAgICAgSWYgdGhlcmUgaXMgbm8gR3JhcGhp
Y3NDb250ZXh0IGF2YWlsYWJsZSwgbGlrZSB0aGUgY2FsbCB3ZSBtYWtlIGluCisgICAgICAgIENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKCksIHBhc3MgYSBOdWxsR3JhcGhpY3NDb250ZXh0KCku
IFRoaXMgd2lsbCAKKyAgICAgICAgY3JlYXRlIGEgbG9jYWwgSW1hZ2VCdWZmZXIuIEFuZCB0aGlz
IGV4YWN0bHkgd2hhdCB3ZSB3YW50LgorCisgICAgICAgIFRoZSBHcmFwaGljc0NvbnRleHQgd2ls
bCBiZSBwYXNzZWQgZnJvbSBTVkdGaWx0ZXI6OmJ1aWxkRmlsdGVyRXhwcmVzc2lvbigpCisgICAg
ICAgIHRvIGFsbCB0aGUgb3ZlcnJpZGRlbiBmaWx0ZXJFZmZlY3QoKS4gU1ZHRkVJbWFnZUVsZW1l
bnQ6OmZpbHRlckVmZmVjdCgpCisgICAgICAgIGlzIHRoZSBvbmx5IG9uZSB0aGF0IGlzIGdvaW5n
IHRvIHVzZS4KKworICAgICAgICBJbiBwcmVwYXJhdGlvbiB0byByZW1vdmUgU1ZHRmlsdGVyQnVp
bGRlcjoKKworICAgICAgICAtLSBQYXNzIGFuIFNWR0ZpbHRlciBpbnN0ZWFkIG9mIFNWR0ZpbHRl
ckJ1aWxkZXIgdG8gYWxsIHRoZSBvdmVycmlkZGVuCisgICAgICAgICAgIGZpbHRlckVmZmVjdCgp
IGFuZCBhbGwgdGhlIG92ZXJyaWRkZW4gbGlnaHRTb3VyY2UoKS4KKyAgICAgICAgLS0gTWFrZSBT
VkdGaWx0ZXJCdWlsZGVyOjpjYWxjdWxhdGVGaWx0ZXJPdXRzZXRzKCkgYSBzdGF0aWMgbWV0aG9k
LgorICAgICAgICAtLSBSZW1vdmUgdGhlIG1lbWJlcnM6IFNWR0ZpbHRlckJ1aWxkZXI6Om1fdHJh
Z2V0Qm91bmRpbmdCb3ggYW5kCisgICAgICAgICAgIFNWR0ZpbHRlckJ1aWxkZXI6Om1fcHJpbWl0
aXZlVW5pdHMgc2luY2UgdGhleSBleGlzdCBpbiBTVkdGaWx0ZXIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpO
dWxsR3JhcGhpY3NDb250ZXh0OjpOdWxsR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVJlZmVyZW5jZUZpbHRlck91dHNldHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9DU1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVs
ZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3Qp
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpmaWx0
ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3Qg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToK
KyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RURpc3RhbnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6
ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBz
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmVjdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnNjYWxlZEltYWdlQnVmZmVyUmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICog
c3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6Zmls
dGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAqIHN2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExpZ2h0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpsaWdo
dFNvdXJjZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29u
c3QpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRVNwb3RMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVTcG90TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNv
bnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRl
ckV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6Y2FsY3Vs
YXRlRmlsdGVyT3V0c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpT
VkdGaWx0ZXJCdWlsZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVy
Ojp0YXJnZXRCb3VuZGluZ0JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdGaWx0ZXJCdWlsZGVyOjpwcmltaXRpdmVVbml0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICgpOiBEZWxldGVkLgorCiAyMDIyLTA0LTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQ1NTRmlsdGVyIHNob3VsZCBiZSBjcmVh
dGVkIG9ubHkgYXQgdGhlIHBhaW50aW5nIHRpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAppbmRleCA2YzMzMzM5NjI3
MjE1Mjc3Njg2NDcwYTAyYjE1ZjU2MmVmMWJhMDVlLi5lYzYyNDdiNjkxZjdkNDA0YjUzNGI3NmE1
MGFmMzQzMzYzMDY4MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgRGV0ZWN0aW5nQ29udGVudGZ1bFBhaW50CiAgICAgfTsKIAotICAgIE51bGxHcmFw
aGljc0NvbnRleHQoUGFpbnRJbnZhbGlkYXRpb25SZWFzb25zIHJlYXNvbnMpCisgICAgTnVsbEdy
YXBoaWNzQ29udGV4dChQYWludEludmFsaWRhdGlvblJlYXNvbnMgcmVhc29ucyA9IHsgfSkKICAg
ICAgICAgOiBtX3BhaW50SW52YWxpZGF0aW9uUmVhc29ucyhyZWFzb25zKQogICAgIHsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGI2ODg4MzFlYjEyYzE3
Y2QyMDJjYzgzMGJmZjM2Nzk1ZGY0MTAzNjYuLmVkOTVlMTJhYjk4NDdhOTU2MTdkYzZiZGE5YTNi
ZDI5MmRiZmFiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC00
MiwxNCArNDIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q1NTRmlsdGVy
PiBDU1NGaWx0ZXI6OmNyZWF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCitSZWZQdHI8Q1NTRmlsdGVyPiBDU1NG
aWx0ZXI6OmNyZWF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgb3BlcmF0aW9ucywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9h
dFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscyA9IG9wZXJhdGlvbnMuaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCk7CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVS
ZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbiA9IG9wZXJhdGlvbnMuaGFzRmlsdGVyVGhhdFNob3Vs
ZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKTsKIAogICAgIGF1dG8gZmlsdGVyID0gYWRv
cHRSZWYoKm5ldyBDU1NGaWx0ZXIocmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGNsaXBPcGVy
YXRpb24sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVz
dHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pKTsKIAotICAgIGlmICghZmlsdGVyLT5idWlsZEZpbHRl
ckZ1bmN0aW9ucyhyZW5kZXJlciwgb3BlcmF0aW9ucywgdGFyZ2V0Qm91bmRpbmdCb3gpKQorICAg
IGlmICghZmlsdGVyLT5idWlsZEZpbHRlckZ1bmN0aW9ucyhyZW5kZXJlciwgb3BlcmF0aW9ucywg
dGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnRleHQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkICYmICFm
aWx0ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSkKQEAgLTI1MywxMSArMjUzLDEw
IEBAIHN0YXRpYyBJbnRPdXRzZXRzIGNhbGN1bGF0ZVJlZmVyZW5jZUZpbHRlck91dHNldHMoY29u
c3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uCiAgICAgaWYgKCFmaWx0ZXJFbGVtZW50KQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyKHRhcmdldEJv
dW5kaW5nQm94LCBmaWx0ZXJFbGVtZW50LT5wcmltaXRpdmVVbml0cygpKTsKLSAgICByZXR1cm4g
YnVpbGRlci5jYWxjdWxhdGVGaWx0ZXJPdXRzZXRzKCpmaWx0ZXJFbGVtZW50KTsKKyAgICByZXR1
cm4gU1ZHRmlsdGVyQnVpbGRlcjo6Y2FsY3VsYXRlRmlsdGVyT3V0c2V0cygqZmlsdGVyRWxlbWVu
dCwgdGFyZ2V0Qm91bmRpbmdCb3gpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3Jl
YXRlUmVmZXJlbmNlRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCitzdGF0aWMgUmVmUHRyPFNWR0ZpbHRl
cj4gY3JlYXRlUmVmZXJlbmNlRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICBhdXRvIGZpbHRlckVsZW1lbnQgPSByZWZlcmVuY2VGaWx0
ZXJFbGVtZW50KGZpbHRlck9wZXJhdGlvbiwgcmVuZGVyZXIpOwogICAgIGlmICghZmlsdGVyRWxl
bWVudCkKQEAgLTI2NSwxMSArMjY0LDExIEBAIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVh
dGVSZWZlcmVuY2VGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jCiAKICAg
ICBhdXRvIGZpbHRlclJlZ2lvbiA9IFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8
U1ZHRmlsdGVyRWxlbWVudD4oZmlsdGVyRWxlbWVudCwgZmlsdGVyRWxlbWVudC0+ZmlsdGVyVW5p
dHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwogCi0gICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVy
KHRhcmdldEJvdW5kaW5nQm94LCBmaWx0ZXJFbGVtZW50LT5wcmltaXRpdmVVbml0cygpKTsKLSAg
ICByZXR1cm4gU1ZHRmlsdGVyOjpjcmVhdGUoKmZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRl
ci5yZW5kZXJpbmdNb2RlKCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBmaWx0ZXIuY2xpcE9wZXJh
dGlvbigpLCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94KTsKKyAgICBTVkdGaWx0ZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgcmV0dXJuIFNWR0ZpbHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVt
ZW50LCBidWlsZGVyLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUo
KSwgZmlsdGVyLmNsaXBPcGVyYXRpb24oKSwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0Jv
eCwgY29udGV4dCk7CiB9CiAKLWJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9u
cywgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKK2Jvb2wgQ1NTRmlsdGVyOjpi
dWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0Jv
eCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxGaWx0ZXJG
dW5jdGlvbj4gZnVuY3Rpb247CiAKQEAgLTMyMCw3ICszMTksNyBAQCBib29sIENTU0ZpbHRlcjo6
YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRl
ck9wZXJhdAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OlJFRkVSRU5DRToKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gY3JlYXRlUmVmZXJlbmNlRmls
dGVyKCp0aGlzLCBkb3duY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24p
LCByZW5kZXJlciwgdGFyZ2V0Qm91bmRpbmdCb3gpOworICAgICAgICAgICAgZnVuY3Rpb24gPSBj
cmVhdGVSZWZlcmVuY2VGaWx0ZXIoKnRoaXMsIGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJh
dGlvbj4oKm9wZXJhdGlvbiksIHJlbmRlcmVyLCB0YXJnZXRCb3VuZGluZ0JveCwgY29udGV4dCk7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5oCmluZGV4IDI5YzFkMWNkMzYxYzlkMjViYWNjMTcwNGRiNGU0ODk0NTQx
NzJjZGEuLmNmMjc4YzFhNTE2MThkMzY2YjE4ZTRmZDFkZWJmZGNkMjEzYTNjYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkZpbHRlci5oIgogI2luY2x1ZGUgIkxlbmd0aEJveC5oIgorI2luY2x1ZGUgIk51bGxHcmFwaGlj
c0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw3ICszOCw3IEBAIGNs
YXNzIFNvdXJjZUdyYXBoaWM7CiBjbGFzcyBDU1NGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPENTU0ZpbHRlcj4gY3JlYXRlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9w
ZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7CisgICAgc3RhdGlj
IFJlZlB0cjxDU1NGaWx0ZXI+IGNyZWF0ZShSZW5kZXJFbGVtZW50JiwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENs
aXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgPSBOdWxsR3JhcGhpY3NDb250ZXh0KCkpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8Q1NTRmlsdGVyPiBjcmVhdGUoVmVjdG9yPFJlZjxGaWx0ZXJGdW5j
dGlvbj4+JiYpOwogCiAgICAgY29uc3QgVmVjdG9yPFJlZjxGaWx0ZXJGdW5jdGlvbj4+JiBmdW5j
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uczsgfQpAQCAtNTYsOCArNTcsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIENTU0ZpbHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9h
dFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBib29sIGhhc0ZpbHRlclRoYXRNb3Zl
c1BpeGVscywgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9y
aWdpbik7CiAgICAgQ1NTRmlsdGVyKFZlY3RvcjxSZWY8RmlsdGVyRnVuY3Rpb24+PiYmKTsKLSAg
ICAKLSAgICBib29sIGJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7CisK
KyAgICBib29sIGJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJp
bmcoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJzLmNwcAppbmRleCAyNTNmZmRhNmI0MjI5Y2I2MThiNzY1YWEzMzlhZjI1YjU0
Zjc5NDAzLi5lNzA4N2ZhNWZkZGU1OTQ4NzU0N2E4ZTllZmIzNGNjMGVlMzhhZjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAtMTU0
LDcgKzE1NCw3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZp
bHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwKICAgICBpZiAoIW1fZmlsdGVyIHx8
IG1fdGFyZ2V0Qm91bmRpbmdCb3ggIT0gdGFyZ2V0Qm91bmRpbmdCb3gpIHsKICAgICAgICAgbV90
YXJnZXRCb3VuZGluZ0JveCA9IHRhcmdldEJvdW5kaW5nQm94OwogICAgICAgICAvLyBGSVhNRTog
VGhpcyByZWJ1aWxkcyB0aGUgZW50aXJlIGVmZmVjdHMgY2hhaW4gZXZlbiBpZiB0aGUgZmlsdGVy
IHN0eWxlIGRpZG4ndCBjaGFuZ2UuCi0gICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVh
dGUocmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCksIG1fcmVuZGVyaW5nTW9kZSwg
bV9maWx0ZXJTY2FsZSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpVbml0ZSwgbV90YXJnZXRCb3Vu
ZGluZ0JveCk7CisgICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIs
IHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCksIG1fcmVuZGVyaW5nTW9kZSwgbV9maWx0ZXJTY2Fs
ZSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpVbml0ZSwgbV90YXJnZXRCb3VuZGluZ0JveCwgY29u
dGV4dCk7CiAgICAgfQogCiAgICAgaWYgKCFtX2ZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXgg
OGQ1ZGJkOTNkYjkwMDJiOTdhYjM5ZDBmNThjODFhOWI3MDA2Y2RkMS4uYTdhNzc3ODFiMDVmOGUx
ZWFlMmUwYjAzNDUxMWI3OWI1MmE5YTdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTEyOSw4ICsx
MjksOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9
IHJlbmRlcmVyLnBhZ2UoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBSZW5kZXJpbmdN
b2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKICAgICAv
LyBDcmVhdGUgdGhlIFNWR0ZpbHRlciBvYmplY3QuCi0gICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9
IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4odGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckVs
ZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKLSAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdG
aWx0ZXI6OmNyZWF0ZShmaWx0ZXJFbGVtZW50KCksICpmaWx0ZXJEYXRhLT5idWlsZGVyLCByZW5k
ZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3Qs
IGZpbHRlckRhdGEtPmJvdW5kYXJpZXMsIHRhcmdldEJvdW5kaW5nQm94KTsKKyAgICBmaWx0ZXJE
YXRhLT5idWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigpOworICAgIGZpbHRl
ckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1lbnQoKSwgKmZpbHRl
ckRhdGEtPmJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBGaWx0ZXI6OkNsaXBP
cGVyYXRpb246OkludGVyc2VjdCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRp
bmdCb3gsICpjb250ZXh0KTsKICAgICBpZiAoIWZpbHRlckRhdGEtPmZpbHRlcikgewogICAgICAg
ICBtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5yZW1vdmUoJnJlbmRlcmVyKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZThhZGVkYmQ1NzIwZmM5YTcxN2Q0ZmY4MzlkN2U5MWU0
ZWIyYzM4Yi4uZjE1ZTYzNzE2MDRiOGE5NWY3YWJlYTcyNmY0MDdjOWZmOTRmZjlkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQu
Y3BwCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAg
Ly8gQ3JlYXRpbmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBi
dWlsZGVyLgogICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwogICAgICAgICBGbG9hdFNpemUg
ZHVtbXlTY2FsZSgxLCAxKTsKLSAgICAgICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyKGR1bW15
UmVjdCk7CisgICAgICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYXV0byBk
dW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJFbGVtZW50KCksIGJ1
aWxkZXIsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGR1bW15U2NhbGUsIEZpbHRlcjo6
Q2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCk7CiAgICAgICAg
IGlmIChkdW1teUZpbHRlcikgewogICAgICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUg
aW5kZW50U2NvcGUodHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAK
aW5kZXggMGExYjQzYTdhZDM1MmY5MmE4ZTkxN2UxYWVhODJhZDUxMjkxYjk1OS4uZDhjZThmMTE2
MGMwZDNhYTBkZDQxZDQ5NzhiYzUzOGM0Mzk3YTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1l
bnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50
OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICByZXR1cm4gRkVCbGVuZDo6
Y3JlYXRlKG1vZGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCmlu
ZGV4IDllN2FlYzAwY2Y1MzJiZTI5N2ExYWZiOTlmMmZjZjk0NzIxZDMyOWQuLjlkZTg3ZmRmZjg0
NzRhZWRhMzEyY2MxYTFjNTg0ZTdhNTIzM2JmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElu
cHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSwgaW4yKCkgfTsgfQot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWls
ZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3Jl
YXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcAppbmRleCA5MmM3MDAzNjRmODllYmM0ZDJmODRlNDAzNTcxMTJiYjJhY2M2ZDY1Li5l
Yzk4M2JkZTM4ZDZiZmIzMTFmZjg0MWFlOGRkYWFhNTk2MzQ3YjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
dm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdAogewogICAgIFZlY3RvcjxmbG9hdD4gZmlsdGVyVmFsdWVzOwogICAgIENv
bG9yTWF0cml4VHlwZSBmaWx0ZXJUeXBlID0gdHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAppbmRleCAzMzRkOTUxMTk0MGQ1ZmI3NTBkMWI4YTIy
YmNkMjMzMWIxMjZlZmZjLi4xZTNmM2Q3OTIwZGZlODYzZmQyMmNkYjM3MmY0ODMzNzkwODUxNDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaApAQCAt
ODcsNyArODcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIFZl
Y3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNv
bnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEg
eyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCA5YTc1YjQ2
Mjg3ZmMwNjk0MDkyMmVjMzk1MTMxNzNlZWYyNDAzM2U4Li41MTcxOTZiOThkYjJlYWI0NGI3M2Zj
N2U1MTE4ZDNkZDVlMmFmZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKK1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29u
c3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZDsKICAg
ICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGdyZWVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCBkYWQ2NWIxYTVkYzNm
NmY2ODQ3NTg0OTI2ZDI3NWQ5NGM5OWQ1YzdiLi41N2E1Njc5OTk5YjhmMWU5ZDA1OTBlYWFiMWRj
MWE3NmExNDM1ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmKSBv
dmVycmlkZTsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1l
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmls
dGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IDY0NjA0
MmZkNGE0NDUyYjEyZTZhZjQ2ZmRjYTIyZDY2YjUzOGJiNTQuLmEyOTI0YjIxOTZkZmIyNTZlNjRh
NWUwNjY4ODExNDBmY2MwYjE2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIHJldHVy
biBGRUNvbXBvc2l0ZTo6Y3JlYXRlKHN2Z09wZXJhdG9yKCksIGsxKCksIGsyKCksIGszKCksIGs0
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCmluZGV4
IDAwZTAxN2M5OTQyOTNkZGVmNGU0NjlmMGM1YjZjMmU4ZjI3M2NiMDcuLmQ2NmU1OGQ5MTA5YjFl
ODYwNGMxZDhjYjcyY2IyZmMwM2FmNzNlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1
dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCksIGluMigpIH07IH0KLSAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRl
ciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0
ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHAKaW5kZXggNGE4M2ExNWEwM2NjNTkwMDkyM2QzYTI3MTk3NWM5OGFhZTAxMTdk
MS4uZTk0MzViZWYyYzc2ZDQ2YjVlMDlmMGE5OWE3YmRiNWM5MGNkNDM3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQog
Ci1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6ZmlsdGVy
RWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
KSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIGludCBvcmRlclhWYWx1ZSA9
IG9yZGVyWCgpOwogICAgIGludCBvcmRlcllWYWx1ZSA9IG9yZGVyWSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCAxZjU5YWVjMmFh
YTUxNDgwMDMzZjRlMDJmNzg5YjNmYzc1NzI4OWY1Li40YmYzNGFiM2JmZTFkNWNmNDVkZTdhMzQy
MGJmMWQ2YTgzMWYyYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0
c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9Ci0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25z
dCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHAKaW5kZXggMTNkM2NjNmZiZWY4YzEyODhkYzEzNjhkYmM4MWZlZWVjOTQ0ZTdiYy4uN2Vj
MDVkZjBjMjVkMGE3MWFmNjc0Yjc5MDQ4NGIwOGRhYjdhMDMwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE0OCwxMyAr
MTQ4LDEzIEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImIGZp
bHRlckJ1aWxkZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBSZWZQdHIgbGlnaHRFbGVtZW50ID0gU1ZHRkVM
aWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFsaWdodEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gbGlnaHRTb3VyY2Ug
PSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNlKGZpbHRlckJ1aWxkZXIpOworICAgIGF1dG8gbGln
aHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNlKGZpbHRlcik7CiAKICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
CmluZGV4IGM4NWNjOGNiYjEwYjUyNmQ4OWY1NDljMTEyOGM0MzJmNmUzZjYzZTYuLjdmYmY0OWZj
YTJmOTRmZGE1YTM5ZjhkN2I1MGM5ZjhiMjIwNzhiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4g
ZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGluMSgp
IH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmls
dGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJp
bmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCBhMjkzM2JjM2UyMjliZjQ1MWJiNDJhNzhjNDAx
NzA0OWQ5N2FjNjllLi5hMTViYTRiM2UxZTE0N2ZmNGUyMWM4ZGJhYmE2ZmJhZDA4OGE1MzNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOCiAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIHJl
dHVybiBGRURpc3BsYWNlbWVudE1hcDo6Y3JlYXRlKHhDaGFubmVsU2VsZWN0b3IoKSwgeUNoYW5u
ZWxTZWxlY3RvcigpLCBzY2FsZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAppbmRleCAyYmU2YWM0MjJmMzU0MWVmMzE5OGE0ZDdh
ODVlZjE1NjZkNTc0NDVlLi41YzdmNWI4YTk5YzM4ODI3NWFhZTUxMzg4YTA2ZTg5MDMyY2YxNTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkg
b3ZlcnJpZGU7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSwgaW4yKCkgfTsgfQotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29u
c3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVj
dFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxT
VkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3Bw
CmluZGV4IDkxNmYwM2MwZjkxNTdlYzgyOGM5MmU5OWI2M2JkNjIyZTk1MjZhNDUuLjRjMTUzYmVh
MThkNzdlY2I2YzBmMjJkN2ExYjFlMDEwNDFiYjk1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlZjxT
VkdGRURpc3RhbnRMaWdodEVsZW1lbnQ+IFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxMaWdodFNvdXJjZT4g
U1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWls
ZGVyJikgY29uc3QKK1JlZjxMaWdodFNvdXJjZT4gU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50Ojps
aWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXImKSBjb25zdAogewogICAgIHJldHVybiBEaXN0YW50
TGlnaHRTb3VyY2U6OmNyZWF0ZShhemltdXRoKCksIGVsZXZhdGlvbigpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaAppbmRleCBiYmJmZTk0NzM5
YjQ0MzljMDYwNmJjMTM4OGVkODBmNzIyNzI1ODRlLi40MTZmZTYwYmU3YjE2ZDkxODE1Y2IzOWVm
NTIzYTlmNGU0ZWExZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExp
Z2h0RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZH
RkVEaXN0YW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
Ci0gICAgUmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVy
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShjb25z
dCBTVkdGaWx0ZXImKSBjb25zdCBvdmVycmlkZTsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihT
VkdGRURpc3RhbnRMaWdodEVsZW1lbnQpID09IHNpemVvZihTVkdGRUxpZ2h0RWxlbWVudCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXgg
NmE4NGQ2Y2I1NTlkYTNiZTdiMTIzMjJhZmIwNDVkMGZhMWRkZWI0ZC4uZDFlNjE4NDhhYWMxODI2
ZjQxNjdiNWYxMTE1YmYxNWQ5ZmFkY2I5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURyb3BTaGFkb3dFbGVtZW50LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEludE91dHNldHMgU1ZH
RkVEcm9wU2hhZG93RWxlbWVudDo6b3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5k
aW5nQm94LCBTCiAgICAgcmV0dXJuIEZFRHJvcFNoYWRvdzo6Y2FsY3VsYXRlT3V0c2V0cyhvZmZz
ZXQsIHN0ZERldmlhdGlvbik7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3Qg
RmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAppbmRleCA1
YTFlNzZkYjkyZGQwMWRlMzZlZDIwMzUwZWI0NzllNWIyODcwZWRkLi4yODM5N2ZkY2U3YWI1N2Nl
YTlkYjQxYzA4MjVmNTRiN2M5YzU4YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHsgaW4xKCkgfTsgfQogICAgIEludE91dHNldHMgb3V0c2V0cyhjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2
ZVVuaXRzKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJF
ZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChj
b25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4x
IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUZsb29kRWxlbWVudC5jcHAKaW5kZXggZjAxNGNjZmZkZmE5Y2I4YWE2ODAxMDUyYmE5ZmYy
NjA4MWQ0Njc0Ny4uOTUyMTMzMzM3Y2FlNzAwYzZmN2Q5MjQwZTAyMWVkMGY5ZmZhNTQxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IGJvb2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqIGVmZmVjdCwgY29uc3QgUXVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwog
ICAgIGlmICghcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVG
bG9vZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCmlu
ZGV4IGQzZWVkZWMxYzNjMGNjYmM5NzM5N2ZiNTFiMTc0MGYyOGVhMjU5MjkuLjNiYzVjZTNmMDY5
ZTZlMzI4YjYwYWM2ODE3NjVjNzQ3NTc3MDgyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZs
b29kRWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWls
ZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAK
aW5kZXggY2JiYTE5YjA3MDc3YmM2ODA4ZWZkMDUwZjNiMDZlMzRjYTQyOGY0Zi4uY2IxOTBhZDM1
NDFkMjJjZmYwY2U3Y2NiZjU4ZTM2Y2MwZmI1YzczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBJbnRP
dXRzZXRzIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6b3V0c2V0cyhjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldEJvdW5kaW5nQm94LAogICAgIHJldHVybiBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRl
T3V0c2V0cyhzdGREZXZpYXRpb24pOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwg
Y29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7
CiAgICAgaWYgKHN0ZERldmlhdGlvblgoKSA8IDAgfHwgc3RkRGV2aWF0aW9uWSgpIDwgMCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmgKaW5kZXggMTM2ZjQ0MjkyZTk3M2Q2MWFjODlmZmQ2YzA0ZThmYWQwMDFh
NGY0Ni4uMTY3NmZjODcxODI0MWY4MGM5OGE4OGRhNzY5ZDUzOGJmMzM1YzAzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaApAQCAtNTUsNyArNTUs
NyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0
c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CiAgICAgSW50T3V0
c2V0cyBvdXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwg
Y29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVm
ZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJl
ZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRo
aXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCBjYzMy
ZDI5MDJiMWQ3ZjQ4ZWFiOTUyZjNiY2YzMTMzNjYxMjcxYmNhLi42YzM4N2U5MWVmZGEwNDRlMjQx
OWM0MjAzOGVmN2JlODMzZjgyNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKQEAgLTE3OCwzOSArMTc4LDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MKICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpwYXJlbnRSZW5kZXJlcik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSW50UmVjdCBzY2Fs
ZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlKQotewotICAgIGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7Ci0gICAgc2NhbGVkUmVjdC5z
Y2FsZShzY2FsZSk7Ci0gICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgRmxvYXRTaXplIGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNp
emUoY29uc3QgRmxvYXRTaXplJiBzaXplKQotewotICAgIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxl
KDEsIDEpOwotICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzaXplLCBjbGFtcGlu
Z1NjYWxlKTsKLSAgICByZXR1cm4gY2xhbXBpbmdTY2FsZTsKLX0KLQotc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdFNpemUmIHNjYWxlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIGF1dG8g
c2NhbGVkUmVjdCA9IHNjYWxlZEltYWdlQnVmZmVyUmVjdChyZWN0LCBzY2FsZSk7Ci0gICAgaWYg
KHNjYWxlZFJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1
dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUoc2NhbGVk
UmVjdC5zaXplKCkpOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRP
TSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwg
aG9zdFdpbmRvdyk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGNsYW1waW5nU2NhbGUpOwot
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1zY2FsZWRSZWN0LmxvY2F0aW9u
KCkpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGUpOwotICAgIHJldHVy
biBpbWFnZUJ1ZmZlcjsKLX0KLQotc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9h
dFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmVjdCgpIGNvbnN0Citz
dGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1l
bnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKIHsKICAgICBhdXRvIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVu
dEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVlU2NvcGUoKSk7CiAgICAgaWYgKCFpczxTVkdFbGVt
ZW50Pih0YXJnZXQuZWxlbWVudCkpCkBAIC0yMzIsMTggKzIwMCwxNiBAQCBzdGQ6OnR1cGxlPFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVm
ZmVyRm9yRWZmZQogICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUo
KSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VSZWN0ID0gcmVu
ZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICAvLyBGSVhNRTog
UmVwbGFjZSB0aGlzIGNhbGwgd2l0aCBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KCkgb25jZSB0aGUgZGVzdGluYXRpb24gR3JhcGhpY3NDb250ZXh0IGlzIHBhc3NlZCB0byB0aGlz
IGZ1bmN0aW9uLgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihpbWFn
ZVJlY3QsIHNjYWxlLCByZW5kZXJlci0+aG9zdFdpbmRvdygpKTsKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihpbWFnZVJlY3QsIHNjYWxlKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byYg
Y29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChjb250ZXh0LCAqcmVuZGVyZXIsIEFmZmluZVRyYW5z
Zm9ybSgpKTsKKyAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9Db250ZXh0
KGltYWdlQnVmZmVyLT5jb250ZXh0KCksICpyZW5kZXJlciwgQWZmaW5lVHJhbnNmb3JtKCkpOwog
CiAgICAgcmV0dXJuIHsgaW1hZ2VCdWZmZXIsIGltYWdlUmVjdCB9OwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXIm
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKICAgICAgICAgYXV0byBpbWFn
ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIoKSk7CkBAIC0yNTgs
NyArMjI0LDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRl
ckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY28KICAgICAgICAgcmV0dXJuIEZFSW1h
Z2U6OmNyZWF0ZSh7IG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCkgfSwgaW1hZ2VSZWN0LCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvKCkpOwogICAgIH0KIAotICAgIGF1dG8gW2ltYWdlQnVmZmVyLCBp
bWFnZVJlY3RdID0gaW1hZ2VCdWZmZXJGb3JFZmZlY3QoKTsKKyAgICBhdXRvIFtpbWFnZUJ1ZmZl
ciwgaW1hZ2VSZWN0XSA9IGltYWdlQnVmZmVyRm9yRWZmZWN0KGNvbnRleHQpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5oCmluZGV4IDA0MmQwNmJlZmUzYWNkMjFiODhjMDYxMDFjNGM2OTBh
ZmM3YzhjNGMuLjY4MzJlNTZjNjU2OTEzMzMxZjcxYzZkNDg5N2NhNjBmYmJiODQwOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC01NCw5ICs1NCw5IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlkZTsKIAotICAg
IHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBpbWFnZUJ1ZmZlckZv
ckVmZmVjdCgpIGNvbnN0OworICAgIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxv
YXRSZWN0PiBpbWFnZUJ1ZmZlckZvckVmZmVjdChjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogICAgIHZvaWQg
cmVxdWVzdEltYWdlUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUxpZ2h0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmgKaW5kZXggMWNiMjdkZjMxNTA0MDE3YzY5OWUwMTBjZWQ0YjBkNWQ2MDBiYzYzNy4uM2ZmZTQ4
ZjQ0MDk3NGVlN2E5MWRmZGZlYTEyNDRmYTc0NmZkNTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTGlnaHRFbGVtZW50LmgKQEAgLTI3LDEyICsyNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNWR0ZpbHRlckJ1aWxkZXI7CitjbGFzcyBTVkdGaWx0ZXI7CiAKIGNsYXNz
IFNWR0ZFTGlnaHRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoU1ZHRkVMaWdodEVsZW1lbnQpOwogcHVibGljOgotICAgIHZpcnR1YWwgUmVm
PExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdG
aWx0ZXImKSBjb25zdCA9IDA7CiAgICAgc3RhdGljIFNWR0ZFTGlnaHRFbGVtZW50KiBmaW5kTGln
aHRFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQqKTsKIAogICAgIGZsb2F0IGF6aW11dGgoKSBjb25z
dCB7IHJldHVybiBtX2F6aW11dGgtPmN1cnJlbnRWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAppbmRleCA0MmRkNWNjNTIzMDE4MzE2ZTkyN2JkMjJjNTQ4
NzFmYTkxZWE4NmJhLi43MjIyYjIzM2M4YTIwNjFkOWY3N2U1YzEyYTFiMGUyNzA4YWI5OGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgVmVjdG9yPEF0b21TdHJpbmc+IFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3RJbnB1
dHNOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIGlucHV0c05hbWVzOwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0cykgY29uc3QKK1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiBpbnB1dHMsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZFTWVyZ2U6OmNyZWF0ZShpbnB1dHMuc2l6
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKaW5kZXggYmY2ZWNi
NmRiMGVmZjU3NTlmNWQ1ZDJkZWIzMWQ5NmJjNDRiZWZjOS4uY2FmMWQ2NTE0MGNiZGRhNDU1MzI4
Y2JhZjRkYjI2ZjdjODdkNWY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJl
Z2lzdHJ5OyB9CiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFt
ZXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0
eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5jcHAKaW5kZXggYmE1NGJhNzkyMTVjN2FmNmNlMWE0ZGE1MGI2NmQxYTc3
Y2RjZTRmZi4uNjEwODJhNDk4MzkzMWQ4YWI3MDM4NTM0NGU2MjdjM2NiNTc1Mjc0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1S
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpmaWx0ZXJFZmZlY3Qo
Y29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0
CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBpZiAocmFkaXVzWCgpIDwgMCB8fCByYWRpdXNZ
KCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4IDM0ZTI3NzE4YWNjNjM0ZjUxNjk3NWVlZTI4YzVh
NWJhMzVkOGM3Y2MuLjVmMDAwM2NlZDQ5YjVlMmMzYzNlODZjOTgzZjcyYWI0ZGU3NTRmMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaApAQCAtODIsNyAr
ODIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxB
dG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChj
b25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9pbjEgeyBTVkdB
bmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwCmluZGV4IGE5OThkMmZkZDYxYzY2NGJlMWI2YjdkMjAyZDM0MTNiM2Ux
NzljYWUuLmNiOTQxZDQ1MTQyNGUwMGNiNDY3MmNhZmZiMjA5YjMyZjA4NjhlNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIElu
dE91dHNldHMgU1ZHRkVPZmZzZXRFbGVtZW50OjpvdXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0Qm91bmRpbmdCb3gsIFNWR1VuCiAgICAgcmV0dXJuIEZFT2Zmc2V0OjpjYWxjdWxhdGVPdXRz
ZXRzKG9mZnNldCk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVu
dDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZl
Y3RWZWN0b3ImKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVPZmZzZXRFbGVtZW50
OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICByZXR1cm4gRkVPZmZzZXQ6
OmNyZWF0ZShkeCgpLCBkeSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuaAppbmRleCAxNTZlZGRmNDY5OWRiYzZhMjI1ZmJhNTllMDI5OGQ2ZTc5ZjdiMDhhLi5hMzM0
ZGVlMjkzNDNkNTg3NWM2NWNkYmQwOTg1NTdiN2E1ZGUyZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB7IGluMSgpIH07IH0KICAgICBJbnRPdXRzZXRzIG91dHNldHMoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmlt
aXRpdmVVbml0cykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmls
dGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBt
X2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNwcAppbmRleCBlZjM3MjUwMzI5Y2MwMzk3
YzFhNWVhNjFiNGRiM2U4NjA1ZTExNDIyLi5lNjhmZmIzZjAxZTFiNzljOWZhYjU0ZWI3ZGI0MGVk
NmU2NDU3YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1l
bnQuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlBvaW50TGlnaHRTb3VyY2UuaCIK
LSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC00
MSwxMSArNDEsMTEgQEAgUmVmPFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ+IFNWR0ZFUG9pbnRMaWdo
dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAot
UmVmPExpZ2h0U291cmNlPiBTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZShjb25z
dCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorUmVmPExpZ2h0U291cmNlPiBTVkdG
RVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXImIGZpbHRlcikg
Y29uc3QKIHsKICAgICBGbG9hdFBvaW50M0QgcG9zaXRpb247Ci0gICAgaWYgKGJ1aWxkZXIucHJp
bWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1gpIHsKLSAgICAgICAgRmxvYXRSZWN0IHJlZmVyZW5jZUJveCA9IGJ1aWxkZXIudGFyZ2V0
Qm91bmRpbmdCb3goKTsKKyAgICBpZiAoZmlsdGVyLnByaW1pdGl2ZVVuaXRzKCkgPT0gU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CisgICAgICAgIEZsb2F0
UmVjdCByZWZlcmVuY2VCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKICAgICAgICAg
CiAgICAgICAgIHBvc2l0aW9uLnNldFgocmVmZXJlbmNlQm94LngoKSArIHgoKSAqIHJlZmVyZW5j
ZUJveC53aWR0aCgpKTsKICAgICAgICAgcG9zaXRpb24uc2V0WShyZWZlcmVuY2VCb3gueSgpICsg
eSgpICogcmVmZXJlbmNlQm94LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQ
b2ludExpZ2h0RWxlbWVudC5oCmluZGV4IGM0N2E2MDU2ZTg4N2RhMDgxYTA0ZjNiOTUyYmRlNDVi
Y2RhOWQ5ZjUuLmNkZWJlNDc2MTg0NzMxNWIyYjliODY2YzIwMTRjMGQzODI5ZWMxZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaApAQCAtMzAsNyArMzAs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZWY8TGlnaHRTb3VyY2U+IGxpZ2h0
U291cmNlKGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8
TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlciYpIGNvbnN0IG92ZXJyaWRl
OwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQpID09IHNp
emVvZihTVkdGRUxpZ2h0RWxlbWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggZTg3YzUxMGQ1Yzc3NjBhODJh
ZTVhZTA4Mjk1Njk5ZTU1N2NjYWFiMS4uMDllMTdiZDA1ODFmODRhMTNmM2FjZTc4ZmVjZWQxZWQ2
YWUwNzUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcApAQCAtMTU4LDEzICsxNTgsMTMgQEAgdm9pZCBTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZF
TGlnaHQKICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImIGZpbHRlckJ1aWxkZXIsIGNvbnN0IEZpbHRlckVm
ZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiBmaWx0ZXIsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAg
ICAgUmVmUHRyIGxpZ2h0RWxlbWVudCA9IFNWR0ZFTGlnaHRFbGVtZW50OjpmaW5kTGlnaHRFbGVt
ZW50KHRoaXMpOwogICAgIGlmICghbGlnaHRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNlKGZp
bHRlckJ1aWxkZXIpOworICAgIGF1dG8gbGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0
U291cmNlKGZpbHRlcik7CiAKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggNmEyMmJlNGNjNjQ5NWQ0YzdiMGY1
NDU4ZmE1N2M0ODYwZmUxNDM0ZS4uYWNhOWRlZDU0ZTljNGNiYmU1ZjRkODk0NzM3MDZmNjhlY2Nl
ZGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNldEZpbHRl
ckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJF
ZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBm
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVk
U3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAKaW5kZXggYmJlMTZkNDBh
OTgyYzQyMjA0MmY5YTAwOWE2NGU4MDlmYWViYTI5Zi4uY2EwMjAwZjYyZGU0ZTRkNGE1ODM4OTAy
ZWFhNDNjZGE5Y2NiY2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bv
dExpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0
RWxlbWVudC5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RWZWN0
b3IuaCIKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR0ZpbHRl
ci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU3BvdExpZ2h0U291cmNlLmgi
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTQxLDEzICs0MSwxMyBAQCBSZWY8U1ZH
RkVTcG90TGlnaHRFbGVtZW50PiBTVkdGRVNwb3RMaWdodEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFU3BvdExpZ2h0
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWY8TGlnaHRTb3VyY2U+IFNWR0ZF
U3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYgYnVp
bGRlcikgY29uc3QKK1JlZjxMaWdodFNvdXJjZT4gU1ZHRkVTcG90TGlnaHRFbGVtZW50OjpsaWdo
dFNvdXJjZShjb25zdCBTVkdGaWx0ZXImIGZpbHRlcikgY29uc3QKIHsKICAgICBGbG9hdFBvaW50
M0QgcG9zaXRpb247CiAgICAgRmxvYXRQb2ludDNEIHBvaW50c0F0OwogCi0gICAgaWYgKGJ1aWxk
ZXIucHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1gpIHsKLSAgICAgICAgRmxvYXRSZWN0IHJlZmVyZW5jZUJveCA9IGJ1aWxkZXIu
dGFyZ2V0Qm91bmRpbmdCb3goKTsKKyAgICBpZiAoZmlsdGVyLnByaW1pdGl2ZVVuaXRzKCkgPT0g
U1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CisgICAgICAg
IEZsb2F0UmVjdCByZWZlcmVuY2VCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKICAg
ICAgICAgCiAgICAgICAgIHBvc2l0aW9uLnNldFgocmVmZXJlbmNlQm94LngoKSArIHgoKSAqIHJl
ZmVyZW5jZUJveC53aWR0aCgpKTsKICAgICAgICAgcG9zaXRpb24uc2V0WShyZWZlcmVuY2VCb3gu
eSgpICsgeSgpICogcmVmZXJlbmNlQm94LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVNwb3RMaWdodEVsZW1lbnQuaAppbmRleCAwNzQzNmNjMDE2NjNiNTIxNTYyNGE2ZTEyZDcx
NjA2ODFlOTY1MjU2Li5iZTk4ZmJlZDg2NmM1YmNlMmY5OTc1NzNmNzU5YmE0MjMzMjVjNzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCkBAIC0zMCw3ICsz
MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVTcG90TGlnaHRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVmPExpZ2h0U291cmNlPiBsaWdo
dFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXImKSBjb25zdCBvdmVycmlk
ZTsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihTVkdGRVNwb3RMaWdodEVsZW1lbnQpID09IHNp
emVvZihTVkdGRUxpZ2h0RWxlbWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHAKaW5kZXggYjk5MzA3YzRiZTZjYjExYjViMzMxOWQ2MzVhNDFhNzRiMWJjNWUzOC4u
NWM1YTY4ODNiNzhlNjhmYmIwODZiMmE0ZmExNGY4MjVkNTYxZDg4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFNWR0ZFVGls
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxl
RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxl
bWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEZFVGls
ZTo6Y3JlYXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCAz
M2JjZTJlNDQ0MjM1ZWNjMGJjNGUyMDBmYTYyOWI2OTQ4OWQ3NmEwLi42NWYyMGIxYzFhYjBmNWZh
MDY3NTNiOTA5OTY1MWM5MTJkMDk2ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPEF0b21T
dHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
eyBpbjEoKSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0
IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmls
dGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1h
dGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcAppbmRleCBiZDAwZDVhMzAyNjM1ZjE2ZGFmYjZlMDUxNzc4Yzky
ZjQyNjcxMTUxLi42Yjg0NmM2NzBkYzkxZWZiOTRkY2Q2YWMwYmE1Y2JiNjZkM2M3OGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC0xMTcs
NyArMTE3LDcgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAK
LVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29u
c3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdAogewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8
fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAppbmRleCA2MGFhMTQ0NWZlMjZl
MzZiYjhjNjllMTAzOWQyZGJjMzI5ZmQ3NjkxLi5mMTkzMTE1OTMzYmI0MzJkNmI1ODY4ZjliMTFh
NzdhN2RjYzM5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxl
bmNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNldEZp
bHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiBtX2Jhc2VGcmVx
dWVuY3lYIHsgU1ZHQW5pbWF0ZWROdW1iZXI6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IDIwNGE2MWI0NzE4NmE3OGE2MGFjZWNkNmEz
MmMxNTdjZjJiMGM3ZDYuLmY5ZWJhNjVmZDlkMDI1NWFjY2RmNDgyNWZhYzIwOTU3MGE2YjVhMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudElubGluZXMuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVk
ZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHAKaW5kZXggMjQwMjU0NmY0ZjQyMDcwNTdhNjU0ZWU0ZDA4MGIwYWU0NjM0NzQ5YS4uMTc5
Yzc0NWEwYTM3NDJkYTc1M2ZmMDQxNjgwOTRmNDYxMjAzN2Q1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNs
dWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIgogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnRJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA1MDBiMWViODlkZDlkMGEwM2NjOWU0YzA4MzgyY2U1
NDNhY2U2NzRhLi44ZTRhNzQxNDNmN2NiMTJhY2RiYTE3ODhhMGU1YjRmMjExYTFiMGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRmlsdGVyOwogY2xhc3MgRmlsdGVyRWZmZWN0OwotY2xhc3MgU1ZHRmlsdGVyQnVpbGRl
cjsKK2NsYXNzIFNWR0ZpbHRlcjsKIAogY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzIDogcHVibGljIFNWR0VsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKTsKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgVmVjdG9yPEF0
b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3QgeyByZXR1cm4geyB9OyB9
CiAgICAgdmlydHVhbCBJbnRPdXRzZXRzIG91dHNldHMoY29uc3QgRmxvYXRSZWN0JiwgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSkgY29uc3QgeyByZXR1cm4geyB9OyB9Ci0gICAgdmlydHVhbCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0
ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCA9IDA7CiAKICAg
ICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAKaW5kZXggNTEwMTU2MDNiMTU1ODUwODVlNDUwMjEzOGEzZmEwN2RjYjhjNzFhNC4uNGZk
YmVhZGVkNjBiM2RkZThkNDQ3YTViNjIxOTgwMDA5YjJlM2JhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCkBAIC0zMCwxMSArMzAs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0
ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWls
ZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCitS
ZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0
ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xp
cE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBhdXRvIGZpbHRlciA9IGFkb3B0UmVmKCpuZXcgU1ZHRmlsdGVyKHJlbmRlcmluZ01vZGUs
IGZpbHRlclNjYWxlLCBjbGlwT3BlcmF0aW9uLCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5n
Qm94LCBmaWx0ZXJFbGVtZW50LnByaW1pdGl2ZVVuaXRzKCkpKTsKIAotICAgIGF1dG8gZXhwcmVz
c2lvbiA9IGJ1aWxkZXIuYnVpbGRGaWx0ZXJFeHByZXNzaW9uKGZpbHRlckVsZW1lbnQpOworICAg
IGF1dG8gZXhwcmVzc2lvbiA9IGJ1aWxkZXIuYnVpbGRGaWx0ZXJFeHByZXNzaW9uKGZpbHRlckVs
ZW1lbnQsIGZpbHRlciwgY29udGV4dCk7CiAgICAgaWYgKCFleHByZXNzaW9uKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAppbmRleCBkMjM4NzVlYWJlMGY2ZWFmOTI5MDQ0ODIzMTk2YTE3OTNmMGNm
NzljLi5iNjZjMDA2NDQ5Y2ZkZTE3MWQ3NjQ2ZjIwZjcxNTFjOWI4YTJiNzdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAtMjMsNiAr
MjMsNyBAQAogCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSAiTnVsbEdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckV4cHJl
c3Npb24uaCIKICNpbmNsdWRlICJTVkdVbml0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+
CkBAIC0zNiw3ICszNyw3IEBAIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0Zp
bHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBS
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRC
b3VuZGluZ0JveCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0
ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVy
UmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmID0gTnVsbEdyYXBoaWNzQ29udGV4dCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91
bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMsIFNWR0Zp
bHRlckV4cHJlc3Npb24mJik7CiAKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3goKSBj
b25zdCB7IHJldHVybiBtX3RhcmdldEJvdW5kaW5nQm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCmluZGV4
IDBiYjRlNWQwMTJkZmFmNjI4NmY1YjNiYzVlNDVlNzE4NDY5YWIwMDUuLmE0ODg1YTBhN2EwNjI2
ZDA2YTM2Y2Q1MjE4ZTAyY2U1NGJmNmIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCkBAIC0zNiwxMiAr
MzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1h
eFRvdGFsTnVtYmVyRmlsdGVyRWZmZWN0cyA9IDEwMDsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbWF4Q291bnRDaGlsZE5vZGVzID0gMjAwOwogCi1TVkdGaWx0ZXJCdWlsZGVyOjpTVkdGaWx0
ZXJCdWlsZGVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpCi0gICAgOiBtX3RhcmdldEJvdW5kaW5nQm94
KHRhcmdldEJvdW5kaW5nQm94KQotICAgICwgbV9wcmltaXRpdmVVbml0cyhwcmltaXRpdmVVbml0
cykKLXsKLX0KLQogc3RhdGljIE9wdGlvblNldDxGaWx0ZXJFZmZlY3RHZW9tZXRyeTo6RmxhZ3M+
IGVmZmVjdEdlb21ldHJ5RmxhZ3NGb3JFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgT3B0aW9uU2V0PEZpbHRlckVmZmVjdEdlb21ldHJ5OjpGbGFncz4gZmxhZ3M7CkBAIC0xMjMs
NyArMTE3LDcgQEAgc3RhdGljIGJvb2wgYXBwZW5kR3JhcGhUb0V4cHJlc3Npb24oY29uc3QgU1ZH
RmlsdGVyRWZmZWN0c0dyYXBoJiBncmFwaCwgY29uc3QgRmkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RkOjpvcHRpb25hbDxTVkdGaWx0ZXJFeHByZXNzaW9uPiBTVkdGaWx0ZXJCdWlsZGVyOjpi
dWlsZEZpbHRlckV4cHJlc3Npb24oU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCkKK3N0
ZDo6b3B0aW9uYWw8U1ZHRmlsdGVyRXhwcmVzc2lvbj4gU1ZHRmlsdGVyQnVpbGRlcjo6YnVpbGRG
aWx0ZXJFeHByZXNzaW9uKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIGNvbnN0IFNW
R0ZpbHRlciYgZmlsdGVyLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKGZpbHRlckVsZW1lbnQuY291bnRDaGlsZE5vZGVzKCkgPiBtYXhDb3VudENoaWxkTm9kZXMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMzYsMTIgKzEzMCwxMiBAQCBzdGQ6
Om9wdGlvbmFsPFNWR0ZpbHRlckV4cHJlc3Npb24+IFNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxkRmls
dGVyRXhwcmVzc2lvbihTVkdGaQogICAgICAgICBpZiAoIWlucHV0cykKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgYXV0byBlZmZlY3QgPSBlZmZlY3RFbGVtZW50
LmZpbHRlckVmZmVjdCgqdGhpcywgKmlucHV0cyk7CisgICAgICAgIGF1dG8gZWZmZWN0ID0gZWZm
ZWN0RWxlbWVudC5maWx0ZXJFZmZlY3QoZmlsdGVyLCAqaW5wdXRzLCBjb250ZXh0KTsKICAgICAg
ICAgaWYgKCFlZmZlY3QpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGlmIChhdXRvIGZsYWdzID0gZWZmZWN0R2VvbWV0cnlGbGFnc0ZvckVsZW1lbnQoZWZmZWN0
RWxlbWVudCkpIHsKLSAgICAgICAgICAgIGF1dG8gZWZmZWN0Qm91bmRhcmllcyA9IFNWR0xlbmd0
aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzPigmZWZmZWN0RWxlbWVudCwgbV9wcmltaXRpdmVVbml0cywgbV90YXJnZXRCb3VuZGlu
Z0JveCk7CisgICAgICAgICAgICBhdXRvIGVmZmVjdEJvdW5kYXJpZXMgPSBTVkdMZW5ndGhDb250
ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cz4oJmVmZmVjdEVsZW1lbnQsIGZpbHRlci5wcmltaXRpdmVVbml0cygpLCBmaWx0ZXIudGFyZ2V0
Qm91bmRpbmdCb3goKSk7CiAgICAgICAgICAgICBlZmZlY3RHZW9tZXRyeU1hcC5hZGQoKmVmZmVj
dCwgRmlsdGVyRWZmZWN0R2VvbWV0cnkoZWZmZWN0Qm91bmRhcmllcywgZmxhZ3MpKTsKICAgICAg
ICAgfQogCkBAIC0xOTMsNyArMTg3LDcgQEAgc3RhdGljIEludE91dHNldHMgY2FsY3VsYXRlR3Jh
cGhPdXRzZXRzKGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZXNHcmFwaCYgZ3JhcGgsIGMKICAgICBy
ZXR1cm4gY2FsY3VsYXRlU3ViR3JhcGhPdXRzZXRzKGdyYXBoLCAqZ3JhcGgubGFzdE5vZGUoKSwg
c3RhY2ssIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVVbml0cyk7CiB9CiAKLUludE91dHNl
dHMgU1ZHRmlsdGVyQnVpbGRlcjo6Y2FsY3VsYXRlRmlsdGVyT3V0c2V0cyhTVkdGaWx0ZXJFbGVt
ZW50JiBmaWx0ZXJFbGVtZW50KQorSW50T3V0c2V0cyBTVkdGaWx0ZXJCdWlsZGVyOjpjYWxjdWxh
dGVGaWx0ZXJPdXRzZXRzKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCiB7CiAgICAgaWYgKGZpbHRlckVsZW1lbnQuY291
bnRDaGlsZE5vZGVzKCkgPiBtYXhDb3VudENoaWxkTm9kZXMpCiAgICAgICAgIHJldHVybiB7IH07
CkBAIC0yMDcsNyArMjAxLDcgQEAgSW50T3V0c2V0cyBTVkdGaWx0ZXJCdWlsZGVyOjpjYWxjdWxh
dGVGaWx0ZXJPdXRzZXRzKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW0KICAgICAgICAgZ3Jh
cGguc2V0Tm9kZUlucHV0cyhlZmZlY3RFbGVtZW50LCBXVEZNb3ZlKGlucHV0cykpOwogICAgIH0K
IAotICAgIHJldHVybiBjYWxjdWxhdGVHcmFwaE91dHNldHMoZ3JhcGgsIG1fdGFyZ2V0Qm91bmRp
bmdCb3gsIG1fcHJpbWl0aXZlVW5pdHMpOworICAgIHJldHVybiBjYWxjdWxhdGVHcmFwaE91dHNl
dHMoZ3JhcGgsIHRhcmdldEJvdW5kaW5nQm94LCBmaWx0ZXJFbGVtZW50LnByaW1pdGl2ZVVuaXRz
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggZGRmNjBl
OTE3MzY1NDgyMGRjZWUyMDQxZDdlYzEzMTQ1YzIwYzEwNi4uMjQyOTkwMmQ5YzRmYTBhOTI4NDBk
MTg2N2Y0ODk1Y2UwZjFhNTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMjgsMjcgKzI4LDI0IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlckVmZmVjdDsKK2NsYXNzIEdyYXBoaWNz
Q29udGV4dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFNWR0ZpbHRlcjsKIGNsYXNzIFNW
R0ZpbHRlckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNWR0ZpbHRlckJ1aWxkZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmlt
aXRpdmVVbml0cyA9IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSk7
CisgICAgU1ZHRmlsdGVyQnVpbGRlcigpID0gZGVmYXVsdDsKIAotICAgIEZsb2F0UmVjdCB0YXJn
ZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KLSAg
ICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKCkgY29uc3QgeyByZXR1
cm4gbV9wcmltaXRpdmVVbml0czsgfQotCi0gICAgc3RkOjpvcHRpb25hbDxTVkdGaWx0ZXJFeHBy
ZXNzaW9uPiBidWlsZEZpbHRlckV4cHJlc3Npb24oU1ZHRmlsdGVyRWxlbWVudCYpOwotICAgIElu
dE91dHNldHMgY2FsY3VsYXRlRmlsdGVyT3V0c2V0cyhTVkdGaWx0ZXJFbGVtZW50Jik7CisgICAg
c3RkOjpvcHRpb25hbDxTVkdGaWx0ZXJFeHByZXNzaW9uPiBidWlsZEZpbHRlckV4cHJlc3Npb24o
U1ZHRmlsdGVyRWxlbWVudCYsIGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOworICAgIHN0YXRpYyBJbnRPdXRzZXRzIGNhbGN1bGF0ZUZpbHRlck91dHNldHMoU1ZHRmls
dGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOwogCiAgICAg
Ly8gUmVxdWlyZWQgdG8gY2hhbmdlIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZmlsdGVyIGR1cmluZyBh
biBzdmdBdHRyaWJ1dGVDaGFuZ2VkLgogICAgIEZpbHRlckVmZmVjdCogZWZmZWN0QnlSZW5kZXJl
cihSZW5kZXJPYmplY3QqIG9iamVjdCkgeyByZXR1cm4gbV9lZmZlY3RSZW5kZXJlci5nZXQob2Jq
ZWN0KTsgfQogCiBwcml2YXRlOgogICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgRmlsdGVyRWZm
ZWN0Kj4gbV9lZmZlY3RSZW5kZXJlcjsKLSAgICBGbG9hdFJlY3QgbV90YXJnZXRCb3VuZGluZ0Jv
eDsKLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1fcHJpbWl0aXZlVW5pdHMgeyBTVkdV
bml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UgfTsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="485036"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456850</attachid>
            <date>2022-04-06 12:37:53 -0700</date>
            <delta_ts>2022-04-06 15:42:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236573-20220406123752.patch</filename>
            <type>text/plain</type>
            <size>66233</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwZjBlMTllMWM5ZTFk
OGJmNTk1Yzg3YjA4OTg2ZTVjMmU2NGYwMC4uMmJjMGM5Y2U0ZmU3MDAzNmQ2MjJlMDY2YjZjODkw
N2M3YTViZTVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMi0wNC0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCgpIGNyZWF0ZSBhbiBJbWFnZUJ1
ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGRlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NTczCisgICAg
ICAgIHJkYXI6Ly84OTIwOTY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBQYXNzIGEgR3JhcGhpY3NDb250ZXh0IHRvIENTU0ZpbHRlcjo6Y3JlYXRlKCkg
YW5kIFNWR0ZpbHRlcjo6Y3JlYXRlKCkuCisgICAgICAgIElmIHRoZXJlIGlzIG5vIEdyYXBoaWNz
Q29udGV4dCBhdmFpbGFibGUsIGxpa2UgdGhlIGNhbGwgd2UgbWFrZSBpbgorICAgICAgICBDU1NG
aWx0ZXJJbWFnZVZhbHVlOjppbWFnZSgpLCBwYXNzIGEgTnVsbEdyYXBoaWNzQ29udGV4dCgpLiBU
aGlzIHdpbGwgCisgICAgICAgIGNyZWF0ZSBhIGxvY2FsIEltYWdlQnVmZmVyLiBBbmQgdGhpcyBp
cyBleGFjdGx5IHdoYXQgd2Ugd2FudC4KKworICAgICAgICBUaGUgR3JhcGhpY3NDb250ZXh0IHdp
bGwgYmUgcGFzc2VkIGZyb20gU1ZHRmlsdGVyOjpidWlsZEZpbHRlckV4cHJlc3Npb24oKQorICAg
ICAgICB0byBhbGwgdGhlIG92ZXJyaWRkZW4gZmlsdGVyRWZmZWN0KCkuIFNWR0ZFSW1hZ2VFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QoKQorICAgICAgICBpcyB0aGUgb25seSBvbmUgdGhhdCBpcyBnb2lu
ZyB0byB1c2UgaXQuIEl0IGNhbGxzIEdyYXBoaWNzQ29udGV4dDo6CisgICAgICAgIGNyZWF0ZUlt
YWdlQnVmZmVyKCkgdG8gY3JlYXRlIGFuIEltYWdlQnVmZmVyIGZvciBkcmF3aW5nIHRoZSBTVkdF
bGVtZW50LgorCisgICAgICAgIEluIHByZXBhcmF0aW9uIHRvIHJlbW92ZSBTVkdGaWx0ZXJCdWls
ZGVyOgorCisgICAgICAgIC0tIFBhc3MgYW4gU1ZHRmlsdGVyIGluc3RlYWQgb2YgU1ZHRmlsdGVy
QnVpbGRlciB0byBhbGwgdGhlIG92ZXJyaWRkZW4KKyAgICAgICAgICAgZmlsdGVyRWZmZWN0KCkg
YW5kIGFsbCB0aGUgb3ZlcnJpZGRlbiBsaWdodFNvdXJjZSgpLgorICAgICAgICAtLSBNYWtlIFNW
R0ZpbHRlckJ1aWxkZXI6OmNhbGN1bGF0ZUZpbHRlck91dHNldHMoKSBhIHN0YXRpYyBtZXRob2Qu
CisgICAgICAgIC0tIFJlbW92ZSB0aGUgbWVtYmVyczogU1ZHRmlsdGVyQnVpbGRlcjo6bV90cmFn
ZXRCb3VuZGluZ0JveCBhbmQKKyAgICAgICAgICAgU1ZHRmlsdGVyQnVpbGRlcjo6bV9wcmltaXRp
dmVVbml0cyBzaW5jZSB0aGV5IGV4aXN0IGluIFNWR0ZpbHRlci4KKworICAgICAgICAqIGNzcy9D
U1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdl
VmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVSZWZlcmVuY2VGaWx0ZXJPdXRzZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVn
aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmZp
bHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3Qg
Y29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgor
ICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlzdGFudExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3RhbnRM
aWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXN0
YW50TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6ZmlsdGVyRWZm
ZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVG
bG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVyRWZm
ZWN0IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmVjdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNjYWxlZEltYWdlQnVmZmVyUmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsdGVyRWZmZWN0
IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVP
ZmZzZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVBvaW50TGlnaHRFbGVtZW50OjpsaWdodFNvdXJjZSBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QgY29uc3QpOgorICAg
ICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwb3RM
aWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcG90
TGlnaHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0IGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6OmZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgICog
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgICog
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRlckV4cHJlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyQnVpbGRlcjo6Y2FsY3VsYXRlRmlsdGVy
T3V0c2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpTVkdGaWx0ZXJC
dWlsZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjp0YXJnZXRC
b3VuZGluZ0JveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJC
dWlsZGVyOjpwcmltaXRpdmVVbml0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxl
dGVkLgorCiAyMDIyLTA0LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIFVzZSBHQ0Qgd2VicnRjIHRhc2sgcXVldWUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCBiMWU1YzcyZWIyZDdlOTg4NzFjMjMz
YjljY2E0YWZjZTcyNmQyZjE5Li5mYWZjZDE5YzRlMjAyMTQzZGFlM2QzODAyN2U2NzQxM2JiNmRl
Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0z
MSw4ICszMSw4IEBACiAjaW5jbHVkZSAiQ1NTRmlsdGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTnVsbEdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJT
dHlsZUJ1aWxkZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKQEAgLTEy
Miw3ICsxMjIsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIGF1dG8gc291cmNlSW1h
Z2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBzaXplIH07CiAgICAgc291cmNlSW1hZ2UtPmNvbnRl
eHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBzb3VyY2VJbWFnZVJlY3QpOwogCi0gICAgYXV0byBjc3NG
aWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShyZW5kZXJlciwgbV9maWx0ZXJPcGVyYXRpb25zLCBy
ZW5kZXJpbmdNb2RlLCBGbG9hdFNpemUgeyAxLCAxIH0sIEZpbHRlcjo6Q2xpcE9wZXJhdGlvbjo6
SW50ZXJzZWN0LCBzb3VyY2VJbWFnZVJlY3QpOworICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmls
dGVyOjpjcmVhdGUocmVuZGVyZXIsIG1fZmlsdGVyT3BlcmF0aW9ucywgcmVuZGVyaW5nTW9kZSwg
RmxvYXRTaXplIHsgMSwgMSB9LCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OkludGVyc2VjdCwgc291
cmNlSW1hZ2VSZWN0LCBOdWxsR3JhcGhpY3NDb250ZXh0KCkpOwogICAgIGlmICghY3NzRmlsdGVy
KQogICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCmluZGV4IGQ2OTdmY2Q5MWFkOTU4YzBkNGE2ZDk3MGM0ODBjY2I3NTZjZmUwYzQu
LmNjNTIxYzllMmFkNDQ1Y2I1ZDYzMzA3YmI1N2VlZDdmODBlN2FiNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKQEAgLTQ4NTgsNyArNDg1OCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1
c3RQYWdlSGVpZ2h0RGVwcmVjYXRlZChmbG9hdCAqbmV3Qm90dG9tLCBmbG9hdCBvbGRUb3AsIGZs
b2F0CiAKICAgICB9CiAgICAgLy8gVXNlIGEgY29udGV4dCB3aXRoIHBhaW50aW5nIGRpc2FibGVk
LgotICAgIE51bGxHcmFwaGljc0NvbnRleHQgY29udGV4dChOdWxsR3JhcGhpY3NDb250ZXh0OjpQ
YWludEludmFsaWRhdGlvblJlYXNvbnM6Ok5vbmUpOworICAgIE51bGxHcmFwaGljc0NvbnRleHQg
Y29udGV4dDsKICAgICByZW5kZXJWaWV3LT5zZXRUcnVuY2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+
KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVjdCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nh
c3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZpZXctPmxheW91dE92ZXJmbG93UmVjdCgp
Lm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihvbGRCb3R0b20gLSBvbGRUb3ApKSk7CiAg
ICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
NmMzMzMzOTYyNzIxNTI3NzY4NjQ3MGEwMmIxNWY1NjJlZjFiYTA1ZS4uY2JmZTc1ZDYzMmRiOTgw
MDVkYjIxNDg3MGE3MzQzYmFiYzg5MGJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtMzgsNiArMzgsOCBA
QCBwdWJsaWM6CiAgICAgICAgIERldGVjdGluZ0NvbnRlbnRmdWxQYWludAogICAgIH07CiAKKyAg
ICBOdWxsR3JhcGhpY3NDb250ZXh0KCkgPSBkZWZhdWx0OworCiAgICAgTnVsbEdyYXBoaWNzQ29u
dGV4dChQYWludEludmFsaWRhdGlvblJlYXNvbnMgcmVhc29ucykKICAgICAgICAgOiBtX3BhaW50
SW52YWxpZGF0aW9uUmVhc29ucyhyZWFzb25zKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHAKaW5kZXggYjY4ODgzMWViMTJjMTdjZDIwMmNjODMwYmZmMzY3OTVkZjQx
MDM2Ni4uMjkxYzcyMGMyMDNkYjY1MWQ0ZWVmOTU4Yjg3ZGFhYzljOGY3ZTJjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6Y3JlYXRlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25z
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2Nh
bGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRC
b3VuZGluZ0JveCkKK1JlZlB0cjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6Y3JlYXRlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENs
aXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGlu
Z0JveCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7CiAgICAg
Ym9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMgPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRN
b3Zlc1BpeGVscygpOwogICAgIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5
U2VjdXJpdHlPcmlnaW4gPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0
ZWRCeVNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBhdXRvIGZpbHRlciA9IGFkb3B0UmVmKCpuZXcg
Q1NTRmlsdGVyKHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBjbGlwT3BlcmF0aW9uLCBoYXNG
aWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNl
Y3VyaXR5T3JpZ2luKSk7CiAKLSAgICBpZiAoIWZpbHRlci0+YnVpbGRGaWx0ZXJGdW5jdGlvbnMo
cmVuZGVyZXIsIG9wZXJhdGlvbnMsIHRhcmdldEJvdW5kaW5nQm94KSkKKyAgICBpZiAoIWZpbHRl
ci0+YnVpbGRGaWx0ZXJGdW5jdGlvbnMocmVuZGVyZXIsIG9wZXJhdGlvbnMsIHRhcmdldEJvdW5k
aW5nQm94LCBkZXN0aW5hdGlvbkNvbnRleHQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkICYmICFm
aWx0ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSkKQEAgLTI1MywxMSArMjUzLDEw
IEBAIHN0YXRpYyBJbnRPdXRzZXRzIGNhbGN1bGF0ZVJlZmVyZW5jZUZpbHRlck91dHNldHMoY29u
c3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uCiAgICAgaWYgKCFmaWx0ZXJFbGVtZW50KQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyKHRhcmdldEJv
dW5kaW5nQm94LCBmaWx0ZXJFbGVtZW50LT5wcmltaXRpdmVVbml0cygpKTsKLSAgICByZXR1cm4g
YnVpbGRlci5jYWxjdWxhdGVGaWx0ZXJPdXRzZXRzKCpmaWx0ZXJFbGVtZW50KTsKKyAgICByZXR1
cm4gU1ZHRmlsdGVyQnVpbGRlcjo6Y2FsY3VsYXRlRmlsdGVyT3V0c2V0cygqZmlsdGVyRWxlbWVu
dCwgdGFyZ2V0Qm91bmRpbmdCb3gpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNWR0ZpbHRlcj4gY3Jl
YXRlUmVmZXJlbmNlRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCitzdGF0aWMgUmVmUHRyPFNWR0ZpbHRl
cj4gY3JlYXRlUmVmZXJlbmNlRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24mIGZpbHRlck9wZXJhdGlvbiwgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgZGVzdGluYXRpb25Db250ZXh0KQogewogICAgIGF1dG8gZmlsdGVyRWxlbWVudCA9IHJl
ZmVyZW5jZUZpbHRlckVsZW1lbnQoZmlsdGVyT3BlcmF0aW9uLCByZW5kZXJlcik7CiAgICAgaWYg
KCFmaWx0ZXJFbGVtZW50KQpAQCAtMjY1LDExICsyNjQsMTEgQEAgc3RhdGljIFJlZlB0cjxTVkdG
aWx0ZXI+IGNyZWF0ZVJlZmVyZW5jZUZpbHRlcihDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgUmVm
ZXJlbmMKIAogICAgIGF1dG8gZmlsdGVyUmVnaW9uID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2
ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PihmaWx0ZXJFbGVtZW50LCBmaWx0ZXJFbGVtZW50
LT5maWx0ZXJVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCk7CiAKLSAgICBTVkdGaWx0ZXJCdWls
ZGVyIGJ1aWxkZXIodGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckVsZW1lbnQtPnByaW1pdGl2ZVVu
aXRzKCkpOwotICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVyRWxlbWVudCwgYnVp
bGRlciwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgZmlsdGVyLmZpbHRlclNjYWxlKCksIGZpbHRl
ci5jbGlwT3BlcmF0aW9uKCksIGZpbHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gpOworICAg
IFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICByZXR1cm4gU1ZHRmlsdGVyOjpjcmVhdGUo
KmZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIGZpbHRlci5m
aWx0ZXJTY2FsZSgpLCBmaWx0ZXIuY2xpcE9wZXJhdGlvbigpLCBmaWx0ZXJSZWdpb24sIHRhcmdl
dEJvdW5kaW5nQm94LCBkZXN0aW5hdGlvbkNvbnRleHQpOwogfQogCi1ib29sIENTU0ZpbHRlcjo6
YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdC
b3gpCitib29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRp
b25Db250ZXh0KQogewogICAgIFJlZlB0cjxGaWx0ZXJGdW5jdGlvbj4gZnVuY3Rpb247CiAKQEAg
LTMyMCw3ICszMTksNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKLSAgICAgICAg
ICAgIGZ1bmN0aW9uID0gY3JlYXRlUmVmZXJlbmNlRmlsdGVyKCp0aGlzLCBkb3duY2FzdDxSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLCByZW5kZXJlciwgdGFyZ2V0Qm91bmRp
bmdCb3gpOworICAgICAgICAgICAgZnVuY3Rpb24gPSBjcmVhdGVSZWZlcmVuY2VGaWx0ZXIoKnRo
aXMsIGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbiksIHJlbmRl
cmVyLCB0YXJnZXRCb3VuZGluZ0JveCwgZGVzdGluYXRpb25Db250ZXh0KTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmgKaW5kZXggMjljMWQxY2QzNjFjOWQyNWJhY2MxNzA0ZGI0ZTQ4OTQ1NDE3MmNkYS4uY2NiMTZl
YWExZGViMmVkZDNjM2Q2YzExNGNmZDg2ODE4MWZhOTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuaApAQCAtMzEsMTMgKzMxLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBS
ZW5kZXJFbGVtZW50OwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAogY2xhc3MgQ1NTRmlsdGVyIGZp
bmFsIDogcHVibGljIEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDU1NGaWx0ZXI+IGNyZWF0ZShSZW5kZXJFbGVtZW50Jiwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRp
bmdCb3gpOworICAgIHN0YXRpYyBSZWZQdHI8Q1NTRmlsdGVyPiBjcmVhdGUoUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNp
emUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJv
dW5kaW5nQm94LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDU1NGaWx0ZXI+IGNyZWF0ZShWZWN0b3I8
UmVmPEZpbHRlckZ1bmN0aW9uPj4mJik7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmPEZpbHRlckZ1
bmN0aW9uPj4mIGZ1bmN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CkBAIC01
Niw4ICs1Nyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ1NTRmlsdGVyKFJlbmRlcmluZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGJvb2wgaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0
ZWRCeVNlY3VyaXR5T3JpZ2luKTsKICAgICBDU1NGaWx0ZXIoVmVjdG9yPFJlZjxGaWx0ZXJGdW5j
dGlvbj4+JiYpOwotICAgIAotICAgIGJvb2wgYnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxl
bWVudCYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJv
dW5kaW5nQm94KTsKKworICAgIGJvb2wgYnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5k
aW5nQm94LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCk7CiAKICAg
ICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBj
MjNkMTY2YmRkMDFjZWE5MTkzNzc5NTk3ZWI0NmNkMTJmNDZkNjZmLi40MzNhMDQ0NWI3NmM5ZGRk
ZGI2ZThmN2ZjZGI3NzBjZDViM2Q1NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTgzMCw3ICsxODMwLDcgQEAgdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50UmVnaW9uKCkKICAgICB9OwogCiAgICAgYXV0byB1
cGRhdGVFdmVudFJlZ2lvbkZvckxheWVyID0gWyZdKEdyYXBoaWNzTGF5ZXImIGdyYXBoaWNzTGF5
ZXIpIHsKLSAgICAgICAgTnVsbEdyYXBoaWNzQ29udGV4dCBudWxsQ29udGV4dChOdWxsR3JhcGhp
Y3NDb250ZXh0OjpQYWludEludmFsaWRhdGlvblJlYXNvbnM6Ok5vbmUpOworICAgICAgICBOdWxs
R3JhcGhpY3NDb250ZXh0IG51bGxDb250ZXh0OwogICAgICAgICBFdmVudFJlZ2lvbiBldmVudFJl
Z2lvbjsKICNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQogICAgICAgICBpZiAocmVuZGVyZXIo
KS5wYWdlKCkuc2hvdWxkQnVpbGRFZGl0YWJsZVJlZ2lvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAppbmRleCAyNTNmZmRhNmI0MjI5Y2I2
MThiNzY1YWEzMzlhZjI1YjU0Zjc5NDAzLi5lNzA4N2ZhNWZkZGU1OTQ4NzU0N2E4ZTllZmIzNGNj
MGVlMzhhZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJzLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5
ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwKICAg
ICBpZiAoIW1fZmlsdGVyIHx8IG1fdGFyZ2V0Qm91bmRpbmdCb3ggIT0gdGFyZ2V0Qm91bmRpbmdC
b3gpIHsKICAgICAgICAgbV90YXJnZXRCb3VuZGluZ0JveCA9IHRhcmdldEJvdW5kaW5nQm94Owog
ICAgICAgICAvLyBGSVhNRTogVGhpcyByZWJ1aWxkcyB0aGUgZW50aXJlIGVmZmVjdHMgY2hhaW4g
ZXZlbiBpZiB0aGUgZmlsdGVyIHN0eWxlIGRpZG4ndCBjaGFuZ2UuCi0gICAgICAgIG1fZmlsdGVy
ID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCks
IG1fcmVuZGVyaW5nTW9kZSwgbV9maWx0ZXJTY2FsZSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpV
bml0ZSwgbV90YXJnZXRCb3VuZGluZ0JveCk7CisgICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVy
OjpjcmVhdGUocmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCksIG1fcmVuZGVyaW5n
TW9kZSwgbV9maWx0ZXJTY2FsZSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpVbml0ZSwgbV90YXJn
ZXRCb3VuZGluZ0JveCwgY29udGV4dCk7CiAgICAgfQogCiAgICAgaWYgKCFtX2ZpbHRlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKaW5kZXggOGQ1ZGJkOTNkYjkwMDJiOTdhYjM5ZDBmNThjODFhOWI3MDA2Y2Rk
MS4uYTdhNzc3ODFiMDVmOGUxZWFlMmUwYjAzNDUxMWI3OWI1MmE5YTdjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKQEAgLTEyOSw4ICsxMjksOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGF1
dG8gcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnBhZ2UoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFi
bGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQ7CiAKICAgICAvLyBDcmVhdGUgdGhlIFNWR0ZpbHRlciBvYmplY3QuCi0gICAgZmls
dGVyRGF0YS0+YnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4odGFyZ2V0Qm91
bmRpbmdCb3gsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKLSAgICBmaWx0ZXJE
YXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJFbGVtZW50KCksICpmaWx0ZXJE
YXRhLT5idWlsZGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgRmlsdGVyOjpDbGlwT3Bl
cmF0aW9uOjpJbnRlcnNlY3QsIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMsIHRhcmdldEJvdW5kaW5n
Qm94KTsKKyAgICBmaWx0ZXJEYXRhLT5idWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWls
ZGVyPigpOworICAgIGZpbHRlckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRl
ckVsZW1lbnQoKSwgKmZpbHRlckRhdGEtPmJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNj
YWxlLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OkludGVyc2VjdCwgZmlsdGVyRGF0YS0+Ym91bmRh
cmllcywgdGFyZ2V0Qm91bmRpbmdCb3gsICpjb250ZXh0KTsKICAgICBpZiAoIWZpbHRlckRhdGEt
PmZpbHRlcikgewogICAgICAgICBtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5yZW1vdmUoJnJlbmRl
cmVyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZThhZGVkYmQ1NzIwZmM5
YTcxN2Q0ZmY4MzlkN2U5MWU0ZWIyYzM4Yi4uMmIzMTc0MjA0Y2QyYTNjY2E2MTQzMWY4YmIwNTA2
YzZkNTZhOTRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00NzcsOCArNDc3LDggQEAgdm9pZCB3cml0ZVNWR1Jl
c291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lciYKICAgICAgICAgLy8gQ3JlYXRpbmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2gg
aXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgogICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0Owog
ICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsKLSAgICAgICAgU1ZHRmlsdGVyQnVp
bGRlciBidWlsZGVyKGR1bW15UmVjdCk7Ci0gICAgICAgIGF1dG8gZHVtbXlGaWx0ZXIgPSBTVkdG
aWx0ZXI6OmNyZWF0ZShmaWx0ZXIuZmlsdGVyRWxlbWVudCgpLCBidWlsZGVyLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCBkdW1teVNjYWxlLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246Oklu
dGVyc2VjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QpOworICAgICAgICBTVkdGaWx0ZXJCdWlsZGVy
IGJ1aWxkZXI7CisgICAgICAgIGF1dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShm
aWx0ZXIuZmlsdGVyRWxlbWVudCgpLCBidWlsZGVyLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCBkdW1teVNjYWxlLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OkludGVyc2VjdCwgZHVtbXlS
ZWN0LCBkdW1teVJlY3QsIE51bGxHcmFwaGljc0NvbnRleHQoKSk7CiAgICAgICAgIGlmIChkdW1t
eUZpbHRlcikgewogICAgICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2Nv
cGUodHMpOwogICAgICAgICAgICAgZHVtbXlGaWx0ZXItPmV4dGVybmFsUmVwcmVzZW50YXRpb24o
dHMsIEZpbHRlclJlcHJlc2VudGF0aW9uOjpUZXN0T3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IDBhMWI0M2E3YWQzNTJmOTJhOGU5MTdlMWFlYTgy
YWQ1MTI5MWI5NTkuLmQ4Y2U4ZjExNjBjMGQzYWEwZGQ0MWQ0OTc4YmM1MzhjNDM5N2E3NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtOTcsNyArOTcsNyBA
QCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVp
bGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEZFQmxlbmQ6OmNyZWF0ZShtb2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaAppbmRleCA5ZTdhZWMwMGNmNTMyYmUyOTdhMWFmYjk5ZjJmY2Y5
NDcyMWQzMjlkLi43MTU5OTNlMmViMzY1ZTI0Y2JkZTg3NzJjNTI0NWE1NWY1YmRmNzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxBdG9t
U3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHsgaW4xKCksIGluMigpIH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZl
Y3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25z
dCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1h
dGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDky
YzcwMDM2NGY4OWViYzRkMmY4NGU0MDM1NzExMmJiMmFjYzZkNjUuLmVjOTgzYmRlMzhkNmJmYjMx
MWZmODQxYWU4ZGRhYWE1OTYzNDdiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7
CiAgICAgVmVjdG9yPGZsb2F0PiBmaWx0ZXJWYWx1ZXM7CiAgICAgQ29sb3JNYXRyaXhUeXBlIGZp
bHRlclR5cGUgPSB0eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5oCmluZGV4IDMzNGQ5NTExOTQwZDVmYjc1MGQxYjhhMjJiY2QyMzMxYjEyNmVmZmMu
LjFmZjU0NTM5ZDA4MjcyMzMwNDgxZGQyM2E4MWRkMWMxNjhjNGI1M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCkBAIC04Nyw3ICs4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3Qq
LCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+
IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEo
KSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwg
Y29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5h
dGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9p
bjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCA5YTc1
YjQ2Mjg3ZmMwNjk0MDkyMmVjMzk1MTMxNzNlZWYyNDAzM2U4Li41MTcxOTZiOThkYjJlYWI0NGI3
M2ZjN2U1MTE4ZDNkZDVlMmFmZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKK1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3Qo
Y29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZDsK
ICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGdyZWVuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCBkYWQ2NWIxYTVk
YzNmNmY2ODQ3NTg0OTI2ZDI3NWQ5NGM5OWQ1YzdiLi5hNDY4MjY0MjJmYmVlYWUyNWM0YjlhMGNl
MDMwY2FjYzA2ODg4ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcm
KSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNO
YW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3Qg
RmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJp
bmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmNwcAppbmRleCA2NDYwNDJmZDRhNDQ1MmIxMmU2YWY0NmZkY2EyMmQ2NmI1MzhiYjU0
Li5hMjkyNGIyMTk2ZGZiMjU2ZTY0YTVlMDY2ODgxMTQwZmNjMGIxNjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0Zp
bHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QKIHsKICAgICByZXR1cm4gRkVDb21wb3NpdGU6OmNyZWF0ZShzdmdPcGVyYXRvcigp
LCBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuaAppbmRleCAwMGUwMTdjOTk0MjkzZGRlZjRlNDY5ZjBjNWI2YzJlOGYy
NzNjYjA3Li41YTY4MzM5Y2MzMGEyYzJjMzg5OWM2ZWMzMzA0NDg4YTc5MWFiY2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBWZWN0b3I8QXRvbVN0
cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7
IGluMSgpLCBpbjIoKSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRl
eCA0YTgzYTE1YTAzY2M1OTAwOTIzZDNhMjcxOTc1Yzk4YWFlMDExN2QxLi5lOTQzNWJlZjJjNzZk
NDZiNWUwOWYwYTk5YTdiZGI1YzkwY2Q0MzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lk
IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNv
bnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0CiB7CiAgICAgaW50IG9yZGVyWFZhbHVlID0gb3JkZXJYKCk7CiAgICAg
aW50IG9yZGVyWVZhbHVlID0gb3JkZXJZKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCmluZGV4IDFmNTlhZWMyYWFhNTE0ODAwMzNmNGUwMmY3
ODliM2ZjNzU3Mjg5ZjUuLjlhZDFlNGMzOGFlNTdkYmQ4ZWYzZjJjZDRmYjZlNjlkZDlkMjQyYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5o
CkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
ICAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBm
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVm
ZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVm
PFNWR0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhp
cykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5jcHAKaW5kZXggMTNkM2NjNmZiZWY4YzEyODhkYzEzNjhkYmM4MWZlZWVjOTQ0ZTdiYy4u
N2VjMDVkZjBjMjVkMGE3MWFmNjc0Yjc5MDQ4NGIwOGRhYjdhMDMwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTE0OCwx
MyArMTQ4LDEzIEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1l
bnRBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFNWR0ZFTGlnaHRFCiAgICAgcHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXIm
IGZpbHRlckJ1aWxkZXIsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdChj
b25zdCBTVkdGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBSZWZQdHIgbGlnaHRFbGVtZW50ID0gU1ZH
RkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFsaWdodEVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gbGlnaHRTb3Vy
Y2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNlKGZpbHRlckJ1aWxkZXIpOworICAgIGF1dG8g
bGlnaHRTb3VyY2UgPSBsaWdodEVsZW1lbnQtPmxpZ2h0U291cmNlKGZpbHRlcik7CiAKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5oCmluZGV4IGM4NWNjOGNiYjEwYjUyNmQ4OWY1NDljMTEyOGM0MzJmNmUzZjYzZTYuLjU3NTA5
Njc3ZWQ4NGVmMzNiZGI3OWIwZjRlNDVlYmVmOTM4YjMzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVj
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IGlu
MSgpIH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZH
RmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXIm
LCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3Rp
bmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1f
cHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBt
X2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXggYTI5MzNi
YzNlMjI5YmY0NTFiYjQyYTc4YzQwMTcwNDlkOTdhYzY5ZS4uYTE1YmE0YjNlMWUxNDdmZjRlMjFj
OGRiYWJhNmZiYWQwODhhNTMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3QKIHsKICAgICByZXR1cm4gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZSh4Q2hh
bm5lbFNlbGVjdG9yKCksIHlDaGFubmVsU2VsZWN0b3IoKSwgc2NhbGUoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKaW5kZXggMmJl
NmFjNDIyZjM1NDFlZjMxOThhNGQ3YTg1ZWYxNTY2ZDU3NDQ1ZS4uMWE2YjUxOTQ0NjI1MTgwYTc2
MjI5ODFmMTk1MmFhN2JiN2MzNDhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBm
aWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCks
IGluMigpIH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGRl
c3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5n
PiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAKaW5kZXggOTE2ZjAzYzBm
OTE1N2VjODI4YzkyZTk5YjYzYmQ2MjJlOTUyNmE0NS4uNGMxNTNiZWExOGQ3N2VjYjZjMGYyMmQ3
YTFiMWUwMTA0MWJiOTU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
dGFudExpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFu
dExpZ2h0RWxlbWVudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUmVmPFNWR0ZFRGlzdGFudExpZ2h0
RWxlbWVudD4gU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVmPExpZ2h0U291cmNlPiBTVkdGRURpc3RhbnRMaWdo
dEVsZW1lbnQ6OmxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdAorUmVm
PExpZ2h0U291cmNlPiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKGNvbnN0
IFNWR0ZpbHRlciYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERpc3RhbnRMaWdodFNvdXJjZTo6Y3Jl
YXRlKGF6aW11dGgoKSwgZWxldmF0aW9uKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCmluZGV4IGJiYmZlOTQ3MzliNDQzOWMwNjA2YmMxMzg4
ZWQ4MGY3MjI3MjU4NGUuLjQxNmZlNjBiZTdiMTZkOTE4MTVjYjM5ZWY1MjNhOWY0ZTRlYTFlYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmgKQEAg
LTMwLDcgKzMwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRURpc3RhbnRMaWdodEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBSZWY8TGlnaHRT
b3VyY2U+IGxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlciYpIGNv
bnN0IG92ZXJyaWRlOwogfTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNWR0ZFRGlzdGFudExpZ2h0
RWxlbWVudCkgPT0gc2l6ZW9mKFNWR0ZFTGlnaHRFbGVtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA2YTg0ZDZjYjU1OWRhM2Jl
N2IxMjMyMmFmYjA0NWQwZmExZGRlYjRkLi5kMWU2MTg0OGFhYzE4MjZmNDE2N2I1ZjExMTViZjE1
ZDlmYWRjYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgSW50T3V0c2V0cyBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpvdXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFMKICAgICBy
ZXR1cm4gRkVEcm9wU2hhZG93OjpjYWxjdWxhdGVPdXRzZXRzKG9mZnNldCwgc3RkRGV2aWF0aW9u
KTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6Zmls
dGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0
b3ImKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6
ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCmluZGV4IDVhMWU3NmRiOTJkZDAxZGUz
NmVkMjAzNTBlYjQ3OWU1YjI4NzBlZGQuLjMzYzZkYmYxMmNlOGNkYWZkNzhkNmE1ODY1YmZmNWNj
OGFiMzc0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
aApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZp
bHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9
OyB9CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRp
bmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpIGNvbnN0IG92
ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGlu
YXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1f
aW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKaW5kZXggZjAxNGNjZmZkZmE5Y2I4YWE2ODAxMDUyYmE5
ZmYyNjA4MWQ0Njc0Ny4uOTUyMTMzMzM3Y2FlNzAwYzZmN2Q5MjQwZTAyMWVkMGY5ZmZhNTQxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIGJvb2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqIGVmZmVjdCwgY29uc3QgUXVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNW
R0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
OwogICAgIGlmICghcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVGbG9vZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5o
CmluZGV4IGQzZWVkZWMxYzNjMGNjYmM5NzM5N2ZiNTFiMTc0MGYyOGVhMjU5MjkuLjljNDhkYTBl
YjA3YmFjYjQ4NWViYTA0YTgzYzA1Y2UzNjAxMmVmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUZsb29kRWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU1ZH
UHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJC
dWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0
IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25D
b250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0
eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IGNiYmExOWIwNzA3N2JjNjgwOGVmZDA1MGYzYjA2
ZTM0Y2E0MjhmNGYuLmNiMTkwYWQzNTQxZDIyY2ZmMGNlN2NjYmY1OGUzNmNjMGZiNWM3M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgSW50T3V0c2V0cyBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6Om91
dHNldHMoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwKICAgICByZXR1cm4gRkVH
YXVzc2lhbkJsdXI6OmNhbGN1bGF0ZU91dHNldHMoc3RkRGV2aWF0aW9uKTsKIH0KIAotUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29u
c3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdAogewogICAgIGlmIChzdGREZXZpYXRpb25YKCkgPCAwIHx8IHN0
ZERldmlhdGlvblkoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCmluZGV4IDEzNmY0NDI5MmU5NzNk
NjFhYzg5ZmZkNmMwNGU4ZmFkMDAxYTRmNDYuLjYwYzVkMWE2Y2Q2NTg0NjU5MjlmYjdhZjU0NmVl
N2QzOWYwZmU1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsg
aW4xKCkgfTsgfQogICAgIEludE91dHNldHMgb3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKSBj
b25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29u
c3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdG
aWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3Ry
aW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDdlMDUxNDhkMjFjMWQ4MDQwMTlj
M2NmNDczMjhjZjE4MjcwYzIxZTMuLjRkNzMyMjk0ZmQ1ODIzYzY5ZGY0MDhhZTE2ZWFjOTQyN2Jj
NmM5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTc4
LDM4ICsxNzgsNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcwogICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnBhcmVudFJl
bmRlcmVyKTsKIH0KIAotc3RhdGljIGlubGluZSBJbnRSZWN0IHNjYWxlZEltYWdlQnVmZmVyUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCi17Ci0gICAg
YXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKLSAgICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxlKTsKLSAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKLX0KLQotc3RhdGljIGlubGlu
ZSBGbG9hdFNpemUgY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNp
emUmIHNpemUpCi17Ci0gICAgRmxvYXRTaXplIGNsYW1waW5nU2NhbGUoMSwgMSk7Ci0gICAgSW1h
Z2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNpemUsIGNsYW1waW5nU2NhbGUpOwotICAgIHJl
dHVybiBjbGFtcGluZ1NjYWxlOwotfQotCi1zdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2Nh
bGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0gICAgYXV0byBzY2FsZWRSZWN0ID0gc2Nh
bGVkSW1hZ2VCdWZmZXJSZWN0KHJlY3QsIHNjYWxlKTsKLSAgICBpZiAoc2NhbGVkUmVjdC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBjbGFtcGluZ1NjYWxl
ID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShzY2FsZWRSZWN0LnNpemUoKSk7Ci0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkUmVjdC5zaXpl
KCkgKiBjbGFtcGluZ1NjYWxlLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIHsgfSwgeyBob3N0V2luZG93
IH0pOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShjbGFtcGluZ1NjYWxlKTsKLSAgICBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtc2NhbGVkUmVjdC5sb2NhdGlvbigpKTsKLSAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlKTsKLSAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7Ci19Ci0KLXN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBT
VkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlY3QoKSBjb25zdAorc3RkOjp0dXBs
ZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFn
ZUJ1ZmZlckZvckVmZmVjdChjb25zdCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCkgY29uc3QKIHsKICAgICBhdXRvIHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxl
bWVudEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVlU2NvcGUoKSk7CiAgICAgaWYgKCFpczxTVkdF
bGVtZW50Pih0YXJnZXQuZWxlbWVudCkpCkBAIC0yMzEsOCArMjAwLDcgQEAgc3RkOjp0dXBsZTxS
ZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1
ZmZlckZvckVmZmUKICAgICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxl
KCksIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICBhdXRvIGltYWdlUmVjdCA9IHJl
bmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgLy8gRklYTUU6
IFJlcGxhY2UgdGhpcyBjYWxsIHdpdGggR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cigpIG9uY2UgdGhlIGRlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dCBpcyBwYXNzZWQgdG8gdGhp
cyBmdW5jdGlvbi4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlSW1hZ2VCdWZmZXIoaW1h
Z2VSZWN0LCBzY2FsZSwgcmVuZGVyZXItPmhvc3RXaW5kb3coKSk7CisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IGRlc3RpbmF0aW9uQ29udGV4dC5jcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcihpbWFnZVJl
Y3QsIHNjYWxlKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4geyB9Owog
CkBAIC0yNDIsNyArMjEwLDcgQEAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9h
dFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmUKICAgICByZXR1cm4g
eyBpbWFnZUJ1ZmZlciwgaW1hZ2VSZWN0IH07CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNW
R0ZFSW1hZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RUltYWdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0
KSBjb25zdAogewogICAgIGlmIChtX2NhY2hlZEltYWdlKSB7CiAgICAgICAgIGF1dG8gaW1hZ2Ug
PSBtX2NhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKCkpOwpAQCAtMjU3LDcg
KzIyNSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0ZXJF
ZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvCiAgICAgICAgIHJldHVybiBGRUltYWdl
OjpjcmVhdGUoeyBuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpIH0sIGltYWdlUmVjdCwgcHJl
c2VydmVBc3BlY3RSYXRpbygpKTsKICAgICB9CiAKLSAgICBhdXRvIFtpbWFnZUJ1ZmZlciwgaW1h
Z2VSZWN0XSA9IGltYWdlQnVmZmVyRm9yRWZmZWN0KCk7CisgICAgYXV0byBbaW1hZ2VCdWZmZXIs
IGltYWdlUmVjdF0gPSBpbWFnZUJ1ZmZlckZvckVmZmVjdChkZXN0aW5hdGlvbkNvbnRleHQpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IDA0MmQwNmJlZmUzYWNkMjFiODhjMDYx
MDFjNGM2OTBhZmM3YzhjNGMuLmE1ZjViMDZhNDQ1OWFjMmM5MDE2ZjdjZjYzMjEzMjMwNTkxMjY2
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC01NCw5ICs1NCw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlk
ZTsKIAotICAgIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBpbWFn
ZUJ1ZmZlckZvckVmZmVjdCgpIGNvbnN0OworICAgIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVm
ZmVyPiwgRmxvYXRSZWN0PiBpbWFnZUJ1ZmZlckZvckVmZmVjdChjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVj
dFZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRl
ckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCByZXF1ZXN0SW1h
Z2VSZXNvdXJjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAppbmRleCAx
Y2IyN2RmMzE1MDQwMTdjNjk5ZTAxMGNlZDRiMGQ1ZDYwMGJjNjM3Li4zZmZlNDhmNDQwOTc0ZWU3
YTkxZGZkZmVhMTI0NGZhNzQ2ZmQ1MzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU1ZHRmlsdGVyQnVpbGRlcjsKK2NsYXNzIFNWR0ZpbHRlcjsKIAogY2xhc3MgU1ZHRkVMaWdo
dEVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChTVkdGRUxpZ2h0RWxlbWVudCk7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBSZWY8TGlnaHRTb3Vy
Y2U+IGxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWY8TGlnaHRTb3VyY2U+IGxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlciYpIGNv
bnN0ID0gMDsKICAgICBzdGF0aWMgU1ZHRkVMaWdodEVsZW1lbnQqIGZpbmRMaWdodEVsZW1lbnQo
Y29uc3QgU1ZHRWxlbWVudCopOwogCiAgICAgZmxvYXQgYXppbXV0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXppbXV0aC0+Y3VycmVudFZhbHVlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJn
ZUVsZW1lbnQuY3BwCmluZGV4IDQyZGQ1Y2M1MjMwMTgzMTZlOTI3YmQyMmM1NDg3MWZhOTFlYTg2
YmEuLjcyMjJiMjMzYzhhMjA2MWQ5Zjc3ZTVjMTJhMWIwZTI3MDhhYjk4ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBWZWN0b3I8
QXRvbVN0cmluZz4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdElucHV0c05hbWVzKCkg
Y29uc3QKICAgICByZXR1cm4gaW5wdXRzTmFtZXM7CiB9CiAKLVJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYs
IGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRzKSBjb25zdAorUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0cywgY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QKIHsKICAgICByZXR1cm4gRkVNZXJnZTo6Y3JlYXRlKGlucHV0cy5zaXplKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAppbmRleCBiZjZlY2I2ZGIwZWZmNTc1
OWY1ZDVkMmRlYjMxZDk2YmM0NGJlZmM5Li43NThjY2Q2YzJlZjg0Zjk3NDY2NzU1YTA3Mjc0NTY5
MmE3MmU4NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaApAQCAtMzcs
NyArMzcsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3Bl
cnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0K
IAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBT
VkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVz
dGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggYmE1NGJhNzkyMTVjN2FmNmNlMWE0ZGE1
MGI2NmQxYTc3Y2RjZTRmZi4uNjEwODJhNDk4MzkzMWQ4YWI3MDM4NTM0NGU2MjdjM2NiNTc1Mjc0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApA
QCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpmaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojpm
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBpZiAocmFkaXVzWCgpIDwgMCB8
fCByYWRpdXNZKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4IDM0ZTI3NzE4YWNjNjM0ZjUxNjk3
NWVlZTI4YzVhNWJhMzVkOGM3Y2MuLjEzNjg1MzU3ZmY0ZmYzY2QxMDcxMzQ3NjQ5NmI0ZTEwZDMy
YmVhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaApA
QCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAg
IFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRl
ckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFBy
b3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZH
QW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCBhOTk4ZDJm
ZGQ2MWM2NjRiZTFiNmI3ZDIwMmQzNDEzYjNlMTc5Y2FlLi5jYjk0MWQ0NTE0MjRlMDBjYjQ2NzJj
YWZmYjIwOWIzMmYwODY4ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmNwcApAQCAtODUsNyArODUsNyBAQCBJbnRPdXRzZXRzIFNWR0ZFT2Zmc2V0RWxlbWVudDo6
b3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdVbgogICAgIHJl
dHVybiBGRU9mZnNldDo6Y2FsY3VsYXRlT3V0c2V0cyhvZmZzZXQpOwogfQogCi1SZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0
ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKK1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEZFT2Zmc2V0OjpjcmVhdGUoZHgoKSwgZHkoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKaW5kZXggMTU2ZWRkZjQ2OTlkYmM2YTIy
NWZiYTU5ZTAyOThkNmU3OWY3YjA4YS4uZWFlOTdlODIzYmJmNDFhMjZhZDYzMmE3N2ZiMTBjMWZh
YjA3M2RkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaApAQCAtNDks
NyArNDksNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVj
dElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyBpbjEoKSB9OyB9CiAgICAg
SW50T3V0c2V0cyBvdXRzZXRzKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWls
ZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZp
bHRlckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250
ZXh0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1faW4xIHsgU1ZH
QW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwCmluZGV4IGVmMzcyNTAzMjljYzAzOTdjMWE1ZWE2MWI0
ZGIzZTg2MDVlMTE0MjIuLmU2OGZmYjNmMDFlMWI3OWM5ZmFiNTRlYjdkYjQwZWQ2ZTY0NTdhMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHAKQEAg
LTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUG9pbnRMaWdodFNvdXJjZS5oIgotI2luY2x1ZGUg
IlNWR0ZpbHRlckJ1aWxkZXIuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTQxLDExICs0MSwx
MSBAQCBSZWY8U1ZHRkVQb2ludExpZ2h0RWxlbWVudD4gU1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZH
RkVQb2ludExpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWY8TGlnaHRT
b3VyY2U+IFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQ6OmxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CitSZWY8TGlnaHRTb3VyY2U+IFNWR0ZFUG9pbnRMaWdo
dEVsZW1lbnQ6OmxpZ2h0U291cmNlKGNvbnN0IFNWR0ZpbHRlciYgZmlsdGVyKSBjb25zdAogewog
ICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKLSAgICBpZiAoYnVpbGRlci5wcmltaXRpdmVVbml0
cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgewot
ICAgICAgICBGbG9hdFJlY3QgcmVmZXJlbmNlQm94ID0gYnVpbGRlci50YXJnZXRCb3VuZGluZ0Jv
eCgpOworICAgIGlmIChmaWx0ZXIucHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIHsKKyAgICAgICAgRmxvYXRSZWN0IHJlZmVy
ZW5jZUJveCA9IGZpbHRlci50YXJnZXRCb3VuZGluZ0JveCgpOwogICAgICAgICAKICAgICAgICAg
cG9zaXRpb24uc2V0WChyZWZlcmVuY2VCb3gueCgpICsgeCgpICogcmVmZXJlbmNlQm94LndpZHRo
KCkpOwogICAgICAgICBwb3NpdGlvbi5zZXRZKHJlZmVyZW5jZUJveC55KCkgKyB5KCkgKiByZWZl
cmVuY2VCb3guaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
UG9pbnRMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRF
bGVtZW50LmgKaW5kZXggYzQ3YTYwNTZlODg3ZGEwODFhMDRmM2I5NTJiZGU0NWJjZGE5ZDlmNS4u
Y2RlYmU0NzYxODQ3MzE1YjJiOWI4NjZjMjAxNGMwZDM4MjllYzFmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgU1ZHRkVQb2ludExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3VyY2UoY29u
c3QgU1ZHRmlsdGVyQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxMaWdodFNvdXJj
ZT4gbGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiB9Owogc3Rh
dGljX2Fzc2VydChzaXplb2YoU1ZHRkVQb2ludExpZ2h0RWxlbWVudCkgPT0gc2l6ZW9mKFNWR0ZF
TGlnaHRFbGVtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBlODdjNTEwZDVjNzc2MGE4MmFlNWFlMDgyOTU2
OTllNTU3Y2NhYWIxLi4wOWUxN2JkMDU4MWY4NGExM2YzYWNlNzhmZWNlZDFlZDZhZTA3NTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCkBAIC0xNTgsMTMgKzE1OCwxMyBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodAogICAg
IHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyQnVpbGRlciYgZmlsdGVyQnVpbGRlciwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9y
JikgY29uc3QKK1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXImIGZpbHRlciwgY29uc3QgRmlsdGVyRWZm
ZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBSZWZQdHIg
bGlnaHRFbGVtZW50ID0gU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQodGhpcyk7
CiAgICAgaWYgKCFsaWdodEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
YXV0byBsaWdodFNvdXJjZSA9IGxpZ2h0RWxlbWVudC0+bGlnaHRTb3VyY2UoZmlsdGVyQnVpbGRl
cik7CisgICAgYXV0byBsaWdodFNvdXJjZSA9IGxpZ2h0RWxlbWVudC0+bGlnaHRTb3VyY2UoZmls
dGVyKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwog
ICAgIGlmICghcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuaAppbmRleCA2YTIyYmU0Y2M2NDk1ZDRjN2IwZjU0NThmYTU3YzQ4
NjBmZTE0MzRlLi5lNjRjNDAwMzI5NGFhODkyOTkzZTE1NWUwZmE5NjQwM2E2YWFhZTNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgK
QEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0
ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3Rv
ciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVj
dChjb25zdCBTVkdGaWx0ZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgUmVmPFNW
R0FuaW1hdGVkU3RyaW5nPiBtX2luMSB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAKaW5kZXgg
YmJlMTZkNDBhOTgyYzQyMjA0MmY5YTAwOWE2NGU4MDlmYWViYTI5Zi4uY2EwMjAwZjYyZGU0ZTRk
NGE1ODM4OTAyZWFhNDNjZGE5Y2NiY2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
U3BvdExpZ2h0RWxlbWVudC5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3RWZWN0b3IuaCIKICNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgorI2luY2x1ZGUg
IlNWR0ZpbHRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU3BvdExpZ2h0
U291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTQxLDEzICs0MSwxMyBA
QCBSZWY8U1ZHRkVTcG90TGlnaHRFbGVtZW50PiBTVkdGRVNwb3RMaWdodEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZF
U3BvdExpZ2h0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZWY8TGlnaHRTb3Vy
Y2U+IFNWR0ZFU3BvdExpZ2h0RWxlbWVudDo6bGlnaHRTb3VyY2UoY29uc3QgU1ZHRmlsdGVyQnVp
bGRlciYgYnVpbGRlcikgY29uc3QKK1JlZjxMaWdodFNvdXJjZT4gU1ZHRkVTcG90TGlnaHRFbGVt
ZW50OjpsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXImIGZpbHRlcikgY29uc3QKIHsKICAgICBG
bG9hdFBvaW50M0QgcG9zaXRpb247CiAgICAgRmxvYXRQb2ludDNEIHBvaW50c0F0OwogCi0gICAg
aWYgKGJ1aWxkZXIucHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZ
UEVfT0JKRUNUQk9VTkRJTkdCT1gpIHsKLSAgICAgICAgRmxvYXRSZWN0IHJlZmVyZW5jZUJveCA9
IGJ1aWxkZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKKyAgICBpZiAoZmlsdGVyLnByaW1pdGl2ZVVu
aXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7
CisgICAgICAgIEZsb2F0UmVjdCByZWZlcmVuY2VCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdC
b3goKTsKICAgICAgICAgCiAgICAgICAgIHBvc2l0aW9uLnNldFgocmVmZXJlbmNlQm94LngoKSAr
IHgoKSAqIHJlZmVyZW5jZUJveC53aWR0aCgpKTsKICAgICAgICAgcG9zaXRpb24uc2V0WShyZWZl
cmVuY2VCb3gueSgpICsgeSgpICogcmVmZXJlbmNlQm94LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaAppbmRleCAwNzQzNmNjMDE2NjNiNTIxNTYy
NGE2ZTEyZDcxNjA2ODFlOTY1MjU2Li5iZTk4ZmJlZDg2NmM1YmNlMmY5OTc1NzNmNzU5YmE0MjMz
MjVjNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCkBA
IC0zMCw3ICszMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVTcG90TGlnaHRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgUmVmPExpZ2h0U291
cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmPExpZ2h0U291cmNlPiBsaWdodFNvdXJjZShjb25zdCBTVkdGaWx0ZXImKSBjb25z
dCBvdmVycmlkZTsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihTVkdGRVNwb3RMaWdodEVsZW1l
bnQpID09IHNpemVvZihTVkdGRUxpZ2h0RWxlbWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHAKaW5kZXggYjk5MzA3YzRiZTZjYjExYjViMzMxOWQ2MzVhNDFhNzRi
MWJjNWUzOC4uNWM1YTY4ODNiNzhlNjhmYmIwODZiMmE0ZmExNGY4MjVkNTYxZDg4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lk
IFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAotUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBj
b25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAorUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRl
ckVmZmVjdFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEZFVGlsZTo6Y3JlYXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
aAppbmRleCAzM2JjZTJlNDQ0MjM1ZWNjMGJjNGUyMDBmYTYyOWI2OTQ4OWQ3NmEwLi44N2QyODg0
MzdlMmMwM2IxMzI4MzY5ZGViZGIzZGUwNzc5Yzk2MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgVmVj
dG9yPEF0b21TdHJpbmc+IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4geyBpbjEoKSB9OyB9Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZm
ZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29u
c3QgU1ZHRmlsdGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZFN0cmluZz4gbV9pbjEgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggYmQw
MGQ1YTMwMjYzNWYxNmRhZmI2ZTA1MTc3OGM5MmY0MjY3MTE1MS4uNmI4NDZjNjcwZGM5MWVmYjk0
ZGNkNmFjMGJhNWNiYjY2ZDNjNzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCi1SZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNv
bnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0CitSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RVR1cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyJiwgY29uc3Qg
RmlsdGVyRWZmZWN0VmVjdG9yJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAg
ICBpZiAoYmFzZUZyZXF1ZW5jeVgoKSA8IDAgfHwgYmFzZUZyZXF1ZW5jeVkoKSA8IDApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmgKaW5kZXggNjBhYTE0NDVmZTI2ZTM2YmI4YzY5ZTEwMzlkMmRiYzMyOWZkNzY5MS4u
MmZjMzQ3ZTI4OGQ4NDhiMmVjZmQxMjdmNTRkYWM5ZTAwM2ExZDIzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZm
ZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29u
c3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVj
dFZlY3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+IG1fYmFzZUZyZXF1ZW5jeVggeyBT
VkdBbmltYXRlZE51bWJlcjo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAKaW5kZXggMjA0YTYxYjQ3MTg2YTc4YTYwYWNlY2Q2YTMyYzE1N2NmMmIw
YzdkNi4uZjllYmE2NWZkOWQwMjU1YWNjZGY0ODI1ZmFjMjA5NTcwYTZiNWEwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5s
aW5lcy5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRl
eCAyNDAyNTQ2ZjRmNDIwNzA1N2E2NTRlZTRkMDgwYjBhZTQ2MzQ3NDlhLi4xNzljNzQ1YTBhMzc0
MmRhNzUzZmYwNDE2ODA5NGY0NjEyMDM3ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudElubGlu
ZXMuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCmluZGV4IDUwMGIxZWI4OWRkOWQwYTAzY2M5ZTRjMDgzODJjZTU0M2FjZTY3NGEu
LmFhNjFhMjlkMjg2M2Q3MDE5ZGYzNjc0ZGRmNzhkZDdlZTQ0NjQ5MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWx0
ZXI7CiBjbGFzcyBGaWx0ZXJFZmZlY3Q7Ci1jbGFzcyBTVkdGaWx0ZXJCdWlsZGVyOworY2xhc3Mg
U1ZHRmlsdGVyOwogCiBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMg
OiBwdWJsaWMgU1ZHRWxlbWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpOwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3Qq
LCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCBWZWN0b3I8QXRvbVN0cmluZz4g
ZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCB7IHJldHVybiB7IH07IH0KICAgICB2aXJ0
dWFsIEludE91dHNldHMgb3V0c2V0cyhjb25zdCBGbG9hdFJlY3QmLCBTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlKSBjb25zdCB7IHJldHVybiB7IH07IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmls
dGVyRWZmZWN0VmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KSBjb25zdCA9
IDA7CiAKICAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNW
R0VsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5jcHAKaW5kZXggNTEwMTU2MDNiMTU1ODUwODVlNDUwMjEzOGEzZmEwN2RjYjhj
NzFhNC4uMjJiNjg0ODZiM2IyZWI0MTdjNDFiYTc2Y2EzM2U2OTljNDU0ZDdmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCkBAIC0z
MCwxMSArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U1ZHRmlsdGVy
PiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdG
aWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRp
bmdCb3gpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVt
ZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVy
YXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVz
dGluYXRpb25Db250ZXh0KQogewogICAgIGF1dG8gZmlsdGVyID0gYWRvcHRSZWYoKm5ldyBTVkdG
aWx0ZXIocmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGNsaXBPcGVyYXRpb24sIGZpbHRlclJl
Z2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5pdHMoKSkp
OwogCi0gICAgYXV0byBleHByZXNzaW9uID0gYnVpbGRlci5idWlsZEZpbHRlckV4cHJlc3Npb24o
ZmlsdGVyRWxlbWVudCk7CisgICAgYXV0byBleHByZXNzaW9uID0gYnVpbGRlci5idWlsZEZpbHRl
ckV4cHJlc3Npb24oZmlsdGVyRWxlbWVudCwgZmlsdGVyLCBkZXN0aW5hdGlvbkNvbnRleHQpOwog
ICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggZDIzODc1
ZWFiZTBmNmVhZjkyOTA0NDgyMzE5NmExNzkzZjBjZjc5Yy4uMDhiYzkxYzFiMmIyMmMxNTE2OWZk
Yjc4MzdlNWUzNWNiZWRkNTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTMxLDEyICszMSwxMyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBGaWx0ZXJJbWFnZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IFNWR0ZpbHRlckJ1aWxkZXI7CiBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50OwogCiBjbGFzcyBTVkdG
aWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PFNWR0ZpbHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwg
UmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
Qm91bmRpbmdCb3gpOworICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmls
dGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9h
dFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGlu
Z0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cywgU1ZHRmlsdGVy
RXhwcmVzc2lvbiYmKTsKIAogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKaW5kZXggMGJi
NGU1ZDAxMmRmYWY2Mjg2ZjViM2JjNWU0NWU3MTg0NjlhYjAwNS4uNDRmNzNiZDUxYzljN2FiYjNj
YTgyZWFhZmViNDhmMjY5NjU4ZTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKQEAgLTM2LDEyICszNiw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4VG90
YWxOdW1iZXJGaWx0ZXJFZmZlY3RzID0gMTAwOwogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBt
YXhDb3VudENoaWxkTm9kZXMgPSAyMDA7CiAKLVNWR0ZpbHRlckJ1aWxkZXI6OlNWR0ZpbHRlckJ1
aWxkZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSBwcmltaXRpdmVVbml0cykKLSAgICA6IG1fdGFyZ2V0Qm91bmRpbmdCb3godGFy
Z2V0Qm91bmRpbmdCb3gpCi0gICAgLCBtX3ByaW1pdGl2ZVVuaXRzKHByaW1pdGl2ZVVuaXRzKQot
ewotfQotCiBzdGF0aWMgT3B0aW9uU2V0PEZpbHRlckVmZmVjdEdlb21ldHJ5OjpGbGFncz4gZWZm
ZWN0R2VvbWV0cnlGbGFnc0ZvckVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBP
cHRpb25TZXQ8RmlsdGVyRWZmZWN0R2VvbWV0cnk6OkZsYWdzPiBmbGFnczsKQEAgLTEyMyw3ICsx
MTcsNyBAQCBzdGF0aWMgYm9vbCBhcHBlbmRHcmFwaFRvRXhwcmVzc2lvbihjb25zdCBTVkdGaWx0
ZXJFZmZlY3RzR3JhcGgmIGdyYXBoLCBjb25zdCBGaQogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFNWR0ZpbHRlckV4cHJlc3Npb24+IFNWR0ZpbHRlckJ1aWxkZXI6OmJ1aWxk
RmlsdGVyRXhwcmVzc2lvbihTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50KQorc3RkOjpv
cHRpb25hbDxTVkdGaWx0ZXJFeHByZXNzaW9uPiBTVkdGaWx0ZXJCdWlsZGVyOjpidWlsZEZpbHRl
ckV4cHJlc3Npb24oU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgY29uc3QgU1ZHRmls
dGVyJiBmaWx0ZXIsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KQog
ewogICAgIGlmIChmaWx0ZXJFbGVtZW50LmNvdW50Q2hpbGROb2RlcygpID4gbWF4Q291bnRDaGls
ZE5vZGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTM2LDEyICsxMzAsMTIg
QEAgc3RkOjpvcHRpb25hbDxTVkdGaWx0ZXJFeHByZXNzaW9uPiBTVkdGaWx0ZXJCdWlsZGVyOjpi
dWlsZEZpbHRlckV4cHJlc3Npb24oU1ZHRmkKICAgICAgICAgaWYgKCFpbnB1dHMpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIGF1dG8gZWZmZWN0ID0gZWZmZWN0
RWxlbWVudC5maWx0ZXJFZmZlY3QoKnRoaXMsICppbnB1dHMpOworICAgICAgICBhdXRvIGVmZmVj
dCA9IGVmZmVjdEVsZW1lbnQuZmlsdGVyRWZmZWN0KGZpbHRlciwgKmlucHV0cywgZGVzdGluYXRp
b25Db250ZXh0KTsKICAgICAgICAgaWYgKCFlZmZlY3QpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIGlmIChhdXRvIGZsYWdzID0gZWZmZWN0R2VvbWV0cnlGbGFn
c0ZvckVsZW1lbnQoZWZmZWN0RWxlbWVudCkpIHsKLSAgICAgICAgICAgIGF1dG8gZWZmZWN0Qm91
bmRhcmllcyA9IFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWZmZWN0RWxlbWVudCwgbV9wcmltaXRpdmVVbml0
cywgbV90YXJnZXRCb3VuZGluZ0JveCk7CisgICAgICAgICAgICBhdXRvIGVmZmVjdEJvdW5kYXJp
ZXMgPSBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVmZmVjdEVsZW1lbnQsIGZpbHRlci5wcmltaXRpdmVVbml0
cygpLCBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKSk7CiAgICAgICAgICAgICBlZmZlY3RHZW9t
ZXRyeU1hcC5hZGQoKmVmZmVjdCwgRmlsdGVyRWZmZWN0R2VvbWV0cnkoZWZmZWN0Qm91bmRhcmll
cywgZmxhZ3MpKTsKICAgICAgICAgfQogCkBAIC0xOTMsNyArMTg3LDcgQEAgc3RhdGljIEludE91
dHNldHMgY2FsY3VsYXRlR3JhcGhPdXRzZXRzKGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZXNHcmFw
aCYgZ3JhcGgsIGMKICAgICByZXR1cm4gY2FsY3VsYXRlU3ViR3JhcGhPdXRzZXRzKGdyYXBoLCAq
Z3JhcGgubGFzdE5vZGUoKSwgc3RhY2ssIHRhcmdldEJvdW5kaW5nQm94LCBwcmltaXRpdmVVbml0
cyk7CiB9CiAKLUludE91dHNldHMgU1ZHRmlsdGVyQnVpbGRlcjo6Y2FsY3VsYXRlRmlsdGVyT3V0
c2V0cyhTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50KQorSW50T3V0c2V0cyBTVkdGaWx0
ZXJCdWlsZGVyOjpjYWxjdWxhdGVGaWx0ZXJPdXRzZXRzKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRl
ckVsZW1lbnQsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCiB7CiAgICAgaWYg
KGZpbHRlckVsZW1lbnQuY291bnRDaGlsZE5vZGVzKCkgPiBtYXhDb3VudENoaWxkTm9kZXMpCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0yMDcsNyArMjAxLDcgQEAgSW50T3V0c2V0cyBTVkdGaWx0
ZXJCdWlsZGVyOjpjYWxjdWxhdGVGaWx0ZXJPdXRzZXRzKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRl
ckVsZW0KICAgICAgICAgZ3JhcGguc2V0Tm9kZUlucHV0cyhlZmZlY3RFbGVtZW50LCBXVEZNb3Zl
KGlucHV0cykpOwogICAgIH0KIAotICAgIHJldHVybiBjYWxjdWxhdGVHcmFwaE91dHNldHMoZ3Jh
cGgsIG1fdGFyZ2V0Qm91bmRpbmdCb3gsIG1fcHJpbWl0aXZlVW5pdHMpOworICAgIHJldHVybiBj
YWxjdWxhdGVHcmFwaE91dHNldHMoZ3JhcGgsIHRhcmdldEJvdW5kaW5nQm94LCBmaWx0ZXJFbGVt
ZW50LnByaW1pdGl2ZVVuaXRzKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmgKaW5kZXggZGRmNjBlOTE3MzY1NDgyMGRjZWUyMDQxZDdlYzEzMTQ1YzIwYzEwNi4uNjA5
OWFiOWQyOTFlZjRmZTkwN2VjNjBiOWRlY2ZjYzRkNmEwYmU4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAt
MjgsMjcgKzI4LDI0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlckVmZmVj
dDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFNW
R0ZpbHRlcjsKIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ZpbHRlckJ1aWxk
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNWR0ZpbHRl
ckJ1aWxkZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cyA9IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQ
RV9VU0VSU1BBQ0VPTlVTRSk7CisgICAgU1ZHRmlsdGVyQnVpbGRlcigpID0gZGVmYXVsdDsKIAot
ICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0
Qm91bmRpbmdCb3g7IH0KLSAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVu
aXRzKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0czsgfQotCi0gICAgc3RkOjpvcHRp
b25hbDxTVkdGaWx0ZXJFeHByZXNzaW9uPiBidWlsZEZpbHRlckV4cHJlc3Npb24oU1ZHRmlsdGVy
RWxlbWVudCYpOwotICAgIEludE91dHNldHMgY2FsY3VsYXRlRmlsdGVyT3V0c2V0cyhTVkdGaWx0
ZXJFbGVtZW50Jik7CisgICAgc3RkOjpvcHRpb25hbDxTVkdGaWx0ZXJFeHByZXNzaW9uPiBidWls
ZEZpbHRlckV4cHJlc3Npb24oU1ZHRmlsdGVyRWxlbWVudCYsIGNvbnN0IFNWR0ZpbHRlciYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBzdGF0aWMgSW50
T3V0c2V0cyBjYWxjdWxhdGVGaWx0ZXJPdXRzZXRzKFNWR0ZpbHRlckVsZW1lbnQmLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KTsKIAogICAgIC8vIFJlcXVpcmVkIHRvIGNoYW5n
ZSB0aGUgYXR0cmlidXRlcyBvZiBhIGZpbHRlciBkdXJpbmcgYW4gc3ZnQXR0cmlidXRlQ2hhbmdl
ZC4KICAgICBGaWx0ZXJFZmZlY3QqIGVmZmVjdEJ5UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpIHsgcmV0dXJuIG1fZWZmZWN0UmVuZGVyZXIuZ2V0KG9iamVjdCk7IH0KIAogcHJpdmF0ZToK
ICAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIEZpbHRlckVmZmVjdCo+IG1fZWZmZWN0UmVuZGVy
ZXI7Ci0gICAgRmxvYXRSZWN0IG1fdGFyZ2V0Qm91bmRpbmdCb3g7Ci0gICAgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBtX3ByaW1pdGl2ZVVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX1VTRVJTUEFDRU9OVVNFIH07CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>