<?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>126532</bug_id>
          
          <creation_ts>2014-01-06 12:00:21 -0800</creation_ts>
          <short_desc>Add new files for UI-side scrolling</short_desc>
          <delta_ts>2014-01-06 14:15:59 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>mkwst</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>964702</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-06 12:00:21 -0800</bug_when>
    <thetext>Add new files for UI-side scrolling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964707</commentid>
    <comment_count>1</comment_count>
      <attachid>220445</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-06 12:10:47 -0800</bug_when>
    <thetext>Created attachment 220445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964720</commentid>
    <comment_count>2</comment_count>
      <attachid>220445</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-06 12:41:11 -0800</bug_when>
    <thetext>Comment on attachment 220445
Patch

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

&gt; Source/WebKit2/UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:49
&gt; +    explicit RemoteScrollingCoordinatorProxy(WebPageProxy*);

Reference?

&gt; Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.h:41
&gt; +

Please get rid of this newline.

&gt; Source/WebKit2/UIProcess/Scrolling/RemoteScrollingTree.h:46
&gt; +    virtual bool isRemoteScrollingTree() const OVERRIDE { return true; }
&gt; +
&gt; +    virtual EventResult tryToHandleWheelEvent(const WebCore::PlatformWheelEvent&amp;) OVERRIDE;

I&apos;d get rid of this newline.

&gt; Source/WebKit2/WebProcess/Scrolling/RemoteScrollingCoordinator.h:68
&gt; +    // CoreIPC::MessageReceiver

Should just be IPC::.

&gt; Source/WebKit2/WebProcess/Scrolling/RemoteScrollingCoordinator.messages.in:24
&gt; +    ScrollPositionChangedForNode(uint64_t nodeID, WebCore::FloatPoint scrollPosition);

Maybe DidChange instead of Changed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964721</commentid>
    <comment_count>3</comment_count>
      <attachid>220445</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-06 12:43:18 -0800</bug_when>
    <thetext>Comment on attachment 220445
Patch

Attachment 220445 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/5462873593610240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964728</commentid>
    <comment_count>4</comment_count>
      <attachid>220445</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2014-01-06 13:03:00 -0800</bug_when>
    <thetext>Comment on attachment 220445
Patch

Attachment 220445 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/5147659232870400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964758</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-06 14:15:59 -0800</bug_when>
    <thetext>https://trac.webkit.org/r161373</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220445</attachid>
            <date>2014-01-06 12:10:47 -0800</date>
            <delta_ts>2014-01-06 13:03:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126532-20140106121046.patch</filename>
            <type>text/plain</type>
            <size>71764</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzliYTNjMzJmMTg2OTIz
OWFiYmM3NzFkNGQ0NzE4YWI1NTZjZTMzOC4uYzE5Y2U5NTU3MjMwNGY1ZjNiZmIzZWM5MzQ5MGQ0
ZGY3YTU4MjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAxLTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBuZXcgZmls
ZXMgZm9yIFVJLXNpZGUgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjY1MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTWFr
ZSBsb3RzIG9mIHNjcm9sbGluZy1yZWxhdGVkIGhlYWRlcnMgUHJpdmF0ZQorICAgICAgICBzbyBX
ZWJLaXQyIGNhbiBpbmNsdWRlIHRoZW0uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25Gb3JOb2RlKTogQ2FsbGJhY2sgdGhhdAor
ICAgICAgICBpbmRpY2F0ZXMgdGhhdCB0aGUgZ2l2ZW4gbm9kZSBoYXMgYmVlbiBzY3JvbGxlZCBh
c3luY2hyb25vdXNseS4gQ3VycmVudGx5IG9ubHkKKyAgICAgICAgaGFuZGxlcyB0aGUgbWFpbiBm
cmFtZS4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOiBB
ZGQgc3VwcG9ydCBmb3IgdHlwZS1jYXN0cyBvZiBhIHJlbW90ZSBzdWJjbGFzcworICAgICAgICBp
biBhbm90aGVyIG5hbWVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjppc1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpp
c1JlbW90ZVNjcm9sbGluZ1RyZWUpOgorCiAyMDE0LTAxLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgcmVzcG9uc2liaWxpdHkgZm9yIHJl
bW90ZSBsYXllciB0cmVlIGNvbW1pdHRpbmcgdG8gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhMTdhNTA1ZmIzYjRiYTMyYjMzODE3NjkxODliMWVkYjNhNjMxZjIyLi5h
NTAxNzEzZTQ1MTdkYjI5YzYxNGI5NzM5ZTdlZTM2Njg2NmQ3MTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNzIgQEAKIDIwMTQtMDEtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKKyAgICAgICAgQWRkIG5ldyBmaWxlcyBmb3IgVUktc2lkZSBzY3JvbGxpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjUzMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRk
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LAorICAgICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLCBSZW1v
dGVTY3JvbGxpbmdUcmVlLiAKKyAgICAgICAgCisgICAgICAgIFRoZXNlIGFsbG93IHRoZSBzY3Jv
bGxpbmcgdHJlZSB0byBiZSB1c2VkIGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvciBidWlsZHMgYSBTY3JvbGxpbmdTdGF0ZVRyZWUsIHdoaWNoIGlz
CisgICAgICAgIGVuY29kZWQgYnkgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlv
bi4gRGVjb2RpbmcgdGhlCisgICAgICAgIHRyYW5zYWN0aW9uIHJlY3JlYXRlcyB0aGF0IFNjcm9s
bGluZ1N0YXRlVHJlZSBpbiB0aGUgVUkgcHJvY2VzcywKKyAgICAgICAgYW5kIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkgImNvbW1pdHMiIHRoYXQgdG8gdXBkYXRlCisgICAgICAgIHRo
ZSBSZW1vdGVTY3JvbGxpbmdUcmVlLgorICAgICAgICAKKyAgICAgICAgTmV3IGNsYXNzZXMgYXJl
IG5vdCBob29rZWQgdXAgdG8gYW55dGhpbmcgeWV0LgorCisgICAgICAgICogU2hhcmVkL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmVuY29kZSk6CisgICAg
ICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmRlY29kZSk6CisgICAgICAg
IChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29k
ZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPjo6ZW5j
b2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+Ojpk
ZWNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+
OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVN0aWNreU5v
ZGU+OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVOb2RlQW5kRGVzY2VuZGFudHMp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9u
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6c2V0U3RhdGVUcmVlVG9FbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uOjpzY3JvbGxpbmdTdGF0ZVRyZWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eTo6flJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpsYXllclRyZWVIb3N0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlU2Ny
b2xsaW5nVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2Nyb2xsUG9zaXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdUcmVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9s
bGluZ1RyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU6
OlJlbW90ZVNjcm9sbGluZ1RyZWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdU
cmVlOjp+UmVtb3RlU2Nyb2xsaW5nVHJlZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9s
bGluZ1RyZWU6OnRyeVRvSGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNjcm9sbGluZ1RyZWU6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nVHJlZTo6Y3JlYXRlTm9kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5KToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp+UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvcjo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6aXNSdWJiZXJCYW5kSW5Qcm9n
cmVzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvcjo6YnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKToKKworMjAx
NC0wMS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwogICAgICAg
ICBSZW5hbWUgRHJhd2luZ0FyZWE6OnN1cHBvcnRzVGhyZWFkZWRTY3JvbGxpbmcoKSB0byBzdXBw
b3J0c0FzeW5jU2Nyb2xsaW5nKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjUyOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGJhMjUwOTE0ZTdjOWNhNjM2Y2IyNzJiN2ZmNmZi
NDY4NWFjYzU2YS4uNzY5YzJmZmVlMTU3ZTY5Y2Y1NDJkM2RmNzNlNjAyMmYwNjE5NzIxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDc2LDEwICs0NzYsMTAgQEAKIAkJMEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBo
aWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRl
ci5jcHAgKi87IH07CiAJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZBODhFQkQxNkE4
RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTg4RUJDMTZBOEQxQkQw
MEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gKi87IH07Ci0JCTBG
Qjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCODg5MDgxNjdEMkZB
MTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggKi87IH07CisJCTBGQjg4OTBB
MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCODg5MDgxNjdEMkZBMTAwMTBD
REE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCODg5MDkxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLm1tICovOyB9OwogCQkwRkI4ODkwRTE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQjg4OTBDMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUuY3BwICovOyB9OwotCQkwRkI4ODkwRjE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkI4ODkwRDE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlLmggKi87IH07CisJCTBGQjg4OTBGMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdT
dGF0ZVN0aWNreU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQjg4OTBEMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RkNGMzMyNDBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyog
Q29sb3JDRy5jcHAgKi87IH07CiAJCTBGQ0YzMzJFMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXll
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0Yz
MzJBMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5tbSAqLzsgfTsKIAkJMEZDRjMzMkYwRjJC
OUEyNTAwNEI2Nzk1IC8qIFdlYkxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyQjBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA5LDEy
ICs3MDksMTIgQEAKIAkJMUFBNzE2MEExNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBNzE2
MDgxNDlCQzREQTAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLm1tICovOyB9OwogCQkxQUE3MTYw
QjE0OUJDNERCMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTcxNjA5MTQ5QkM0REIwMDE2RUMxOSAvKiBU
aWxlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBQTg0RjA0MTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxFbGFzdGljaXR5Q29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBQTg0RjAyMTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlci5t
bSAqLzsgfTsKLQkJMUFBODRGMDUxNDNCQTdCRDAwNTFEMTUzIC8qIFNjcm9sbEVsYXN0aWNpdHlD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUE4NEYwMzE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIu
aCAqLzsgfTsKKwkJMUFBODRGMDUxNDNCQTdCRDAwNTFEMTUzIC8qIFNjcm9sbEVsYXN0aWNpdHlD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUE4NEYwMzE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUE4
Nzk5MDExQ0JFODQ2MDAzQzY2NEYgLyogUGx1Z2luU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTg3OThGMTFDQkU4NDYwMDNDNjY0RiAv
KiBQbHVnaW5TdHJhdGVneS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFBQUFEREEzMTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREEx
MTREQjQwOUYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmNwcCAqLzsgfTsKIAkJMUFBQUREQTQx
NERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREEyMTREQjQwOUYwMEFGNjRCMyAvKiBTY3Jv
bGxpbmdUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUFBQURERTMxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2RlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUFEREUxMTRE
QzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5jcHAgKi87IH07Ci0JCTFBQUFEREU0
MTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQURERTIxNERDOEM4RjAwQUY2NEIzIC8q
IFNjcm9sbGluZ1RyZWVOb2RlLmggKi87IH07CisJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRCMyAv
KiBTY3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBQURERTIxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFC
MDlEQjQxNkFGNUY2QzAwODUzOEU3IC8qIFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIwOURCMjE2QUY1RjZDMDA4NTM4
RTcgLyogU3RvcmFnZVN0cmF0ZWd5LmNwcCAqLzsgfTsKIAkJMUFCMDlEQjUxNkFGNUY2QzAwODUz
OEU3IC8qIFN0b3JhZ2VTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFCMDlEQjMxNkFGNUY2QzAwODUzOEU3IC8qIFN0b3JhZ2VTdHJhdGVn
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFB
QjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxQUU3ODBDMDUxRkRFMDAxMzlG
NEYgLyogem9vbUluQ3Vyc29yLnBuZyAqLzsgfTsKQEAgLTMwNzIsNyArMzA3Miw3IEBACiAJCTkz
OEU2NjYyMDlGMDlCODcwMDhBNDhFQyAvKiBKU0hUTUxDYW52YXNFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzhFNjY2MTA5RjA5Qjg3MDA4
QTQ4RUMgLyogSlNIVE1MQ2FudmFzRWxlbWVudC5oICovOyB9OwogCQk5MzkxQTk5MTE2Mjc0NkNC
MDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFBOTkwMTYyNzQ2Q0IwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5oICovOyB9OwogCQk5MzkxQTk5QzE2MjlENzAwMDAyOTcz
MzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCAqLzsgfTsKLQkJOTM5MUE5OUQxNjI5RDcwMDAw
Mjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyog
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLzsgfTsKKwkJOTM5MUE5OUQxNjI5RDcwMDAw
Mjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyog
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzkyMjYyRDEwMzIxMDdCMDA2RTdENUQgLyogSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzkyMjYyQzEwMzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxl
bWVudEN1c3RvbS5jcHAgKi87IH07CiAJCTkzOTIyNjJGMTAzMjEwODQwMDZFN0Q1RCAvKiBKU0NT
U1J1bGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzOTIyNjJFMTAzMjEwODQwMDZFN0Q1RCAvKiBKU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcCAqLzsgfTsKIAkJOTM5MkYxNDIwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTJGMTQx
MEFEMTg1RjQwMDY5MUJENCAvKiBSZW5kZXJDb3VudGVyLmggKi87IH07CkBAIC0zMTA3LDExICsz
MTA3LDExIEBACiAJCTkzQzA5QTgxMEIwNjRGMDAwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDMDlBODAw
QjA2NEYwMDAwNUFCRDREIC8qIEV2ZW50SGFuZGxlci5jcHAgKi87IH07CiAJCTkzQzA5Qzg2MEIw
NjU3QUEwMDVBQkQ0RCAvKiBTY3JvbGxUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDMDlDODUwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5
cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTNDMzhCRkUxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzM4QkZDMTY0
NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5jcHAgKi87IH07Ci0JCTkz
QzM4QkZGMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDMzhCRkQxNjQ0NzND
NzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmggKi87IH07Ci0JCTkzQzM4QzAz
MTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MzOEMwMTE2NDQ3M0REMDAwOTFF
QjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oICovOyB9OworCQk5M0MzOEJGRjE2NDQ3M0M3
MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzM4QkZEMTY0NDczQzcwMDA5MUVCMiAvKiBT
Y3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTkzQzM4QzAzMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQzM4
QzA0MTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDMzhDMDIxNjQ0NzNERDAw
MDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gKi87IH07CiAJCTkzQzQ0MjAwMEY4
MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxl
Y3Rpb25UeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJOTNDNEE0MTUxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMu
aCAqLzsgfTsKKwkJOTNDNEE0MTUxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0M0QTQxNjE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M0
QTQxNDE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0g
Ki87IH07CiAJCTkzQzRGNkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xs
YmFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M0
RjZFOTExMDhGOUE1MDA5OUQwREIgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oICovOyB9Owog
CQk5M0M4NDFGODA5Q0U4NTVDMDBERkY1RTUgLyogRE9NSW1wbGVtZW50YXRpb25Gcm9udC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDODQxRjcwOUNF
ODU1QzAwREZGNUU1IC8qIERPTUltcGxlbWVudGF0aW9uRnJvbnQuaCAqLzsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCBiM2E5MzliZDYzMDY3NGM0NDM5ZTc3M2E0ZTZhODcyMjYxMDdiMTc2Li41OTY3YWU0
YjA2Njc2ZTljNjU2NDEzYWM2YWFmNTRkNGUxNjYyODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0yNzQs
NiArMjc0LDEyIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXll
ckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICB1cGRhdGVTeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMoKTsKIH0KIAordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1
bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkZvck5vZGUoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRPclN5bmNT
Y3JvbGxpbmdMYXllclBvc2l0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit7Cisg
ICAgLy8gRklYTUU6IG5lZWQgdG8gaGFuZGxlIG5vbi1tYWluIG5vZGVzLgorICAgIHNjaGVkdWxl
VXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24sIHByb2dyYW1tYXRp
Y1Njcm9sbCwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7Cit9CisKIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0
T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
KQogewogICAgIGlmIChtX3VwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uVGltZXIuaXNBY3Rp
dmUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKaW5kZXggYTdlMzg0Yzc1MGE0YjI4NTM1NzBhMTdhODRmNGZmMDQ4YTU3
N2IyNy4uZmMxZTBiYTNlOTUyYmQ5Yzk2NjFlM2VlNmRmNjA0YzlhODViZThlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5o
CkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJv
eWVkKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gUmV0
dXJuIHdoZXRoZXIgdGhpcyBzY3JvbGxpbmcgY29vcmRpbmF0b3IgaGFuZGxlcyBzY3JvbGxpbmcg
Zm9yIHRoZSBnaXZlbiBmcmFtZSB2aWV3LgogICAgIGJvb2wgY29vcmRpbmF0ZXNTY3JvbGxpbmdG
b3JGcmFtZVZpZXcoRnJhbWVWaWV3KikgY29uc3Q7CkBAIC0xNTgsNiArMTU5LDggQEAgcHVibGlj
OgogICAgIC8vIEdlbmVyYXRlZCBhIHVuaXF1ZSBpZCBmb3Igc2Nyb2xsIGxheWVycy4KICAgICBT
Y3JvbGxpbmdOb2RlSUQgdW5pcXVlU2Nyb2xsTGF5ZXJJRCgpOwogCisgICAgdm9pZCBzY2hlZHVs
ZVVwZGF0ZVNjcm9sbFBvc2l0aW9uRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEludFBv
aW50JiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwsIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9z
aXRpb24pOworCiAgICAgLy8gRGlzcGF0Y2hlZCBieSB0aGUgc2Nyb2xsaW5nIHRyZWUgd2hlbmV2
ZXIgdGhlIG1haW4gZnJhbWUgc2Nyb2xsIHBvc2l0aW9uIGNoYW5nZXMuCiAgICAgdm9pZCBzY2hl
ZHVsZVVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiwgYm9vbCBw
cm9ncmFtbWF0aWNTY3JvbGwsIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24pOwogICAg
IHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmLCBib29s
IHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CkBA
IC0xOTgsNyArMjAxLDcgQEAgcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzTGF5ZXIqIGhlYWRlckxh
eWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyopOwogICAgIEdyYXBoaWNzTGF5ZXIqIGZvb3Rlckxh
eWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyopOwogCi0gICAgUGFnZSogbV9wYWdlOworICAgIFBh
Z2UqIG1fcGFnZTsgLy8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSBhIHJlZmVyZW5jZSBi
dXQgaXQgZ2V0cyBudWxsZWQgb24gYXN5bmMgdGVhcmRvd24uCiAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3KikgeyB9CkBAIC0yMTgsNyArMjIxLDcgQEAgcHJpdmF0ZToKIH07CiAKICNkZWZpbmUg
U0NST0xMSU5HX0NPT1JESU5BVE9SX1RZUEVfQ0FTVFMoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNh
dGUpIFwKLSAgICBUWVBFX0NBU1RTX0JBU0UoVG9WYWx1ZVR5cGVOYW1lLCBTY3JvbGxpbmdDb29y
ZGluYXRvciwgdmFsdWUsIHZhbHVlLT5wcmVkaWNhdGUsIHZhbHVlLnByZWRpY2F0ZSkKKyAgICBU
WVBFX0NBU1RTX0JBU0UoVG9WYWx1ZVR5cGVOYW1lLCBXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGlu
YXRvciwgdmFsdWUsIHZhbHVlLT5wcmVkaWNhdGUsIHZhbHVlLnByZWRpY2F0ZSkKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmgKaW5kZXggZDNiYmRmMTQ3NDUyNTE1YmYwNWRjOWU2NGZkNzMyNTI3NWZhM2Jl
ZC4uNTBmYmFjYzQxYjhlNjQ5OTBlMTI3YzZmZWUyY2FjZDE3MTNjNmU5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtNTcsNiArNTcsNyBA
QCBwdWJsaWM6CiAgICAgfTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJlYWRlZFNjcm9s
bGluZ1RyZWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bW90ZVNjcm9sbGluZ1RyZWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVh
bCBFdmVudFJlc3VsdCB0cnlUb0hhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikgPSAwOwogICAgIGJvb2wgc2hvdWxkSGFuZGxlV2hlZWxFdmVudFN5bmNocm9ub3VzbHko
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJpdmF0ZToK
IH07CiAKICNkZWZpbmUgU0NST0xMSU5HX1RSRUVfVFlQRV9DQVNUUyhUb1ZhbHVlVHlwZU5hbWUs
IHByZWRpY2F0ZSkgXAotICAgIFRZUEVfQ0FTVFNfQkFTRShUb1ZhbHVlVHlwZU5hbWUsIFNjcm9s
bGluZ1RyZWUsIHZhbHVlLCB2YWx1ZS0+cHJlZGljYXRlLCB2YWx1ZS5wcmVkaWNhdGUpCisgICAg
VFlQRV9DQVNUU19CQVNFKFRvVmFsdWVUeXBlTmFtZSwgV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSwg
dmFsdWUsIHZhbHVlLT5wcmVkaWNhdGUsIHZhbHVlLnByZWRpY2F0ZSkKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5n
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YjUzMDcwZDUzODE4YjcyYTZiMzhmYjI3YWI3YmEzZDU3Nzg3NDcz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtMCwwICsxLDI5OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZUVuY29kZXIu
aCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlRml4ZWRO
b2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oPgorCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBJUEMgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRl
Tm9kZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBT
Y3JvbGxpbmdTdGF0ZU5vZGUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiwgU2Nyb2xsaW5nU3RhdGVOb2RlJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYsIGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlJik7CisgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFNjcm9sbGluZ1N0YXRlRml4ZWROb2Rl
Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBj
b25zdCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyJiwgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlJik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJUEMKKwordXNpbmcgbmFtZXNwYWNlIElQQzsKKwordm9pZCBBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgbm9kZSkKK3sKKyAgICBlbmNvZGVyLmVuY29kZUVu
dW0obm9kZS5ub2RlVHlwZSgpKTsKKyAgICBlbmNvZGVyIDw8IG5vZGUuc2Nyb2xsaW5nTm9kZUlE
KCk7CisgICAgZW5jb2RlciA8PCBub2RlLnBhcmVudE5vZGVJRCgpOworICAgIGVuY29kZXIgPDwg
bm9kZS5jaGFuZ2VkUHJvcGVydGllcygpOworICAgIAorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUubGF5
ZXIoKSk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxpbmdTdGF0ZU5vZGUmIG5vZGUpCit7
CisgICAgLy8gbm9kZVR5cGUsIHNjcm9sbGluZ05vZGVJRCBhbmQgcGFyZW50Tm9kZUlEIGhhdmUg
YWxyZWFkeSBiZWVuIGRlY29kZWQgYnkgdGhlIGNhbGxlciBpbiBvcmRlciB0byBjcmVhdGUgdGhl
IG5vZGUuCisgICAgU2Nyb2xsaW5nU3RhdGVOb2RlOjpDaGFuZ2VkUHJvcGVydGllcyBjaGFuZ2Vk
UHJvcGVydGllczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNoYW5nZWRQcm9wZXJ0aWVzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbm9kZS5zZXRDaGFuZ2VkUHJvcGVydGllcyhj
aGFuZ2VkUHJvcGVydGllcyk7CisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKSB7CisgICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRCBsYXllcklEOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVy
SUQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBub2RlLnNldExheWVyKGxh
eWVySUQpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisjZGVmaW5lIFNDUk9MTElO
R19OT0RFX0VOQ09ERShwcm9wZXJ0eSwgZ2V0dGVyKSBcCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6cHJvcGVydHkpKSBcCisgICAg
ICAgIGVuY29kZXIgPDwgbm9kZS5nZXR0ZXIoKTsKKworI2RlZmluZSBTQ1JPTExJTkdfTk9ERV9F
TkNPREVfRU5VTShwcm9wZXJ0eSwgZ2V0dGVyKSBcCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6cHJvcGVydHkpKSBcCisgICAgICAg
IGVuY29kZXIuZW5jb2RlRW51bShub2RlLmdldHRlcigpKTsKKwordm9pZCBBcmd1bWVudENvZGVy
PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSkKK3sKKyAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpOwor
ICAgIAorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShWaWV3cG9ydFJlY3QsIHZpZXdwb3J0UmVj
dCkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoVG90YWxDb250ZW50c1NpemUsIHRvdGFsQ29u
dGVudHNTaXplKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxPcmlnaW4sIHNjcm9s
bE9yaWdpbikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoRnJhbWVTY2FsZUZhY3RvciwgZnJh
bWVTY2FsZUZhY3RvcikKKy8vICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShOb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbiwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24pIC8vIEZJWE1FOiBubyBlbmNvZGVy
IHN1cHBvcnQgZm9yIFJlZ2lvbgorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShXaGVlbEV2ZW50
SGFuZGxlckNvdW50LCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQorICAgIFNDUk9MTElOR19OT0RF
X0VOQ09ERShSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucykKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsYWJsZUFyZWFQYXJh
bXMsIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycykKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREVf
RU5VTShCZWhhdmlvckZvckZpeGVkRWxlbWVudHMsIHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVt
ZW50cykKKyAgICAvLyBGSVhNRTogZW5jb2RlIHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uPworICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShIZWFkZXJIZWlnaHQsIGhlYWRlckhlaWdodCkKKyAgICBT
Q1JPTExJTkdfTk9ERV9FTkNPREUoRm9vdGVySGVpZ2h0LCBmb290ZXJIZWlnaHQpCit9CisKKyNk
ZWZpbmUgU0NST0xMSU5HX05PREVfREVDT0RFKHByb3BlcnR5LCB0eXBlLCBzZXR0ZXIpIFwKKyAg
ICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
Ojpwcm9wZXJ0eSkpIHsgXAorICAgICAgICB0eXBlIGRlY29kZWRWYWx1ZTsgXAorICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRWYWx1ZSkpIFwKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsgXAorICAgICAgICBub2RlLnNldHRlcihkZWNvZGVkVmFsdWUpOyBcCisgICAgfQorCisj
ZGVmaW5lIFNDUk9MTElOR19OT0RFX0RFQ09ERV9FTlVNKHByb3BlcnR5LCB0eXBlLCBzZXR0ZXIp
IFwKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpwcm9wZXJ0eSkpIHsgXAorICAgICAgICB0eXBlIGRlY29kZWRWYWx1ZTsgXAorICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShkZWNvZGVkVmFsdWUpKSBcCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7IFwKKyAgICAgICAgbm9kZS5zZXR0ZXIoZGVjb2RlZFZhbHVlKTsgXAor
ICAgIH0KKworYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46
OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpY19jYXN0PFNjcm9s
bGluZ1N0YXRlTm9kZSY+KG5vZGUpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFZpZXdwb3J0UmVjdCwgSW50UmVjdCwgc2V0Vmlld3BvcnRSZWN0
KTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoVG90YWxDb250ZW50c1NpemUsIEludFNpemUs
IHNldFRvdGFsQ29udGVudHNTaXplKTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xs
T3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKKyAgICBTQ1JPTExJTkdfTk9ERV9E
RUNPREUoRnJhbWVTY2FsZUZhY3RvciwgZmxvYXQsIHNldEZyYW1lU2NhbGVGYWN0b3IpOworLy8g
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLCBSZWdpb24s
IHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsgLy8gRklYTUU6IG5vIGRlY29kZXIgc3VwcG9y
dCBmb3IgUmVnaW9uLgorICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShXaGVlbEV2ZW50SGFuZGxl
ckNvdW50LCBpbnQsIHNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQpOworICAgIFNDUk9MTElOR19O
T0RFX0RFQ09ERShSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcsIFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucywgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKTsKKyAgICBTQ1JP
TExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsYWJsZUFyZWFQYXJhbXMsIFNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycywgc2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKTsKKyAgICBTQ1JPTExJTkdfTk9E
RV9ERUNPREVfRU5VTShCZWhhdmlvckZvckZpeGVkRWxlbWVudHMsIFNjcm9sbEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cywgc2V0U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKTsKKyAgICAv
LyBGSVhNRTogZGVjb2RlIHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uPworICAgIFNDUk9MTElOR19O
T0RFX0RFQ09ERShIZWFkZXJIZWlnaHQsIGludCwgc2V0SGVhZGVySGVpZ2h0KTsKKyAgICBTQ1JP
TExJTkdfTk9ERV9ERUNPREUoRm9vdGVySGVpZ2h0LCBpbnQsIHNldEZvb3RlckhlaWdodCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRl
Rml4ZWROb2RlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xs
aW5nU3RhdGVGaXhlZE5vZGUmIG5vZGUpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxj
b25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmPihub2RlKTsKKyAgICAKKyAgICBpZiAobm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OlZpZXdwb3J0Q29uc3RyYWlu
dHMpKQorICAgICAgICBlbmNvZGVyIDw8IG5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOworfQor
Citib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYgbm9kZSkKK3sK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpY19jYXN0PFNjcm9sbGluZ1N0YXRlTm9kZSY+
KG5vZGUpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkg
eworICAgICAgICBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBkZWNvZGVkVmFsdWU7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2RlZFZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgbm9kZS51cGRhdGVDb25zdHJhaW50cyhkZWNvZGVkVmFs
dWUpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlJiBub2RlKQoreworICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJj4obm9kZSk7CisgICAgCisg
ICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6
Vmlld3BvcnRDb25zdHJhaW50cykpCisgICAgICAgIGVuY29kZXIgPDwgbm9kZS52aWV3cG9ydENv
bnN0cmFpbnRzKCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUmIG5vZGUpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aWNfY2FzdDxT
Y3JvbGxpbmdTdGF0ZU5vZGUmPihub2RlKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OlZp
ZXdwb3J0Q29uc3RyYWludHMpKSB7CisgICAgICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50cyBkZWNvZGVkVmFsdWU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2Rl
ZFZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbm9kZS51cGRhdGVD
b25zdHJhaW50cyhkZWNvZGVkVmFsdWUpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIHZvaWQgZW5jb2RlTm9kZUFuZERlc2NlbmRh
bnRzKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU5v
ZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlTm9kZS5ub2RlVHlwZSgpKSB7Cisg
ICAgY2FzZSBTY3JvbGxpbmdOb2RlOgorICAgICAgICBlbmNvZGVyIDw8IHRvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlKHN0YXRlTm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRml4
ZWROb2RlOgorICAgICAgICBlbmNvZGVyIDw8IHRvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUoc3Rh
dGVOb2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGlja3lOb2RlOgorICAgICAgICBl
bmNvZGVyIDw8IHRvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlKHN0YXRlTm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGlmICghc3RhdGVOb2RlLmNoaWxkcmVuKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGVOb2RlLmNoaWxkcmVu
KCktPnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IE93blB0cjxTY3JvbGxpbmdTdGF0ZU5v
ZGU+JiBjaGlsZCA9IHN0YXRlTm9kZS5jaGlsZHJlbigpLT5hdChpKTsKKyAgICAgICAgZW5jb2Rl
Tm9kZUFuZERlc2NlbmRhbnRzKGVuY29kZXIsICpjaGlsZC5nZXQoKSk7CisgICAgfQorfQorCit2
b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmVuY29kZShJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc2Nyb2xs
aW5nU3RhdGVUcmVlLT5ub2RlQ291bnQoKTsKKyAgICAKKyAgICBpZiAoY29uc3QgU2Nyb2xsaW5n
U3RhdGVOb2RlKiByb290Tm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2Rl
KCkpCisgICAgICAgIGVuY29kZU5vZGVBbmREZXNjZW5kYW50cyhlbmNvZGVyLCAqcm9vdE5vZGUp
OworICAgIAorICAgIGVuY29kZXIgPDwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJlbW92ZWROb2Rl
cygpOworfQorCitib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgcmV0dXJuIHRyYW5zYWN0aW9u
LmRlY29kZShkZWNvZGVyKTsKK30KKworYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIpCit7CisgICAg
aW50IG51bU5vZGVzOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobnVtTm9kZXMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IFNjcm9sbGluZ1N0
YXRlVHJlZTo6Y3JlYXRlKCk7CisgICAgCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Ob2Rl
czsgKytpKSB7CisgICAgICAgIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlOworICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRW51bShub2RlVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRDsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShub2RlSUQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAg
IFNjcm9sbGluZ05vZGVJRCBwYXJlbnROb2RlSUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyZW50Tm9kZUlEKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBt
X3Njcm9sbGluZ1N0YXRlVHJlZS0+YXR0YWNoTm9kZShub2RlVHlwZSwgbm9kZUlELCBwYXJlbnRO
b2RlSUQpOworICAgICAgICBTY3JvbGxpbmdTdGF0ZU5vZGUqIG5ld05vZGUgPSBtX3Njcm9sbGlu
Z1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQobm9kZUlEKTsKKyAgICAgICAgQVNTRVJUKG5ld05v
ZGUpOworICAgICAgICBBU1NFUlQoIXBhcmVudE5vZGVJRCB8fCBuZXdOb2RlLT5wYXJlbnQoKSk7
CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgICAgIGNhc2UgU2Ny
b2xsaW5nTm9kZToKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnRvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlKG5ld05vZGUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaXhlZE5vZGU6CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp0b1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlKG5ld05v
ZGUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdGlja3lOb2RlOgorICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSgqdG9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUobmV3Tm9kZSkpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gUmVtb3ZlZCBub2RlcworICAgIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IHJlbW92ZWRO
b2RlczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlbW92ZWROb2RlcykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAocmVtb3ZlZE5vZGVzLnNpemUoKSkKKyAgICAgICAg
bV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnNldFJlbW92ZWROb2RlcyhyZW1vdmVkTm9kZXMpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDhiNGQ2MjQ2MmZh
N2NmMTNhZDEyMmE1MTgyZWI0MjM5YmRkNzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbl9oCisjZGVmaW5lIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yVHJhbnNhY3Rpb25faAorCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZVRy
ZWUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1
bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldFN0YXRl
VHJlZVRvRW5jb2RlKFBhc3NPd25QdHI8V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlPiBzdGF0
ZVRyZWUpIHsgbV9zY3JvbGxpbmdTdGF0ZVRyZWUgPSBzdGF0ZVRyZWU7IH0KKyAgICBPd25QdHI8
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlPiYgc2Nyb2xsaW5nU3RhdGVUcmVlKCkgeyByZXR1
cm4gbV9zY3JvbGxpbmdTdGF0ZVRyZWU7IH0KKyAgICAKKyAgICB2b2lkIGVuY29kZShJUEM6OkFy
Z3VtZW50RW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYsIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24mKTsKKwor
cHJpdmF0ZToKKyAgICBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYpOworICAgIAor
ICAgIE93blB0cjxXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU+IG1fc2Nyb2xsaW5nU3RhdGVU
cmVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxMzNiNGJiNjAyYTc0OGZiYTVmOGE4ZWE4NDA0
YmM4YzlkY2RlNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0wLDAgKzEs
MTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiTWVzc2FnZURlY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlRW5jb2Rl
ci5oIgorI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nU3RhdGVUcmVlLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eTo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkq
IHdlYlBhZ2VQcm94eSkKKyAgICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQcm94eSkKKyAgICAs
IG1fc2Nyb2xsaW5nVHJlZShSZW1vdGVTY3JvbGxpbmdUcmVlOjpjcmVhdGUoKnRoaXMpKQorewor
fQorCitSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojp+UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eSgpCit7Cit9CisKK2NvbnN0IFJlbW90ZUxheWVyVHJlZUhvc3QqIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmxheWVyVHJlZUhvc3QoKSBjb25zdAoreworICAg
IERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHktPmRyYXdpbmdB
cmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSB8fCBkcmF3aW5nQXJlYS0+dHlwZSgpICE9IERy
YXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSogcmVtb3RlRHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Kj4oZHJhd2luZ0FyZWEpOworICAgIHJldHVybiAm
cmVtb3RlRHJhd2luZ0FyZWEtPnJlbW90ZUxheWVyVHJlZUhvc3QoKTsKK30KKwordm9pZCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojp1cGRhdGVTY3JvbGxpbmdUcmVlKGNvbnN0IFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAg
IE93blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHN0YXRlVHJlZSA9IGNvbnN0X2Nhc3Q8UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbiY+KHRyYW5zYWN0aW9uKS5zY3JvbGxpbmdT
dGF0ZVRyZWUoKS5yZWxlYXNlKCk7CisgICAgCisgICAgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9z
dCogbGF5ZXJUcmVlSG9zdCA9IHRoaXMtPmxheWVyVHJlZUhvc3QoKTsKKyAgICBpZiAoIWxheWVy
VHJlZUhvc3QpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgY29ubmVjdFN0YXRlTm9kZUxheWVycygqc3RhdGVUcmVlLCAq
bGF5ZXJUcmVlSG9zdCk7CisgICAgbV9zY3JvbGxpbmdUcmVlLT5jb21taXROZXdUcmVlU3RhdGUo
c3RhdGVUcmVlLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRl
VHJlZSwgY29uc3QgUmVtb3RlTGF5ZXJUcmVlSG9zdCYgbGF5ZXJUcmVlSG9zdCkKK3sKKyAgICBm
b3IgKGF1dG8gaXQgOiBzdGF0ZVRyZWUubm9kZU1hcCgpKSB7CisgICAgICAgIFNjcm9sbGluZ1N0
YXRlTm9kZSogY3Vyck5vZGUgPSBpdC52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChjdXJyTm9kZS0+
bm9kZVR5cGUoKSkgeworICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGU6IHsKKyAgICAgICAgICAg
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoY3Vyck5vZGUpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVO
b2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0LmdldExheWVyKHNjcm9sbGluZ1N0YXRlTm9kZS0+
bGF5ZXIoKSkpOworCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLT5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5n
TGF5ZXIpKQorICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0Q291bnRlclNj
cm9sbGluZ0xheWVyKGxheWVyVHJlZUhvc3QuZ2V0TGF5ZXIoc2Nyb2xsaW5nU3RhdGVOb2RlLT5j
b3VudGVyU2Nyb2xsaW5nTGF5ZXIoKSkpOworCisgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIG5ldmVyIGhhdmUgaGVhZGVyIGFuZCBmb290ZXIgbGF5ZXJzIGNvbWluZyBmcm9tIHRoZSBX
ZWJQcm9jZXNzLgorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQorICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS0+c2V0SGVhZGVyTGF5ZXIobGF5ZXJUcmVl
SG9zdC5nZXRMYXllcihzY3JvbGxpbmdTdGF0ZU5vZGUtPmhlYWRlckxheWVyKCkpKTsKKworICAg
ICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgICAgICAgICAgICAgIHNj
cm9sbGluZ1N0YXRlTm9kZS0+c2V0Rm9vdGVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihz
Y3JvbGxpbmdTdGF0ZU5vZGUtPmZvb3RlckxheWVyKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRml4ZWROb2RlOgorICAgICAgICAgICAgaWYgKGN1cnJO
b2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikp
CisgICAgICAgICAgICAgICAgY3Vyck5vZGUtPnNldExheWVyKGxheWVyVHJlZUhvc3QuZ2V0TGF5
ZXIoY3Vyck5vZGUtPmxheWVyKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0aWNreU5vZGU6CisgICAgICAgICAgICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKKyAgICAgICAgICAgICAgICBjdXJy
Tm9kZS0+c2V0TGF5ZXIobGF5ZXJUcmVlSG9zdC5nZXRMYXllcihjdXJyTm9kZS0+bGF5ZXIoKSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50KQoreworICAgIFNjcm9sbGluZ1RyZWU6OkV2ZW50UmVzdWx0IHJl
c3VsdCA9IG1fc2Nyb2xsaW5nVHJlZS0+dHJ5VG9IYW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsKKyAg
ICByZXR1cm4gcmVzdWx0ID09IFNjcm9sbGluZ1RyZWU6OkRpZEhhbmRsZUV2ZW50OyAvLyBGSVhN
RTogaGFuZGxlIG90aGVyIHZhbHVlcy4KK30KKwordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlE
IHNjcm9sbGVkTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBuZXdTY3JvbGxQb3Np
dGlvbikKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+c2VuZChNZXNzYWdlczo6UmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OlNjcm9sbFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUoc2Nyb2xsZWROb2Rl
SUQsIG5ld1Njcm9sbFBvc2l0aW9uKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5n
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDg3ZWQyMDQ4
ZGVmZDNmYTM2MWVmYzZkMjI5NWViYWQzNWZkYjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eV9oCisjZGVmaW5lIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHlfaAorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZsb2F0
UG9pbnQ7CitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBSZW1vdGVMYXllclRyZWVIb3N0OworY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbjsKK2NsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CitjbGFzcyBX
ZWJQYWdlUHJveHk7CisKK2NsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkp
OworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHko
V2ViUGFnZVByb3h5Kik7CisgICAgdmlydHVhbCB+UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eSgpOworICAgIAorICAgIC8vIEluZm9ybSB0aGUgd2ViIHByb2Nlc3MgdGhhdCB0aGUgc2Ny
b2xsIHBvc2l0aW9uIGNoYW5nZWQuCisgICAgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWQoV2Vi
Q29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBuZXdTY3Jv
bGxQb3NpdGlvbik7CisKKyAgICAvLyBGSVhNRTogZXhwb3NlIHRoZSB0cmVlIGFuZCBwYXNzIHRo
aXMgdG8gdGhhdD8KKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxh
dGZvcm1XaGVlbEV2ZW50Jik7CisgICAgCisgICAgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIHJv
b3RTY3JvbGxpbmdOb2RlSUQoKSBjb25zdDsKKworICAgIGNvbnN0IFJlbW90ZUxheWVyVHJlZUhv
c3QqIGxheWVyVHJlZUhvc3QoKSBjb25zdDsKKworICAgIHZvaWQgdXBkYXRlU2Nyb2xsaW5nVHJl
ZShjb25zdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uJik7CisKK3ByaXZh
dGU6CisgICAgdm9pZCBjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlVHJlZSYsIGNvbnN0IFJlbW90ZUxheWVyVHJlZUhvc3QmKTsKKworICAgIFdlYlBhZ2VQcm94
eSogbV93ZWJQYWdlUHJveHk7CisgICAgUmVmUHRyPFJlbW90ZVNjcm9sbGluZ1RyZWU+IG1fc2Ny
b2xsaW5nVHJlZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMjE4OTIzNmY3YTJhODM3ZGQwMDA2YzA5NjBmY2M5NmY2ZTQ5NzM4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxp
bmdUcmVlLmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZVNjcm9sbGluZ1RyZWUuaCIKKworI2luY2x1ZGUgIlJlbW90
ZUxheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWZQdHI8UmVtb3RlU2Nyb2xsaW5nVHJl
ZT4gUmVtb3RlU2Nyb2xsaW5nVHJlZTo6Y3JlYXRlKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkmIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmVtb3RlU2Nyb2xsaW5nVHJlZShzY3JvbGxpbmdDb29yZGluYXRvcikpOworfQorCitSZW1vdGVT
Y3JvbGxpbmdUcmVlOjpSZW1vdGVTY3JvbGxpbmdUcmVlKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkmIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgIDogbV9zY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5KHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQoreworfQorCitSZW1vdGVTY3JvbGxpbmdU
cmVlOjp+UmVtb3RlU2Nyb2xsaW5nVHJlZSgpCit7Cit9CisKK1Njcm9sbGluZ1RyZWU6OkV2ZW50
UmVzdWx0IFJlbW90ZVNjcm9sbGluZ1RyZWU6OnRyeVRvSGFuZGxlV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit7CisgICAgaWYgKHNob3VsZEhhbmRsZVdo
ZWVsRXZlbnRTeW5jaHJvbm91c2x5KHdoZWVsRXZlbnQpKQorICAgICAgICByZXR1cm4gU2VuZFRv
TWFpblRocmVhZDsKKworICAgIGlmICh3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdo
ZWVsRXZlbnQpKQorICAgICAgICByZXR1cm4gRGlkTm90SGFuZGxlRXZlbnQ7CisKKyAgICBoYW5k
bGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIHJldHVybiBEaWRIYW5kbGVFdmVudDsKK30K
KworI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hl
ZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQoreworICAgIC8vIEZJ
WE1FOiBoYW5kIG9mZiB0byBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk/Cit9CisjZW5kaWYK
Kwordm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlv
bihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFNldE9yU3luY1Njcm9sbGluZ0xheWVy
UG9zaXRpb24pCit7CisgICAgLy8gRklYTUU6IGZpeCBmb3IgYWxsIHNjcm9sbGluZyBub2Rlcy4K
KyAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKHJv
b3ROb2RlKCktPnNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbik7Cit9CisKK1Bhc3NP
d25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFJlbW90ZVNjcm9sbGluZ1RyZWU6OmNyZWF0ZU5vZGUo
U2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7Cisg
ICAgc3dpdGNoIChub2RlVHlwZSkgeworICAgIGNhc2UgU2Nyb2xsaW5nTm9kZToKKyAgICAgICAg
cmV0dXJuIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjOjpjcmVhdGUoKnRoaXMsIG5vZGVJ
RCk7CisgICAgY2FzZSBGaXhlZE5vZGU6CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisgICAgY2FzZSBTdGlja3lOb2RlOgorICAg
ICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlE
KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVT
Y3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90
ZVNjcm9sbGluZ1RyZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODg4NTNkNDE3ZjU2NTYxODUzZWIwMmEzZjRj
MjJjYmRjMTVlMGYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUmVtb3RlU2Nyb2xsaW5nVHJlZV9oCisjZGVmaW5lIFJlbW90ZVNjcm9s
bGluZ1RyZWVfaAorCisjaW5jbHVkZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxpbmdDb25zdHJhaW50cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xs
aW5nVHJlZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eTsKKworY2xhc3MgUmVtb3RlU2Nyb2xsaW5nVHJlZSA6IHB1YmxpYyBX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90
ZVNjcm9sbGluZ1RyZWU+IGNyZWF0ZShSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Jik7
CisKKyAgICB2aXJ0dWFsIH5SZW1vdGVTY3JvbGxpbmdUcmVlKCk7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZW1vdGVTY3JvbGxpbmdUcmVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgdmlydHVhbCBFdmVudFJlc3VsdCB0cnlUb0hhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50JikgT1ZFUlJJREU7CisKKyAgICBjb25zdCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5JiBzY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5OyB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgUmVtb3RlU2Nyb2xsaW5nVHJlZShSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5Jik7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVdoZWVsRXZlbnRQaGFzZShXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgT1ZFUlJJ
REU7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBXZWJDb3JlOjpTZXRP
clN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uID0gV2ViQ29yZTo6U3luY1Njcm9sbGluZ0xheWVy
UG9zaXRpb24pIE9WRVJSSURFOworCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVOb2RlPiBjcmVhdGVOb2RlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVUeXBlLCBX
ZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOworICAgIAorICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkmIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsKK307CisKK1NDUk9MTElO
R19UUkVFX1RZUEVfQ0FTVFMoUmVtb3RlU2Nyb2xsaW5nVHJlZSwgaXNSZW1vdGVTY3JvbGxpbmdU
cmVlKCkpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFJlbW90ZVNjcm9s
bGluZ1RyZWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDI3ZDNiZDY3MDA2YTQ3YTViZmNhZWJiYTdmZmI4Njc0ZDZmNTI0Y2Eu
LmZjYWVmYjg4ZGVkOGI1YTVlMDgyYjM0OGZkMDM3NGI5YmRmMWExNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ5LDYgKzQ5
LDE0IEBACiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkwRjE3NEFBMzE0MkE0
Q0I3MDAzOTI1MEYgLyogQVBJR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTc0QUEyMTQyQTRDQjYwMDM5MjUwRiAvKiBBUElHZW9tZXRy
eS5oICovOyB9OwogCQkwRjE3NEFBNzE0MkFBQzYxMDAzOTI1MEYgLyogV0tHZW9tZXRyeS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE3NEFBNjE0
MkFBQzYxMDAzOTI1MEYgLyogV0tHZW9tZXRyeS5jcHAgKi87IH07CisJCTBGNTk0NzkwMTg3QjNC
M0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1OTQ3OEQxODdCM0IzQTAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggKi87IH07CisJCTBGNTk0NzkyMTg3QjNC
M0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTk0NzhGMTg3QjNCM0EwMDQzNzg1
NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSAqLzsgfTsKKwkJMEY1OTQ3OUExODdC
M0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1OTQ3OTQxODdCM0I2
MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwICovOyB9Owor
CQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
OTQ3OTUxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
aCAqLzsgfTsKKwkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1Ry
ZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
OTQ3OTYxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuY3BwICovOyB9Owor
CQkwRjU5NDc5RDE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1OTQ3OTcxODdCM0I2
MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuaCAqLzsgfTsKKwkJMEY1OTQ3QTMxODdC
M0I3RDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1OTQ3QTEx
ODdCM0I3RDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24u
Y3BwICovOyB9OworCQkwRjU5NDdBNDE4N0IzQjdEMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1OTQ3QTIxODdCM0I3RDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCAqLzsgfTsKIAkJMEZCNjU5MjMxMjA4QjREQjAwNDQ4
MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCNjU5MjIxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5m
by5oICovOyB9OwogCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJ
CTBGRjI0QTJFMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZXMuaCAqLzsgfTsKQEAgLTE1ODcsNiArMTU5NSwxNSBAQAogCQkwODlDMTY2
N0ZFODQxMTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5n
czsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE3NEFBMjE0MkE0Q0I2MDAzOTI1MEYg
LyogQVBJR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJR2Vv
bWV0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNzRBQTYxNDJBQUM2MTAw
MzkyNTBGIC8qIFdLR2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tHZW9tZXRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTk0
NzhEMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5o
OyBwYXRoID0gU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTk0NzhFMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgcGF0aCA9IFNjcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY1OTQ3OEYxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW07IHBhdGggPSBTY3JvbGxpbmcvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTk0Nzk0
MTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuY3BwOyBwYXRoID0gU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU5NDc5NTE4N0Iz
QjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5
Lmg7IHBhdGggPSBTY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjU5NDc5NjE4N0IzQjYwMDA0Mzc4NTcgLyog
UmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBSZW1vdGVTY3JvbGxpbmdUcmVlLmNwcDsgcGF0aCA9IFNjcm9sbGluZy9SZW1vdGVTY3Jv
bGxpbmdUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1OTQ3OTcxODdC
M0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUmVtb3RlU2Nyb2xsaW5nVHJlZS5oOyBwYXRoID0gU2Nyb2xsaW5nL1Jl
bW90ZVNjcm9sbGluZ1RyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1OTQ3
QTExODdCM0I3RDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA7IHBhdGggPSBTY3JvbGxpbmcvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNTk0N0EyMTg3QjNCN0QwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaDsgcGF0aCA9IFNjcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjI0QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkYy
NEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzIzNyw2ICszMjU0LDM2IEBACiAJCQl0YWJXaWR0aCA9IDg7CiAJCQl1c2VzVGFicyA9IDA7
CiAJCX07CisJCTBGNTk0NzhDMTg3QjNCMkEwMDQzNzg1NyAvKiBTY3JvbGxpbmcgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGNTk0NzhEMTg3QjNCM0Ew
MDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oICovLAorCQkJCTBGNTk0NzhF
MTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tZXNzYWdlcy5p
biAqLywKKwkJCQkwRjU5NDc4RjE4N0IzQjNBMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3IubW0gKi8sCisJCQkpOworCQkJbmFtZSA9IFNjcm9sbGluZzsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTBGNTk0NzkzMTg3QjNCNEMwMDQzNzg1NyAvKiBTY3Jv
bGxpbmcgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBG
NTk0Nzk0MTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5
LmNwcCAqLywKKwkJCQkwRjU5NDc5NTE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS5oICovLAorCQkJCTBGNTk0Nzk2MTg3QjNCNjAwMDQzNzg1NyAvKiBS
ZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCAqLywKKwkJCQkwRjU5NDc5NzE4N0IzQjYwMDA0Mzc4NTcg
LyogUmVtb3RlU2Nyb2xsaW5nVHJlZS5oICovLAorCQkJKTsKKwkJCW5hbWUgPSBTY3JvbGxpbmc7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwRjU5NDdBMDE4N0IzQjcxMDA0
Mzc4NTcgLyogU2Nyb2xsaW5nICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjU5NDdBMTE4N0IzQjdEMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgKi8sCisJCQkJMEY1OTQ3QTIxODdCM0I3RDAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCAqLywKKwkJCSk7CisJ
CQluYW1lID0gU2Nyb2xsaW5nOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
MTA1OEM3QjBGRUE1NTg1RTExQ0EyQ0JCIC8qIExpbmtlZCBGcmFtZXdvcmtzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM0OTgsNiArMzU0NSw3IEBACiAJ
CQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywKIAkJCQk1MUE4QTYwRDE2MjdG
MkFDMDAwRDkwRTkgLyogTmV0d29yayAqLywKIAkJCQkxQUFFMDU4QzEyNzlEQ0Q0MDA4NTI0MTgg
LyogUGx1Z2lucyAqLywKKwkJCQkwRjU5NDdBMDE4N0IzQjcxMDA0Mzc4NTcgLyogU2Nyb2xsaW5n
ICovLAogCQkJCUJDNjQ2OTZEMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5jcHAgKi8sCiAJ
CQkJQkM2NDY5NkUxMURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmggKi8sCiAJCQkJMUEzREQy
MDUxMjVFNUEyRjAwNDUxNUU2IC8qIEFQSUNsaWVudC5oICovLApAQCAtNDQzMyw2ICs0NDgxLDcg
QEAKIAkJCQkzMTA5OTk3NDE0NkM4QUE4MDAyOURFQjkgLyogTm90aWZpY2F0aW9ucyAoVXNlcikg
Ki8sCiAJCQkJMUE2RkI3QUExMUU2NEI0OTAwREIxMzcxIC8qIFBsdWdpbnMgKi8sCiAJCQkJMzMz
Njc2MkIxMzBDOTk3ODAwNkM5REUyIC8qIFJlc291cmNlQ2FjaGUgKi8sCisJCQkJMEY1OTQ3OEMx
ODdCM0IyQTAwNDM3ODU3IC8qIFNjcm9sbGluZyAqLywKIAkJCQkxQUFDNERERTE2QjFDQkY2MDA5
NDI1RTMgLyogU3RvcmFnZSAqLywKIAkJCQlCQzAzMkQ1RDEwRjQzNzIyMDA1OEMxNUEgLyogV2Vi
Q29yZVN1cHBvcnQgKi8sCiAJCQkJQkMwMzJENUUxMEY0MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2Ug
Ki8sCkBAIC00NTUwLDYgKzQ1OTksNyBAQAogCQkJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAv
KiBOZXR3b3JrICovLAogCQkJCTMxQTJFQzQwMTQ4OTk3MzcwMDgxMEQ3MSAvKiBOb3RpZmljYXRp
b25zICovLAogCQkJCTFBRUZDQzA1MTFEMDFGMzQwMDgyMTlEMyAvKiBQbHVnaW5zICovLAorCQkJ
CTBGNTk0NzkzMTg3QjNCNEMwMDQzNzg1NyAvKiBTY3JvbGxpbmcgKi8sCiAJCQkJMUE0NEI5NTgx
NkI3M0Y4QzAwQjdCQkQ4IC8qIFN0b3JhZ2UgKi8sCiAJCQkJQkNGNjlGQTExMTc2RDAxNDAwNDcx
QTUyIC8qIEFQSU5hdmlnYXRpb25EYXRhLmNwcCAqLywKIAkJCQlCQ0Y2OUZBMDExNzZEMDE0MDA0
NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuaCAqLywKQEAgLTU3NDAsNiArNTc5MCw3IEBACiAJ
CQkJMUFCNDc0RDgxODRENDNGRDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRkQyNzkxMUQxNkM4MTAwODIxOUQzIC8qIEFyZ3VtZW50
Q29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUZEMkY3MTFEMTgwN0IwMDgyMTlEMyAvKiBB
cmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1OTQ3OUQxODdCM0I2MDAwNDM3
ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1RyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYwQzRB
MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTc5RkQ5QzEzNEQzODA2MDAxNUI4ODMgLyogQXJndW1lbnRDb2RlcnNNYWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDMyREE2MTBGNDM3RDEwMDU4QzE1QSAvKiBBcmd1bWVudERlY29kZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtNTk0MSw2ICs1OTkyLDcgQEAKIAkJCQkxQTA0M0I1RTEyNEQ1
RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMDQzREMxMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE4RUZBNzExMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNTk0NzkwMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlGMzMxMkI4
NDRFMjAwOEZFOTg0IC8qIFBsdWdpblF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NENjIy
NzgxNzM5RDg2MzAwNUJEN0ZGIC8qIFBsdWdpblNhbmRib3hQcm9maWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC02MTEyLDYgKzYxNjQsNyBAQAogCQkJCTM3QzRDMDhEMTgxNEFDNUMwMDM2
ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxQTE5NDIx
ODI0RDI5MzAwRjMyQTVFIC8qIFdLTlNEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkz
M0QzQTNCQjEzMzk2MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY1OTQ3QTQxODdCM0I3RDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDNBM0NC
MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTkwOTg1NEVEMTJCQzRFMTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlT
YW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2OUZBMjExNzZEMDE0MDA0NzFBNTIgLyog
QVBJTmF2aWdhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtNjE5Miw2ICs2MjQ1LDcgQEAK
IAkJCQk1MTJGNThGODEyQTg4QTU0MDA2Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkE5NzZBMTgwRTA5QjgwMDM5QTE0OSAv
KiBEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0
NkMxQjExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RSZWYuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNTk0NzlCMTg3QjNCNjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M0QzA5NTE4MTRCOUU2MDAzNjg4
QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2
NDZDMUQxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCNDc0REExODRENDQyNTAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZVJl
c291cmNlTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTkxLDYgKzcyNDUsNyBAQAog
CQkJCUJDODE0N0FBMTJGNjRDREEwMDdCMkMzMiAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VQb2xpY3lD
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU5QzU1MUUxMzAwMDY0MTAwMjVDMEMyIC8q
IEluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0E4QzZBRjExRTNDMDg3MDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY1OTQ3QTMxODdCM0I3RDAwNDM3ODU3IC8qIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMzM0UwRDIxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxNERGNzgxMjBCNUI3OTAwODI2QzBDIC8qIEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNDlBNEExMUZG
QThDRTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MzE2LDYg
KzczNzEsNyBAQAogCQkJCTFBQUIwMzc5MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUREMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUUxMTY0
ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBM0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8q
IFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3
NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQlFMUI3ODQ3MzE2M0YyNTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW0gaW4gU291cmNlcyAqLywKQEAgLTc2MDgsNiArNzY2NCw3IEBACiAJCQkJMjkzRUJFQUMx
NjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMDE3
RDIwMTYyNjMzMDgwMDcwNTRGNSAvKiBXS0RPTVRleHRJdGVyYXRvci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBQjdENzhFMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGNTk0NzkyMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZCMTI0RkYwMjcwMDY4RjIw
QSAvKiBXS0Vycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ1NDhCMTMyRDgyNjgwMDU1
RDgxNiAvKiBXS0Vycm9yQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFNDY5NTkxMjE0RURG
NDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTc2MjYsNiArNzY4Myw3IEBACiAJCQkJMkQ4OTQ5RjAxODIwNDRGNjAwRTg5OEFBIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTAzMkYxRDE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQ0Y2QUMyMTJDOTFGMzQw
MDhGOUMzNSAvKiBXS0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNTk0NzlBMTg3QjNC
NjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQ0Y2QUM5MTJDOTFGNTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM4RTI5M0ExMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTlFMTBBMTMxNUNEMTgwMDlFNzAzMSAvKiBXS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjUwY2M2NWU5ZTcyNDFiZTk0NDNmMDViYTMyNGQy
NGQ4MGM2N2QyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDgxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcl9oCisjZGVmaW5l
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yX2gKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGlu
Z0NvbnN0cmFpbnRzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOwor
Y2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZTsKK2NsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb247CisK
K2NsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yIDogcHVibGljIFdlYkNvcmU6OkFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I+IGNy
ZWF0ZShXZWJQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKSk7CisgICAgfQorCisgICAgdm9pZCBidWls
ZFRyYW5zYWN0aW9uKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24mKTsKKwor
cHJpdmF0ZToKKyAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcihXZWJQYWdlKik7CisgICAg
dmlydHVhbCB+UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBpc1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIAorICAgIC8vIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCisgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU+IGNyZWF0ZVNjcm9sbGluZ1RyZWVO
b2RlKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVUeXBlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihX
ZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IpIE9WRVJSSURFOworCisgICAgLy8gQ29yZUlQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKKyAgICAKKyAg
ICAvLyBSZXNwb25kIHRvIFVJIHByb2Nlc3MgY2hhbmdlcy4KKyAgICB2b2lkIHNjcm9sbFBvc2l0
aW9uQ2hhbmdlZEZvck5vZGUoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbik7CisKKyAgICBXZWJQYWdlKiBtX3dlYlBhZ2U7
Cit9OworCitTQ1JPTExJTkdfQ09PUkRJTkFUT1JfVFlQRV9DQVNUUyhSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvciwgaXNSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcigpKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
U2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhmNmRjNTlmNzY2NzdjNzNkN2RiMmFmMmIxNGI5OTk1YjE4MGM2NDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI1IEBACisjIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yIHsKKyAgICBTY3JvbGxQb3NpdGlvbkNoYW5nZWRGb3JOb2RlKHVpbnQ2NF90IG5v
ZGVJRCwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbik7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2N2ZjMTliZTZlZDMxY2IxYTA5ZTky
ZGJiNWU3NGVhMDc2ZTM5NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQpAQCAtMCwwICsx
LDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5oIgorCisjaW1wb3J0ICJBcmd1bWVudENvZGVycy5oIgorI2lt
cG9ydCAiR3JhcGhpY3NMYXllckNBUmVtb3RlLmgiCisjaW1wb3J0ICJNZXNzYWdlRGVjb2Rlci5o
IgorI2ltcG9ydCAiTWVzc2FnZUVuY29kZXIuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLmgiCisjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2Vz
LmgiCisjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmgiCisj
aW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNp
bXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgor
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1JlbmRlclZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcihXZWJQYWdlKiBwYWdl
KQorICAgIDogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlLT5jb3JlUGFnZSgpKQorICAg
ICwgbV93ZWJQYWdlKHBhZ2UpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7Cit9CisKK1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp+UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKQoreworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdl
LT5wYWdlSUQoKSk7Cit9CisKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVk
dWxlVHJlZVN0YXRlQ29tbWl0KCkKK3sKKyAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPnNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7Cit9CisKK1Bhc3NPd25QdHI8U2Nyb2xsaW5n
VHJlZU5vZGU+IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVTY3JvbGxpbmdUcmVl
Tm9kZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKQoreworICAgIC8vIFdlIG5l
dmVyIGNyZWF0ZWQgc2Nyb2xsaW5nIG5vZGVzIGluIHRoZSBXZWJQcm9jZXNzIHdpdGggcmVtb3Rl
IHNjcm9sbGluZy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6aXNSdWJiZXJCYW5kSW5Q
cm9ncmVzcygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IG5lZWQgdG8gbWFpbnRhaW4gc3RhdGUg
aW4gdGhlIHdlYiBwcm9jZXNzPworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5p
bmdCZWhhdmlvcikKK3sKKyAgICAvLyBGSVhNRTogc2VuZCB0byB0aGUgVUkgcHJvY2Vzcy4KK30K
Kwordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6YnVpbGRUcmFuc2FjdGlvbihSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICB0
cmFuc2FjdGlvbi5zZXRTdGF0ZVRyZWVUb0VuY29kZShzY3JvbGxpbmdTdGF0ZVRyZWUoKS0+Y29t
bWl0KExheWVyUmVwcmVzZW50YXRpb246OlBsYXRmb3JtTGF5ZXJJRFJlcHJlc2VudGF0aW9uKSk7
Cit9CisKKy8vIE5vdGlmaWNhdGlvbiBmcm9tIHRoZSBVSSBwcm9jZXNzIHRoYXQgd2Ugc2Nyb2xs
ZWQuCit2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxQb3NpdGlvbkNoYW5n
ZWRGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9s
bFBvc2l0aW9uKQoreworICAgIHNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25Gb3JOb2RlKG5v
ZGVJRCwgcm91bmRlZEludFBvaW50KHNjcm9sbFBvc2l0aW9uKSwgZmFsc2UgLyogRklYTUUgKi8s
IFN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>
<flag name="review"
          id="244149"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="244156"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>