<?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>236671</bug_id>
          
          <creation_ts>2022-02-15 14:53:53 -0800</creation_ts>
          <short_desc>Allow downcast&lt;&gt; to work with ImageBufferBackends that support sharing</short_desc>
          <delta_ts>2022-02-17 09:54:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Process Model</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1841958</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-15 14:53:53 -0800</bug_when>
    <thetext>Allow downcast&lt;&gt; to work with ImageBufferBackends that support sharing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841962</commentid>
    <comment_count>1</comment_count>
      <attachid>452095</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-15 14:59:28 -0800</bug_when>
    <thetext>Created attachment 452095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841990</commentid>
    <comment_count>2</comment_count>
      <attachid>452095</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-15 15:49:47 -0800</bug_when>
    <thetext>Comment on attachment 452095
Patch

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

&gt; Source/WebCore/platform/graphics/ImageBufferBackend.h:143
&gt; +    virtual ImageBufferBackendSharing* toBackendSharing() { return nullptr; }

It is sad that we can&apos;t make ImageBufferBackend inherit ImageBufferBackendSharing and have to introduce such function to avoid the diamond inheritance problem.

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:119
&gt; +    auto handleFromBuffer = [](WebCore::ImageBuffer&amp; buffer) -&gt; std::optional&lt;ImageBufferBackendHandle&gt; {

This is definitely cleaner and safer than the existing code. But we still have to deal with the backend and have to downcast it. Is there a way to move this call to ImageBuffer such that this code can be replaced by a single call?

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandleSharing.h:37
&gt; +    virtual ImageBufferBackendHandle createBackendHandle() const = 0;

Can these functions in ImageBuffer/ImageBufferBackend also be moved to this class?

    virtual bool isInUse() const = 0;
    virtual void releaseGraphicsContext() = 0;
    virtual void releaseBufferToPool() = 0;

    // Returns true on success.
    virtual bool setVolatile() = 0;
    virtual VolatilityState setNonVolatile() = 0;

    virtual std::unique_ptr&lt;ThreadSafeImageBufferFlusher&gt; createFlusher() = 0;

I think they are specific to WebKit and they are only used by RemoteLayerBackingStore.

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandleSharing.h:45
&gt; +SPECIALIZE_TYPE_TRAITS_IMAGE_BUFFER_BACKEND_SHARING(WebKit::ImageBufferBackendHandleSharing, isImageBufferBackendHandleSharing())

SPECIALIZE_TYPE_TRAITS_IMAGE_BUFFER_BACKEND_SHARING() is defined in ImageBufferBackend.h and it is only used here. Why do not we move the macro here also?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842099</commentid>
    <comment_count>3</comment_count>
      <attachid>452127</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-15 20:08:44 -0800</bug_when>
    <thetext>Created attachment 452127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842103</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-15 20:33:59 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #2)
&gt; Comment on attachment 452095 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452095&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageBufferBackend.h:143
&gt; &gt; +    virtual ImageBufferBackendSharing* toBackendSharing() { return nullptr; }
&gt; 
&gt; It is sad that we can&apos;t make ImageBufferBackend inherit
&gt; ImageBufferBackendSharing and have to introduce such function to avoid the
&gt; diamond inheritance problem.

Indeed.

&gt; &gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:119
&gt; &gt; +    auto handleFromBuffer = [](WebCore::ImageBuffer&amp; buffer) -&gt; std::optional&lt;ImageBufferBackendHandle&gt; {
&gt; 
&gt; This is definitely cleaner and safer than the existing code. But we still
&gt; have to deal with the backend and have to downcast it. Is there a way to
&gt; move this call to ImageBuffer such that this code can be replaced by a
&gt; single call?

ImageBuffer (in WebCore) can&apos;t know about ImageBufferBackendHandle (in WebKit).
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandleSharing.h:37
&gt; &gt; +    virtual ImageBufferBackendHandle createBackendHandle() const = 0;
&gt; 
&gt; Can these functions in ImageBuffer/ImageBufferBackend also be moved to this
&gt; class?
&gt; 
&gt;     virtual bool isInUse() const = 0;
&gt;     virtual void releaseGraphicsContext() = 0;
&gt;     virtual void releaseBufferToPool() = 0;
&gt; 
&gt;     // Returns true on success.
&gt;     virtual bool setVolatile() = 0;
&gt;     virtual VolatilityState setNonVolatile() = 0;
&gt; 
&gt;     virtual std::unique_ptr&lt;ThreadSafeImageBufferFlusher&gt; createFlusher() =
&gt; 0;
&gt; 
&gt; I think they are specific to WebKit and they are only used by
&gt; RemoteLayerBackingStore.

Maybe but not in this patch.

&gt; &gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandleSharing.h:45
&gt; &gt; +SPECIALIZE_TYPE_TRAITS_IMAGE_BUFFER_BACKEND_SHARING(WebKit::ImageBufferBackendHandleSharing, isImageBufferBackendHandleSharing())
&gt; 
&gt; SPECIALIZE_TYPE_TRAITS_IMAGE_BUFFER_BACKEND_SHARING() is defined in
&gt; ImageBufferBackend.h and it is only used here. Why do not we move the macro
&gt; here also?

Generally we put the &quot;#define SPECIALIZE_TYPE_TRAITS_IMAGE_BUFFER_BACKEND_SHARING()&quot; macro in the base class file, but I can move it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842142</commentid>
    <comment_count>5</comment_count>
      <attachid>452148</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-15 22:50:06 -0800</bug_when>
    <thetext>Created attachment 452148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842371</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-16 10:37:09 -0800</bug_when>
    <thetext>Committed r289911 (247341@main): &lt;https://commits.webkit.org/247341@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452148.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842372</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-16 10:38:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/89034498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842581</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 16:03:07 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842582</commentid>
    <comment_count>9</comment_count>
      <attachid>452266</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 16:03:08 -0800</bug_when>
    <thetext>Created attachment 452266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842941</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-17 09:54:20 -0800</bug_when>
    <thetext>Patch added by mistake.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452095</attachid>
            <date>2022-02-15 14:59:28 -0800</date>
            <delta_ts>2022-02-15 16:45:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236671-20220215145927.patch</filename>
            <type>text/plain</type>
            <size>26205</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ4YTRiYmZkYmNhZmFj
YWFmNmFmMGZhOTUzNmJjZTA3MDhhODE5OC4uOTFlMTFmNTA5ZGRjMDJkODAwM2VlMjQzNWU0MDIw
YmU4M2U0OTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRvd25j
YXN0PD4gdG8gd29yayB3aXRoIEltYWdlQnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoKSBoYWQgc29tZSBhd2t3YXJkIGNvZGUgdGhhdCB1
c2VkIGtub3dsZWdlIG9mIHRoZSByZWxhdGlvbnNoaXAKKyAgICAgICAgYmV0d2VlbiBidWZmZXIg
dHlwZXMgYW5kIG1hcHBhYmlsaXR5IHRvIHN0YXRpY19jYXN0PD4gdG8gc3BlY2lmaWMgYmFja2Vu
ZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggYSBzbWFsbCBh
YnN0cmFjdCBzdHViIGluIHRoZSBmb3JtIG9mIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZFNo
YXJpbmcsIGFuZAorICAgICAgICBhIG1peGluIGNsYXNzIGZvciBzaGFyZWFibGUgaW1hZ2UgYnVm
ZmVycyB3aGljaCBpbmhlcml0cyBmcm9tIGEgY29uY3JldGUgc3ViY2xhc3MsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmcuCisgICAgICAgIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGRvd25j
YXN0PD4gSW1hZ2VCdWZmZXJCYWNrZW5kIGRpcmVjdGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8gY29t
bW9uIGJhc2UgY2xhc3MgZm9yCisgICAgICAgIHRoZSBzaGFyZWFibGUgdHlwZXMgb2YgYnVmZmVy
IGJhY2tlbmRzLgorCisgICAgICAgIE5vdyB0aGUgY29kZSBpbiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZSBjYW4gYmUgc2ltcGxpZmllZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
U2hhcmluZzo6aXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kU2hhcmluZyk6CisKIDIw
MjItMDItMTEgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgS2VlcCBwcm9taXNlIGluIHNjb3BlIHdoZW4gY2FsbGluZyBEZWZlcnJlZFByb21p
c2U6OnJlamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMTliYjIzYTY2ODE0YmFhNWUyNzNkOWM2YjFiMmYwYTQz
YmZiNzlmLi4zMDZlMDhmNTQwYzA2OWU4MDVmOWUxYTU4YWEyZDA1YWI0YjA0OWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAyLTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRvd25jYXN0PD4gdG8gd29yayB3aXRoIElt
YWdlQnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmVuY29kZSgpIGhhZCBzb21lIGF3a3dhcmQgY29kZSB0aGF0IHVzZWQga25vd2xlZ2Ug
b2YgdGhlIHJlbGF0aW9uc2hpcAorICAgICAgICBiZXR3ZWVuIGJ1ZmZlciB0eXBlcyBhbmQgbWFw
cGFiaWxpdHkgdG8gc3RhdGljX2Nhc3Q8PiB0byBzcGVjaWZpYyBiYWNrZW5kIGltcGxlbWVudGF0
aW9ucy4KKworICAgICAgICBSZXBsYWNlIHRoaXMgd2l0aCBhIHNtYWxsIGFic3RyYWN0IHN0dWIg
aW4gdGhlIGZvcm0gb2YgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZywgYW5kCisg
ICAgICAgIGEgbWl4aW4gY2xhc3MgZm9yIHNoYXJlYWJsZSBpbWFnZSBidWZmZXJzIHdoaWNoIGlu
aGVyaXRzIGZyb20gYSBjb25jcmV0ZSBzdWJjbGFzcywgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
U2hhcmluZy4KKyAgICAgICAgSXQncyBub3QgcG9zc2libGUgdG8gZG93bmNhc3Q8PiBJbWFnZUJ1
ZmZlckJhY2tlbmQgZGlyZWN0bHkgYmVjYXVzZSB0aGVyZSBpcyBubyBjb21tb24gYmFzZSBjbGFz
cyBmb3IKKyAgICAgICAgdGhlIHNoYXJlYWJsZSB0eXBlcyBvZiBidWZmZXIgYmFja2VuZHMuCisK
KyAgICAgICAgTm93IHRoZSBjb2RlIGluIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIGNhbiBiZSBz
aW1wbGlmaWVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZl
clJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5k
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFu
ZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIyLTAyLTExICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBh
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbiBzdWJjbGFzcyBmb3IgR1BVIFByb2Nl
c3MtYmFzZWQgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDQ1MDc4ZDQwOWYzYTlkMDUyNDYwMjVi
M2ZlYmUwZjQ4OGRkYzAyNWQuLmM0NDBkMzBhYTU0M2I2YTRiOWE3N2M1NWEwMThlNmEzYzgwN2Ix
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5oCkBAIC02OSw2ICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGZsdXNoKCkgPSAwOwogfTsKIAorY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZygpID0gZGVm
YXVsdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5n
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKIGNsYXNzIEltYWdlQnVmZmVyQmFja2Vu
ZCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewpAQCAtMTM0LDYgKzE0MCw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVOYXRpdmVJbWFnZXNIYXZlQ29waWVk
QmFja2luZ1N0b3JlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2VuZFNoYXJp
bmcqIHRvQmFja2VuZFNoYXJpbmcoKSB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3RlY3RlZDoK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYp
OwogCkBAIC0xNjQsNiArMTcyLDExIEBAIHByb3RlY3RlZDoKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSU1BR0VfQlVGRkVSX0JBQ0tF
TkRfU0hBUklORyhUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyYgYmFja2VuZFNoYXJpbmcp
IHsgcmV0dXJuIGJhY2tlbmRTaGFyaW5nLnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbj4gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCAzNWI0
NTI3MGI0NTg0MjQ4MDk4MTA0MmRjNzU1MzRmYmFiYWViZjJkLi43NDhlNjdiMjMwYWVkMTA0ZDM2
NmQzZDU1ZmY5NWI0OTU5NDc3OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogICAgICAgICAsIG1fcmVtb3RlRGlzcGxheUxpc3QoeyBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpjcmVhdGUoKnRoaXMsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCksIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpIH0pCiAgICAgewotICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+Y3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKm1f
cmVtb3RlRGlzcGxheUxpc3QuZ2V0KCkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKG1fYmFja2VuZC0+Y3JlYXRlQmFja2VuZEhh
bmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsICptX3JlbW90ZURpc3BsYXlMaXN0
LmdldCgpKTsKICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGZhM2JiM2VmZjA2YTdmMmQ0
YTY2YWNiYzc2MzJjM2MzYTQyZDUyYWMuLjRlMWExMDllOWZmODhlNDA2YTU3NTFhNWU5NTk1ZWJi
N2FlOWVkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHAKQEAgLTk3LDcgKzk3LDcgQEAgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Q0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXIKIHsKIH0KIAotSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRs
ZSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRhID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0
Q29weUVuY29kZWREYXRhKG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NF
UlQoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRl
eCBkZmMzODhhNTBlMjYxNWY2ZDI4MzFkOWQyODRiYjk2NTY3ZjRkMGIyLi4wMjJmZTcyM2I4NTIw
MDljYzFmNmY2MmZiMjM1MGY0M2Q3NTFmZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmgKQEAgLTI3LDEzICsyNywxMyBAQAogCiAjaWYgRU5BQkxFKENHX0RJ
U1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaD4KICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVm
ZmVyQ0dCYWNrZW5kIHsKK2NsYXNzIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQpOwogcHVibGljOgpAQCAtNDIsMTAgKzQy
LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyopOwogCi0gICAgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNv
bnN0OwotCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmlu
YWw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOworICAg
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmlu
YWw7CiAKICAgICAvLyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkuCiAgICAg
UmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFj
a2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwpA
QCAtNTcsNiArNTYsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygp
IGNvbnN0IGZpbmFsOwogCisgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIElt
YWdlQnVmZmVyQmFja2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVy
biB0aGlzOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggZDcx
ZGViMzViMTkzNzg2ODA1ZTg0NjVjYmI1NDA0YjdiNTdjMjVjNC4uZWU2NjhhMmY0MTg1MTI4MjI4
NDc0Yjg0ZTk3MGFlYWZmNjQxMzJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpA
QCAtMTE2LDQyICsxMTYsMzkgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Y2xlYXJC
YWNraW5nU3RvcmUoKQogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogeworICAgIGF1dG8gaGFuZGxlRnJvbUJ1ZmZlciA9
IFtdKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlPiB7CisgICAgICAgIGF1dG8qIGJhY2tlbmQgPSBidWZmZXIuZW5z
dXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICAgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvKiBzaGFyaW5nID0gYmFja2VuZC0+
dG9CYWNrZW5kU2hhcmluZygpOworICAgICAgICBpZiAoaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmNyZWF0ZUJhY2tlbmRIYW5kbGUo
KTsKKworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH07CisKICAgICBlbmNvZGVy
IDw8IG1fdHlwZTsKICAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fc2Nh
bGU7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVuY29kZXIgPDwgbV9pbmNsdWRl
RGlzcGxheUxpc3Q7CisKICAgICAvLyBGSVhNRTogRm9yIHNpbXBsaWNpdHkgdGhpcyBzaG91bGQg
YmUgbW92ZWQgdG8gdGhlIGVuZCBvZiBkaXNwbGF5KCkgb25jZSB0aGUgYnVmZmVyIGhhbmRsZXMg
Y2FuIGJlIGNyZWF0ZWQgb25jZQogICAgIC8vIGFuZCBzdG9yZWQgaW4gbV9idWZmZXJIYW5kbGUu
IGh0dHA6Ly93ZWJraXQub3JnL2IvMjM0MTY5CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKICAgICBpZiAobV9jb250ZW50c0J1ZmZlckhhbmRsZSkg
ewogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CiAgICAgICAgIGhh
bmRsZSA9IG1fY29udGVudHNCdWZmZXJIYW5kbGU7Ci0gICAgfSBlbHNlIGlmIChtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNh
c2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNhbk1hcEJhY2tpbmdTdG9y
ZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJSZW1v
dGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHlwZTo6Qml0
bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAgICAgICAgICAgIGhhbmRsZSA9
IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigq
YmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB9IGVsc2UgaWYgKG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIpCisgICAgICAgIGhhbmRsZSA9IGhhbmRsZUZyb21CdWZmZXIoKm1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIpOwogCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiAKICNpZiBFTkFCTEUo
Q0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgc3RkOjpvcHRpb25hbDxJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFuZGxlOwotICAgIGlmIChtX2Zy
b250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaWYgKGF1dG8qIGJh
Y2tlbmQgPSBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tl
bmRDcmVhdGVkKCkpCi0gICAgICAgICAgICBkaXNwbGF5TGlzdEhhbmRsZSA9IHN0YXRpY19jYXN0
PENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgfQorICAgIGlmIChtX2Zyb250QnVmZmVyLmRpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIpCisgICAgICAgIGRpc3BsYXlMaXN0SGFuZGxlID0gaGFuZGxlRnJv
bUJ1ZmZlcigqbV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdlQnVmZmVyKTsKIAogICAgIGVu
Y29kZXIgPDwgZGlzcGxheUxpc3RIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1N2FhMDZmOGZiZTY4MzY2MmQ0
NDllZGIxYWNhNTNmYjg1NjcwNGUuLmYyNTA2NDY1MDM0MTgwZTIzMzZiZDlhOWZhN2Y4MmM0NjEx
ZmI1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjYwOSw2ICsyNjA5LDcgQEAKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8q
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlGQTdEQTI2Q0VGQUQx
MDA4NzI2ODQgLyogTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkE3REIyNkNF
RkFEQTAwODcyNjg0IC8qIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0UHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE3NDY3RTI3QkI2MTE4MDBCNUZG
NUEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkI1RkJGMjYwOUEwOTEwMDU0NTcyQyAvKiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQkI1RkMwMjYwOUEwOTEwMDU0
NTcyQyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTk3ODUsNiArOTc4Niw3IEBACiAJCQkJMUNCNzQ2MTkyNzQzNkRFMzAwRjE5ODc0IC8qIFdl
YkdQVSAqLywKIAkJCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzkyNDA3ODhGMTAwNEQyOTMxIC8qIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZS5oICovLAorCQkJCTBGQTc0NjdFMjdCQjYxMTgwMEI1RkY1QSAv
KiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3
ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8s
CiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9y
bUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFy
aW5nLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODhkMGJhMWRhNDgyYjdhNjc3NWQy
ZjQ4NmY1MWI0NzU3YjVhZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgOiBwdWJsaWMgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyB7CitwdWJsaWM6CisgICAgdmlydHVhbCBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0ID0gMDsKKwor
cHJpdmF0ZToKKyAgICBib29sIGlzSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFX0JVRkZFUl9CQUNLRU5EX1NIQVJJTkcoV2Vi
S2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLCBpc0ltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZVNoYXJpbmcoKSkKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCAyN2Vj
YjZiMWVmODVlYWM2M2M4MzEzMjVjMDUxNGI1NDE1ZmQ2YTJjLi5lMWVmNDc3MTQ5NjFjOTMwOTgx
MWZkM2NlNGQ5MDFhMjRmY2E5OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29u
c3QgUGFyYW0KICAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IocmVzb2x1dGlv
blNjYWxlKCkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25z
dAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOwogICAgIG1fYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCmluZGV4IDRjNzAy
ODVkMzA4NGUxODIyMzlkN2EyMTRiMzc5Njc1NDYyN2FkY2YuLmQ4YWY0YTk4NDkzOWIyOWM1MGFj
OTYyZjgzODMwNTdkN2QyYTM4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNoYXJlYWJsZUJp
dG1hcDsKIAotY2xhc3MgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kIHsKK2NsYXNzIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlQnVmZmVyQmFja2VuZCwgcHVibGljIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNo
YXJpbmcgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQpOwogcHVibGljOgpAQCAtNTMsMTEgKzUzLDEwIEBAIHB1YmxpYzoK
IAogICAgIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJz
JiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dD4mJik7CiAKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7Ci0KICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9jb250ZXh0OyB9CiAg
ICAgCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOworICAg
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmlu
YWw7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShX
ZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgY29u
c3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlBy
ZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0
IGZpbmFsOwpAQCAtNjksNiArNjgsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHVuc2lnbmVk
IGJ5dGVzUGVyUm93KCkgY29uc3QgZmluYWw7CiAKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFy
aW5nKiB0b0JhY2tlbmRTaGFyaW5nKCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQorCiAgICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKaW5kZXggY2I5NWM4N2VlYjY1N2UwZmZiZDhhN2RiY2IxYTNjYzM1MDY1N2M1ZS4uN2Qy
NmQxMWUwZTdjOGVjNWEzNmJhY2FjZTFhZTIzZjk1ZDUzZDRjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQogICAgIHsKICAgICAg
ICAgaWYgKGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9iYWNr
ZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICAgICAgICAgIHJldHVy
biBtX2JhY2tlbmQtPmNyZWF0ZUJhY2tlbmRIYW5kbGUoKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmNwcAppbmRleCAyZmU5ZTRiMDE3MDIyNmM1ZjgwMjAyM2EyYTBkYWVhNTQ5
NjUxYWFhLi5kZjdjN2YyNDk4MjM1MzhhZDYzNTI1NDljYzZlMThkOTA0NmJhMzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFjCiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJz
LCBXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VC
dWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHN0ZDo6Z2V0PE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKS5jb3B5U2VuZFJpZ2h0KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQu
aAppbmRleCAwNTY0ZGJjMTViZDJhZWIxYmUyMGJhZTJhNTY3MGRjNThlZWVjYzQ1Li5iNWI2NzJh
YjQ3YmMzYTQ5Nzk3OTNmOTM3YzhjM2IzMjI5YTdiZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTI3LDE0ICsyNywx
NCBAQAogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ltYWdlQnVmZmVyQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQgeworY2xhc3MgSW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZCwgcHVibGljIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VC
YWNrZW5kKTsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQpOwogcHVibGljOgpAQCAtNTAsMTMgKzUwLDEyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpIGNvbnN0OwotCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3Jp
Z2luQXRCb3R0b21MZWZ0Q29ybmVyID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
Y2FuTWFwQmFja2luZ1N0b3JlID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZDsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFu
ZGxlKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNr
ZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOwpAQCAtNzIsNiArNzEsOSBAQCBwcml2YXRlOgogICAgIGJv
b2wgb3JpZ2luQXRCb3R0b21MZWZ0Q29ybmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNPcmln
aW5BdEJvdHRvbUxlZnRDb3JuZXI7IH0KIAogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29u
c3QgZmluYWw7CisgICAgCisgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIElt
YWdlQnVmZmVyQmFja2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVy
biB0aGlzOyB9CiAKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgbV9oYW5kbGU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGIyOWZjNTcyNzg5NTAzMGQ0MmZkYjQyN2Ix
NTg0NDdmMGQ3MTA2M2IuLmE4Y2EzNDgwODFhOTNiMTRlNTcyMWZlMGQwMDI4YTFlYzg1Yzg0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VC
dWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwog
fQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAor
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZShtX3N1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGVhODUyNWM1MTUwMTU1YmQwM2I1ODAwNzNkNWYy
MTM4NjQ4YjBlMGIuLmQ4YjQ5ZjcxNGE1NWJhZjkxZGViZDBjN2EyNDdjMzJkYTY1NmFiODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZElPU3VyZmFjZUJhY2tlbmQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBIQVZFKElPU1VSRkFDRSkKIAotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogCi1jbGFzcyBJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kIHsKK2NsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKQEAgLTQ4LDkgKzQ4LDEzIEBAIHB1
YmxpYzoKIAogICAgIHVzaW5nIFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOwogCi0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwotCiAgICAgdm9pZCBz
ZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKTsKKwor
ICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3Qg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAg
IEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJl
dHVybiB0aGlzOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="479030"
          type_id="1"
          status="+"
          setter="sabouhallawa"
    />
    <flag name="commit-queue"
          id="479048"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452127</attachid>
            <date>2022-02-15 20:08:44 -0800</date>
            <delta_ts>2022-02-15 23:52:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236671-20220215200843.patch</filename>
            <type>text/plain</type>
            <size>28582</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ4YTRiYmZkYmNhZmFj
YWFmNmFmMGZhOTUzNmJjZTA3MDhhODE5OC4uZDViZDBlYjlhMDNlMWNkZDI3NzViY2RhZDZiYWVj
MmNiMTU2MmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRvd25j
YXN0PD4gdG8gd29yayB3aXRoIEltYWdlQnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorCisgICAgICAgIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoKSBoYWQgc29tZSBhd2t3YXJkIGNvZGUgdGhh
dCB1c2VkIGtub3dsZWdlIG9mIHRoZSByZWxhdGlvbnNoaXAKKyAgICAgICAgYmV0d2VlbiBidWZm
ZXIgdHlwZXMgYW5kIG1hcHBhYmlsaXR5IHRvIHN0YXRpY19jYXN0PD4gdG8gc3BlY2lmaWMgYmFj
a2VuZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggYSBzbWFs
bCBhYnN0cmFjdCBzdHViIGluIHRoZSBmb3JtIG9mIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZFNoYXJpbmcsIGFuZAorICAgICAgICBhIG1peGluIGNsYXNzIGZvciBzaGFyZWFibGUgaW1hZ2Ug
YnVmZmVycyB3aGljaCBpbmhlcml0cyBmcm9tIGEgY29uY3JldGUgc3ViY2xhc3MsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuCisgICAgICAgIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGRv
d25jYXN0PD4gSW1hZ2VCdWZmZXJCYWNrZW5kIGRpcmVjdGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8g
Y29tbW9uIGJhc2UgY2xhc3MgZm9yCisgICAgICAgIHRoZSBzaGFyZWFibGUgdHlwZXMgb2YgYnVm
ZmVyIGJhY2tlbmRzLgorCisgICAgICAgIE5vdyB0aGUgY29kZSBpbiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSBjYW4gYmUgc2ltcGxpZmllZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kU2hhcmluZzo6aXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kU2hhcmluZyk6CisK
IDIwMjItMDItMTEgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+
CiAKICAgICAgICAgS2VlcCBwcm9taXNlIGluIHNjb3BlIHdoZW4gY2FsbGluZyBEZWZlcnJlZFBy
b21pc2U6OnJlamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMTliYjIzYTY2ODE0YmFhNWUyNzNkOWM2YjFiMmYw
YTQzYmZiNzlmLi5lNGQ4ODE5NzY0NTdjMTc2ODlhM2JhZTliYTI5OWM2MzQ5OTg0OTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAyLTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRvd25jYXN0PD4gdG8gd29yayB3aXRo
IEltYWdlQnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorICAgICAgICAKKyAgICAgICAgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmVuY29kZSgpIGhhZCBzb21lIGF3a3dhcmQgY29kZSB0aGF0IHVzZWQga25v
d2xlZ2Ugb2YgdGhlIHJlbGF0aW9uc2hpcAorICAgICAgICBiZXR3ZWVuIGJ1ZmZlciB0eXBlcyBh
bmQgbWFwcGFiaWxpdHkgdG8gc3RhdGljX2Nhc3Q8PiB0byBzcGVjaWZpYyBiYWNrZW5kIGltcGxl
bWVudGF0aW9ucy4KKworICAgICAgICBSZXBsYWNlIHRoaXMgd2l0aCBhIHNtYWxsIGFic3RyYWN0
IHN0dWIgaW4gdGhlIGZvcm0gb2YgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZywg
YW5kCisgICAgICAgIGEgbWl4aW4gY2xhc3MgZm9yIHNoYXJlYWJsZSBpbWFnZSBidWZmZXJzIHdo
aWNoIGluaGVyaXRzIGZyb20gYSBjb25jcmV0ZSBzdWJjbGFzcywgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlU2hhcmluZy4KKyAgICAgICAgSXQncyBub3QgcG9zc2libGUgdG8gZG93bmNhc3Q8PiBJ
bWFnZUJ1ZmZlckJhY2tlbmQgZGlyZWN0bHkgYmVjYXVzZSB0aGVyZSBpcyBubyBjb21tb24gYmFz
ZSBjbGFzcyBmb3IKKyAgICAgICAgdGhlIHNoYXJlYWJsZSB0eXBlcyBvZiBidWZmZXIgYmFja2Vu
ZHMuCisKKyAgICAgICAgTm93IHRoZSBjb2RlIGluIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIGNh
biBiZSBzaW1wbGlmaWVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAq
IFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFn
ZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VC
YWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNr
ZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIyLTAyLTEx
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJv
ZHVjZSBhIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbiBzdWJjbGFzcyBmb3IgR1BV
IFByb2Nlc3MtYmFzZWQgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDQ1MDc4ZDQwOWYzYTlkMDUy
NDYwMjViM2ZlYmUwZjQ4OGRkYzAyNWQuLmQ1OTFjNjgwYTNmYzljMGUzMzA5YjdjMDAxNTgxNmE2
ZmY2NGNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC02OSw2ICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGZsdXNoKCkgPSAwOwogfTsKIAorY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kU2hh
cmluZyB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZygp
ID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVT
aGFyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKIGNsYXNzIEltYWdlQnVmZmVy
QmFja2VuZCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewpAQCAtMTM0LDYgKzE0
MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVOYXRpdmVJbWFnZXNIYXZl
Q29waWVkQmFja2luZ1N0b3JlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2Vu
ZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1l
dGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDM1YjQ1MjcwYjQ1ODQyNDgwOTgxMDQyZGM3NTUzNGZi
YWJhZWJmMmQuLjc0OGU2N2IyMzBhZWQxMDRkMzY2ZDNkNTVmZjk1YjQ5NTk0Nzc5ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICwg
bV9yZW1vdGVEaXNwbGF5TGlzdCh7IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNyZWF0ZSgq
dGhpcywgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkgfSkKICAg
ICB7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQobV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAqbV9yZW1vdGVEaXNwbGF5TGlzdC5nZXQoKSk7Cisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQobV9iYWNrZW5kLT5jcmVhdGVCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgKm1fcmVtb3RlRGlzcGxheUxpc3QuZ2V0KCkpOwogICAgIH0KIAogICAgIH5SZW1v
dGVJbWFnZUJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKaW5kZXggZmEzYmIzZWZmMDZhN2YyZDRhNjZhY2JjNzYzMmMzYzNhNDJkNTJhYy4uNGUx
YTEwOWU5ZmY4OGU0MDZhNTc1MWE1ZTk1OTVlYmI3YWU5ZWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtOTcsNyArOTcsNyBAQCBDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKIHsKICAgICBhdXRvIGRhdGEg
PSBhZG9wdENGKFdLQ0dDb21tYW5kc0NvbnRleHRDb3B5RW5jb2RlZERhdGEobV9jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIEFTU0VSVChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGRmYzM4OGE1MGUyNjE1ZjZkMjgzMWQ5ZDI4
NGJiOTY1NjdmNGQwYjIuLjAyMmZlNzIzYjg1MjAwOWNjMWY2ZjYyZmIyMzUwZjQzZDc1MWZmOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMjcsMTMg
KzI3LDEzIEBACiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCiAKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQgeworY2xhc3MgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1
ZmZlckNHQmFja2VuZCwgcHVibGljIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZCk7CiBwdWJsaWM6CkBAIC00MiwxMCArNDIsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJD
b3JlOjpIb3N0V2luZG93Kik7CiAKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7Ci0KICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNy
ZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE5PVEU6IFRoZXNlIGFs
bCBBU1NFUlRfTk9UX1JFQUNIRUQoKS4KICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29w
eUJhY2tpbmdTdG9yZSkgY29uc3QgZmluYWw7CkBAIC01Nyw2ICs1Niw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBJbWFn
ZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyogdG9C
YWNrZW5kU2hhcmluZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBkNzFkZWIzNWIxOTM3ODY4MDVlODQ2NWNiYjU0MDRi
N2I1N2MyNWM0Li5lZTY2OGEyZjQxODUxMjgyMjg0NzRiODRlOTcwYWVhZmY2NDEzMmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xMTYsNDIgKzExNiwzOSBAQCB2b2lkIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiAKIHZvaWQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CisgICAgYXV0byBoYW5kbGVGcm9tQnVmZmVyID0gW10oV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGJ1
ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IHsKKyAgICAg
ICAgYXV0byogYmFja2VuZCA9IGJ1ZmZlci5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgICAg
ICBpZiAoIWJhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
ICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgICAg
IGlmIChpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigq
c2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZSgpOworCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfTsKKwogICAgIGVuY29kZXIgPDwgbV90eXBlOwogICAgIGVuY29kZXIgPDwg
bV9zaXplOwogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFx
dWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKKwogICAgIC8vIEZJWE1F
OiBGb3Igc2ltcGxpY2l0eSB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgZW5kIG9mIGRpc3Bs
YXkoKSBvbmNlIHRoZSBidWZmZXIgaGFuZGxlcyBjYW4gYmUgY3JlYXRlZCBvbmNlCiAgICAgLy8g
YW5kIHN0b3JlZCBpbiBtX2J1ZmZlckhhbmRsZS4gaHR0cDovL3dlYmtpdC5vcmcvYi8yMzQxNjkK
ICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlOwogICAg
IGlmIChtX2NvbnRlbnRzQnVmZmVySGFuZGxlKSB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAgaGFuZGxlID0gbV9jb250ZW50c0J1ZmZlckhhbmRs
ZTsKLSAgICB9IGVsc2UgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAg
c3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAg
ICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3Vy
ZUJhY2tlbmRDcmVhdGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhh
bmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRC
YWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nh
c3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclJlbW90ZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAgICAgICAgICBpZiAoYXV0byog
YmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpCi0gICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAg
IH0gZWxzZSBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikKKyAgICAgICAgaGFuZGxlID0g
aGFuZGxlRnJvbUJ1ZmZlcigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcik7CiAKICAgICBlbmNv
ZGVyIDw8IGhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZGlz
cGxheUxpc3RIYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1
ZmZlcikgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuZGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIGRp
c3BsYXlMaXN0SGFuZGxlID0gc3RhdGljX2Nhc3Q8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICB9
CisgICAgaWYgKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlcikKKyAgICAgICAg
ZGlzcGxheUxpc3RIYW5kbGUgPSBoYW5kbGVGcm9tQnVmZmVyKCptX2Zyb250QnVmZmVyLmRpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIpOwogCiAgICAgZW5jb2RlciA8PCBkaXNwbGF5TGlzdEhhbmRsZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTU3YWEwNmY4ZmJlNjgzNjYyZDQ0OWVkYjFhY2E1M2ZiODU2NzA0ZS4uZjI1MDY0
NjUwMzQxODBlMjMzNmJkOWE5ZmE3ZjgyYzQ2MTFmYjVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjA5LDYgKzI2MDksNyBAQAog
CQkwRjkzMUMxQjE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGOUZBN0RBMjZDRUZBRDEwMDg3MjY4NCAvKiBNZWRpYUtleVN5c3RlbVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
S2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjlGQTdEQjI2Q0VGQURBMDA4NzI2ODQgLyogTWVkaWFLZXlTeXN0
ZW1QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhS2V5
U3lzdGVtUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQTc0NjdFMjdCQjYxMTgwMEI1RkY1QSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNjU5MjIxMjA4QjREQjAwNDQ4
MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEcmF3aW5nQXJlYUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCQjVG
QkYyNjA5QTA5MTAwNTQ1NzJDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZCQjVGQzAyNjA5QTA5MTAwNTQ1NzJDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTc4NSw2ICs5Nzg2LDcgQEAKIAkJCQkx
Q0I3NDYxOTI3NDM2REUzMDBGMTk4NzQgLyogV2ViR1BVICovLAogCQkJCTdCNjRDMEI2MjU0QzVD
MjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdB
N0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCisJ
CQkJMEZBNzQ2N0UyN0JCNjExODAwQjVGRjVBIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNo
YXJpbmcuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdG
MzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQwMjhkMmQ3NzhhZDhjNGRmZjIzOTNiYzYxMDg2NDU2MTFkYzY2OTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFj
a2VuZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlU2hhcmluZyA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5n
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVC
YWNrZW5kSGFuZGxlKCkgY29uc3QgPSAwOworCitwcml2YXRlOgorICAgIGJvb2wgaXNJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGlj
YXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmRT
aGFyaW5nJiBiYWNrZW5kU2hhcmluZykgeyByZXR1cm4gYmFja2VuZFNoYXJpbmcucHJlZGljYXRl
OyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlU2hhcmluZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkpCisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggMjdlY2I2YjFlZjg1ZWFjNjNjODMxMzI1
YzA1MTRiNTQxNWZkNmEyYy4uZTFlZjQ3NzE0OTYxYzkzMDk4MTFmZDNjZTRkOTAxYTI0ZmNhOTlk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cApAQCAtMTI2LDcgKzEyNiw3IEBAIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtCiAgICAgbV9jb250
ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2FsZSgpKTsKIH0KIAotSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUoKSBjb25zdAogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAg
ICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRleCA0YzcwMjg1ZDMwODRlMTgyMjM5ZDdhMjE0
YjM3OTY3NTQ2MjdhZGNmLi5kOGFmNGE5ODQ5MzliMjljNTBhYzk2MmY4MzgzMDU3ZDdkMmEzODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAg
LTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNr
ZW5kLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKLWNsYXNzIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlQnVmZmVyQmFja2VuZCB7CitjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tl
bmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
IHB1YmxpYzoKQEAgLTUzLDExICs1MywxMCBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwog
Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpIGNvbnN0OwotCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gKm1fY29udGV4dDsgfQogICAgIAogICAgIFdlYkNvcmU6Oklu
dFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3Jl
Q29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBX
ZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBmaW5hbDsKQEAgLTY5LDYgKzY4
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0
IGZpbmFsOwogCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyogdG9CYWNrZW5kU2hhcmlu
ZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IG1fY29udGV4dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IGNiOTVjODdl
ZWI2NTdlMGZmYmQ4YTdkYmNiMWEzY2MzNTA2NTdjNWUuLjFlOTQ3YTZmZGQ5YjA1NjMxZDBhNGFj
MjFjMzNkZDMwMDZhZDQyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC03Mywx
MyArNzMsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1hZ2VCdWZmZXIobV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQotICAgIHsKLSAgICAgICAgaWYg
KGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9Ci0KICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIgbGFzdFNl
bnRGbHVzaElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXI7
IH0KIAogICAgIHZvaWQgd2FpdEZvckRpZEZsdXNoT25TZWNvbmRhcnlUaHJlYWQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIHRhcmdldEZsdXNoSWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCAyZmU5ZTRiMDE3MDIyNmM1ZjgwMjAyM2EyYTBkYWVhNTQ5NjUxYWFhLi5kZjdj
N2YyNDk4MjM1MzhhZDYzNTI1NDljYzZlMThkOTA0NmJhMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9T
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFjCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhh
bmRsZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAor
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6Z2V0PE1h
Y2hTZW5kUmlnaHQ+KG1faGFuZGxlKS5jb3B5U2VuZFJpZ2h0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVt
b3RlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAwNTY0
ZGJjMTViZDJhZWIxYmUyMGJhZTJhNTY3MGRjNThlZWVjYzQ1Li5iNWI2NzJhYjQ3YmMzYTQ5Nzk3
OTNmOTM3YzhjM2IzMjI5YTdiZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTI3LDE0ICsyNywxNCBAQAogCiAjaWYg
SEFWRShJT1NVUkZBQ0UpCiAKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVy
QmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZCBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQgeworY2xhc3MgSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFj
a2VuZCwgcHVibGljIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kKTsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQp
OwogcHVibGljOgpAQCAtNTAsMTMgKzUwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpIGNvbnN0OwotCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRCb3R0b21M
ZWZ0Q29ybmVyID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuTWFwQmFja2lu
Z1N0b3JlID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUgPSBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsK
IAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IGZpbmFsOwor
ICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3Qg
ZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IGZpbmFsOwpAQCAtNzIsNiArNzEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgb3JpZ2luQXRC
b3R0b21MZWZ0Q29ybmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNPcmlnaW5BdEJvdHRvbUxl
ZnRDb3JuZXI7IH0KIAogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgZmluYWw7Cisg
ICAgCisgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIEltYWdlQnVmZmVyQmFj
a2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiAK
ICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgbV9oYW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQuY3BwCmluZGV4IGIyOWZjNTcyNzg5NTAzMGQ0MmZkYjQyN2IxNTg0NDdmMGQ3MTA2
M2IuLmE4Y2EzNDgwODFhOTNiMTRlNTcyMWZlMGQwMDI4YTFlYzg1Yzg0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGUKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZShtX3N1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZC5oCmluZGV4IGVhODUyNWM1MTUwMTU1YmQwM2I1ODAwNzNkNWYyMTM4NjQ4YjBlMGIu
LmQ4YjQ5ZjcxNGE1NWJhZjkxZGViZDBjN2EyNDdjMzJkYTY1NmFiODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKElPU1VSRkFDRSkKIAotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2MuaD4KIApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgU2hhcmVhYmxlQml0bWFwOwogCi1jbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElP
U3VyZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kIHsKK2NsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFj
a2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQs
IHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZCk7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKQEAgLTQ4LDkgKzQ4LDEzIEBAIHB1YmxpYzoKIAogICAg
IHVzaW5nIFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOwogCi0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwotCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJ
ZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKTsKKworICAgIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisKK3By
aXZhdGU6CisgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIEltYWdlQnVmZmVy
QmFja2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3djL0RyYXdpbmdBcmVhV0MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAKaW5kZXggMjdkMTIzNWJlOGQ3
M2I0NmRkZjZlZjIzZTQyMjI4NWMzNzMyYTVjNS4uZmEyZDQ5NjgzZGYxZWViNTJhYjJkOTBmYzAy
OGRjMjYxNDM3ZDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAKQEAgLTMyNyw3ICszMjcsMTMgQEAgdm9pZCBEcmF3
aW5nQXJlYVdDOjpzZW5kVXBkYXRlTm9uQUMoKQogICAgICAgICAgICAgICAgIGRpZFVwZGF0ZSgp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1
dG8gaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZCY+KCppbWFnZS0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKCk7CisKKyAgICAgICAgICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGU7CisgICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGJ1ZmZlci5lbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byogc2hhcmluZyA9IGJhY2tl
bmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgICAgICAgICAgICAgIGhh
bmRsZSA9IGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5n
KS5jcmVhdGVCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1cGRh
dGVJbmZvLmJpdG1hcEhhbmRsZSA9IHN0ZDo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihX
VEZNb3ZlKGhhbmRsZSkpOwogICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQ
cm94eTo6VXBkYXRlKHN0YXRlSUQsIFdURk1vdmUodXBkYXRlSW5mbykpKTsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9XQ0JhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvV0NCYWNraW5n
U3RvcmUuaAppbmRleCAzNGY1MDAyZjU0YTQzNDMwMTM0NTA4NTAxZDcyN2VkNzY4OWNjYjk1Li5m
ZTVkMzc3MzVmODJkNDY2NDljOWFmMTE5ZTU1MjA4MzAzMzk1ZmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9XQ0JhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL1dDQmFja2luZ1N0b3JlLmgKQEAgLTQ0
LDcgKzQ0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBoYXNJbWFnZUJ1ZmZlciA9IG1faW1h
Z2VCdWZmZXI7CiAgICAgICAgIGVuY29kZXIgPDwgaGFzSW1hZ2VCdWZmZXI7CiAgICAgICAgIGlm
IChoYXNJbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgYXV0byBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKm1faW1hZ2VCdWZm
ZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpOworICAgICAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZTsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0Jh
Y2tlbmRTaGFyaW5nKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcpKQorICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBk
b3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRl
QmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZW5jb2RlciA8PCBo
YW5kbGU7CiAgICAgICAgIH0KICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="479094"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452148</attachid>
            <date>2022-02-15 22:50:06 -0800</date>
            <delta_ts>2022-02-16 10:37:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236671-20220215225005.patch</filename>
            <type>text/plain</type>
            <size>28582</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ4YTRiYmZkYmNhZmFj
YWFmNmFmMGZhOTUzNmJjZTA3MDhhODE5OC4uZDViZDBlYjlhMDNlMWNkZDI3NzViY2RhZDZiYWVj
MmNiMTU2MmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRvd25j
YXN0PD4gdG8gd29yayB3aXRoIEltYWdlQnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorCisgICAgICAgIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoKSBoYWQgc29tZSBhd2t3YXJkIGNvZGUgdGhh
dCB1c2VkIGtub3dsZWdlIG9mIHRoZSByZWxhdGlvbnNoaXAKKyAgICAgICAgYmV0d2VlbiBidWZm
ZXIgdHlwZXMgYW5kIG1hcHBhYmlsaXR5IHRvIHN0YXRpY19jYXN0PD4gdG8gc3BlY2lmaWMgYmFj
a2VuZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggYSBzbWFs
bCBhYnN0cmFjdCBzdHViIGluIHRoZSBmb3JtIG9mIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZFNoYXJpbmcsIGFuZAorICAgICAgICBhIG1peGluIGNsYXNzIGZvciBzaGFyZWFibGUgaW1hZ2Ug
YnVmZmVycyB3aGljaCBpbmhlcml0cyBmcm9tIGEgY29uY3JldGUgc3ViY2xhc3MsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuCisgICAgICAgIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGRv
d25jYXN0PD4gSW1hZ2VCdWZmZXJCYWNrZW5kIGRpcmVjdGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8g
Y29tbW9uIGJhc2UgY2xhc3MgZm9yCisgICAgICAgIHRoZSBzaGFyZWFibGUgdHlwZXMgb2YgYnVm
ZmVyIGJhY2tlbmRzLgorCisgICAgICAgIE5vdyB0aGUgY29kZSBpbiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSBjYW4gYmUgc2ltcGxpZmllZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kU2hhcmluZzo6aXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kU2hhcmluZyk6CisK
IDIwMjItMDItMTEgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+
CiAKICAgICAgICAgS2VlcCBwcm9taXNlIGluIHNjb3BlIHdoZW4gY2FsbGluZyBEZWZlcnJlZFBy
b21pc2U6OnJlamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMTliYjIzYTY2ODE0YmFhNWUyNzNkOWM2YjFiMmYw
YTQzYmZiNzlmLi5lNGQ4ODE5NzY0NTdjMTc2ODlhM2JhZTliYTI5OWM2MzQ5OTg0OTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAyLTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRvd25jYXN0PD4gdG8gd29yayB3aXRo
IEltYWdlQnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorICAgICAgICAKKyAgICAgICAgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmVuY29kZSgpIGhhZCBzb21lIGF3a3dhcmQgY29kZSB0aGF0IHVzZWQga25v
d2xlZ2Ugb2YgdGhlIHJlbGF0aW9uc2hpcAorICAgICAgICBiZXR3ZWVuIGJ1ZmZlciB0eXBlcyBh
bmQgbWFwcGFiaWxpdHkgdG8gc3RhdGljX2Nhc3Q8PiB0byBzcGVjaWZpYyBiYWNrZW5kIGltcGxl
bWVudGF0aW9ucy4KKworICAgICAgICBSZXBsYWNlIHRoaXMgd2l0aCBhIHNtYWxsIGFic3RyYWN0
IHN0dWIgaW4gdGhlIGZvcm0gb2YgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZywg
YW5kCisgICAgICAgIGEgbWl4aW4gY2xhc3MgZm9yIHNoYXJlYWJsZSBpbWFnZSBidWZmZXJzIHdo
aWNoIGluaGVyaXRzIGZyb20gYSBjb25jcmV0ZSBzdWJjbGFzcywgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlU2hhcmluZy4KKyAgICAgICAgSXQncyBub3QgcG9zc2libGUgdG8gZG93bmNhc3Q8PiBJ
bWFnZUJ1ZmZlckJhY2tlbmQgZGlyZWN0bHkgYmVjYXVzZSB0aGVyZSBpcyBubyBjb21tb24gYmFz
ZSBjbGFzcyBmb3IKKyAgICAgICAgdGhlIHNoYXJlYWJsZSB0eXBlcyBvZiBidWZmZXIgYmFja2Vu
ZHMuCisKKyAgICAgICAgTm93IHRoZSBjb2RlIGluIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIGNh
biBiZSBzaW1wbGlmaWVkLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAq
IFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFn
ZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFn
ZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VC
YWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNr
ZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIyLTAyLTEx
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJv
ZHVjZSBhIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbiBzdWJjbGFzcyBmb3IgR1BV
IFByb2Nlc3MtYmFzZWQgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDQ1MDc4ZDQwOWYzYTlkMDUy
NDYwMjViM2ZlYmUwZjQ4OGRkYzAyNWQuLmQ1OTFjNjgwYTNmYzljMGUzMzA5YjdjMDAxNTgxNmE2
ZmY2NGNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC02OSw2ICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGZsdXNoKCkgPSAwOwogfTsKIAorY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kU2hh
cmluZyB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZygp
ID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVT
aGFyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKIGNsYXNzIEltYWdlQnVmZmVy
QmFja2VuZCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewpAQCAtMTM0LDYgKzE0
MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVOYXRpdmVJbWFnZXNIYXZl
Q29waWVkQmFja2luZ1N0b3JlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2Vu
ZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSB7IHJldHVybiBudWxscHRyOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1l
dGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDM1YjQ1MjcwYjQ1ODQyNDgwOTgxMDQyZGM3NTUzNGZi
YWJhZWJmMmQuLjc0OGU2N2IyMzBhZWQxMDRkMzY2ZDNkNTVmZjk1YjQ5NTk0Nzc5ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICwg
bV9yZW1vdGVEaXNwbGF5TGlzdCh7IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNyZWF0ZSgq
dGhpcywgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkgfSkKICAg
ICB7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQobV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAqbV9yZW1vdGVEaXNwbGF5TGlzdC5nZXQoKSk7Cisg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQobV9iYWNrZW5kLT5jcmVhdGVCYWNrZW5kSGFuZGxlKCksIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgKm1fcmVtb3RlRGlzcGxheUxpc3QuZ2V0KCkpOwogICAgIH0KIAogICAgIH5SZW1v
dGVJbWFnZUJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKaW5kZXggZmEzYmIzZWZmMDZhN2YyZDRhNjZhY2JjNzYzMmMzYzNhNDJkNTJhYy4uNGUx
YTEwOWU5ZmY4OGU0MDZhNTc1MWE1ZTk1OTVlYmI3YWU5ZWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtOTcsNyArOTcsNyBAQCBDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
KGNvbnN0IFBhcmFtZXRlcgogewogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QKIHsKICAgICBhdXRvIGRhdGEg
PSBhZG9wdENGKFdLQ0dDb21tYW5kc0NvbnRleHRDb3B5RW5jb2RlZERhdGEobV9jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSkpOwogICAgIEFTU0VSVChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IGRmYzM4OGE1MGUyNjE1ZjZkMjgzMWQ5ZDI4
NGJiOTY1NjdmNGQwYjIuLjAyMmZlNzIzYjg1MjAwOWNjMWY2ZjYyZmIyMzUwZjQzZDc1MWZmOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMjcsMTMg
KzI3LDEzIEBACiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCiAKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQgeworY2xhc3MgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1
ZmZlckNHQmFja2VuZCwgcHVibGljIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZCk7CiBwdWJsaWM6CkBAIC00MiwxMCArNDIsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJD
b3JlOjpIb3N0V2luZG93Kik7CiAKLSAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7Ci0KICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3QgZmluYWw7CisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNy
ZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE5PVEU6IFRoZXNlIGFs
bCBBU1NFUlRfTk9UX1JFQUNIRUQoKS4KICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29w
eUJhY2tpbmdTdG9yZSkgY29uc3QgZmluYWw7CkBAIC01Nyw2ICs1Niw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgZmluYWw7CiAKKyAgICAvLyBJbWFn
ZUJ1ZmZlckJhY2tlbmRTaGFyaW5nCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyogdG9C
YWNrZW5kU2hhcmluZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBkNzFkZWIzNWIxOTM3ODY4MDVlODQ2NWNiYjU0MDRi
N2I1N2MyNWM0Li5lZTY2OGEyZjQxODUxMjgyMjg0NzRiODRlOTcwYWVhZmY2NDEzMmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xMTYsNDIgKzExNiwzOSBAQCB2b2lkIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpjbGVhckJhY2tpbmdTdG9yZSgpCiAKIHZvaWQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CisgICAgYXV0byBoYW5kbGVGcm9tQnVmZmVyID0gW10oV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGJ1
ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IHsKKyAgICAg
ICAgYXV0byogYmFja2VuZCA9IGJ1ZmZlci5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgICAg
ICBpZiAoIWJhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
ICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgICAg
IGlmIChpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigq
c2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZSgpOworCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfTsKKwogICAgIGVuY29kZXIgPDwgbV90eXBlOwogICAgIGVuY29kZXIgPDwg
bV9zaXplOwogICAgIGVuY29kZXIgPDwgbV9zY2FsZTsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFx
dWU7CiAgICAgZW5jb2RlciA8PCBtX2luY2x1ZGVEaXNwbGF5TGlzdDsKKwogICAgIC8vIEZJWE1F
OiBGb3Igc2ltcGxpY2l0eSB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgZW5kIG9mIGRpc3Bs
YXkoKSBvbmNlIHRoZSBidWZmZXIgaGFuZGxlcyBjYW4gYmUgY3JlYXRlZCBvbmNlCiAgICAgLy8g
YW5kIHN0b3JlZCBpbiBtX2J1ZmZlckhhbmRsZS4gaHR0cDovL3dlYmtpdC5vcmcvYi8yMzQxNjkK
ICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gaGFuZGxlOwogICAg
IGlmIChtX2NvbnRlbnRzQnVmZmVySGFuZGxlKSB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAgaGFuZGxlID0gbV9jb250ZW50c0J1ZmZlckhhbmRs
ZTsKLSAgICB9IGVsc2UgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAg
c3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAg
ICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3Vy
ZUJhY2tlbmRDcmVhdGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlci0+Y2FuTWFwQmFja2luZ1N0b3JlKCkpCi0gICAgICAgICAgICAgICAgICAgIGhh
bmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRC
YWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nh
c3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclJlbW90ZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAgICAgICAgICBpZiAoYXV0byog
YmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpCi0gICAgICAgICAgICAgICAgaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAg
IH0gZWxzZSBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikKKyAgICAgICAgaGFuZGxlID0g
aGFuZGxlRnJvbUJ1ZmZlcigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcik7CiAKICAgICBlbmNv
ZGVyIDw8IGhhbmRsZTsKIAogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZGlz
cGxheUxpc3RIYW5kbGU7Ci0gICAgaWYgKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1
ZmZlcikgewotICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IG1fZnJvbnRCdWZmZXIuZGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAgICAgICAgIGRp
c3BsYXlMaXN0SGFuZGxlID0gc3RhdGljX2Nhc3Q8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZCY+KCpiYWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICB9
CisgICAgaWYgKG1fZnJvbnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlcikKKyAgICAgICAg
ZGlzcGxheUxpc3RIYW5kbGUgPSBoYW5kbGVGcm9tQnVmZmVyKCptX2Zyb250QnVmZmVyLmRpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIpOwogCiAgICAgZW5jb2RlciA8PCBkaXNwbGF5TGlzdEhhbmRsZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTU3YWEwNmY4ZmJlNjgzNjYyZDQ0OWVkYjFhY2E1M2ZiODU2NzA0ZS4uZjI1MDY0
NjUwMzQxODBlMjMzNmJkOWE5ZmE3ZjgyYzQ2MTFmYjVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjA5LDYgKzI2MDksNyBAQAog
CQkwRjkzMUMxQjE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGOUZBN0RBMjZDRUZBRDEwMDg3MjY4NCAvKiBNZWRpYUtleVN5c3RlbVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
S2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjlGQTdEQjI2Q0VGQURBMDA4NzI2ODQgLyogTWVkaWFLZXlTeXN0
ZW1QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhS2V5
U3lzdGVtUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGQTc0NjdFMjdCQjYxMTgwMEI1RkY1QSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNjU5MjIxMjA4QjREQjAwNDQ4
MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEcmF3aW5nQXJlYUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCQjVG
QkYyNjA5QTA5MTAwNTQ1NzJDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZCQjVGQzAyNjA5QTA5MTAwNTQ1NzJDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTc4NSw2ICs5Nzg2LDcgQEAKIAkJCQkx
Q0I3NDYxOTI3NDM2REUzMDBGMTk4NzQgLyogV2ViR1BVICovLAogCQkJCTdCNjRDMEI2MjU0QzVD
MjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLywKIAkJCQk3MjdB
N0YzOTI0MDc4OEYxMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggKi8sCisJ
CQkJMEZBNzQ2N0UyN0JCNjExODAwQjVGRjVBIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNo
YXJpbmcuaCAqLywKIAkJCQk3MjdBN0YzNzI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCAqLywKIAkJCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5
MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmggKi8sCiAJCQkJNzI3QTdG
MzgyNDA3ODhGMDAwNEQyOTMxIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQwMjhkMmQ3NzhhZDhjNGRmZjIzOTNiYzYxMDg2NDU2MTFkYzY2OTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQmFj
a2VuZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlU2hhcmluZyA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5n
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVC
YWNrZW5kSGFuZGxlKCkgY29uc3QgPSAwOworCitwcml2YXRlOgorICAgIGJvb2wgaXNJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGlj
YXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFsdWVUeXBlTmFtZSkgXAor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmRT
aGFyaW5nJiBiYWNrZW5kU2hhcmluZykgeyByZXR1cm4gYmFja2VuZFNoYXJpbmcucHJlZGljYXRl
OyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlU2hhcmluZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkpCisK
KyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggMjdlY2I2YjFlZjg1ZWFjNjNjODMxMzI1
YzA1MTRiNTQxNWZkNmEyYy4uZTFlZjQ3NzE0OTYxYzkzMDk4MTFmZDNjZTRkOTAxYTI0ZmNhOTlk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cApAQCAtMTI2LDcgKzEyNiw3IEBAIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtCiAgICAgbV9jb250
ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2FsZSgpKTsKIH0KIAotSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0ltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRI
YW5kbGUoKSBjb25zdAogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAg
ICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRleCA0YzcwMjg1ZDMwODRlMTgyMjM5ZDdhMjE0
YjM3OTY3NTQ2MjdhZGNmLi5kOGFmNGE5ODQ5MzliMjljNTBhYzk2MmY4MzgzMDU3ZDdkMmEzODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKQEAg
LTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotI2luY2x1ZGUgIklt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXJCYWNr
ZW5kLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKLWNsYXNzIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlQnVmZmVyQmFja2VuZCB7CitjbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tl
bmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCk7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKTsK
IHB1YmxpYzoKQEAgLTUzLDExICs1MywxMCBAQCBwdWJsaWM6CiAKICAgICBJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwog
Ci0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpIGNvbnN0OwotCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gKm1fY29udGV4dDsgfQogICAgIAogICAgIFdlYkNvcmU6Oklu
dFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmUHRyPFdl
YkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3Jl
Q29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBX
ZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBmaW5hbDsKQEAgLTY5LDYgKzY4
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0
IGZpbmFsOwogCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyogdG9CYWNrZW5kU2hhcmlu
ZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IG1fY29udGV4dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IGNiOTVjODdl
ZWI2NTdlMGZmYmQ4YTdkYmNiMWEzY2MzNTA2NTdjNWUuLjFlOTQ3YTZmZGQ5YjA1NjMxZDBhNGFj
MjFjMzNkZDMwMDZhZDQyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC03Mywx
MyArNzMsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1hZ2VCdWZmZXIobV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQotICAgIHsKLSAgICAgICAgaWYg
KGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9Ci0KICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRGbHVzaElkZW50aWZpZXIgbGFzdFNl
bnRGbHVzaElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlbnRGbHVzaElkZW50aWZpZXI7
IH0KIAogICAgIHZvaWQgd2FpdEZvckRpZEZsdXNoT25TZWNvbmRhcnlUaHJlYWQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIHRhcmdldEZsdXNoSWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5k
LmNwcAppbmRleCAyZmU5ZTRiMDE3MDIyNmM1ZjgwMjAyM2EyYTBkYWVhNTQ5NjUxYWFhLi5kZjdj
N2YyNDk4MjM1MzhhZDYzNTI1NDljYzZlMThkOTA0NmJhMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9T
dXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFjCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhh
bmRsZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAor
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6Z2V0PE1h
Y2hTZW5kUmlnaHQ+KG1faGFuZGxlKS5jb3B5U2VuZFJpZ2h0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVt
b3RlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCAwNTY0
ZGJjMTViZDJhZWIxYmUyMGJhZTJhNTY3MGRjNThlZWVjYzQ1Li5iNWI2NzJhYjQ3YmMzYTQ5Nzk3
OTNmOTM3YzhjM2IzMjI5YTdiZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTI3LDE0ICsyNywxNCBAQAogCiAjaWYg
SEFWRShJT1NVUkZBQ0UpCiAKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVy
QmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZCBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQgeworY2xhc3MgSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWNrZW5kIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFj
a2VuZCwgcHVibGljIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kKTsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQp
OwogcHVibGljOgpAQCAtNTAsMTMgKzUwLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpIGNvbnN0OwotCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRCb3R0b21M
ZWZ0Q29ybmVyID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY2FuTWFwQmFja2lu
Z1N0b3JlID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUgPSBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZDsK
IAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IGZpbmFsOwor
ICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3Qg
ZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNv
bnN0IGZpbmFsOwpAQCAtNzIsNiArNzEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgb3JpZ2luQXRC
b3R0b21MZWZ0Q29ybmVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNPcmlnaW5BdEJvdHRvbUxl
ZnRDb3JuZXI7IH0KIAogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93KCkgY29uc3QgZmluYWw7Cisg
ICAgCisgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIEltYWdlQnVmZmVyQmFj
a2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiAK
ICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgbV9oYW5kbGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQuY3BwCmluZGV4IGIyOWZjNTcyNzg5NTAzMGQ0MmZkYjQyN2IxNTg0NDdmMGQ3MTA2
M2IuLmE4Y2EzNDgwODFhOTNiMTRlNTcyMWZlMGQwMDI4YTFlYzg1Yzg0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGUKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZShtX3N1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZC5oCmluZGV4IGVhODUyNWM1MTUwMTU1YmQwM2I1ODAwNzNkNWYyMTM4NjQ4YjBlMGIu
LmQ4YjQ5ZjcxNGE1NWJhZjkxZGViZDBjN2EyNDdjMzJkYTY1NmFiODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFj
ZUJhY2tlbmQuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBIQVZFKElPU1VSRkFDRSkKIAotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2MuaD4KIApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgU2hhcmVhYmxlQml0bWFwOwogCi1jbGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElP
U3VyZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kIHsKK2NsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFj
a2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQs
IHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZCk7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKQEAgLTQ4LDkgKzQ4LDEzIEBAIHB1YmxpYzoKIAogICAg
IHVzaW5nIFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOwogCi0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUlt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwotCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJ
ZGVudGl0eShjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkmKTsKKworICAgIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisKK3By
aXZhdGU6CisgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIEltYWdlQnVmZmVy
QmFja2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL3djL0RyYXdpbmdBcmVhV0MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAKaW5kZXggMjdkMTIzNWJlOGQ3
M2I0NmRkZjZlZjIzZTQyMjI4NWMzNzMyYTVjNS4uNTU4YThlMTMxMWM5ZTRiMjA3MDBkN2QyMjMz
NzM2NjRlNmI2YjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAKQEAgLTMyNyw3ICszMjcsMTMgQEAgdm9pZCBEcmF3
aW5nQXJlYVdDOjpzZW5kVXBkYXRlTm9uQUMoKQogICAgICAgICAgICAgICAgIGRpZFVwZGF0ZSgp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1
dG8gaGFuZGxlID0gc3RhdGljX2Nhc3Q8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxl
QmFja2VuZCY+KCppbWFnZS0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlKCk7CisKKyAgICAgICAgICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGU7CisgICAgICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGltYWdlLT5lbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byogc2hhcmluZyA9IGJhY2tl
bmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgICAgICAgICAgICAgIGhh
bmRsZSA9IGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5n
KS5jcmVhdGVCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1cGRh
dGVJbmZvLmJpdG1hcEhhbmRsZSA9IHN0ZDo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihX
VEZNb3ZlKGhhbmRsZSkpOwogICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQ
cm94eTo6VXBkYXRlKHN0YXRlSUQsIFdURk1vdmUodXBkYXRlSW5mbykpKTsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9XQ0JhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvV0NCYWNraW5n
U3RvcmUuaAppbmRleCAzNGY1MDAyZjU0YTQzNDMwMTM0NTA4NTAxZDcyN2VkNzY4OWNjYjk1Li5m
ZTVkMzc3MzVmODJkNDY2NDljOWFmMTE5ZTU1MjA4MzAzMzk1ZmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9XQ0JhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL1dDQmFja2luZ1N0b3JlLmgKQEAgLTQ0
LDcgKzQ0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBoYXNJbWFnZUJ1ZmZlciA9IG1faW1h
Z2VCdWZmZXI7CiAgICAgICAgIGVuY29kZXIgPDwgaGFzSW1hZ2VCdWZmZXI7CiAgICAgICAgIGlm
IChoYXNJbWFnZUJ1ZmZlcikgewotICAgICAgICAgICAgYXV0byBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kJj4oKm1faW1hZ2VCdWZm
ZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpOworICAgICAgICAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZTsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gbV9pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENy
ZWF0ZWQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0Jh
Y2tlbmRTaGFyaW5nKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcpKQorICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBk
b3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRl
QmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZW5jb2RlciA8PCBo
YW5kbGU7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452266</attachid>
            <date>2022-02-16 16:03:08 -0800</date>
            <delta_ts>2022-02-16 16:55:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236671-20220216160307.patch</filename>
            <type>text/plain</type>
            <size>69256</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ4YTRiYmZkYmNhZmFj
YWFmNmFmMGZhOTUzNmJjZTA3MDhhODE5OC4uZDViZDBlYjlhMDNlMWNkZDI3NzViY2RhZDZiYWVj
MmNiMTU2MmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAyLTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRvd25j
YXN0PD4gdG8gd29yayB3aXRoIEltYWdlQnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorCisgICAgICAgIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUoKSBoYWQgc29tZSBhd2t3YXJkIGNvZGUgdGhh
dCB1c2VkIGtub3dsZWdlIG9mIHRoZSByZWxhdGlvbnNoaXAKKyAgICAgICAgYmV0d2VlbiBidWZm
ZXIgdHlwZXMgYW5kIG1hcHBhYmlsaXR5IHRvIHN0YXRpY19jYXN0PD4gdG8gc3BlY2lmaWMgYmFj
a2VuZCBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggYSBzbWFs
bCBhYnN0cmFjdCBzdHViIGluIHRoZSBmb3JtIG9mIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZFNoYXJpbmcsIGFuZAorICAgICAgICBhIG1peGluIGNsYXNzIGZvciBzaGFyZWFibGUgaW1hZ2Ug
YnVmZmVycyB3aGljaCBpbmhlcml0cyBmcm9tIGEgY29uY3JldGUgc3ViY2xhc3MsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuCisgICAgICAgIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGRv
d25jYXN0PD4gSW1hZ2VCdWZmZXJCYWNrZW5kIGRpcmVjdGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8g
Y29tbW9uIGJhc2UgY2xhc3MgZm9yCisgICAgICAgIHRoZSBzaGFyZWFibGUgdHlwZXMgb2YgYnVm
ZmVyIGJhY2tlbmRzLgorCisgICAgICAgIE5vdyB0aGUgY29kZSBpbiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSBjYW4gYmUgc2ltcGxpZmllZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNr
ZW5kU2hhcmluZzo6aXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6dG9CYWNrZW5kU2hhcmluZyk6CisK
IDIwMjItMDItMTEgIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+
CiAKICAgICAgICAgS2VlcCBwcm9taXNlIGluIHNjb3BlIHdoZW4gY2FsbGluZyBEZWZlcnJlZFBy
b21pc2U6OnJlamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMTliYjIzYTY2ODE0YmFhNWUyNzNkOWM2YjFiMmYw
YTQzYmZiNzlmLi5lNzQxYWQ2NWJiODk2ZGY2ZDU1NjcwMmU4Y2E3YjNhZWUzYjI2NGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEwOCBAQAorMjAyMi0wMi0xNiAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZSBidWZmZXJzIG5vbi12b2xhdGlsZSBpbiB0aGUgR1BVIFByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjcz
MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQ2FsbHMgdG8g
c2V0Vm9sYXRpbGUoKSBhbmQgaXNJblVzZSgpIG9uIElPU3VyZmFjZSBuZWVkIHRvIGhhcHBlbiBp
biB0aGUgR1BVIFByb2Nlc3MsCisgICAgICAgIHNvIHdoZW4gUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUgc3dhcHMgYnVmZmVycyBpbiBkaXNwbGF5KCksIGFuZCBtYWtlcyB0aGUgZnJvbnQgYnVmZmVy
CisgICAgICAgIG5vbi12b2xhdGlsZSwgdGhvc2UgdGhpbmdzIG5lZWQgdG8gZ28gdmlhIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuCisgICAgICAgIAorICAgICAgICBTbyBwbHVtYiBtYXJrU3VyZmFj
ZU5vblZvbGF0aWxlKCkgYW5kIHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKSB0aHJvdWdoIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbgorICAgICAgICBhbmQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCwgYm90aCBhcyBzeW5jIG1lc3NhZ2VzLgorICAgICAgICAKKyAgICAgICAgSW4gYm90
aCBjYXNlcywgaWYgdGhlIHN1cmZhY2Ugd2FzIHB1cmdlZCAoaS5lLiBzZXROb25Wb2xhdGlsZSBy
ZXR1cm5lZCBFbXB0eSkgd2UgbmVlZAorICAgICAgICB0byB0cmlnZ2VyIGEgc2V0TmVlZHNEaXNw
bGF5KCksIHdpcmVkIHRocm91Z2ggUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpZE1ha2VGcm9u
dEJ1ZmZlck5vblZvbGF0aWxlKCkKKyAgICAgICAgc28gdGhlcmUncyBvbmx5IG9uZSBjYWxsIHNp
dGUuCisKKyAgICAgICAgV2UgYWxzbyBuZWVkIHRvIGFsd2F5cyBzZW5kIHRoZSBJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUgYmFjayBmcm9tIHRoZSBHUFUgUHJvY2VzcyBmb3IKKyAgICAgICAgdGhl
IGZyb250IGJ1ZmZlciwgc2luY2UgYSBmdXR1cmUgcGF0Y2ggd2lsbCBjbGVhciB0aGVzZSBvdXQg
aW4gdGhlIHdlYiBwcm9jZXNzIHdoZW4KKyAgICAgICAgbWFraW5nIGJ1ZmZlcnMgdm9sYXRpbGUu
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN3YXBUb1ZhbGlkRnJvbnRCdWZm
ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlTd2FwcGVkQnVmZmVycyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50IGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRp
bGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVy
Tm9uVm9sYXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
d2lsbE1ha2VCdWZmZXJWb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmJ1ZmZlckZvclR5cGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0
aWFsUmVwYWludCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjptYWtlRnJvbnRC
dWZmZXJOb25Wb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlQ29sbGVjdGlvbjo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uOjptYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnN3YXBU
b1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZzo6c2V0QmFja2VuZEhhbmRsZSk6CisgICAgICAgIChX
ZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc6OmNsZWFyQmFja2VuZEhhbmRs
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpnZXRQaXhlbEJ1ZmZlckZvckltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwdXRQaXhlbEJ1ZmZlckZvckltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpzd2FwVG9WYWxp
ZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjptYXJrU3VyZmFjZU5vblZvbGF0aWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6
OnNldEJhY2tlbmRIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQ6OmNsZWFyQmFja2VuZEhhbmRsZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmg6
CisKKzIwMjItMDItMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWxsb3cgZG93bmNhc3Q8PiB0byB3b3JrIHdpdGggSW1hZ2VCdWZmZXJCYWNrZW5k
cyB0aGF0IHN1cHBvcnQgc2hhcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FpZCBBYm91LUhh
bGxhd2EuCisgICAgICAgIAorICAgICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2Rl
KCkgaGFkIHNvbWUgYXdrd2FyZCBjb2RlIHRoYXQgdXNlZCBrbm93bGVnZSBvZiB0aGUgcmVsYXRp
b25zaGlwCisgICAgICAgIGJldHdlZW4gYnVmZmVyIHR5cGVzIGFuZCBtYXBwYWJpbGl0eSB0byBz
dGF0aWNfY2FzdDw+IHRvIHNwZWNpZmljIGJhY2tlbmQgaW1wbGVtZW50YXRpb25zLgorCisgICAg
ICAgIFJlcGxhY2UgdGhpcyB3aXRoIGEgc21hbGwgYWJzdHJhY3Qgc3R1YiBpbiB0aGUgZm9ybSBv
ZiBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nLCBhbmQKKyAgICAgICAgYSBtaXhp
biBjbGFzcyBmb3Igc2hhcmVhYmxlIGltYWdlIGJ1ZmZlcnMgd2hpY2ggaW5oZXJpdHMgZnJvbSBh
IGNvbmNyZXRlIHN1YmNsYXNzLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLgorICAg
ICAgICBJdCdzIG5vdCBwb3NzaWJsZSB0byBkb3duY2FzdDw+IEltYWdlQnVmZmVyQmFja2VuZCBk
aXJlY3RseSBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbW1vbiBiYXNlIGNsYXNzIGZvcgorICAgICAg
ICB0aGUgc2hhcmVhYmxlIHR5cGVzIG9mIGJ1ZmZlciBiYWNrZW5kcy4KKworICAgICAgICBOb3cg
dGhlIGNvZGUgaW4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgY2FuIGJlIHNpbXBsaWZpZWQuCisK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAg
ICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZUJhY2tlbmRIYW5kbGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kLmg6CisKIDIwMjItMDItMTEgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGEgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmVDb2xsZWN0aW9uIHN1YmNsYXNzIGZvciBHUFUgUHJvY2Vzcy1iYXNlZCByZW5k
ZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmgKaW5kZXggNDUwNzhkNDA5ZjNhOWQwNTI0NjAyNWIzZmViZTBmNDg4ZGRj
MDI1ZC4uZDU5MWM2ODBhM2ZjOWMwZTMzMDliN2MwMDE1ODE2YTZmZjY0Y2RhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmgKQEAgLTY5LDYgKzY5LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKSA9
IDA7CiB9OwogCitjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nKCkgPSBkZWZhdWx0OworICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorfTsKKwogY2xhc3MgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CkBAIC0xMzQsNiArMTQwLDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGVuc3VyZU5hdGl2ZUltYWdlc0hhdmVDb3BpZWRCYWNraW5nU3RvcmUo
KSB7IH0KIAorICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyogdG9CYWNrZW5k
U2hhcmluZygpIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVf
RVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
aW5kZXggMzViNDUyNzBiNDU4NDI0ODA5ODEwNDJkYzc1NTM0ZmJhYmFlYmYyZC4uNzQ4ZTY3YjIz
MGFlZDEwNGQzNjZkM2Q1NWZmOTViNDk1OTQ3NzlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgLCBtX3JlbW90ZURpc3BsYXlMaXN0
KHsgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Y3JlYXRlKCp0aGlzLCByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5wcm9jZXNzSWRlbnRp
ZmllcigpLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSB9KQogICAgIHsKLSAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQt
PmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsICptX3JlbW90ZURpc3BsYXlMaXN0LmdldCgpKTsKKyAgICAgICAgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChtX2JhY2tlbmQtPmNyZWF0
ZUJhY2tlbmRIYW5kbGUoKSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAqbV9yZW1vdGVE
aXNwbGF5TGlzdC5nZXQoKSk7CiAgICAgfQogCiAgICAgflJlbW90ZUltYWdlQnVmZmVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAwOTA1YTRjNWZhZWRkOTdlNWIwMDQwNDRmOWQ4M2I3
Zjk0NGRkZmE3Li5kZTk0ZmJiNjViZmFmZDIxNTg0M2YwZTFjNzYyYzQ1MjgyY2YzZGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJCdWZmZXJJZGVudGlmaWVyU2V0LmgiCiAjaW5jbHVkZSAi
RmlsdGVyUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM4NCw2ICszODUsNzIgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2VXaXRoUXVhbGlmaWVkSWRlbnRp
ZmllcihRdWFsaWYKICAgICBtX3JlbW90ZURpc3BsYXlMaXN0cy5yZW1vdmUocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlPiBoYW5kbGVGcm9tQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZm
ZXIpCit7CisgICAgYXV0byogYmFja2VuZCA9IGJ1ZmZlci5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
OworICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgaWYgKGlz
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcpKQorICAgICAgICByZXR1
cm4gZG93bmNhc3Q8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmNy
ZWF0ZUJhY2tlbmRIYW5kbGUoKTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gYmFja2VuZEhh
bmRsZSwgYm9vbCBidWZmZXJXYXNFbXB0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZl
cih7IGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSB9KTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byBiYWNrZW5kSGFuZGxlID0gaGFuZGxlRnJvbUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOworICAgIGF1
dG8gcHJldmlvdXNTdGF0ZSA9IGltYWdlQnVmZmVyLT5zZXROb25Wb2xhdGlsZSgpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYmFja2VuZEhhbmRsZSksIHByZXZpb3VzU3RhdGUgPT0g
Vm9sYXRpbGl0eVN0YXRlOjpFbXB0eSk7Cit9CisKKy8vIFRoaXMgaXMgdGhlIEdQVSBQcm9jZXNz
IHZlcnNpb24gb2YgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZm
ZXIoKS4KK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZl
cihjb25zdCBCdWZmZXJJZGVudGlmaWVyU2V0JiBidWZmZXJTZXQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgQnVmZmVySWRlbnRpZmllclNldCYgc3dhcHBlZEJ1ZmZlclNldCwgc3RkOjpv
cHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+JiYgZnJvbnRCdWZmZXJIYW5kbGUsIGJv
b2wgZnJvbnRCdWZmZXJXYXNFbXB0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byBmZXRjaEJ1ZmZlciA9IFsmXShzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gaWRlbnRpZmllcikgLT4gSW1hZ2VCdWZmZXIqIHsKKyAgICAgICAgcmV0dXJuIGlkZW50
aWZpZXIgPyBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoeyAqaWRlbnRp
ZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigp
IH0pIDogbnVsbHB0cjsKKyAgICB9OworCisgICAgYXV0byBmcm9udEJ1ZmZlciA9IGZldGNoQnVm
ZmVyKGJ1ZmZlclNldC5mcm9udCk7CisgICAgYXV0byBiYWNrQnVmZmVyID0gZmV0Y2hCdWZmZXIo
YnVmZmVyU2V0LmJhY2spOworICAgIGF1dG8gc2Vjb25kYXJ5QmFja0J1ZmZlciA9IGZldGNoQnVm
ZmVyKGJ1ZmZlclNldC5zZWNvbmRhcnlCYWNrKTsKKworICAgIGlmICghYmFja0J1ZmZlciB8fCBi
YWNrQnVmZmVyLT5pc0luVXNlKCkpIHsKKyAgICAgICAgc3RkOjpzd2FwKGJhY2tCdWZmZXIsIHNl
Y29uZGFyeUJhY2tCdWZmZXIpOworCisgICAgICAgIC8vIFdoZW4gcHVsbGluZyB0aGUgc2Vjb25k
YXJ5IGJhY2sgYnVmZmVyIG91dCBvZiBoaWJlcm5hdGlvbiAodG8gYmVjb21lCisgICAgICAgIC8v
IHRoZSBuZXcgZnJvbnQgYnVmZmVyKSwgaWYgaXQgaXMgc29tZWhvdyBzdGlsbCBpbiB1c2UgKGUu
Zy4gd2UgZ290CisgICAgICAgIC8vIHRocmVlIHN3YXBzIGFoZWFkIG9mIHRoZSByZW5kZXIgc2Vy
dmVyKSwganVzdCBnaXZlIHVwIGFuZCBkaXNjYXJkIGl0LgorICAgICAgICBpZiAoYmFja0J1ZmZl
ciAmJiBiYWNrQnVmZmVyLT5pc0luVXNlKCkpCisgICAgICAgICAgICBiYWNrQnVmZmVyID0gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBzdGQ6OnN3YXAoZnJvbnRCdWZmZXIsIGJhY2tCdWZmZXIpOwor
CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGZyb250QnVmZmVy
SGFuZGxlOworICAgIGJvb2wgZnJvbnRCdWZmZXJXYXNFbXB0eSA9IGZhbHNlOworICAgIGlmIChm
cm9udEJ1ZmZlcikgeworICAgICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBmcm9udEJ1ZmZlci0+
c2V0Tm9uVm9sYXRpbGUoKTsKKyAgICAgICAgZnJvbnRCdWZmZXJXYXNFbXB0eSA9IHByZXZpb3Vz
U3RhdGUgPT0gVm9sYXRpbGl0eVN0YXRlOjpFbXB0eTsKKyAgICAgICAgZnJvbnRCdWZmZXJIYW5k
bGUgPSBoYW5kbGVGcm9tQnVmZmVyKCpmcm9udEJ1ZmZlcik7CisgICAgfQorCisgICAgYXV0byBi
dWZmZXJJZGVudGlmZXIgPSBbXShJbWFnZUJ1ZmZlciogYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4geworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBidWZmZXItPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIH07CisKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IGJ1ZmZlcklkZW50aWZlcihmcm9udEJ1ZmZlciksIGJ1ZmZlcklkZW50aWZlcihiYWNr
QnVmZmVyKSwgYnVmZmVySWRlbnRpZmVyKHNlY29uZGFyeUJhY2tCdWZmZXIpIH0sIFdURk1vdmUo
ZnJvbnRCdWZmZXJIYW5kbGUpLCBmcm9udEJ1ZmZlcldhc0VtcHR5KTsKK30KKwogdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRh
dGVJRCByZW5kZXJpbmdVcGRhdGVJRCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKHJlbmRlcmluZ1Vw
ZGF0ZUlEKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAppbmRleCBhYTY2MDRmMzgyNDkwZjExYzcyMzk5OTcxMzc0ZDQzNDg5ZmJjZGJkLi4xMzE1YzBh
Y2IwZDg0YmU1NDRhMmYyNmQwOWE0NTIxYWFiODBmZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
QEAgLTY3LDYgKzY3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOworc3RydWN0
IEJ1ZmZlcklkZW50aWZpZXJTZXQ7CiBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewpA
QCAtMTE4LDYgKzExOSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZpbmFs
aXplUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZUlEKTsKIAorICAgIHZvaWQgbWFya1N1
cmZhY2VOb25Wb2xhdGlsZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGU+LCBib29sIGJ1ZmZlcldhc0VtcHR5KT4mJik7CisgICAgdm9pZCBzd2FwVG9WYWxpZEZyb250
QnVmZmVyKGNvbnN0IEJ1ZmZlcklkZW50aWZpZXJTZXQmIGJ1ZmZlclNldCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBCdWZmZXJJZGVudGlmaWVyU2V0JiBzd2FwcGVkQnVmZmVyU2V0LCBz
dGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4mJiBmcm9udEJ1ZmZlckhhbmRs
ZSwgYm9vbCBmcm9udEJ1ZmZlcldhc0VtcHR5KT4mJik7CisKICAgICAvLyBSZWNlaXZlZCBtZXNz
YWdlcyB0cmFuc2xhdGVkIHRvIHVzZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIuCiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlm
aWVkSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggZmQ0MjA3MDAw
Njc1NGQwNjIzMzgxMDM2Y2E0ZjdhMjE4MTZlMTAwNC4uYWE3OWU2OGRjZGRkNzU1N2RkMGVmYTFj
YTRiOTNhMjczZmVlM2RiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4KQEAgLTM2LDYgKzM2LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQg
Tm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2Ug
Zm9udCkgTm90U3RyZWFtRW5jb2RhYmxlCiAgICAgRGVsZXRlQWxsRm9udHMoKQogICAgIFJlbGVh
c2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorCisgICAgTWFya1N1cmZhY2VOb25Wb2xhdGlsZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZT4gYmFja2VuZEhhbmRsZSwgYm9vbCBidWZmZXJXYXNFbXB0eSkgU3luY2hyb25vdXMgTm90U3Ry
ZWFtRW5jb2RhYmxlUmVwbHkKKyAgICBTd2FwVG9WYWxpZEZyb250QnVmZmVyKHN0cnVjdCBXZWJL
aXQ6OkJ1ZmZlcklkZW50aWZpZXJTZXQgYnVmZmVyU2V0KSAtPiAoc3RydWN0IFdlYktpdDo6QnVm
ZmVySWRlbnRpZmllclNldCBzd2FwcGVkQnVmZmVyU2V0LCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBmcm9udEJ1ZmZlckhhbmRsZSwgYm9vbCBmcm9udEJ1
ZmZlcldhc0VtcHR5KSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQorCiAgICAg
RmluYWxpemVSZW5kZXJpbmdVcGRhdGUoV2ViS2l0OjpSZW5kZXJpbmdVcGRhdGVJRCByZW5kZXJp
bmdVcGRhdGVJRCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwCmluZGV4IGZhM2JiM2VmZjA2YTdmMmQ0YTY2YWNiYzc2MzJjM2MzYTQyZDUyYWMuLjRl
MWExMDllOWZmODhlNDA2YTU3NTFhNWU5NTk1ZWJiN2FlOWVkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZChjb25zdCBQYXJhbWV0ZXIKIHsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSgpIGNvbnN0CitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgYXV0byBkYXRh
ID0gYWRvcHRDRihXS0NHQ29tbWFuZHNDb250ZXh0Q29weUVuY29kZWREYXRhKG1fY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICBBU1NFUlQoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCBkZmMzODhhNTBlMjYxNWY2ZDI4MzFkOWQy
ODRiYjk2NTY3ZjRkMGIyLi4wMjJmZTcyM2I4NTIwMDljYzFmNmY2MmZiMjM1MGY0M2Q3NTFmZjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTI3LDEz
ICsyNywxMyBAQAogCiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQogCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1jbGFzcyBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kIHsKK2NsYXNzIENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDR0JhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQpOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQpOwogcHVibGljOgpAQCAtNDIsMTAgKzQyLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD4gY3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgV2Vi
Q29yZTo6SG9zdFdpbmRvdyopOwogCi0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwotCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBi
YWNrZW5kU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBj
cmVhdGVCYWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBOT1RFOiBUaGVzZSBh
bGwgQVNTRVJUX05PVF9SRUFDSEVEKCkuCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdl
PiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNv
cHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFsOwpAQCAtNTcsNiArNTYsOSBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IGZpbmFsOwogCisgICAgLy8gSW1h
Z2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcqIHRv
QmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CisKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDNiYTM0MWM2OGY2YjQzM2VjYjE1ZTZkMDI1MzgyNDdl
ZTkxMTg2YzguLjg1YmU1MjFjMzEzNWIwZGY3N2I1ZTY1OTk2YzY3OWQwNWM1MTI4MzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC00Niw2ICs0NiwxMiBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllclJlbW90ZTsKIGNsYXNzIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbjsKIAorZW51bSBjbGFzcyBTZXROb25Wb2xhdGlsZVJlc3VsdCA6
IHVpbnQ4X3QgeworICAgIE5vQnVmZmVyLAorICAgIEVtcHR5LAorICAgIFZhbGlkLAorfTsKKwog
Y2xhc3MgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTY1LDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAK
ICAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdodCYmIHN1cmZhY2VIYW5kbGUp
OworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYmFja2luZyBzdG9yZSBjaGFuZ2VkLgogICAg
IGJvb2wgZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KQEAgLTg5LDYgKzk2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1fY29udGVudHNCdWZmZXJIYW5kbGUgfHwgISFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
OwogICAgIH0KIAorICAgIC8vIEp1c3QgZm9yIFJlbW90ZUJhY2tpbmdTdG9yZUNvbGxlY3Rpb24u
CisgICAgdm9pZCBhcHBseVN3YXBwZWRCdWZmZXJzKFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4mJiBmcm9udCwgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGJhY2ssIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBzZWNvbmRhcnlCYWNrLCBib29sIGZyb250QnVmZmVyTmVl
ZHNEaXNwbGF5KTsKKyAgICB2b2lkIHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKTsKKwogICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hl
cj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKIAogICAgIGVudW0gY2xhc3MgQnVmZmVyVHlwZSB7
CkBAIC05Nyw2ICsxMDgsMTEgQEAgcHVibGljOgogICAgICAgICBTZWNvbmRhcnlCYWNrCiAgICAg
fTsKIAorICAgIHZvaWQgd2lsbE1ha2VCdWZmZXJWb2xhdGlsZShCdWZmZXJUeXBlKTsKKyAgICB2
b2lkIGRpZE1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKFNldE5vblZvbGF0aWxlUmVzdWx0KTsK
KworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShCdWZmZXJU
eXBlKSBjb25zdDsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBpdCB3YXMgYWJsZSB0byBmdWxm
aWxsIHRoZSByZXF1ZXN0LiBUaGlzIGNhbiBmYWlsIHdoZW4gdHJ5aW5nIHRvIG1hcmsgYW4gaW4t
dXNlIHN1cmZhY2UgYXMgdm9sYXRpbGUuCiAgICAgYm9vbCBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1
ZmZlclR5cGUsIGJvb2wgaXNWb2xhdGlsZSk7CiAKQEAgLTEwOCwxNyArMTI0LDYgQEAgcHJpdmF0
ZToKICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24qIGJhY2tpbmdTdG9yZUNv
bGxlY3Rpb24oKSBjb25zdDsKIAogICAgIHZvaWQgZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmKTsKLSAgICB2b2lkIHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKTsKLQotICAg
IGJvb2wgc3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpOwotCi0gICAgUGxhdGZvcm1DQUxheWVyUmVt
b3RlKiBtX2xheWVyOwotCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fc2l6ZTsKLSAgICBmbG9h
dCBtX3NjYWxlIHsgMS4wZiB9OwotICAgIGJvb2wgbV9pc09wYXF1ZSB7IGZhbHNlIH07Ci0KLSAg
ICBXZWJDb3JlOjpSZWdpb24gbV9kaXJ0eVJlZ2lvbjsKIAogICAgIHN0cnVjdCBCdWZmZXIgewog
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwpAQCAtMTM1
LDYgKzE0MCwyMSBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpc2NhcmQoKTsKICAgICB9Owog
CisgICAgYm9vbCBzZXRCdWZmZXJWb2xhdGlsZShCdWZmZXImKTsKKyAgICBTZXROb25Wb2xhdGls
ZVJlc3VsdCBzZXRCdWZmZXJOb25Wb2xhdGlsZShCdWZmZXImKTsKKworICAgIHZvaWQgc3dhcEJ1
ZmZlcnMoKTsKKworICAgIGJvb2wgc3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpIGNvbnN0OworCisg
ICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOworCisgICAgV2ViQ29yZTo6RmxvYXRT
aXplIG1fc2l6ZTsKKyAgICBmbG9hdCBtX3NjYWxlIHsgMS4wZiB9OworICAgIGJvb2wgbV9pc09w
YXF1ZSB7IGZhbHNlIH07CisKKyAgICBXZWJDb3JlOjpSZWdpb24gbV9kaXJ0eVJlZ2lvbjsKKwog
ICAgIC8vIFVzZWQgaW4gdGhlIFdlYkNvbnRlbnQgUHJvY2Vzcy4KICAgICBCdWZmZXIgbV9mcm9u
dEJ1ZmZlcjsKICAgICBCdWZmZXIgbV9iYWNrQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tCmluZGV4IGQ3MWRlYjM1YjE5Mzc4NjgwNWU4NDY1Y2JiNTQwNGI3YjU3YzI1YzQuLjM0
Y2I3ZDMxNmE0MGUwMGE4NTZkZjMwODQzNWMwZTlmNjA0M2Y0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2ltcG9ydCAiQXJndW1lbnRDb2Rl
cnMuaCIKICNpbXBvcnQgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKLSNpbXBv
cnQgIk1hY2hQb3J0LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCIKICNpbXBv
cnQgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgiCkBAIC00MiwxMCArNDEsOCBAQAogI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvTW9k
ZWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkxheWVyLmg+Ci0jaW1wb3J0IDxtYWNoL21hY2hfcG9ydC5oPgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVHlw
ZUNhc3RzQ29jb2EuaD4KIApAQCAtMTE2LDQyICsxMTMsMzkgQEAgdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6Y2xlYXJCYWNraW5nU3RvcmUoKQogCiB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogeworICAgIGF1dG8g
aGFuZGxlRnJvbUJ1ZmZlciA9IFtdKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpIC0+IHN0
ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiB7CisgICAgICAgIGF1dG8qIGJh
Y2tlbmQgPSBidWZmZXIuZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICAgICAgaWYgKCFiYWNr
ZW5kKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvKiBz
aGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgICAgICBpZiAoaXM8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmNy
ZWF0ZUJhY2tlbmRIYW5kbGUoKTsKKworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH07CisKICAgICBlbmNvZGVyIDw8IG1fdHlwZTsKICAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKICAg
ICBlbmNvZGVyIDw8IG1fc2NhbGU7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogICAgIGVu
Y29kZXIgPDwgbV9pbmNsdWRlRGlzcGxheUxpc3Q7CisKICAgICAvLyBGSVhNRTogRm9yIHNpbXBs
aWNpdHkgdGhpcyBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIGVuZCBvZiBkaXNwbGF5KCkgb25jZSB0
aGUgYnVmZmVyIGhhbmRsZXMgY2FuIGJlIGNyZWF0ZWQgb25jZQogICAgIC8vIGFuZCBzdG9yZWQg
aW4gbV9idWZmZXJIYW5kbGUuIGh0dHA6Ly93ZWJraXQub3JnL2IvMjM0MTY5CiAgICAgc3RkOjpv
cHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKICAgICBpZiAobV9jb250
ZW50c0J1ZmZlckhhbmRsZSkgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OklPU3Vy
ZmFjZSk7CiAgICAgICAgIGhhbmRsZSA9IG1fY29udGVudHNCdWZmZXJIYW5kbGU7Ci0gICAgfSBl
bHNlIGlmIChtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHN3aXRjaCAobV90
eXBlKSB7Ci0gICAgICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgotICAgICAgICAgICAgaWYgKGF1
dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3Jl
YXRlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIt
PmNhbk1hcEJhY2tpbmdTdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBzdGF0
aWNfY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZCY+KCpi
YWNrZW5kKS5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJh
dGVkSW1hZ2VCdWZmZXJSZW1vdGVCYWNrZW5kJj4oKmJhY2tlbmQpLmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQotICAgICAg
ICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJhY2tlbmQmPigqYmFja2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB9IGVsc2UgaWYg
KG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpCisgICAgICAgIGhhbmRsZSA9IGhhbmRsZUZyb21C
dWZmZXIoKm1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpOwogCiAgICAgZW5jb2RlciA8PCBoYW5k
bGU7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAg
ICAgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGRpc3BsYXlMaXN0SGFu
ZGxlOwotICAgIGlmIChtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VC
dWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICBkaXNwbGF5TGlzdEhh
bmRsZSA9IHN0YXRpY19jYXN0PENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQmPigqYmFj
a2VuZCkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7Ci0gICAgfQorICAgIGlmICht
X2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXIpCisgICAgICAgIGRpc3BsYXlMaXN0
SGFuZGxlID0gaGFuZGxlRnJvbUJ1ZmZlcigqbV9mcm9udEJ1ZmZlci5kaXNwbGF5TGlzdEltYWdl
QnVmZmVyKTsKIAogICAgIGVuY29kZXIgPDwgZGlzcGxheUxpc3RIYW5kbGU7CiAjZW5kaWYKQEAg
LTIxOCw2ICsyMTIsOCBAQCB1bnNpZ25lZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Ynl0ZXNQ
ZXJQaXhlbCgpIGNvbnN0CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1Zh
bGlkRnJvbnRCdWZmZXIoKQogeworICAgIEFTU0VSVCghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRP
TSkpOworCiAgICAgLy8gU29tZXRpbWVzLCB3ZSBjYW4gZ2V0IHR3byBzd2FwcyBhaGVhZCBvZiB0
aGUgcmVuZGVyIHNlcnZlci4KICAgICAvLyBJZiB3ZSdyZSB1c2luZyBzaGFyZWQgSU9TdXJmYWNl
cywgd2UgbXVzdCB3YWl0IHRvIG1vZGlmeQogICAgIC8vIGEgc3VyZmFjZSB1bnRpbCBpdCBubyBs
b25nZXIgaGFzIG91dHN0YW5kaW5nIGNsaWVudHMuCkBAIC0yMzUsMTQgKzIzMSwzOCBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKIAogICAg
IG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1f
ZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CisgICAgYXV0byByZXN1bHQgPSBzZXRCdWZmZXJO
b25Wb2xhdGlsZShtX2Zyb250QnVmZmVyKTsKKyAgICBkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xh
dGlsZShyZXN1bHQpOworfQorCisvLyBDYWxsZWQgYWZ0ZXIgYnVmZmVyIHN3YXBwaW5nIGluIHRo
ZSBHUFUgcHJvY2Vzcy4KK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dhcHBl
ZEJ1ZmZlcnMoUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGZyb250LCBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+JiYgYmFjaywgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYm
IHNlY29uZGFyeUJhY2ssIGJvb2wgZnJvbnRCdWZmZXJOZWVkc0Rpc3BsYXkpCit7CisgICAgQVNT
RVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihX
ZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00pKTsKKworICAgIG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIgPSBXVEZNb3ZlKGZyb250KTsKKyAgICBtX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBXVEZNb3ZlKGJhY2spOworICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5pbWFnZUJ1ZmZlciA9
IFdURk1vdmUoc2Vjb25kYXJ5QmFjayk7CisKKyAgICBtX2Zyb250QnVmZmVyLmlzVm9sYXRpbGUg
PSBmYWxzZTsKKworICAgIGlmIChmcm9udEJ1ZmZlck5lZWRzRGlzcGxheSkKKyAgICAgICAgc2V0
TmVlZHNEaXNwbGF5KCk7Cit9CiAKLSAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikg
ewotICAgICAgICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7
Cit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwQnVmZmVycygpCit7CisgICAgbV9j
b250ZW50c0J1ZmZlckhhbmRsZSA9IHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8qIGNvbGxlY3Rp
b24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCk7CisgICAgaWYgKCFjb2xsZWN0aW9uKQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNraW5n
U3RvcmVDb2xsZWN0aW9uKCkpCi0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBj
b2xsZWN0aW9uLT5hbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZSgqdGhpcyk7CisgICAgY29s
bGVjdGlvbi0+c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigqdGhpcyk7CisgICAgaWYgKG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIgPSBjb2xsZWN0aW9uLT5hbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZSgq
dGhpcyk7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIp
CiAgICAgaWYgKG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6WWVz
KQpAQCAtMjUwLDcgKzI3MCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBU
b1ZhbGlkRnJvbnRCdWZmZXIoKQogI2VuZGlmCiB9CiAKLWJvb2wgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQorYm9vbCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEZp
bmQgYSB3YXkgdG8gc3VwcG9ydCBwYXJ0aWFsIHJlcGFpbnQgZm9yIGJhY2tpbmcgc3RvcmUgdGhh
dAogICAgIC8vIGluY2x1ZGVzIGEgZGlzcGxheSBsaXN0IHdpdGhvdXQgYWxsb3dpbmcgdW5ib3Vu
ZGVkIG1lbW9yeSBncm93dGguCkBAIC0yNzAsOSArMjkwLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiAgICAgbV9sYXN0RGlzcGxheVRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKIAotICAgIGJvb2wgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gZmFs
c2U7Ci0gICAgaWYgKGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCkp
Ci0gICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbGxlY3Rpb24tPmJhY2tpbmdT
dG9yZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7CisgICAgYXV0byogY29sbGVjdGlvbiA9IGJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24oKTsKKyAgICBpZiAoIWNvbGxlY3Rpb24pIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBi
b29sIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbGxlY3Rpb24tPmJhY2tpbmdTdG9yZVdp
bGxCZURpc3BsYXllZCgqdGhpcyk7CiAKICAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZv
cm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgewogICAgICAgICBtX2xheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7CkBAIC0yODEsNyAr
MzA1LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgfQog
CiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJs
eSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhlIHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sg
ZW1wdHkuCi0gICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2Up
OworICAgIGNvbGxlY3Rpb24tPm1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKCp0aGlzKTsKIAog
ICAgIGlmIChtX2RpcnR5UmVnaW9uLmlzRW1wdHkoKSB8fCBtX3NpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlOwpAQCAtMjk1LDExICszMTksMTAg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZGly
dHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CiAgICAgfQogCi0gICAgc3dhcFRvVmFsaWRG
cm9udEJ1ZmZlcigpOworICAgIHN3YXBCdWZmZXJzKCk7CiAgICAgaWYgKCFtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotCiAgICAgaWYgKG1faW5jbHVk
ZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6WWVzKSB7CiAjaWYgRU5BQkxFKENH
X0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgICAgICBhdXRvJiBkaXNwbGF5
TGlzdENvbnRleHQgPSBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNvbnRl
eHQoKTsKQEAgLTUwMCw2MiArNTIzLDEwMyBAQCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBSZW1vdGVMYXllckJhY2tpbgogICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRCdWZmZXJGbHVzaGVycywgeyB9KTsKIH0KIAot
Ym9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJU
eXBlIGJ1ZmZlclR5cGUsIGJvb2wgaXNWb2xhdGlsZSkKK2Jvb2wgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnNldEJ1ZmZlclZvbGF0aWxlKEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmIChtX3R5
cGUgIT0gVHlwZTo6SU9TdXJmYWNlKQorICAgIGlmICghYnVmZmVyLmltYWdlQnVmZmVyIHx8IGJ1
ZmZlci5pc1ZvbGF0aWxlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmIChidWZmZXIuaW1hZ2VC
dWZmZXItPnNldFZvbGF0aWxlKCkpIHsKKyAgICAgICAgYnVmZmVyLmlzVm9sYXRpbGUgPSB0cnVl
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0g
ICAgLy8gUmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgd2Ugc3VjY2VlZGVkIGluIG1ha2luZyB2b2xh
dGlsZS4KLSAgICBhdXRvIG1ha2VWb2xhdGlsZSA9IFtdIChCdWZmZXImIGJ1ZmZlcikgLT4gYm9v
bCB7Ci0gICAgICAgIGlmICghYnVmZmVyLmltYWdlQnVmZmVyIHx8IGJ1ZmZlci5pc1ZvbGF0aWxl
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CitTZXROb25Wb2xhdGlsZVJlc3VsdCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyTm9uVm9sYXRpbGUoQnVmZmVyJiBidWZmZXIpCit7
CisgICAgQVNTRVJUKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSk7CiAKLSAgICAgICAgYnVm
ZmVyLmltYWdlQnVmZmVyLT5yZWxlYXNlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKCFidWZm
ZXIuaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBTZXROb25Wb2xhdGlsZVJlc3VsdDo6Tm9C
dWZmZXI7CiAKLSAgICAgICAgaWYgKGJ1ZmZlci5pbWFnZUJ1ZmZlci0+c2V0Vm9sYXRpbGUoKSkg
ewotICAgICAgICAgICAgYnVmZmVyLmlzVm9sYXRpbGUgPSB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH07
CisgICAgaWYgKCFidWZmZXIuaXNWb2xhdGlsZSkKKyAgICAgICAgcmV0dXJuIFNldE5vblZvbGF0
aWxlUmVzdWx0OjpWYWxpZDsKKworICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9IGJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+c2V0Tm9uVm9sYXRpbGUoKTsKKyAgICBidWZmZXIuaXNWb2xhdGlsZSA9IGZhbHNl
OworICAgIHJldHVybiBwcmV2aW91c1N0YXRlID09IFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZTo6
RW1wdHkgPyBTZXROb25Wb2xhdGlsZVJlc3VsdDo6RW1wdHkgOiBTZXROb25Wb2xhdGlsZVJlc3Vs
dDo6VmFsaWQ7Cit9CiAKLSAgICAvLyBSZXR1cm4gdmFsdWUgaXMgdHJ1ZSBpZiB3ZSBuZWVkIHRv
IHJlcGFpbnQuCi0gICAgYXV0byBtYWtlTm9uVm9sYXRpbGUgPSBbXSAoQnVmZmVyJiBidWZmZXIp
IC0+IGJvb2wgewotICAgICAgICBpZiAoIWJ1ZmZlci5pbWFnZUJ1ZmZlciB8fCAhYnVmZmVyLmlz
Vm9sYXRpbGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cit2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjp3aWxsTWFrZUJ1ZmZlclZvbGF0aWxlKEJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkK
K3sKKyAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVu
ZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpOwogCi0gICAgICAgIGF1
dG8gcHJldmlvdXNTdGF0ZSA9IGJ1ZmZlci5pbWFnZUJ1ZmZlci0+c2V0Tm9uVm9sYXRpbGUoKTsK
LSAgICAgICAgYnVmZmVyLmlzVm9sYXRpbGUgPSBmYWxzZTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1
ZmZlckZvclR5cGUoYnVmZmVyVHlwZSk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVy
bjsKIAotICAgICAgICByZXR1cm4gcHJldmlvdXNTdGF0ZSA9PSBXZWJDb3JlOjpWb2xhdGlsaXR5
U3RhdGU6OkVtcHR5OwotICAgIH07CisgICAgYXV0byogYmFja2VuZCA9IGJ1ZmZlci0+ZW5zdXJl
QmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJhY2tlbmQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIENsZWFyaW5nIHRoZSBiYWNrZW5kIGhhbmRsZSBpbiB0aGUgd2ViY29udGVudCBwcm9j
ZXNzIGlzIG5lY2Vzc2FyeSB0byBoYXZlIHRoZSBzdXJmYWNlIGluLXVzZSBjb3VudCBkcm9wIHRv
IHplcm8uCisgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsK
KyAgICBpZiAoaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisg
ICAgICAgIGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5n
KS5jbGVhckJhY2tlbmRIYW5kbGUoKTsKK30KKwordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGlkTWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoU2V0Tm9uVm9sYXRpbGVSZXN1bHQgcmVz
dWx0KQoreworICAgIG1fZnJvbnRCdWZmZXIuaXNWb2xhdGlsZSA9IGZhbHNlOworICAgIGlmIChy
ZXN1bHQgPT0gU2V0Tm9uVm9sYXRpbGVSZXN1bHQ6OkVtcHR5KQorICAgICAgICBzZXROZWVkc0Rp
c3BsYXkoKTsKK30KKworYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9s
YXRpbGl0eShCdWZmZXJUeXBlIGJ1ZmZlclR5cGUsIGJvb2wgaXNWb2xhdGlsZSkKK3sKKyAgICBp
ZiAobV90eXBlICE9IFR5cGU6OklPU3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBzd2l0Y2ggKGJ1ZmZlclR5cGUpIHsKLSAgICBjYXNlIEJ1ZmZlclR5cGU6OkZyb250OgorICAg
IGNhc2UgQnVmZmVyVHlwZTo6RnJvbnQ6IHsKICAgICAgICAgaWYgKGlzVm9sYXRpbGUpCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZVZvbGF0aWxlKG1fZnJvbnRCdWZmZXIpOworICAgICAgICAgICAg
cmV0dXJuIHNldEJ1ZmZlclZvbGF0aWxlKG1fZnJvbnRCdWZmZXIpOwogICAgICAgICAKICAgICAg
ICAgLy8gQmVjb21pbmcgbm9uLXZvbGF0aWxlIGFuZCB0aGUgZnJvbnQgYnVmZmVyIHdhcyBwdXJn
ZWQsIHNvIHdlIG5lZWQgdG8gcmVwYWludC4KLSAgICAgICAgaWYgKG1ha2VOb25Wb2xhdGlsZSht
X2Zyb250QnVmZmVyKSkKLSAgICAgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IHNldEJ1ZmZlck5vblZvbGF0aWxlKG1fZnJvbnRCdWZmZXIpOworICAgICAg
ICBkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZShyZXN1bHQpOwogICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBCdWZmZXJUeXBlOjpCYWNrOgogICAgICAgICBpZiAoaXNWb2xhdGls
ZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVm9sYXRpbGUobV9iYWNrQnVmZmVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBzZXRCdWZmZXJWb2xhdGlsZShtX2JhY2tCdWZmZXIpOwogICAgIAotICAg
ICAgICBtYWtlTm9uVm9sYXRpbGUobV9iYWNrQnVmZmVyKTsKKyAgICAgICAgc2V0QnVmZmVyTm9u
Vm9sYXRpbGUobV9iYWNrQnVmZmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCdWZmZXJU
eXBlOjpTZWNvbmRhcnlCYWNrOgogICAgICAgICBpZiAoaXNWb2xhdGlsZSkKLSAgICAgICAgICAg
IHJldHVybiBtYWtlVm9sYXRpbGUobV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKKyAgICAgICAgICAg
IHJldHVybiBzZXRCdWZmZXJWb2xhdGlsZShtX3NlY29uZGFyeUJhY2tCdWZmZXIpOwogICAgIAot
ICAgICAgICBtYWtlTm9uVm9sYXRpbGUobV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKKyAgICAgICAg
c2V0QnVmZmVyTm9uVm9sYXRpbGUobV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpidWZmZXJGb3JUeXBlKEJ1ZmZlclR5cGUg
YnVmZmVyVHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGJ1ZmZlclR5cGUpIHsKKyAgICBjYXNl
IEJ1ZmZlclR5cGU6OkZyb250OgorICAgICAgICByZXR1cm4gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlcjsKKyAgICBjYXNlIEJ1ZmZlclR5cGU6OkJhY2s6CisgICAgICAgIHJldHVybiBtX2JhY2tC
dWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgY2FzZSBCdWZmZXJUeXBlOjpTZWNvbmRhcnlCYWNrOgor
ICAgICAgICByZXR1cm4gbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmltYWdlQnVmZmVyOworICAgIH0K
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
QnVmZmVyOjpkaXNjYXJkKCkKIHsKICAgICBpc1ZvbGF0aWxlID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKaW5kZXggNTdmOWU1YTIyNDMzN2Zi
ZTM2ZGVhYTQ2ZDUwNzc1NWFjYTFhMmM5NC4uMGFmYWU0Mzk5MWE5ZTk1ZTAyZTgyMGQzZTQ3MDNl
ZDIzYWNlMmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rp
b24uaApAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHZhbHVlIGluZGlj
YXRlcyB3aGV0aGVyIHRoZSBiYWNraW5nIHN0b3JlIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGluIHRo
ZSB0cmFuc2FjdGlvbi4KICAgICBib29sIGJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZChSZW1v
dGVMYXllckJhY2tpbmdTdG9yZSYpOwogICAgIHZvaWQgYmFja2luZ1N0b3JlQmVjYW1lVW5yZWFj
aGFibGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihSZW1vdGVMYXllckJhY2tpbmdT
dG9yZSYpOwogCiAgICAgdm9pZCB3aWxsRmx1c2hMYXllcnMoKTsKICAgICB2b2lkIHdpbGxDb21t
aXRMYXllclRyZWUoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCmluZGV4IDg5MmNhMTQ5ODlmYzJiNTA4
MzAxM2Y2Y2JhODA1MGEzNzA4Mzk3MjQuLmU1ZTE4YTY0OTcxYWU2M2FjOWUyMDBlY2ZhODFkYjhj
NDY1MDQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlv
bi5tbQpAQCAtMTA0LDYgKzEwNCwxNiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbjo6YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKFJlbW90ZUxheWVyQgogICAgIHJl
dHVybiB0cnVlOwogfQogCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6
bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tp
bmdTdG9yZSkKK3sKKyAgICBiYWNraW5nU3RvcmUuc2V0QnVmZmVyVm9sYXRpbGl0eShSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6QnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKK30KKwordm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIo
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSkKK3sKKyAgICBiYWNraW5nU3Rv
cmUuc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlQ29sbGVjdGlvbjo6bWFya0JhY2tpbmdTdG9yZVZvbGF0aWxlKFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIE9wdGlvblNldDxWb2xhdGlsaXR5TWFya2luZ0JlaGF2
aW9yPiBtYXJraW5nQmVoYXZpb3IsIE1vbm90b25pY1RpbWUgbm93KQogewogICAgIEFTU0VSVCgh
bV9pbkxheWVyRmx1c2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
cldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKaW5kZXggNjEwMDU2
ODM2YzM0ZmRlNzY5MDRiNGU3ZWQ3YjViMjcwNDU1M2ExOC4uMjkyOWY5NzE2Mjk5N2E3MjhjOGJm
MDNmY2EwN2ZjZDdlOGU5ZjkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNv
bGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oCkBAIC00
Miw2ICs0Miw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBh
bGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZShjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZSYpIGZpbmFsOwogICAgIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CisKKyAgICB2b2lkIG1ha2VGcm9udEJ1ZmZlck5vblZv
bGF0aWxlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJikgZmluYWw7CisgICAgdm9pZCBzd2FwVG9W
YWxpZEZyb250QnVmZmVyKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJikgZmluYWw7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVD
b2xsZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KaW5kZXgg
YjcxODM5Mzc1OTgxMWEzNjk3OWRiMjg5OGIzNTYxZWI1N2EzODA2Yy4uNDUwNmYxOTJiNWVmNmMy
YTQzYTMxODZlMjYxNzExZjg2OTc1NDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdT
dG9yZUNvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24u
bW0KQEAgLTQxLDYgKzQxLDMwIEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgUmVtb3Rl
TGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvCiAgICAgcmV0dXJu
IGxheWVyVHJlZUNvbnRleHQoKS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsK
IH0KIAordm9pZCBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uOjptYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZShSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZSYgYmFja2luZ1N0b3JlKQoreworICAgIGF1dG8mIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgPSBs
YXllclRyZWVDb250ZXh0KCkuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7Cisg
ICAgYXV0byBmcm9udEJ1ZmZlciA9IGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpGcm9udCk7CisgICAgaWYgKCFmcm9udEJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXN1bHQgPSByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1hcmtTdXJmYWNlTm9uVm9sYXRpbGUoZnJvbnRCdWZmZXItPnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpKTsKKyAgICBiYWNraW5nU3RvcmUuZGlkTWFrZUZyb250QnVmZmVyTm9u
Vm9sYXRpbGUocmVzdWx0KTsKK30KKwordm9pZCBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJp
bmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCit7CisgICAgYXV0byYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZCA9IGxheWVyVHJlZUNvbnRleHQoKS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKTsKKworICAgIGF1dG8gaWRlbnRpZmllcnMgPSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OkJ1ZmZlclNldCB7CisgICAgICAgIGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBl
KFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpGcm9udCksCisgICAgICAgIGJh
Y2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJU
eXBlOjpCYWNrKSwKKyAgICAgICAgYmFja2luZ1N0b3JlLmJ1ZmZlckZvclR5cGUoUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlclR5cGU6OlNlY29uZGFyeUJhY2spCisgICAgfTsKKyAgICBh
dXRvIHN3YXBSZXN1bHQgPSByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIoV1RGTW92ZShpZGVudGlmaWVycykpOworICAgIGJhY2tpbmdTdG9yZS5hcHBseVN3YXBw
ZWRCdWZmZXJzKFdURk1vdmUoc3dhcFJlc3VsdC5idWZmZXJzLmZyb250KSwgV1RGTW92ZShzd2Fw
UmVzdWx0LmJ1ZmZlcnMuYmFjayksIFdURk1vdmUoc3dhcFJlc3VsdC5idWZmZXJzLnNlY29uZGFy
eUJhY2spLCBzd2FwUmVzdWx0LmZyb250QnVmZmVyV2FzRW1wdHkpOworfQorCiBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+IFJlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdT
dG9yZUNvbGxlY3Rpb246OmFsbG9jYXRlQnVmZmVyRm9yQmFja2luZ1N0b3JlKGNvbnN0IFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCiB7CiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gYmFja2luZ1N0b3JlLnR5cGUoKSA9PSBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlw
ZTo6SU9TdXJmYWNlID8gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTU3YWEwNmY4ZmJlNjgzNjYyZDQ0
OWVkYjFhY2E1M2ZiODU2NzA0ZS4uZDc0ZTk5MmI3NGY2ZTEyZTIzYTEwMzhjMDFjMjg3OTFhY2M1
OWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yNjAzLDEyICsyNjAzLDE0IEBACiAJCTBGODAyNjQ3MjdBQjRBRUYwMEVDNkVENyAv
KiBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NTBGRTQxRUQ3
QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg1MEZFNTFFRDdDMzlGMDBGQjc3
QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjg2MzYxQjI3QkRDMkI2MDA2RTZENTIgLyogQnVmZmVySWRlbnRp
ZmllclNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWZmZXJJZGVudGlmaWVyU2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUExOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFCMThDNTcxMTkwMERC
QjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RkE3REEy
NkNFRkFEMTAwODcyNjg0IC8qIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUZB
N0RCMjZDRUZBREEwMDg3MjY4NCAvKiBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0UHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVz
dFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZBNzQ2N0UyN0JCNjEx
ODAwQjVGRjVBIC8qIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkJCNUZCRjI2MDlBMDkxMDA1NDU3MkMgLyog
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkJCNUZDMDI2MDlB
MDkxMDA1NDU3MkMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05NzgzLDggKzk3ODUsMTAgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3
RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKIAkJCQkxQ0I3NDYxOTI3NDM2REUzMDBG
MTk4NzQgLyogV2ViR1BVICovLAorCQkJCTBGODYzNjFCMjdCREMyQjYwMDZFNkQ1MiAvKiBCdWZm
ZXJJZGVudGlmaWVyU2V0LmggKi8sCiAJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDRE
MjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKKwkJCQkwRkE3NDY3RTI3QkI2
MTE4MDBCNUZGNUEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oICovLAogCQkJ
CTcyN0E3RjM3MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwICovLAogCQkJCTcyN0E3RjM2MjQwNzg4RjAwMDREMjkzMSAvKiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCAqLywKIAkJCQk3MjdBN0YzODI0MDc4OEYwMDA0RDI5
MzEgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQuaCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvQnVmZmVySWRlbnRpZmll
clNldC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9CdWZmZXJJZGVu
dGlmaWVyU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUyZjEyNDhjZTllMWE3OTkzZmYxYjAxODM1Mjk3MGVj
NDkzNGM5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvQnVmZmVySWRlbnRpZmllclNldC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdHJ1Y3QgQnVmZmVySWRlbnRpZmllclNldCB7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGZyb250OworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBiYWNrOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzZWNvbmRh
cnlCYWNrOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEJ1ZmZlcklkZW50aWZpZXJTZXQ+IGRlY29kZShEZWNvZGVyJik7Cit9OworCisKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEJ1ZmZlcklkZW50aWZpZXJTZXQ6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgZnJvbnQ7CisgICAgZW5jb2Rl
ciA8PCBiYWNrOworICAgIGVuY29kZXIgPDwgc2Vjb25kYXJ5QmFjazsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8QnVmZmVySWRlbnRpZmllclNldD4gQnVmZmVy
SWRlbnRpZmllclNldDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRp
b25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+
IGZyb250SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGZyb250SWRlbnRpZmllcjsKKyAgICBp
ZiAoIWZyb250SWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+PiBiYWNrSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGJhY2tJZGVudGlmaWVy
OworICAgIGlmICghYmFja0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPj4gc2Vjb25kYXJ5QmFja0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+
PiBzZWNvbmRhcnlCYWNrSWRlbnRpZmllcjsKKyAgICBpZiAoIXNlY29uZGFyeUJhY2tJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIEJ1ZmZlcklk
ZW50aWZpZXJTZXQgeyAqZnJvbnRJZGVudGlmaWVyLCAqYmFja0lkZW50aWZpZXIsICpzZWNvbmRh
cnlCYWNrSWRlbnRpZmllciB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU3YWYxOTI0MzQ1YTU2NjNhZjU3MGY0NDMzZjJlZWI2
NzhkZWM1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCkBAIC0wLDAgKzEsNTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KworI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVm
ZmVyQmFja2VuZFNoYXJpbmcgeworcHVibGljOgorICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2VuZEhhbmRsZSgpIHsgfQorCitwcml2YXRlOgorICAg
IGJvb2wgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNkZWZpbmUgU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFRvVmFsdWVU
eXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFRvVmFs
dWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmRTaGFyaW5nJiBiYWNrZW5kU2hhcmluZykgeyByZXR1cm4gYmFja2VuZFNo
YXJpbmcucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19JTUFHRV9CVUZGRVJfQkFDS0VORF9TSEFSSU5HKFdlYktpdDo6
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZywgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggMjdlY2I2YjFl
Zjg1ZWFjNjNjODMxMzI1YzA1MTRiNTQxNWZkNmEyYy4uZTFlZjQ3NzE0OTYxYzkzMDk4MTFmZDNj
ZTRkOTAxYTI0ZmNhOTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBh
cmFtCiAgICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2Fs
ZSgpKTsKIH0KIAotSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKK0lt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdAogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZTsKICAgICBtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAppbmRleCA0YzcwMjg1ZDMw
ODRlMTgyMjM5ZDdhMjE0YjM3OTY3NTQ2MjdhZGNmLi5kOGFmNGE5ODQ5MzliMjljNTBhYzk2MmY4
MzgzMDU3ZDdkMmEzODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAotI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
SW1hZ2VCdWZmZXJCYWNrZW5kLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7
CiAKLWNsYXNzIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZCB7CitjbGFzcyBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5n
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kKTsKIHB1YmxpYzoKQEAgLTUzLDExICs1MywxMCBAQCBwdWJsaWM6CiAKICAg
ICBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+JiYpOwogCi0gICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSgpIGNvbnN0OwotCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gKm1fY29udGV4dDsgfQogICAgIAog
ICAgIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZp
bmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tp
bmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2
ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBmaW5h
bDsKQEAgLTY5LDYgKzY4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBieXRl
c1BlclJvdygpIGNvbnN0IGZpbmFsOwogCisgICAgSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZyog
dG9CYWNrZW5kU2hhcmluZygpIGZpbmFsIHsgcmV0dXJuIHRoaXM7IH0KKwogICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CmluZGV4IGNiOTVjODdlZWI2NTdlMGZmYmQ4YTdkYmNiMWEzY2MzNTA2NTdjNWUuLjFlOTQ3YTZm
ZGQ5YjA1NjMxZDBhNGFjMjFjMzNkZDMwMDZhZDQyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC03MywxMyArNzMsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1hZ2VC
dWZmZXIobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQotICAg
IHsKLSAgICAgICAgaWYgKGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCi0gICAgICAgICAgICByZXR1
cm4gbV9iYWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKLSAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICB9Ci0KICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRGbHVzaElk
ZW50aWZpZXIgbGFzdFNlbnRGbHVzaElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlbnRG
bHVzaElkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgd2FpdEZvckRpZEZsdXNoT25TZWNvbmRhcnlU
aHJlYWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyIHRhcmdldEZsdXNo
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRl
eCBjNDUzYjVlODFjYzhhZjdlYjY0YjgwYTc3Mjg0N2EyODhlMzA3OGM1Li5iMTcyMzMwYjc2OGYw
ZjE3YTc1OWE3ZWVlYmM4MDg5YTQ3YTdkMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCkBAIC0yOCw5ICsyOCwxMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCisjaW5jbHVkZSAiQnVmZmVySWRlbnRpZmllclNldC5oIgogI2luY2x1ZGUgIkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCIgLy8gRm9yIFNldFZvbGF0aWxlUmVzdWx0LgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CkBAIC0xNDUsNyArMTQ3LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2kKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFBpeGVs
QnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVyLCBjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRp
b25Gb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFNwYW48dWludDhfdD4g
cmVzdWx0KQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFBpeGVsQnVmZmVy
Rm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIFNwYW48dWludDhfdD4gcmVzdWx0KQogewogICAgIGlmIChhdXRvIGhhbmRsZSA9
IHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKHJlc3VsdC5zaXplKCkpKSB7CiAg
ICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoKmhhbmRs
ZSksIG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSB9OwpAQCAtMTY0LDcgKzE2
Niw3IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRQaXhlbEJ1ZmZlckZv
ckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwdXRQaXhlbEJ1ZmZlckZvckltYWdlQnVm
ZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgY29u
c3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6cHV0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIsIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZl
ciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQogewogICAgIHNlbmRUb1N0cmVhbShNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UHV0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlciwgcGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1h
dCkpOwogfQpAQCAtMjY0LDYgKzI2Niw3NiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZgogICAg
IHNlbmRUb1N0cmVhbShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpOwogfQogCithdXRvIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihjb25zdCBC
dWZmZXJTZXQmIGJ1ZmZlcnMpIC0+IFN3YXBCdWZmZXJzUmVzdWx0Cit7CisgICAgYXV0byBidWZm
ZXJJZGVudGlmaWVyID0gW10oSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gYnVmZmVyLT5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICB9OworCisgICAgYXV0byBidWZmZXJTZXQg
PSBCdWZmZXJJZGVudGlmaWVyU2V0IHsKKyAgICAgICAgYnVmZmVySWRlbnRpZmllcihidWZmZXJz
LmZyb250LmdldCgpKSwKKyAgICAgICAgYnVmZmVySWRlbnRpZmllcihidWZmZXJzLmJhY2suZ2V0
KCkpLAorICAgICAgICBidWZmZXJJZGVudGlmaWVyKGJ1ZmZlcnMuc2Vjb25kYXJ5QmFjay5nZXQo
KSkKKyAgICB9OworICAgIAorICAgIEJ1ZmZlcklkZW50aWZpZXJTZXQgc3dhcHBlZEJ1ZmZlclNl
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZnJvbnRCdWZm
ZXJIYW5kbGU7CisgICAgYm9vbCBmcm9udEJ1ZmZlcldhc0VtcHR5ID0gZmFsc2U7CisgICAgCisg
ICAgc2VuZFN5bmNUb1N0cmVhbShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6U3dh
cFRvVmFsaWRGcm9udEJ1ZmZlcihidWZmZXJTZXQpLAorICAgICAgICBNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6U3dhcFRvVmFsaWRGcm9udEJ1ZmZlcjo6UmVwbHkoc3dhcHBlZEJ1
ZmZlclNldCwgZnJvbnRCdWZmZXJIYW5kbGUsIGZyb250QnVmZmVyV2FzRW1wdHkpKTsKKworICAg
IGF1dG8gZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllciA9IFsmXShzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGU+JiYgaGFuZGxlID0gc3RkOjpudWxsb3B0KSAtPiBSZWZQdHI8SW1h
Z2VCdWZmZXI+IHsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgYXV0byogYnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIoKmlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgCisgICAgICAgIGlm
IChoYW5kbGUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gYnVmZmVyLT5lbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byogc2hhcmluZyA9IGJh
Y2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgICAgICAgICAgICAg
IGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5zZXRC
YWNrZW5kSGFuZGxlKFdURk1vdmUoKmhhbmRsZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICB9OworCisgICAgcmV0dXJuIHsKKyAgICAg
ICAgeworICAgICAgICAgICAgZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllcihzd2FwcGVkQnVmZmVy
U2V0LmZyb250LCBXVEZNb3ZlKGZyb250QnVmZmVySGFuZGxlKSksCisgICAgICAgICAgICBmZXRj
aEJ1ZmZlcldpdGhJZGVudGlmaWVyKHN3YXBwZWRCdWZmZXJTZXQuYmFjayksCisgICAgICAgICAg
ICBmZXRjaEJ1ZmZlcldpdGhJZGVudGlmaWVyKHN3YXBwZWRCdWZmZXJTZXQuc2Vjb25kYXJ5QmFj
aykKKyAgICAgICAgfSwKKyAgICAgICAgZnJvbnRCdWZmZXJXYXNFbXB0eQorICAgIH07Cit9CisK
K1NldE5vblZvbGF0aWxlUmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWFya1N1
cmZhY2VOb25Wb2xhdGlsZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICBib29sIGJ1ZmZlcldhc0VtcHR5OworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlPiBiYWNrZW5kSGFuZGxlOworICAgIHNlbmRTeW5jVG9TdHJlYW0oTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ok1hcmtTdXJmYWNlTm9uVm9sYXRpbGUoaWRl
bnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpNYXJrU3VyZmFjZU5v
blZvbGF0aWxlOjpSZXBseShiYWNrZW5kSGFuZGxlLCBidWZmZXJXYXNFbXB0eSkpOworCisgICAg
QUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIlNNRlIgV2ViIFByb2Nlc3M6IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZSAiIDw8IGlkZW50
aWZpZXIgPDwgIiB3YXMgZW1wdHkgIiA8PCBidWZmZXJXYXNFbXB0eSk7CisKKyAgICBhdXRvIGJ1
ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKGlkZW50
aWZpZXIpOworICAgIGlmIChiYWNrZW5kSGFuZGxlICYmIGJ1ZmZlcikgeworICAgICAgICBpZiAo
YXV0byogYmFja2VuZCA9IGJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAg
ICAgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICAg
ICAgICAgIGlmIChpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkK
KyAgICAgICAgICAgICAgICBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5n
Pigqc2hhcmluZykuc2V0QmFja2VuZEhhbmRsZShXVEZNb3ZlKCpiYWNrZW5kSGFuZGxlKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyV2FzRW1wdHkgPyBTZXROb25Wb2xh
dGlsZVJlc3VsdDo6RW1wdHkgOiBTZXROb25Wb2xhdGlsZVJlc3VsdDo6VmFsaWQ7Cit9CisKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgp
CiB7CiAgICAgc2VuZFRvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpG
aW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShtX3JlbmRlcmluZ1VwZGF0ZUlEKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBiYTI0YzdhZTMwMzgwYTBiYWZiYTYxM2Jk
MzNiOGQ4Y2MwZTAyYThlLi5iMzFjOTdmZDcxZTc3ZjhmYmVmYTQ0MTA2Zjc5M2YzZDc0ZmIyYmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTYxLDYgKzYxLDcg
QEAgZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJQYWdlOworZW51bSBjbGFzcyBTZXROb25Wb2xhdGlsZVJlc3VsdCA6IHVpbnQ4
X3Q7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogICAgIDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtOTQsNiArOTUsMjAgQEAgcHVibGljOgogICAgIHZvaWQg
ZGVsZXRlQWxsRm9udHMoKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgU2V0Tm9uVm9sYXRpbGVSZXN1
bHQgbWFya1N1cmZhY2VOb25Wb2xhdGlsZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworCisgICAgc3RydWN0IEJ1ZmZlclNldCB7CisgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gZnJvbnQ7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4gYmFjazsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBzZWNvbmRhcnlC
YWNrOworICAgIH07CisgICAgCisgICAgc3RydWN0IFN3YXBCdWZmZXJzUmVzdWx0IHsKKyAgICAg
ICAgQnVmZmVyU2V0IGJ1ZmZlcnM7CisgICAgICAgIGJvb2wgZnJvbnRCdWZmZXJXYXNFbXB0eSB7
IGZhbHNlIH07CisgICAgfTsKKyAgICBTd2FwQnVmZmVyc1Jlc3VsdCBzd2FwVG9WYWxpZEZyb250
QnVmZmVyKGNvbnN0IEJ1ZmZlclNldCYpOworCiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZSgpOwogICAgIFJlbmRlcmluZ1VwZGF0ZUlEIHJlbmRlcmluZ1VwZGF0ZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJpbmdVcGRhdGVJRDsgfQogICAgIHVuc2lnbmVkIGRlbGF5ZWRSZW5k
ZXJpbmdVcGRhdGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nVXBkYXRlSUQgLSBt
X2RpZFJlbmRlcmluZ1VwZGF0ZUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggMmZlOWU0YjAxNzAyMjZjNWY4
MDIwMjNhMmEwZGFlYTU0OTY1MWFhYS4uODNhMTYyNWI2OWZmYmJhZGMxYjA2YzhmMzY4OTY0ZWM3
MGExZTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjQsMTEgKzY0LDIxIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFjCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VC
YWNrZW5kPihwYXJhbWV0ZXJzLCBXVEZNb3ZlKGhhbmRsZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIElt
YWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6Z2V0PE1hY2hTZW5kUmlnaHQ+KG1faGFuZGxlKS5jb3B5
U2VuZFJpZ2h0KCk7CiB9CiAKK3ZvaWQgSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5k
OjpzZXRCYWNrZW5kSGFuZGxlKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSYmIGhhbmRsZSkKK3sK
KyAgICBtX2hhbmRsZSA9IFdURk1vdmUoaGFuZGxlKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlclJl
bW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNsZWFyQmFja2VuZEhhbmRsZSgpCit7CisgICAgbV9oYW5k
bGUgPSB7IH07Cit9CisKIEdyYXBoaWNzQ29udGV4dCYgSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZh
Y2VCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZh
Y2VCYWNrZW5kLmgKaW5kZXggMDU2NGRiYzE1YmQyYWViMWJlMjBiYWUyYTU2NzBkYzU4ZWVlY2M0
NS4uZGZiMGZlOWRhYzUxMDkzYTM0ZTgxNTFiNzg2ZmRjOGZjZWVjNDlmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJl
bW90ZUlPU3VyZmFjZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCkBAIC0y
NywxNCArMjcsMTQgQEAKIAogI2lmIEhBVkUoSU9TVVJGQUNFKQogCi0jaW5jbHVkZSAiSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
U2hhcmluZy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlckJhY2tlbmQuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBJbWFnZUJ1ZmZlclJlbW90ZUlPU3Vy
ZmFjZUJhY2tlbmQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kIHsK
K2NsYXNzIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGVTaGFyaW5nIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VCdWZmZXJS
ZW1vdGVJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoKQEAgLTUwLDEzICs1MCwxMiBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKSBjb25zdDsKLQogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc09yaWdpbkF0Qm90dG9tTGVmdENvcm5lciA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGNhbk1hcEJhY2tpbmdTdG9yZSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQ7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQoKSBjb25zdCBmaW5hbDsKKyAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRl
QmFja2VuZEhhbmRsZSgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6Oklu
dFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBmaW5hbDsKQEAgLTczLDYgKzcyLDExIEBAIHByaXZh
dGU6CiAKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdygpIGNvbnN0IGZpbmFsOwogCisgICAgLy8g
SW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmluZworICAgIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcq
IHRvQmFja2VuZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CisgICAgdm9pZCBzZXRC
YWNrZW5kSGFuZGxlKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSYmKSBmaW5hbDsKKyAgICB2b2lk
IGNsZWFyQmFja2VuZEhhbmRsZSgpIGZpbmFsOworCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIG1faGFuZGxlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGIyOWZj
NTcyNzg5NTAzMGQ0MmZkYjQyN2IxNTg0NDdmMGQ3MTA2M2IuLmE4Y2EzNDgwODFhOTNiMTRlNTcy
MWZlMGQwMDI4YTFlYzg1Yzg0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGUKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ+KHBhcmFtZXRlcnMs
IFdURk1vdmUoc3VyZmFjZSkpOwogfQogCi1JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUoKSBjb25zdAorSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZShtX3N1cmZhY2UtPmNy
ZWF0ZVNlbmRSaWdodCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGVhODUyNWM1
MTUwMTU1YmQwM2I1ODAwNzNkNWYyMTM4NjQ4YjBlMGIuLmQ4YjQ5ZjcxNGE1NWJhZjkxZGViZDBj
N2EyNDdjMzJkYTY1NmFiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuaApAQCAtMjcsNyArMjcs
NyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKElPU1VSRkFDRSkKIAotI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZVNoYXJpbmcuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogCi1j
bGFzcyBJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kIHsKK2NsYXNzIEltYWdl
QnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQsIHB1YmxpYyBJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGVTaGFyaW5nIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZCk7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kKTsKIHB1YmxpYzoK
QEAgLTQ4LDkgKzQ4LDEzIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFdlYkNvcmU6OkltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOwogCi0gICAg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgp
IGNvbnN0OwotCiAgICAgdm9pZCBzZXRPd25lcnNoaXBJZGVudGl0eShjb25zdCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpdHkmKTsKKworICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVC
YWNrZW5kSGFuZGxlKCkgY29uc3QgZmluYWw7CisKK3ByaXZhdGU6CisgICAgLy8gSW1hZ2VCdWZm
ZXJCYWNrZW5kU2hhcmluZworICAgIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcqIHRvQmFja2Vu
ZFNoYXJpbmcoKSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0Ry
YXdpbmdBcmVhV0MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvRHJh
d2luZ0FyZWFXQy5jcHAKaW5kZXggMjdkMTIzNWJlOGQ3M2I0NmRkZjZlZjIzZTQyMjI4NWMzNzMy
YTVjNS4uNTU4YThlMTMxMWM5ZTRiMjA3MDBkN2QyMjMzNzM2NjRlNmI2YjgyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5j
cHAKQEAgLTMyNyw3ICszMjcsMTMgQEAgdm9pZCBEcmF3aW5nQXJlYVdDOjpzZW5kVXBkYXRlTm9u
QUMoKQogICAgICAgICAgICAgICAgIGRpZFVwZGF0ZSgpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dG8gaGFuZGxlID0gc3RhdGljX2Nhc3Q8
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZCY+KCppbWFnZS0+ZW5zdXJl
QmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisKKyAg
ICAgICAgICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGU7CisgICAgICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGltYWdlLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4o
c2hhcmluZykpCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IGRvd25jYXN0PEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5jcmVhdGVCYWNrZW5kSGFuZGxlKCk7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1cGRhdGVJbmZvLmJpdG1hcEhhbmRsZSA9IHN0
ZDo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihXVEZNb3ZlKGhhbmRsZSkpOwogICAgICAg
ICAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6VXBkYXRlKHN0YXRlSUQsIFdU
Rk1vdmUodXBkYXRlSW5mbykpKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9XQ0JhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvV0NCYWNraW5nU3RvcmUuaAppbmRleCAzNGY1MDAyZjU0
YTQzNDMwMTM0NTA4NTAxZDcyN2VkNzY4OWNjYjk1Li5mZTVkMzc3MzVmODJkNDY2NDljOWFmMTE5
ZTU1MjA4MzAzMzk1ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93Yy9XQ0JhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3djL1dDQmFja2luZ1N0b3JlLmgKQEAgLTQ0LDcgKzQ0LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgYm9vbCBoYXNJbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXI7CiAgICAgICAgIGVuY29k
ZXIgPDwgaGFzSW1hZ2VCdWZmZXI7CiAgICAgICAgIGlmIChoYXNJbWFnZUJ1ZmZlcikgewotICAg
ICAgICAgICAgYXV0byBoYW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCYWNrZW5kJj4oKm1faW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOworICAgICAgICAgICAgSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5k
ID0gbV9pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAgICAgICAg
ICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGlzPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcp
KQorICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRsZSgpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiAgICAgICAgIH0KICAgICB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>