<?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>122718</bug_id>
          
          <creation_ts>2013-10-13 00:24:38 -0700</creation_ts>
          <short_desc>Make element predicates and type casts work more consistently on more types</short_desc>
          <delta_ts>2019-02-06 09:04:02 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939217</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-13 00:24:38 -0700</bug_when>
    <thetext>Make element predicates and type casts work more consistently on more types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939223</commentid>
    <comment_count>1</comment_count>
      <attachid>214089</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-13 00:54:08 -0700</bug_when>
    <thetext>Created attachment 214089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939288</commentid>
    <comment_count>2</comment_count>
      <attachid>214089</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-13 09:14:27 -0700</bug_when>
    <thetext>Comment on attachment 214089
Patch

Clearing flags on attachment: 214089

Committed r157375: &lt;http://trac.webkit.org/changeset/157375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939289</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-13 09:14:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503087</commentid>
    <comment_count>4</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:04:02 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214089</attachid>
            <date>2013-10-13 00:54:08 -0700</date>
            <delta_ts>2013-10-13 09:14:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122718-20131013005409.patch</filename>
            <type>text/plain</type>
            <size>88405</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjNWMzNjYzOTJjYTU1
M2NkYWY5NzI1YTI5NTRjOWJlY2I3ZGQ0OC4uOTQ0YmMzNDhmNmVmYTE0NGY2Y2MzOWRmZjlkMDQw
NWU2MTRiMDgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxMy0xMC0xMyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBlbGVtZW50IHByZWRp
Y2F0ZXMgYW5kIHR5cGUgY2FzdHMgd29yayBtb3JlIGNvbnNpc3RlbnRseSBvbiBtb3JlIHR5cGVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI3MTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9D
b250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc3NlcnRDb25u
ZWN0ZWRTdWJyYW1lQ291bnRJc0NvbnNpc3RlbnQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRGcmFtZURpc2Nvbm5lY3Rv
cjo6Y29sbGVjdEZyYW1lT3duZXJzKToKKyAgICAgICAgVXBkYXRlZCBmb3IgbmFtZSBjaGFuZ2Uu
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmFkb3B0Tm9kZSk6IFVzZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaXNwYXRjaEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9y
RXZlbnQpOiBVcGRhdGVkIGZvcgorICAgICAgICB0eXBlY2FzdCBuYW1lIGNoYW5nZSBhbmQgYWxz
byB0byBjYXN0IGEgcmVmZXJlbmNlLCBzaW5jZSB3ZSBkb24ndCBvdmVybG9hZAorICAgICAgICBm
b3IgcG9pbnRlcnMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSG92ZXJBY3Rp
dmVTdGF0ZSk6IERpdHRvLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaDogTWFkZSB0aGUgaXNF
bGVtZW50T2ZUeXBlIGZ1bmN0aW9ucyB0YWtlIHJlZmVyZW5jZXMgaW5zdGVhZAorICAgICAgICBv
ZiBwb2ludGVycy4gQWxzbyB1c2UgY29uc3QgaW4gdGhlIHR5cGUgdGVtcGxhdGUgYXJndW1lbnQu
IFRoZXNlIGNoYW5nZXMgZ28KKyAgICAgICAgaGFuZCBpbiBoYW5kIHdpdGggdGhlIGNoYW5nZXMg
aW4gdGhlIGdlbmVyYXRlZCBjb2RlIGFuZCBhbGwgdGhlIGNsYXNzZXMuCisgICAgICAgIEFsc28g
dXNlIGEgYml0IG9mIG51bGxwdHIuCisKKyAgICAgICAgKiBkb20vRWxlbWVudEl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlKTogR290IHJpZCBv
ZiB0aGUgRWxlbWVudFR5cGVXaXRoQ29uc3QKKyAgICAgICAgbmFtaW5nIHNpbmNlIHRoaXMgd29y
a3Mgd2l0aCBvciB3aXRob3V0IGNvbnN0LiBBZGRlZCBjb25zdCB0byB0aGUgY2FsbCBzaXRlCisg
ICAgICAgIGZvciBpc0VsZW1lbnRPZlR5cGUsIGJlY2F1c2UgaXQgd29ya3MgdGhhdCB3YXkgbm93
LgorCisgICAgICAgICogZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYXZlcnNhbDo6Zmlyc3RDaGlsZFRlbXBsYXRlKTogQWRkIGNvbnN0IHRvIHRoZSB0eXBlIHdo
ZW4gY2FsbGluZworICAgICAgICBpc0VsZW1lbnRPZlR5cGUuIEFsb25nIHdpdGggdGhlIGNvcnJl
c3BvbmRpbmcgY2hhbmdlcywgdGhpcyBtYWtlcyB0aGVzZQorICAgICAgICB0ZW1wbGF0ZXMgd29y
ayBmb3IgY29uc3QgdHlwZXMuCisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw6Omxhc3RDaGls
ZFRlbXBsYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw6OmZpcnN0V2l0
aGluVGVtcGxhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDo6bGFzdFdp
dGhpblRlbXBsYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw6Om5leHRU
ZW1wbGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsOjpwcmV2aW91c1Rl
bXBsYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw6Om5leHRTaWJsaW5n
VGVtcGxhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDo6cHJldmlvdXNT
aWJsaW5nVGVtcGxhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDo6bmV4
dFNraXBwaW5nQ2hpbGRyZW5UZW1wbGF0ZSk6IERpdHRvLgorCisgICAgICAgICogZG9tL05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aGFuZGxlTG9jYWxFdmVudHMpOiBDaGVjayBp
c0VsZW1lbnROb2RlIGFuZCB0aGVuIGNhbGwgdGhlCisgICAgICAgIGlzRGlzYWJsZWRGb3JtQ29u
dHJvbCBtZW1iZXIgZnVuY3Rpb24sIHNpbmNlIHdlIG5vIGxvbmdlciBoYXZlIGEgaGVscGVyIHRo
YXQKKyAgICAgICAgdGFrZXMgYSBub2RlLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6d2lsbFJl
c3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OndpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cyk6IERpdHRvLgorCisgICAgICAgICogZG9t
L1BzZXVkb0VsZW1lbnQuaDogVXNlIHNvbWUgbnVsbHB0ci4gQWRkZWQgYW4gaXNQc2V1ZG9FbGVt
ZW50IGZ1bmN0aW9uCisgICAgICAgIHRoYXQgdGhlIEVMRU1FTlRfVFlQRV9DQVNUUyBtYWNybyBj
YW4gdXNlLCBhbmQgYWxzbyB1c2VkIHRoYXQgbWFjcm8gdG8gbWFrZQorICAgICAgICB0aGUgdG9Q
c2V1ZG9FbGVtZW50IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIGEgaGFuZC13cml0dGVuIGxvY2FsIHZh
cmlhbnQuCisKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50VHlw
ZUhlbHBlcnMpOiBBZGRlZCB1bmltcGxlbWVudGVkIHZlcnNpb25zIG9mIHRoZSBlbGVtZW50IHBy
ZWRpY2F0ZQorICAgICAgICBmdW5jdGlvbnMgdGhhdCByZXR1cm4gdm9pZCB0byBjYXRjaCB1bm5l
Y2Vzc2FyeSBydW50aW1lIGNoZWNrcyBvZiB0eXBlcworICAgICAgICB0aGF0IGFyZSBhbHJlYWR5
IGtub3duIGF0IGNvbXBpbGUgdGltZS4gQWRkZWQgYXNzZXJ0aW9ucyB0byB0aGUgcG9pbnRlcgor
ICAgICAgICBvdmVybG9hZHMgb2YgdGhlIHByZWRpY2F0ZXMuIE1heWJlIGxhdGVyIHdlIGNhbiBk
ZWxldGUgdGhlbS4gQWRkZWQgY29uc3QKKyAgICAgICAgdG8gdGhlIGlzRWxlbWVudE9mIHRlbXBs
YXRlIGFyZ3VtZW50cyB0byBtYWtlIHRoZXNlIHdvcmsgd2l0aCBib3RoIGNvbnN0CisgICAgICAg
IGFuZCBub24tY29uc3QuIFB1dCBvdmVybG9hZHMgaW4gYSBjb25zaXN0ZW50IG9yZGVyLCBtb3N0
IHNwZWNpZmljIGNsYXNzCisgICAgICAgIGZpcnN0LCB0aGVuIGxlc3Mgc3BlY2lmaWMuIENoYW5n
ZWQgaXNFbGVtZW50T2ZUeXBlIHRvIHRha2UgcmVmZXJlbmNlcworICAgICAgICByYXRoZXIgdGhh
biBwb2ludGVycy4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uRm9yQ29tbWFuZCk6IFVwZGF0ZWQgdG8gcGFzcyBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdE1hcmthYmxlKTogRGl0dG8u
CisKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOiBUd2Vha2VkIGEgY29t
bWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKTogVXBkYXRlZCBmb3IgbmFtZSBj
aGFuZ2UgYW5kIHRvCisgICAgICAgIHBhc3MgYSByZWZlcmVuY2UuCisKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp0cmFuc2xh
dGUpOiBSZW1vdmVkIEZJWE1FIGFuZCBjb25zdF9jYXN0IHNpbmNlIHRoZQorICAgICAgICBwcm9i
bGVtIGlzIGZpeGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFs
aXR5KTogVXNlIGEgcmVmZXJlbmNlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOiBV
c2UgY29uc3QgaW4gdGhlIHR5cGUgb2YgdGhlIGlzRWxlbWVudE9mVHlwZSBmdW5jdGlvbnMuCisg
ICAgICAgIFVzZSByZWZlcmVuY2VzIGZvciBhbGwgdGhlIGFyZ3VtZW50cywgbm90IHBvaW50ZXJz
LgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OnJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKTogVXNl
IGRvY3VtZW50VmVyc2lvbgorICAgICAgICBpbnN0ZWFkIG9mIGRvY1ZlcnNpb24gZm9yIGxvY2Fs
IHZhcmlhYmxlIG5hbWUuIFVzZSBlbGVtZW50RGVzY2VuZGFudHMgaW5zdGVhZAorICAgICAgICBv
ZiBlbGVtZW50VHJhdmVyc2FsLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxlbWVu
dDo6bGVuZ3RoKTogVXNlIGxlbmd0aCBpbnN0ZWFkIG9mIGxlbiBmb3IgbmFtZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOiBQdXQgcHJlZGljYXRlcyBpbnRvIHRo
ZSBzdGFuZGFyZCBmb3JtYXQgYW5kCisgICAgICAgIGRpZCB0aGVtIG9uIHNpbmdsZSBsaW5lcy4g
QWRkZWQgRUxFTUVOVF9UWVBFX0NBU1RTIHNvIHdlIGdldCBzdGFuZGFyZCBjYXN0cy4KKyAgICAg
ICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg6IERpdHRvLgorICAgICAgICAqIGh0bWwv
SFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6IERpdHRvLCBidXQgY2hhbmdlZCB0aGUgbmFtZSB0byBt
YXRjaCB0aGUgY2xhc3MsCisgICAgICAgIHNvIGl0J3Mgbm93IGlzSFRNTEZyYW1lT3duZXJFbGVt
ZW50IGFuZCB0b0hUTUxGcmFtZU93bmVyRWxlbWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTExh
YmVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlQXNTdXBwb3J0ZWRMYWJlbGFi
bGVFbGVtZW50KTogVXBkYXRlZCB0byB1c2UgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5oOiBQdXQgcHJlZGljYXRlcyBpbnRvIHRoZSBzdGFuZGFyZCBmb3Jt
YXQgYW5kIGRpZAorICAgICAgICB0aGVtIG9uIHNpbmdsZSBsaW5lcy4gQWRkZWQgRUxFTUVOVF9U
WVBFX0NBU1RTIHNvIHdlIGdldCBzdGFuZGFyZCBjYXN0cy4KKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5FbGVtZW50Lmg6IERpdHRvLiBBbHNvIG1hcmtlZCBpc1BsdWdpbkVsZW1lbnQgRklOQUwu
CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwOiBSZW1vdmVkIG9sZCBoYW5kLXdyaXR0
ZW4gY2FzdCBmdW5jdGlvbnMuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5o
OiBEaWQgc2FtZSBwcmVkaWNhdGUgYW5kIEVMRU1FTlRfVFlQRV9DQVNUUworICAgICAgICBjaGFu
Z2VzLiBBbHNvIGZpeGVkIHVwIHRoZSBvcmRlcmluZyBvZiBmdW5jdGlvbnMgaW4gdGhlIGNsYXNz
LgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wpOiBVcGRhdGVkIHRvIHVzZSBy
ZWZlcmVuY2VzIGFuZCBudWxscHRyLgorCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudC5oOiBEaWQgc2FtZSBwcmVkaWNhdGUgYW5kIEVMRU1FTlRfVFlQRV9DQVNUUy4K
KworICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJhY2tFbGVtZW50OjpyZW1vdmVkRnJvbSk6IENhbGwgaXNIVE1MTWVkaWFFbGVtZW50
IGJ5IGl0cyBuZXcgbmFtZS4KKworICAgICAgICAqIGh0bWwvTGFiZWxhYmxlRWxlbWVudC5oOiBE
aWQgc2FtZSBwcmVkaWNhdGUgYW5kIEVMRU1FTlRfVFlQRV9DQVNUUy4KKworICAgICAgICAqIGh0
bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOiBNYWRlIGlzV2ViVlRURWxlbWVudCBwcml2YXRlLiBD
aGFuZ2VkIHRoZSBhcmd1bWVudAorICAgICAgICB0eXBlIG9mIHNldExhbmd1YWdlIHRvIGNvbnN0
IEF0b21pY1N0cmluZyYgdG8gYXZvaWQgZXhjZXNzIHJlZmVyZW5jZSBjb3VudCBjaHVybi4KKyAg
ICAgICAgRGlkIHRoZSBwcmVkaWNhdGUgYW5kIHR5cGUgY2FzdHMgdGhpbmcuCisKKyAgICAgICAg
KiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6IFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2VzIGFu
ZCB1c2UgcmVmZXJlbmNlcy4KKworICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6IERp
ZCBzYW1lIHByZWRpY2F0ZSBhbmQgRUxFTUVOVF9UWVBFX0NBU1RTLgorCisgICAgICAgICogcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVy
OjpmaW5kRm9jdXNhYmxlRWxlbWVudERlc2NlbmRpbmdEb3duSW50b0ZyYW1lRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50
T3JkZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVz
KToKKyAgICAgICAgVXBkYXRlIGZvciBuYW1lIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmQuaDogUmVtb3ZlZCB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOiBVcGRhdGVkIGZvciBuYW1lIGNoYW5n
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0
aXZlcyk6IFVzZSBlbGVtZW50IGl0ZXJhdG9yCisgICAgICAgIGFuZCBudWxscHRyLgorCisgICAg
ICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVXBkYXRlIGZvciBuYW1lIGNoYW5nZXMuCisKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTVkdB
bmltYXRlRWxlbWVudCk6IE1vdmVkIGhlcmUgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBpbmxpbmUg
c3VjaAorICAgICAgICBhIGxvbmcgbGlzdCBvZiB0YWcgbmFtZXMuCisKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZUVsZW1lbnQuaDogTWFya2VkIGEgbG90IG1vcmUgdmlydHVhbCBmdW5jdGlvbnMg
T1ZFUlJJREUuCisgICAgICAgIERpZCBwcmVkaWNhdGUgYW5kIEVMRU1FTlRfVFlQRV9DQVNUUyBj
aGFuZ2VzLCBidXQgZGlkIG5vdCBtYWtlIHRoZSBwcmVkaWNhdGUKKyAgICAgICAgYmUgaW5saW5l
ZC4KKworICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6IERpZCBwcmVkaWNhdGUgYW5kIEVMRU1F
TlRfVFlQRV9DQVNUUyBjaGFuZ2VzLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaDogRGl0dG8uCisKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHR3JhZGllbnRFbGVtZW50KTogTW92
ZWQgaGVyZSBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZQorICAgICAgICB0aGUgdHdvIHRh
ZyBuYW1lcy4KKworICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDogRGlkIHByZWRp
Y2F0ZSBhbmQgRUxFTUVOVF9UWVBFX0NBU1RTIGNoYW5nZXMuCisgICAgICAgICogc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5oOiBEaXR0by4KKworICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQp
OiBUb29rIG91dCBhc3NlcnRpb24sIHNpbmNlIGl0CisgICAgICAgIHdhcyBhc3NlcnRpbmcgdGhl
IGNsYXNzIG9mIHRoZSBvYmVqY3Qgd2UganVzdCBjcmVhdGVkLgorCisgICAgICAgICogc3ZnL1NW
R1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHUG9seUVsZW1lbnQpOiBN
b3ZlZCBoZXJlIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gaW5saW5lIHRoZQorICAgICAgICB0d28g
dGFnIG5hbWVzLgorCisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50Lmg6IERpZCBwcmVkaWNh
dGUgYW5kIEVMRU1FTlRfVFlQRV9DQVNUUyBjaGFuZ2VzLgorICAgICAgICAqIHN2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuaDogRGl0dG8uCisKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0
Q29uZGl0aW9ucyk6IFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2VzLAorICAgICAgICB0byB1c2UgcmVm
ZXJlbmNlcyBhbmQgbnVsbHB0ciwgYW5kIHRvIGdldCByaWQgb2YgYSBub24taGVscGZ1bCBsb2Nh
bC4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaDogQWRkZWQgYSB2
aXJ0dWFsIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEKKyAgICAgICAgZ2l2ZW4gU1ZHRWxlbWVudCBp
cyBhbiBTVkdTTUlMRWxlbWVudCBzbyB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGEgbG9uZyBsaXN0
CisgICAgICAgIG9mIHRhZyBuYW1lcyBpbnN0ZWFkLiBBbHNvIGRpZCB0aGUgcHJlZGljYXRlIGFu
ZCBFTEVNRU5UX1RZUEVfQ0FTVFMgY2hhbmdlcy4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVy
KTogVXBkYXRlZCB0byB1c2UgcmVmZXJlbmNlcy4KKwogMjAxMy0xMC0xMyAgQW5kcmVhcyBLbGlu
ZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyTGF5ZXI6IENoZWNrIFNWRyBi
aXQgaW5zdGVhZCBvZiBlbGVtZW50IG5hbWVzcGFjZSBpbiBpc1RyYW5zcGFyZW50KCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCAxNjIz
ODFkYjEwMmZhODY3M2RjODZiYTZmZmMxZWNhYmEwNTg0ZDJjLi4xNWMyYjk4OWViOWU4YjFjYjNi
OGI5YmE4MjVmM2RkYzA4ZTdhMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB1bnNpZ25lZCBhc3NlcnRD
b25uZWN0ZWRTdWJyYW1lQ291bnRJc0NvbnNpc3RlbnQoTm9kZSYgbm9kZSkKICAgICB1bnNpZ25l
ZCBjb3VudCA9IDA7CiAKICAgICBpZiAobm9kZS5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAg
aWYgKG5vZGUuaXNGcmFtZU93bmVyRWxlbWVudCgpICYmIHRvRnJhbWVPd25lckVsZW1lbnQobm9k
ZSkuY29udGVudEZyYW1lKCkpCisgICAgICAgIGlmIChub2RlLmlzRnJhbWVPd25lckVsZW1lbnQo
KSAmJiB0b0hUTUxGcmFtZU93bmVyRWxlbWVudChub2RlKS5jb250ZW50RnJhbWUoKSkKICAgICAg
ICAgICAgIGNvdW50Kys7CiAKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b0VsZW1l
bnQobm9kZSkuc2hhZG93Um9vdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaAppbmRleCBhMTM1YjFmNGMyZmY3NWVjMmZlZjkyYTBkMGNjODZhMjUzMjU5
NzM3Li41NjE3MjI3NDkzMDJjMWIxODhmNjVhZmNmNGEzNzRkYjYzYTA4MGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMjk0LDcgKzI5NCw3
IEBAIGlubGluZSB2b2lkIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6OmNvbGxlY3RGcmFtZU93bmVy
cyhDb250YWluZXJOb2RlJiByb290KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocm9vdC5p
c0hUTUxFbGVtZW50KCkgJiYgcm9vdC5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCi0gICAgICAgIG1f
ZnJhbWVPd25lcnMuYXBwZW5kKHRvRnJhbWVPd25lckVsZW1lbnQocm9vdCkpOworICAgICAgICBt
X2ZyYW1lT3duZXJzLmFwcGVuZCh0b0hUTUxGcmFtZU93bmVyRWxlbWVudChyb290KSk7CiAKICAg
ICBmb3IgKEVsZW1lbnQqIGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZCgmcm9v
dCk7IGNoaWxkOyBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSkK
ICAgICAgICAgY29sbGVjdEZyYW1lT3duZXJzKCpjaGlsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA4ZmU2MTc5NmI1YTczNWE0MTRmMDExMGQyYmU2ZmQ4OTc1MmQxMjNlLi4xODVkZWIy
NTdhZWUzMGFlYmUwMDVjY2FlYjg3MWFiYjM3YTg5YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTEwNTQsMTAgKzEwNTQsMTAgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRv
cHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAg
ICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Y2FzZSBBVFRSSUJVVEVfTk9ERTogeyAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgQXR0ciog
YXR0ciA9IHN0YXRpY19jYXN0PEF0dHIqPihzb3VyY2UuZ2V0KCkpOwotICAgICAgICBpZiAoYXR0
ci0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBhdHRyLT5vd25lckVsZW1lbnQoKS0+cmVt
b3ZlQXR0cmlidXRlTm9kZShhdHRyLCBlYyk7Ci0gICAgICAgIGF0dHItPnNldFNwZWNpZmllZCh0
cnVlKTsKKyAgICAgICAgQXR0ciYgYXR0ciA9IHN0YXRpY19jYXN0PEF0dHImPigqc291cmNlKTsK
KyAgICAgICAgaWYgKGF0dHIub3duZXJFbGVtZW50KCkpCisgICAgICAgICAgICBhdHRyLm93bmVy
RWxlbWVudCgpLT5yZW1vdmVBdHRyaWJ1dGVOb2RlKCZhdHRyLCBlYyk7CisgICAgICAgIGF0dHIu
c2V0U3BlY2lmaWVkKHRydWUpOwogICAgICAgICBicmVhazsKICAgICB9ICAgICAgIAogICAgIGRl
ZmF1bHQ6CkBAIC0xMDY2LDEwICsxMDY2LDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6
YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KLQogICAgICAgICBpZiAoc291cmNlLT5pc0ZyYW1lT3duZXJF
bGVtZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogZnJhbWVPd25l
ckVsZW1lbnQgPSB0b0ZyYW1lT3duZXJFbGVtZW50KHNvdXJjZS5nZXQoKSk7Ci0gICAgICAgICAg
ICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT50cmVlKCkuaXNEZXNjZW5kYW50T2YoZnJhbWVPd25l
ckVsZW1lbnQtPmNvbnRlbnRGcmFtZSgpKSkgeworICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJF
bGVtZW50JiBmcmFtZU93bmVyRWxlbWVudCA9IHRvSFRNTEZyYW1lT3duZXJFbGVtZW50KCpzb3Vy
Y2UpOworICAgICAgICAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+dHJlZSgpLmlzRGVzY2Vu
ZGFudE9mKGZyYW1lT3duZXJFbGVtZW50LmNvbnRlbnRGcmFtZSgpKSkgewogICAgICAgICAgICAg
ICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICAgICAgfQpAQCAtNTQxNyw4ICs1NDE2LDggQEAgdm9pZCBEb2N1bWVu
dDo6ZGlzcGF0Y2hGdWxsU2NyZWVuQ2hhbmdlT3JFcnJvckV2ZW50KERlcXVlPFJlZlB0cjxOb2Rl
Pj4mIHF1ZXVlLAogICAgICAgICAgICAgcXVldWUuYXBwZW5kKGRvY3VtZW50RWxlbWVudCgpKTsK
IAogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgaWYgKHNob3VsZE5vdGlmeU1lZGlhRWxlbWVu
dCAmJiBpc01lZGlhRWxlbWVudChub2RlLmdldCgpKSkKLSAgICAgICAgICAgIHRvSFRNTE1lZGlh
RWxlbWVudChub2RlLmdldCgpKS0+ZW50ZXJlZE9yRXhpdGVkRnVsbHNjcmVlbigpOworICAgICAg
ICBpZiAoc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50ICYmIGlzSFRNTE1lZGlhRWxlbWVudCgqbm9k
ZSkpCisgICAgICAgICAgICB0b0hUTUxNZWRpYUVsZW1lbnQoKm5vZGUpLmVudGVyZWRPckV4aXRl
ZEZ1bGxzY3JlZW4oKTsKICNlbmRpZgogICAgICAgICBub2RlLT5kaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lLCB0cnVlLCBmYWxzZSkpOwogICAgIH0KQEAgLTU5MjEsNyArNTky
MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEVsZW1lbnQqIGluCiAgICAgICAgIH0KICAgICAgICAgLy8gVW5z
ZXQgaG92ZXJlZCBub2RlcyBpbiBzdWIgZnJhbWUgZG9jdW1lbnRzIGlmIHRoZSBvbGQgaG92ZXJl
ZCBub2RlIHdhcyBhIGZyYW1lIG93bmVyLgogICAgICAgICBpZiAob2xkSG92ZXJlZEVsZW1lbnQg
JiYgb2xkSG92ZXJlZEVsZW1lbnQtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkgewotICAgICAgICAg
ICAgaWYgKERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQgPSB0b0ZyYW1lT3duZXJFbGVtZW50KG9s
ZEhvdmVyZWRFbGVtZW50LmdldCgpKS0+Y29udGVudERvY3VtZW50KCkpCisgICAgICAgICAgICBp
ZiAoRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCA9IHRvSFRNTEZyYW1lT3duZXJFbGVtZW50KCpv
bGRIb3ZlcmVkRWxlbWVudCkuY29udGVudERvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgY29u
dGVudERvY3VtZW50LT51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKHJlcXVlc3QsIG51bGxwdHIsIGV2
ZW50KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGFhODFlZWZjNTE4
ZGM4MWQzZGE5NjM3ZDI4MTM2MTUxMGNjMzIxMjcuLmRhMDRiMjIzZjc4NDlhNGU2MWFkOGY3NzFm
MDczMzA2N2QyOTgyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNzEyLDE0ICs3MTIsOSBAQCB2
b2lkIHRvIyNFbGVtZW50Q2xhc3NOYW1lKGNvbnN0IEVsZW1lbnRDbGFzc05hbWUmKTsKIAogRUxF
TUVOVF9UWVBFX0NBU1RTKEVsZW1lbnQpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBib29s
IGlzRWxlbWVudE9mVHlwZShjb25zdCBFbGVtZW50Kik7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZT4gYm9vbCBpc0VsZW1lbnRPZlR5cGUoY29uc3QgTm9kZSogbm9kZSkgeyByZXR1cm4gbm9kZS0+
aXNFbGVtZW50Tm9kZSgpICYmIGlzRWxlbWVudE9mVHlwZTxUeXBlPih0b0VsZW1lbnQobm9kZSkp
OyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8RWxlbWVudD4oY29u
c3QgRWxlbWVudCopIHsgcmV0dXJuIHRydWU7IH0KLQotaW5saW5lIGJvb2wgaXNEaXNhYmxlZEZv
cm1Db250cm9sKGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVu
dE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOwotfQor
dGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IEVsZW1l
bnQmKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgaXNF
bGVtZW50T2ZUeXBlPGNvbnN0IFR5cGU+KHRvRWxlbWVudChub2RlKSk7IH0KK3RlbXBsYXRlIDw+
IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50Pihjb25zdCBFbGVtZW50
JikgeyByZXR1cm4gdHJ1ZTsgfQogCiBpbmxpbmUgYm9vbCBOb2RlOjpoYXNUYWdOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CkBAIC03MzgsMTMgKzczMywxMyBAQCBpbmxp
bmUgYm9vbCBOb2RlOjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QKIAogaW5saW5lIE5hbWVkTm9kZU1h
cCogTm9kZTo6YXR0cmlidXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzRWxlbWVudE5vZGUo
KSA/IHRvRWxlbWVudCh0aGlzKS0+YXR0cmlidXRlcygpIDogMDsKKyAgICByZXR1cm4gaXNFbGVt
ZW50Tm9kZSgpID8gdG9FbGVtZW50KHRoaXMpLT5hdHRyaWJ1dGVzKCkgOiBudWxscHRyOwogfQog
CiBpbmxpbmUgRWxlbWVudCogTm9kZTo6cGFyZW50RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQ29u
dGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOwotICAgIHJldHVybiBwYXJlbnQgJiYg
cGFyZW50LT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQocGFyZW50KSA6IDA7CisgICAgcmV0
dXJuIHBhcmVudCAmJiBwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChwYXJlbnQp
IDogbnVsbHB0cjsKIH0KIAogaW5saW5lIGJvb2wgRWxlbWVudDo6ZmFzdEhhc0F0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVy
YXRvci5oCmluZGV4IGE5ZGNkMGM0NjU0YzZjNmI5N2U0MzVhMGRiNTM0ZWRjZTJjMDJlZDcuLmE2
MTlmMWFmYTM5M2RhMWMxZDc4ZDE2ZDliMzFhMzcwMGZlMTFkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEl0ZXJhdG9yLmgKQEAgLTE2MywxNiArMTYzLDEyIEBAIGlubGluZSBFbGVtZW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJz
ZVByZXZpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGVXaXRoQ29uc3Q+Ci1pbmxpbmUgRWxlbWVudFR5cGVXaXRoQ29uc3QqIGZpbmRFbGVtZW50
QW5jZXN0b3JPZlR5cGUoY29uc3QgRWxlbWVudCYgY3VycmVudCkKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KK2lubGluZSBFbGVtZW50VHlwZSogZmluZEVsZW1lbnRBbmNlc3Rvck9m
VHlwZShjb25zdCBFbGVtZW50JiBjdXJyZW50KQogewotICAgIENvbnRhaW5lck5vZGUqIGFuY2Vz
dG9yID0gY3VycmVudC5wYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKGFuY2VzdG9yICYmIGFuY2Vz
dG9yLT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgLy8gTm9uLXJvb3QgY29udGFpbmVycyBh
cmUgYWx3YXlzIEVsZW1lbnRzLgotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50
KGFuY2VzdG9yKTsKLSAgICAgICAgaWYgKGlzRWxlbWVudE9mVHlwZTxFbGVtZW50VHlwZVdpdGhD
b25zdD4oZWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5
cGVXaXRoQ29uc3QqPihlbGVtZW50KTsKLSAgICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFy
ZW50Tm9kZSgpOworICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBjdXJyZW50LnBhcmVudEVs
ZW1lbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkg
eworICAgICAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqYW5jZXN0
b3IpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oYW5jZXN0
b3IpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTE4Myw5ICsxNzksNyBAQCBp
bmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VBbmNlcwogICAgIEFTU0VSVChtX2N1cnJlbnQpOwogICAgIEFTU0VS
VChtX2N1cnJlbnQgIT0gbV9yb290KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKLQogICAgIG1fY3VycmVudCA9IGZpbmRFbGVtZW50QW5jZXN0b3JPZlR5
cGU8RWxlbWVudFR5cGU+KCptX2N1cnJlbnQpOwotCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQu
CiAgICAgaWYgKCFtX2N1cnJlbnQpCkBAIC0zMDUsOSArMjk5LDcgQEAgaW5saW5lIEVsZW1lbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmEKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQobV9jdXJyZW50ICE9
IG1fcm9vdCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7
Ci0KICAgICBtX2N1cnJlbnQgPSBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPGNvbnN0IEVsZW1l
bnRUeXBlPigqbV9jdXJyZW50KTsKLQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAvLyBEcm9w
IHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgogICAgIGlm
ICghbV9jdXJyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2
ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKaW5kZXggYzg1
MmE4ZTdkN2YxNDZjMzI3NTg0NzMzZDJjYTczZjVkNGQ4ZWNhZi4uNWVhZWQzZWNiMmY1NjcwNzFk
YmQxZDliNzhlYTM0ODlhOWE3Zjc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRUcmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNh
bC5oCkBAIC0xNTUsNyArMTU1LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkVGVt
cGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQt
PmZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPEVsZW1l
bnRUeXBlPihub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0
IEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQpAQCAtMTY1
LDcgKzE2NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVt
ZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkVGVtcGxhdGUoQ3VycmVu
dFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQtPmxhc3RDaGlsZCgp
OwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8RWxlbWVudFR5cGU+KG5vZGUp
KQorICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+
KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQpAQCAtMTc1LDcgKzE3NSw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSog
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSog
Y3VycmVudCkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+Ojpm
aXJzdFdpdGhpbihjdXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZU
eXBlPEVsZW1lbnRUeXBlPihlbGVtZW50KSkKKyAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVt
ZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCiAgICAgICAgIGVsZW1lbnQg
PSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoZWxlbWVudCwgY3VycmVudCk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4oZWxlbWVudCk7CiB9CkBAIC0xODUsNyArMTg1LDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1
cnJlbnQpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IFRyYXZlcnNhbDxFbGVtZW50Pjo6bGFz
dFdpdGhpbihjdXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBl
PEVsZW1lbnRUeXBlPihlbGVtZW50KSkKKyAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50
T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCiAgICAgICAgIGVsZW1lbnQgPSBU
cmF2ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzKGVsZW1lbnQsIGN1cnJlbnQpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KGVsZW1lbnQpOwogfQpAQCAtMTk1LDcgKzE5NSw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSog
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50
KQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoY3Vy
cmVudCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxFbGVtZW50VHlw
ZT4oZWxlbWVudCkpCisgICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25z
dCBFbGVtZW50VHlwZT4oKmVsZW1lbnQpKQogICAgICAgICBlbGVtZW50ID0gVHJhdmVyc2FsPEVs
ZW1lbnQ+OjpuZXh0KGVsZW1lbnQpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlw
ZSo+KGVsZW1lbnQpOwogfQpAQCAtMjA1LDcgKzIwNSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBD
dXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGlu
KQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46Om5leHQoY3Vy
cmVudCwgc3RheVdpdGhpbik7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVudE9mVHlw
ZTxFbGVtZW50VHlwZT4oZWxlbWVudCkpCisgICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzRWxlbWVu
dE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKmVsZW1lbnQpKQogICAgICAgICBlbGVtZW50ID0g
VHJhdmVyc2FsPEVsZW1lbnQ+OjpuZXh0KGVsZW1lbnQsIHN0YXlXaXRoaW4pOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KGVsZW1lbnQpOwogfQpAQCAtMjE1LDcgKzIxNSw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSog
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3Vy
cmVudCkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVsZW1lbnQ+OjpwcmV2
aW91cyhjdXJyZW50KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPEVs
ZW1lbnRUeXBlPihlbGVtZW50KSkKKyAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkpCiAgICAgICAgIGVsZW1lbnQgPSBUcmF2
ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzKGVsZW1lbnQpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KGVsZW1lbnQpOwogfQpAQCAtMjI1LDcgKzIyNSw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVs
ZW1lbnRUeXBlPjo6cHJldmlvdXNUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCwgY29uc3Qg
Tm9kZSogc3RheVdpdGhpbikKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gVHJhdmVyc2FsPEVs
ZW1lbnQ+OjpwcmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAoZWxlbWVu
dCAmJiAhaXNFbGVtZW50T2ZUeXBlPEVsZW1lbnRUeXBlPihlbGVtZW50KSkKKyAgICB3aGlsZSAo
ZWxlbWVudCAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqZWxlbWVudCkp
CiAgICAgICAgIGVsZW1lbnQgPSBUcmF2ZXJzYWw8RWxlbWVudD46OnByZXZpb3VzKGVsZW1lbnQs
IHN0YXlXaXRoaW4pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KGVsZW1l
bnQpOwogfQpAQCAtMjM1LDcgKzIzNSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlw
ZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNpYmxp
bmdUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gY3Vy
cmVudC0+bmV4dFNpYmxpbmcoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBl
PEVsZW1lbnRUeXBlPihub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQpA
QCAtMjQ1LDcgKzI0NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGlu
ZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nVGVt
cGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQt
PnByZXZpb3VzU2libGluZygpOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8
RWxlbWVudFR5cGU+KG5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3Vz
U2libGluZygpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwog
fQpAQCAtMjU1LDcgKzI1NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlu
bGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNraXBwaW5nQ2hp
bGRyZW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oY3VycmVudCk7Ci0gICAgd2hpbGUg
KG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxFbGVtZW50VHlwZT4obm9kZSkpCisgICAgd2hpbGUg
KG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQogICAg
ICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4obm9kZSk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CkBAIC0yNjUsNyAr
MjY1LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRU
eXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlblRlbXBsYXRl
KEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5v
ZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjdXJyZW50LCBz
dGF5V2l0aGluKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPEVsZW1lbnRU
eXBlPihub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tp
cHBpbmdDaGlsZHJlbihub2RlLCBzdGF5V2l0aGluKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWxlbWVudFR5cGUqPihub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiYjA3OWYxMTAyMTk2
ZjAxMWViZmEwOGVkZWRjYzJjMmM3N2JlNmVlLi43NWJhYjU3MDZiNjVhZDVmNzI2MGYyNGU1YzMz
YjNiODI4MWM3MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMDI2LDcgKzIwMjYsNyBAQCB2b2lk
IE5vZGU6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50JiBldmVudCkKICAgICBpZiAoIWhhc0V2ZW50
VGFyZ2V0RGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNEaXNhYmxlZEZvcm1D
b250cm9sKHRoaXMpICYmIGV2ZW50LmlzTW91c2VFdmVudCgpKQorICAgIGlmIChpc0VsZW1lbnRO
b2RlKCkgJiYgdG9FbGVtZW50KCp0aGlzKS5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiBldmVu
dC5pc01vdXNlRXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmlyZUV2ZW50TGlzdGVu
ZXJzKCZldmVudCk7CkBAIC0yMTU4LDE0ICsyMTU4LDE4IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNl
TW92ZUV2ZW50cygpCiB7Ci0gICAgaWYgKGlzRGlzYWJsZWRGb3JtQ29udHJvbCh0aGlzKSkKKyAg
ICBpZiAoIWlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh0
b0VsZW1lbnQodGhpcyktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZW1v
dmVFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50
KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCk7CiB9CiAK
IGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewotICAgIGlmIChp
c0Rpc2FibGVkRm9ybUNvbnRyb2wodGhpcykpCisgICAgaWYgKCFpc0VsZW1lbnROb2RlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAodG9FbGVtZW50KHRoaXMpLT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBpc0NvbnRl
bnRFZGl0YWJsZShVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkgfHwgaGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLkRPTUFj
dGl2YXRlRXZlbnQpOwogfQpAQCAtMjE3Myw3ICsyMTc3LDkgQEAgYm9vbCBOb2RlOjp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Ub3VjaEV2
ZW50cygpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoaXNEaXNhYmxlZEZv
cm1Db250cm9sKHRoaXMpKQorICAgIGlmICghaXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKHRvRWxlbWVudCh0aGlzKS0+aXNEaXNhYmxlZEZvcm1Db250cm9s
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLnRvdWNobW92ZUV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
dG91Y2hjYW5jZWxFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnRvdWNo
ZW5kRXZlbnQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCmluZGV4IGMzNmFl
NzE4MDE4MmU3OWRjYjYzY2Q4MmY0ZGE3NjFiODcxNTZhMTEuLmI1OTk3MmY3YjMzMzg1NzBkOGUz
ZTI0YWVjYjViNTUwODBkMDRhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UHNldWRvRWxlbWVudCgpOwogCiAg
ICAgRWxlbWVudCogaG9zdEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hvc3RFbGVtZW50OyB9
Ci0gICAgdm9pZCBjbGVhckhvc3RFbGVtZW50KCkgeyBtX2hvc3RFbGVtZW50ID0gMDsgfQorICAg
IHZvaWQgY2xlYXJIb3N0RWxlbWVudCgpIHsgbV9ob3N0RWxlbWVudCA9IG51bGxwdHI7IH0KIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJl
cigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVS
UklERTsKQEAgLTc3LDIzICs3Nyw5IEBAIGlubGluZSBib29sIHBzZXVkb0VsZW1lbnRSZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUgJiYg
c3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FICYmIChzdHlsZS0+Y29udGVudERhdGEoKSB8fCAhc3R5
bGUtPnJlZ2lvblRocmVhZCgpLmlzRW1wdHkoKSk7CiB9CiAKLWlubGluZSBQc2V1ZG9FbGVtZW50
JiB0b1BzZXVkb0VsZW1lbnQoTm9kZSYgbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihub2RlLmlzUHNldWRvRWxlbWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UHNldWRvRWxlbWVudCY+KG5vZGUpOwotfQotCi1pbmxpbmUgUHNldWRvRWxlbWVudCog
dG9Qc2V1ZG9FbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oIW5vZGUgfHwgbm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxQc2V1ZG9FbGVtZW50Kj4obm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBQ
c2V1ZG9FbGVtZW50KiB0b1BzZXVkb0VsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBub2RlLT5pc1BzZXVkb0Vs
ZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFBzZXVkb0VsZW1lbnQqPihu
b2RlKTsKLX0KK3ZvaWQgaXNQc2V1ZG9FbGVtZW50KGNvbnN0IFBzZXVkb0VsZW1lbnQmKTsgLy8g
Q2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUg
dGltZS4KK2lubGluZSBib29sIGlzUHNldWRvRWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJl
dHVybiBub2RlLmlzUHNldWRvRWxlbWVudCgpOyB9CitFTEVNRU5UX1RZUEVfQ0FTVFMoUHNldWRv
RWxlbWVudCkKIAogfSAvLyBuYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRl
eCBjNjQ3YTVjMmI5N2UxMjY4YjBlZTZiZGMzOWM4YTBlOWMzYjQxNDJkLi5lZGMxYTJjNjcwNjQz
YmZjODU3MjRmODJhOGE5M2I5ODFlMGFkNTgzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApA
QCAtNjI2LDIwICs2MjYsMjUgQEAgc3ViIHByaW50VHlwZUhlbHBlcnMKICAgICAgICAgbXkgJGNs
YXNzID0gJHBhcnNlZFRhZ3N7JG5hbWV9e2ludGVyZmFjZU5hbWV9OwogICAgICAgICBteSAkY2hl
Y2tIZWxwZXIgPSAiaXMkY2xhc3MiOwogCi0gICAgICAgIHByaW50IEYgImNsYXNzICRjbGFzcztc
biI7CisgICAgICAgIHByaW50IEYgPDxFTkQKK2NsYXNzICRjbGFzczsKK3ZvaWQgJGNoZWNrSGVs
cGVyKGNvbnN0ICRjbGFzcyYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9m
IHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgordm9pZCAkY2hlY2tIZWxwZXIoY29uc3QgJGNs
YXNzKik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBh
dCBjb21waWxlIHRpbWUuCitFTkQKKyAgICAgICAgOwogCiAgICAgICAgIGlmICgkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewogICAgICAgICAgICAgaWYgKCRwYXJzZWRUYWdzeyRu
YW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKICAgICAgICAgICAgICAgICAj
IFdlIG5lZWQgdG8gY2hlY2sgZm9yIEhUTUxVbmtub3duRWxlbWVudCBpZiBpdCBtaWdodCBoYXZl
IGJlZW4gY3JlYXRlZCBieSB0aGUgZmFjdG9yeS4KICAgICAgICAgICAgICAgICBwcmludCBGIDw8
RU5ECiBpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuICFlbGVtZW50LmlzSFRNTFVua25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNM
b2NhbE5hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQotaW5s
aW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtZW50KSB7IHJldHVy
biAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9CitpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29u
c3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsgQVNTRVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNr
SGVscGVyKCplbGVtZW50KTsgfQogRU5ECiAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBpbmxpbmUgYm9vbCAkY2hl
Y2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFz
TG9jYWxOYW1lKEhUTUxOYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29sICRjaGVja0hl
bHBlcihjb25zdCBIVE1MRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVyKCpl
bGVtZW50KTsgfQoraW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEhUTUxFbGVtZW50KiBl
bGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsgcmV0dXJuICRjaGVja0hlbHBlcigqZWxlbWVudCk7
IH0KIEVORAogICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgIH0KQEAgLTY0Nyw4ICs2NTIs
OCBAQCBFTkQKICAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBpbmxpbmUgYm9vbCAkY2hl
Y2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCkg
JiYgJGNoZWNrSGVscGVyKHRvSFRNTEVsZW1lbnQobm9kZSkpOyB9CiBpbmxpbmUgYm9vbCAkY2hl
Y2tIZWxwZXIoY29uc3QgTm9kZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7IHJldHVybiAkY2hlY2tI
ZWxwZXIoKm5vZGUpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8
JGNsYXNzPihjb25zdCBIVE1MRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gJGNoZWNrSGVscGVy
KGVsZW1lbnQpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8JGNs
YXNzPihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IHJldHVybiAkY2hlY2tIZWxwZXIoZWxlbWVu
dCk7IH0KK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCAkY2xh
c3M+KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAkY2hlY2tIZWxwZXIoZWxl
bWVudCk7IH0KK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxjb25zdCAk
Y2xhc3M+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICRjaGVja0hlbHBlcihlbGVt
ZW50KTsgfQogRU5ECiAgICAgICAgICAgICAgICAgOwogCkBAIC02NTYsOSArNjYxLDkgQEAgRU5E
CiAgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBpbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29u
c3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KIGlubGluZSBib29sICRjaGVja0hl
bHBlcihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsgcmV0dXJuICRj
aGVja0hlbHBlcigqZWxlbWVudCk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBO
b2RlKiBub2RlKSB7IEFTU0VSVChub2RlKTsgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAm
JiAkY2hlY2tIZWxwZXIodG9FbGVtZW50KG5vZGUpKTsgfQogaW5saW5lIGJvb2wgJGNoZWNrSGVs
cGVyKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmICRj
aGVja0hlbHBlcih0b0VsZW1lbnQobm9kZSkpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBp
c0VsZW1lbnRPZlR5cGU8JGNsYXNzPihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IHJldHVybiAk
Y2hlY2tIZWxwZXIoZWxlbWVudCk7IH0KK2lubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBO
b2RlKiBub2RlKSB7IEFTU0VSVChub2RlKTsgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAm
JiAkY2hlY2tIZWxwZXIodG9FbGVtZW50KG5vZGUpKTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJv
b2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0ICRjbGFzcz4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkg
eyByZXR1cm4gJGNoZWNrSGVscGVyKGVsZW1lbnQpOyB9CiBFTkQKICAgICAgICAgICAgIDsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDIyMDA4MmNhNmY4ZDJhZjg4
ODNkYWE2ZTQ3YWI0NGMwYWE0Y2Y0NDYuLmFkNTYzZTk0MmZkOTU3YWY1YzY0YjRhMGUzMTg1OThj
OTg3NDNlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE2OSw3ICsxNjksNyBA
QCBWaXNpYmxlU2VsZWN0aW9uIEVkaXRvcjo6c2VsZWN0aW9uRm9yQ29tbWFuZChFdmVudCogZXZl
bnQpCiAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyBhIHRleHQgY29udHJvbCwgYW5kIHRoZSBjdXJy
ZW50IHNlbGVjdGlvbiBpcyBvdXRzaWRlIG9mIGl0cyBzaGFkb3cgdHJlZSwKICAgICAvLyB0aGVu
IHVzZSB0aGUgc2F2ZWQgc2VsZWN0aW9uIGZvciB0aGF0IHRleHQgY29udHJvbC4KICAgICBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCogdGV4dEZvcm1Db250cm9sT2ZTZWxlY3Rpb25TdGFydCA9
IGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChzZWxlY3Rpb24uc3RhcnQoKSk7Ci0gICAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRGcm9tQ29udHJvbE9mVGFyZ2V0ID0gaXNIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudChldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpKSA/IHRvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSkgOiAwOworICAg
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0RnJvbUNvbnRyb2xPZlRhcmdldCA9IGlz
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoKmV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCkpID8g
dG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpKSA6
IG51bGxwdHI7CiAgICAgaWYgKHRleHRGcm9tQ29udHJvbE9mVGFyZ2V0ICYmIChzZWxlY3Rpb24u
c3RhcnQoKS5pc051bGwoKSB8fCB0ZXh0RnJvbUNvbnRyb2xPZlRhcmdldCAhPSB0ZXh0Rm9ybUNv
bnRyb2xPZlNlbGVjdGlvblN0YXJ0KSkgewogICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IHRleHRGcm9tQ29udHJvbE9mVGFyZ2V0LT5zZWxlY3Rpb24oKSkKICAgICAgICAgICAgIHJl
dHVybiBWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNLCBzZWxlY3Rpb24u
aXNEaXJlY3Rpb25hbCgpKTsKQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZvaWQgRWRpdG9yOjp0b2dn
bGVVbmRlcmxpbmUoKQogdm9pZCBFZGl0b3I6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0g
ZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwotICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBp
c0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGZvY3VzZWRFbGVtZW50KSkgeworICAgIGlmIChm
b2N1c2VkRWxlbWVudCAmJiBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCpmb2N1c2VkRWxl
bWVudCkpIHsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlv
bikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdG9IVE1MRWxlbWVudChmb2N1c2VkRWxl
bWVudCktPnNldEF0dHJpYnV0ZShkaXJBdHRyLCBkaXJlY3Rpb24gPT0gTGVmdFRvUmlnaHRXcml0
aW5nRGlyZWN0aW9uID8gImx0ciIgOiAicnRsIik7CkBAIC0zMDc3LDcgKzMwNzcsNyBAQCBzdGF0
aWMgTm9kZSogZmluZEZpcnN0TWFya2FibGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+aXNUZXh0T3JMaW5lQnJlYWsoKSkK
ICAgICAgICAgICAgIHJldHVybiBub2RlOwotICAgICAgICBpZiAoaXNIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudChub2RlKSkKKyAgICAgICAgaWYgKGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQoKm5vZGUpKQogICAgICAgICAgICAgbm9kZSA9IHRvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQobm9kZSktPnZpc2libGVQb3NpdGlvbkZvckluZGV4KDEpLmRlZXBFcXVpdmFsZW50KCkuZGVw
cmVjYXRlZE5vZGUoKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKQogICAg
ICAgICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCmluZGV4IGQzMWU2NmE1NDkyOTM5YTZjYzgxYTZiMzA5
MmVhODZiNzdlZTE5OWYuLjU3ZGRmNDc2Yzk0OTRjZDI2MjZiMGQ0ZjkyYjVhODNjZDQyOTFiN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaApAQCAtNzIs
OCArNzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBiYWRJbnB1dCgpIGNvbnN0IHsgcmV0dXJuIGhh
c0JhZElucHV0KCk7IH0KICAgICBib29sIGN1c3RvbUVycm9yKCkgY29uc3Q7CiAKLSAgICAvLyBP
dmVycmlkZSBmdW5jdGlvbnMgZm9yIHBhdHRlck1pc21hdGNoLCByYW5nZU92ZXJmbG93LCByYW5n
ZXJVbmRlcmZsb3csCi0gICAgLy8gc3RlcE1pc21hdGNoLCB0b29Mb25nIGFuZCB2YWx1ZU1pc3Np
bmcgbXVzdCBjYWxsIHdpbGxWYWxpZGF0ZSBtZXRob2QuCisgICAgLy8gSW1wbGVtZW50YXRpb25z
IG9mIHBhdHRlcm5NaXNtYXRjaCwgcmFuZ2VPdmVyZmxvdywgcmFuZ2VyVW5kZXJmbG93LCBzdGVw
TWlzbWF0Y2gsIHRvb0xvbmcgYW5kIHZhbHVlTWlzc2luZyBtdXN0IGNhbGwgd2lsbFZhbGlkYXRl
LgogICAgIHZpcnR1YWwgYm9vbCBoYXNCYWRJbnB1dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxv
dygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4IDEy
YmExOTU2MjFmNjI5MjYwZWQ5MDVhZjQ4NGNkMGRjNzEyMjRlOWMuLmRiODdjZTYzYWI2YmQ5YTlj
MTczZDM0MWFlNTI2MmQ4NGY0NDdiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxl
bWVudC5jcHAKQEAgLTE2NSwxMiArMTY1LDEyIEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgSFRNTEJvZHlFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYKICAg
ICAvLyBtYWdpY2FsbHkgYXBwZWFyIG9uIHRoZSA8Ym9keT4gb2YgYWxsIGRvY3VtZW50cyBlbWJl
ZGRlZCB0aHJvdWdoIDxpZnJhbWU+IG9yIDxmcmFtZT4uCiAgICAgLy8gRklYTUU6IFBlcmhhcHMg
dGhpcyBjb2RlIHNob3VsZCBiZSBpbiBhdHRhY2goKSBpbnN0ZWFkIG9mIGhlcmUuCiAgICAgRWxl
bWVudCogb3duZXJFbGVtZW50ID0gZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKTsKLSAgICBpZiAo
b3duZXJFbGVtZW50ICYmIGlzSFRNTEZyYW1lRWxlbWVudEJhc2Uob3duZXJFbGVtZW50KSkgewot
ICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZSogb3duZXJGcmFtZUVsZW1lbnQgPSB0b0hUTUxG
cmFtZUVsZW1lbnRCYXNlKG93bmVyRWxlbWVudCk7Ci0gICAgICAgIGludCBtYXJnaW5XaWR0aCA9
IG93bmVyRnJhbWVFbGVtZW50LT5tYXJnaW5XaWR0aCgpOworICAgIGlmIChvd25lckVsZW1lbnQg
JiYgaXNIVE1MRnJhbWVFbGVtZW50QmFzZSgqb3duZXJFbGVtZW50KSkgeworICAgICAgICBIVE1M
RnJhbWVFbGVtZW50QmFzZSYgb3duZXJGcmFtZUVsZW1lbnQgPSB0b0hUTUxGcmFtZUVsZW1lbnRC
YXNlKCpvd25lckVsZW1lbnQpOworICAgICAgICBpbnQgbWFyZ2luV2lkdGggPSBvd25lckZyYW1l
RWxlbWVudC5tYXJnaW5XaWR0aCgpOwogICAgICAgICBpZiAobWFyZ2luV2lkdGggIT0gLTEpCiAg
ICAgICAgICAgICBzZXRJbnRlZ3JhbEF0dHJpYnV0ZShtYXJnaW53aWR0aEF0dHIsIG1hcmdpbldp
ZHRoKTsKLSAgICAgICAgaW50IG1hcmdpbkhlaWdodCA9IG93bmVyRnJhbWVFbGVtZW50LT5tYXJn
aW5IZWlnaHQoKTsKKyAgICAgICAgaW50IG1hcmdpbkhlaWdodCA9IG93bmVyRnJhbWVFbGVtZW50
Lm1hcmdpbkhlaWdodCgpOwogICAgICAgICBpZiAobWFyZ2luSGVpZ2h0ICE9IC0xKQogICAgICAg
ICAgICAgc2V0SW50ZWdyYWxBdHRyaWJ1dGUobWFyZ2luaGVpZ2h0QXR0ciwgbWFyZ2luSGVpZ2h0
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGJjMjNlMjU5MjBk
NDUyNTI3MTYyODI4NWQ1YTliZDgwODNhYmQ0YjUuLmI0N2YyMGNiMzhhNjBlZjRiMzEwMDFmNTc1
NDFiMzU3MzlkOGY4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC03NDcs
OCArNzQ3LDcgQEAgVHJhbnNsYXRlQXR0cmlidXRlTW9kZSBIVE1MRWxlbWVudDo6dHJhbnNsYXRl
QXR0cmlidXRlTW9kZSgpIGNvbnN0CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnRyYW5zbGF0ZSgpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IE5lZWQgdG8gZml4IGxpbmVhZ2VPZlR5cGUgdG8gd29yayB3
aXRoIGNvbnN0IGFuZCByZW1vdmUgdGhpcyBjb25zdF9jYXN0LgotICAgIGF1dG8gbGluZWFnZSA9
IGxpbmVhZ2VPZlR5cGU8SFRNTEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8SFRNTEVsZW1lbnQqPih0aGlz
KSk7CisgICAgYXV0byBsaW5lYWdlID0gbGluZWFnZU9mVHlwZTxIVE1MRWxlbWVudD4odGhpcyk7
CiAgICAgZm9yIChhdXRvIGVsZW1lbnQgPSBsaW5lYWdlLmJlZ2luKCksIGVuZCA9IGxpbmVhZ2Uu
ZW5kKCk7IGVsZW1lbnQgIT0gZW5kOyArK2VsZW1lbnQpIHsKICAgICAgICAgVHJhbnNsYXRlQXR0
cmlidXRlTW9kZSBtb2RlID0gZWxlbWVudC0+dHJhbnNsYXRlQXR0cmlidXRlTW9kZSgpOwogICAg
ICAgICBpZiAobW9kZSA9PSBUcmFuc2xhdGVBdHRyaWJ1dGVJbmhlcml0KQpAQCAtODUwLDcgKzg0
OSw3IEBAIFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJB
dXRvQXR0cmlidXRlKGJvb2wmIGlzQXV0bykgY29uCiAKIFRleHREaXJlY3Rpb24gSFRNTEVsZW1l
bnQ6OmRpcmVjdGlvbmFsaXR5KE5vZGUqKiBzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKSBj
b25zdAogewotICAgIGlmIChpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KHRoaXMpKSB7Cisg
ICAgaWYgKGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoKnRoaXMpKSB7CiAgICAgICAgIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0RWxlbWVudCA9IHRvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3RfY2FzdDxIVE1MRWxlbWVudCo+KHRoaXMpKTsKICAgICAgICAgYm9v
bCBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eTsKICAgICAgICAgVUNoYXJEaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiA9IHRleHRFbGVtZW50LT52YWx1ZSgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZo
YXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXgg
YjI5ZjE5MjMzNTNhMTJlZGJkOTZhYWUyNjllYzFjMTk4ODk2NTI1OS4uODU0NDM0MGEwYzg5ZDBj
MmI2OThhOGFkMDk3MDU4MjQzZTcyZTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApA
QCAtMTM3LDExICsxMzcsMTIgQEAgaW5saW5lIEhUTUxFbGVtZW50OjpIVE1MRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICBBU1NFUlQo
dGFnTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZT4gYm9vbCBpc0VsZW1lbnRPZlR5cGUoY29uc3QgSFRNTEVsZW1lbnQqKTsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUeXBlPiBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBIVE1MRWxlbWVudCYpOwog
Cit2b2lkIGlzSFRNTEVsZW1lbnQoY29uc3QgSFRNTEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNl
c3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KIGlubGlu
ZSBib29sIGlzSFRNTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hU
TUxFbGVtZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxI
VE1MRWxlbWVudD4oY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC0+aXNI
VE1MRWxlbWVudCgpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8
SFRNTEVsZW1lbnQ+KGNvbnN0IEhUTUxFbGVtZW50KikgeyByZXR1cm4gdHJ1ZTsgfQordGVtcGxh
dGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEhUTUxFbGVtZW50Pihjb25z
dCBIVE1MRWxlbWVudCYpIHsgcmV0dXJuIHRydWU7IH0KK3RlbXBsYXRlIDw+IGlubGluZSBib29s
IGlzRWxlbWVudE9mVHlwZTxjb25zdCBIVE1MRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkgeyByZXR1cm4gZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7IH0KIAogRUxFTUVOVF9UWVBFX0NB
U1RTKEhUTUxFbGVtZW50KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVt
ZW50LmNwcAppbmRleCAxNTJlMjIyZjY3YzQzZjViNTI3ODVjNzkzMzc2ZGEyNjg0YmZhNjQ0Li5m
YTYxYzFhNGI0N2UyMDAxODFkNGExNDQ5ODZjMzc5MTQ0YmEwZWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTEwMCwyNCArMTAwLDIwIEBAIFBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKCkK
IAogdm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpyZWZyZXNoRWxlbWVudHNJZk5lZWRlZCgpIGNv
bnN0CiB7Ci0gICAgdWludDY0X3QgZG9jVmVyc2lvbiA9IGRvY3VtZW50KCkuZG9tVHJlZVZlcnNp
b24oKTsKLSAgICBpZiAobV9kb2N1bWVudFZlcnNpb24gPT0gZG9jVmVyc2lvbikKKyAgICB1aW50
NjRfdCBkb2N1bWVudFZlcnNpb24gPSBkb2N1bWVudCgpLmRvbVRyZWVWZXJzaW9uKCk7CisgICAg
aWYgKG1fZG9jdW1lbnRWZXJzaW9uID09IGRvY3VtZW50VmVyc2lvbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kb2N1bWVudFZlcnNpb24gPSBkb2NWZXJzaW9uOworICAgIG1fZG9jdW1lbnRW
ZXJzaW9uID0gZG9jdW1lbnRWZXJzaW9uOwogCiAgICAgbV9hc3NvY2lhdGVkRWxlbWVudHMuY2xl
YXIoKTsKIAotICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0V2l0aGluKHRoaXMpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4
dChlbGVtZW50LCB0aGlzKSkgewotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShvYmpl
Y3RUYWcpKSB7Ci0gICAgICAgICAgICBtX2Fzc29jaWF0ZWRFbGVtZW50cy5hcHBlbmQoc3RhdGlj
X2Nhc3Q8SFRNTE9iamVjdEVsZW1lbnQqPihlbGVtZW50KSk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1l
bnQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG1fYXNzb2NpYXRlZEVsZW1l
bnRzLmFwcGVuZChzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCkp
OworICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMoY29uc3RfY2FzdDxI
VE1MRmllbGRTZXRFbGVtZW50Kj4odGhpcykpOworICAgIGZvciAoYXV0byBlbGVtZW50ID0gZGVz
Y2VuZGFudHMuYmVnaW4oKSwgZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7IGVsZW1lbnQgIT0gZW5k
OyArK2VsZW1lbnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFn
KSkKKyAgICAgICAgICAgIG1fYXNzb2NpYXRlZEVsZW1lbnRzLmFwcGVuZCgmdG9IVE1MT2JqZWN0
RWxlbWVudCgqZWxlbWVudCkpOworICAgICAgICBlbHNlIGlmIChlbGVtZW50LT5pc0Zvcm1Db250
cm9sRWxlbWVudCgpKQorICAgICAgICAgICAgbV9hc3NvY2lhdGVkRWxlbWVudHMuYXBwZW5kKCZ0
b0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoKmVsZW1lbnQpKTsKICAgICB9CiB9CiAKQEAgLTEzMCwx
MSArMTI2LDEyIEBAIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZp
ZWxkU2V0RWxlbWVudDo6YXNzb2NpYXRlZEVsZW1lbnRzKCkKIHVuc2lnbmVkIEhUTUxGaWVsZFNl
dEVsZW1lbnQ6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQo
KTsKLSAgICB1bnNpZ25lZCBsZW4gPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkKKyAgICB1bnNpZ25lZCBsZW5ndGggPSAw
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXpl
KCk7ICsraSkgewogICAgICAgICBpZiAobV9hc3NvY2lhdGVkRWxlbWVudHNbaV0tPmlzRW51bWVy
YXRhYmxlKCkpCi0gICAgICAgICAgICArK2xlbjsKLSAgICByZXR1cm4gbGVuOworICAgICAgICAg
ICAgKytsZW5ndGg7CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4
IGM0ZGRkMTUxNWUzMjJiODI3YTAzMmI3YTU3MzRhZjYwZTVkYjJjOTguLjQwNDY0ODZmNDZmOTNj
NTJlNzQ3NjU3MzBiMTc5NTJlMDBmZmI0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xNzMsMjggKzE3MywxMiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNBdXRvZm9jdXNlZCA6IDE7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKTsK
LX0KLQotaW5saW5lIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIHRvSFRNTEZvcm1Db250cm9sRWxl
bWVudChOb2RlJiBub2RlKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGlzSFRNTEZvcm1Db250cm9sRWxlbWVudCgmbm9kZSkpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Jj4obm9kZSk7Ci19Ci0KLWlubGluZSBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50KiB0b0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQobm9kZSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Kj4obm9kZSk7Ci19Ci0KLXZvaWQgdG9IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNv
bnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqKTsKLXZvaWQgdG9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmKTsKLQotdGVtcGxhdGUgPD4gaW5saW5l
IGJvb2wgaXNFbGVtZW50T2ZUeXBlPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGNvbnN0IEVsZW1l
bnQqIGVsZW1lbnQpIHsgcmV0dXJuIGlzSFRNTEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50KTsg
fQordm9pZCBpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxl
bWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24g
YXQgY29tcGlsZSB0aW1lLgoraW5saW5lIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGb3JtQ29udHJvbEVsZW1l
bnQoKTsgfQoraW5saW5lIGJvb2wgaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS5p
c0Zvcm1Db250cm9sRWxlbWVudCgpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgSFRNTEZvcm1Db250cm9sRWxlbWVudD4oY29uc3QgRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gaXNIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGVsZW1lbnQpOyB9CiAKK0VM
RU1FTlRfVFlQRV9DQVNUUyhIVE1MRm9ybUNvbnRyb2xFbGVtZW50KQogCiB9IC8vIG5hbWVzcGFj
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKaW5kZXggZDky
OTgzN2VhMWU3OGQxOTk4NzI0MjQ4OGNjZDM2NGY2NjZhOTc3MC4uN2Q3NDRjODg4ZDc0Y2VhMjFm
OGFiYTA1ODZiMmZiMTdmYzVlMzQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuaApAQCAtODEsMjEgKzgxLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Zp
ZXdTb3VyY2U7CiB9OwogCi1pbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKGNvbnN0
IE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIGlzSFRNTEZyYW1lRWxlbWVudChub2RlKSB8fCBp
c0hUTUxJRnJhbWVFbGVtZW50KG5vZGUpOwotfQotCi1pbmxpbmUgYm9vbCBpc0hUTUxGcmFtZUVs
ZW1lbnRCYXNlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIGlzSFRNTEZy
YW1lRWxlbWVudChlbGVtZW50KSB8fCBpc0hUTUxJRnJhbWVFbGVtZW50KGVsZW1lbnQpOwotfQot
Ci1pbmxpbmUgSFRNTEZyYW1lRWxlbWVudEJhc2UqIHRvSFRNTEZyYW1lRWxlbWVudEJhc2UoTm9k
ZSogbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8
fCBpc0hUTUxGcmFtZUVsZW1lbnRCYXNlKG5vZGUpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTEZyYW1lRWxlbWVudEJhc2UqPihub2RlKTsKLX0KK3ZvaWQgaXNIVE1MRnJhbWVFbGVtZW50
QmFzZShjb25zdCBIVE1MRnJhbWVFbGVtZW50QmFzZSYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBy
dW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgoraW5saW5lIGJvb2wg
aXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBp
c0hUTUxGcmFtZUVsZW1lbnQoZWxlbWVudCkgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChlbGVtZW50
KTsgfQoraW5saW5lIGJvb2wgaXNIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBOb2RlJiBub2Rl
KSB7IHJldHVybiBub2RlLmlzRWxlbWVudE5vZGUoKSAmJiBpc0hUTUxGcmFtZUVsZW1lbnRCYXNl
KHRvRWxlbWVudChub2RlKSk7IH0KKworRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxGcmFtZUVsZW1l
bnRCYXNlKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IGQwY2JkMmMxNWQ5MTUxMmE5ODIyZTg0OGJi
YWRmNjJlZDNlNjY5MjcuLjI1MDAxNTg5NjgxOTM0MDc4NGI3N2UwZDg5ODY2ZjhhNmRiZjc3Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtMjgs
MTAgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NV2luZG93OwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBSZW5kZXJXaWRnZXQ7Ci0KLSNpZiBFTkFCTEUoU1ZHKQogY2xhc3MgU1ZH
RG9jdW1lbnQ7Ci0jZW5kaWYKIAogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50IDogcHVibGlj
IEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKQEAgLTcxLDMyICs2OCw5IEBAIHByaXZhdGU6CiAgICAg
U2FuZGJveEZsYWdzIG1fc2FuZGJveEZsYWdzOwogfTsKIAotaW5saW5lIEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgdG9GcmFtZU93bmVyRWxlbWVudChOb2RlJiBub2RlKQotewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG5vZGUuaXNGcmFtZU93bmVyRWxlbWVudCgpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Jj4obm9kZSk7Ci19Ci0K
LWlubGluZSBjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQmIHRvRnJhbWVPd25lckVsZW1lbnQo
Y29uc3QgTm9kZSYgbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tihub2RlLmlzRnJhbWVPd25lckVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCY+KG5vZGUpOwotfQotCi1pbmxpbmUgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiB0b0ZyYW1lT3duZXJFbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgbm9kZS0+aXNGcmFtZU93bmVy
RWxlbWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50
Kj4obm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIHRvRnJh
bWVPd25lckVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRnJhbWVPd25lckVsZW1lbnQqPihub2Rl
KTsKLX0KLQotdm9pZCB0b0ZyYW1lT3duZXJFbGVtZW50KGNvbnN0IEhUTUxGcmFtZU93bmVyRWxl
bWVudCYpOwotdm9pZCB0b0ZyYW1lT3duZXJFbGVtZW50KGNvbnN0IEhUTUxGcmFtZU93bmVyRWxl
bWVudCopOwordm9pZCBpc0hUTUxGcmFtZU93bmVyRWxlbWVudChjb25zdCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtu
b3duIGF0IGNvbXBpbGUgdGltZS4KK2lubGluZSBib29sIGlzSFRNTEZyYW1lT3duZXJFbGVtZW50
KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNGcmFtZU93bmVyRWxlbWVudCgpOyB9
CitFTEVNRU5UX1RZUEVfQ0FTVFMoSFRNTEZyYW1lT3duZXJFbGVtZW50KQogCiBjbGFzcyBTdWJm
cmFtZUxvYWRpbmdEaXNhYmxlciB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFi
ZWxFbGVtZW50LmNwcAppbmRleCAwNDQxMDA4OWVjNGNlMmM2YWZhNjAyODczMjIzN2U2MGZlOWUx
ZTRmLi4wZDZjOGY2ODAzMTdkZjZhYzM5ODMyM2M3Nzc4YTllMjEzYmIyNDc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAKQEAgLTM4LDEyICszOCwxMCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgTGFiZWxhYmxlRWxlbWVudCogbm9kZUFz
U3VwcG9ydGVkTGFiZWxhYmxlRWxlbWVudChOb2RlKiBub2RlKQogewotICAgIGlmICghbm9kZSB8
fCAhaXNMYWJlbGFibGVFbGVtZW50KG5vZGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBMYWJl
bGFibGVFbGVtZW50KiBsYWJlbGFibGVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8TGFiZWxhYmxlRWxl
bWVudCo+KG5vZGUpOwotICAgIGlmICghbGFiZWxhYmxlRWxlbWVudC0+c3VwcG9ydExhYmVscygp
KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbGFiZWxhYmxlRWxlbWVudDsKKyAgICBp
ZiAoIW5vZGUgfHwgIWlzTGFiZWxhYmxlRWxlbWVudCgqbm9kZSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIExhYmVsYWJsZUVsZW1lbnQmIGVsZW1lbnQgPSB0b0xhYmVsYWJsZUVsZW1l
bnQoKm5vZGUpOworICAgIHJldHVybiBlbGVtZW50LnN1cHBvcnRMYWJlbHMoKSA/ICZlbGVtZW50
IDogbnVsbHB0cjsKIH0KIAogaW5saW5lIEhUTUxMYWJlbEVsZW1lbnQ6OkhUTUxMYWJlbEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBmNTVmMDcwNjhhODMyMmY4N2E0
ZmI1ZTZmODc5Njg0NmEwNTMzZTJjLi5kYzc3ZTg2OGUxODBkMWUyNDkwOTJjMTMwYmQ1ZTQ1ODdh
ODVmYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtODExLDI1
ICs4MTEsMTIgQEAgc3RydWN0IFZhbHVlVG9TdHJpbmc8VGV4dFRyYWNrQ3VlKj4gewogI2VuZGlm
CiAjZW5kaWYKIAotaW5saW5lIGJvb2wgaXNNZWRpYUVsZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAg
ICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUp
LT5pc01lZGlhRWxlbWVudCgpOwotfQotCi1pbmxpbmUgSFRNTE1lZGlhRWxlbWVudCYgdG9IVE1M
TWVkaWFFbGVtZW50KE5vZGUmIG5vZGUpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaXNNZWRpYUVsZW1lbnQoJm5vZGUpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTE1lZGlhRWxlbWVudCY+KG5vZGUpOwotfQotCi1pbmxpbmUgSFRNTE1lZGlhRWxlbWVudCog
dG9IVE1MTWVkaWFFbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIW5vZGUgfHwgaXNNZWRpYUVsZW1lbnQobm9kZSkpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSk7Ci19Cit2b2lkIGlzSFRNTE1l
ZGlhRWxlbWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5
IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCitpbmxpbmUgYm9v
bCBpc0hUTUxNZWRpYUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxl
bWVudC5pc01lZGlhRWxlbWVudCgpOyB9CitpbmxpbmUgYm9vbCBpc0hUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVt
ZW50KG5vZGUpLmlzTWVkaWFFbGVtZW50KCk7IH0KK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlz
RWxlbWVudE9mVHlwZTxjb25zdCBIVE1MTWVkaWFFbGVtZW50Pihjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSB7IHJldHVybiBlbGVtZW50LmlzTWVkaWFFbGVtZW50KCk7IH0KIAotdm9pZCB0b0hUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpOwotdm9pZCB0b0hUTUxNZWRpYUVs
ZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCopOworRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxN
ZWRpYUVsZW1lbnQpCiAKIH0gLy9uYW1lc3BhY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5oCmluZGV4IDIzMDIzMzdlODA1ZDIyNDAxNGY4NTM3OWEwZTg1MGY3YzU2OGYy
ZTYuLjM4NjM1ZGQ1ZmYxZGIwNjIwZGE5ODFhOThiNmNjYjM4NDM2NTk1MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlzUGx1Z2luRWxlbWVudCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdpbkVsZW1lbnQoKSBjb25zdCBPVkVSUklERSBG
SU5BTDsKIAogICAgIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZT4gbV9pbnN0YW5jZTsK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTExNywyNiArMTE3LDkgQEAgcHJp
dmF0ZToKICAgICBEaXNwbGF5U3RhdGUgbV9kaXNwbGF5U3RhdGU7CiB9OwogCi1pbmxpbmUgSFRN
TFBsdWdJbkVsZW1lbnQmIHRvSFRNTFBsdWdJbkVsZW1lbnQoTm9kZSYgbm9kZSkKLXsKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihub2RlLmlzUGx1Z2luRWxlbWVudCgpKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQmPihub2RlKTsKLX0KLQot
aW5saW5lIEhUTUxQbHVnSW5FbGVtZW50KiB0b0hUTUxQbHVnSW5FbGVtZW50KE5vZGUqIG5vZGUp
Ci17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgbm9kZS0+
aXNQbHVnaW5FbGVtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luRWxl
bWVudCo+KG5vZGUpOwotfQotCi1pbmxpbmUgY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQqIHRvSFRN
TFBsdWdJbkVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBub2RlLT5pc1BsdWdpbkVsZW1lbnQoKSk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxQbHVnSW5FbGVtZW50Kj4obm9kZSk7Ci19Ci0K
LS8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KLXZv
aWQgdG9IVE1MUGx1Z0luRWxlbWVudChjb25zdCBIVE1MUGx1Z0luRWxlbWVudCopOwordm9pZCBp
c0hUTUxQbHVnSW5FbGVtZW50KGNvbnN0IEhUTUxQbHVnSW5FbGVtZW50Jik7IC8vIENhdGNoIHVu
bmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCitp
bmxpbmUgYm9vbCBpc0hUTUxQbHVnSW5FbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJu
IG5vZGUuaXNQbHVnaW5FbGVtZW50KCk7IH0KK0VMRU1FTlRfVFlQRV9DQVNUUyhIVE1MUGx1Z0lu
RWxlbWVudCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDJmZjI2ZDlkNjBjYjNmODcxZmE5Zjgz
ZDBhY2RkNTQ0ZmRmNWQzYzcuLjY4OGEzYWRlNjExNzI2YWYwOTliNjcwNThhZDNhMjcwYTcyZjgx
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBA
IC0xNjYsMzIgKzE2NiwxMCBAQCBwcml2YXRlOgogICAgIFNuYXBzaG90RGVjaXNpb24gbV9zbmFw
c2hvdERlY2lzaW9uOwogfTsKIAotaW5saW5lIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHRvSFRN
TFBsdWdJbkltYWdlRWxlbWVudChOb2RlJiBub2RlKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKG5vZGUuaXNQbHVnaW5FbGVtZW50KCkpOwotICAgIEhUTUxQbHVnSW5F
bGVtZW50JiBwbHVnSW5FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTFBsdWdJbkVsZW1lbnQmPihu
b2RlKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwbHVnSW5FbGVtZW50
LmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Jj4ocGx1Z0luRWxlbWVudCk7Ci19Ci0KLWlubGluZSBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50KiB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBub2RlLT5pc1BsdWdp
bkVsZW1lbnQoKSk7Ci0gICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MUGx1Z0luRWxlbWVudCo+KG5vZGUpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKHBsdWdJbkVsZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ocGx1Z0luRWxl
bWVudCk7Ci19Ci0KLWlubGluZSBjb25zdCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiB0b0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBub2RlLT5pc1BsdWdpbkVsZW1lbnQoKSk7Ci0g
ICAgY29uc3QgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxj
b25zdCBIVE1MUGx1Z0luRWxlbWVudCo+KG5vZGUpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHBsdWdJbkVsZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ocGx1Z0lu
RWxlbWVudCk7Ci19Ci0KLS8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNl
c3NhcnkgY2FzdC4KLXZvaWQgdG9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQqKTsKK3ZvaWQgaXNIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVj
ayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KK2lubGluZSBib29sIGlzSFRNTFBsdWdJ
bkltYWdlRWxlbWVudChjb25zdCBIVE1MUGx1Z0luRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4g
ZWxlbWVudC5pc1BsdWdJbkltYWdlRWxlbWVudCgpOyB9CitpbmxpbmUgYm9vbCBpc0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1BsdWdpbkVs
ZW1lbnQoKSAmJiB0b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpLmlzUGx1Z0luSW1hZ2VFbGVtZW50
KCk7IH0KK0VMRU1FTlRfVFlQRV9DQVNUUyhIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5jcHAKaW5kZXggYzQ3M2Y3NTU0NTMzMGM0YjBhYjAzNTQyNWNiNjQ5YjNhNTIzZjc5
ZS4uMDM0NTFlODQ5ZjNkZTRiM2NjYzc0ZjY3YjExODhlMTU4NjJlNDZlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTE4MCwyMCArMTgwLDQg
QEAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjZWxsQWJvdmUo
KSBjb25zdAogICAgIHJldHVybiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KGNlbGxBYm92ZVJlbmRl
cmVyLT5lbGVtZW50KCkpOwogfQogCi0jaWZuZGVmIE5ERUJVRwotCi1IVE1MVGFibGVDZWxsRWxl
bWVudCogdG9IVE1MVGFibGVDZWxsRWxlbWVudChOb2RlKiBub2RlKQotewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjp0ZFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRoVGFnKSk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4obm9kZSk7Ci19Ci0KLWNv
bnN0IEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IE5v
ZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW5vZGUg
fHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnRkVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6dGhUYWcpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTFRh
YmxlQ2VsbEVsZW1lbnQqPihub2RlKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCBm
ZTAxNjc2ZTI3ZWI0ZWM3YjQ5NDAxOWUxZDBjZTdiMTAwZTFhNDI3Li44ZGRhN2Q2YzY0NzVlZDM4
NThiMmNhMWZmNGU3YTMxMjFiYmRjZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5oCkBAIC0zNSwxNyArMzUsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxUYWJsZUNlbGxFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKICAgICBpbnQgY2VsbEluZGV4KCkgY29uc3Q7Ci0KICAgICBpbnQg
Y29sU3BhbigpIGNvbnN0OwogICAgIGludCByb3dTcGFuKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENlbGxJbmRleChpbnQpOworICAgIHZvaWQgc2V0Q29sU3BhbihpbnQpOworICAgIHZvaWQgc2V0
Um93U3BhbihpbnQpOwogCiAgICAgU3RyaW5nIGFiYnIoKSBjb25zdDsKICAgICBTdHJpbmcgYXhp
cygpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29sU3BhbihpbnQpOwogICAgIFN0cmluZyBoZWFkZXJz
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSb3dTcGFuKGludCk7CiAgICAgU3RyaW5nIHNjb3BlKCkg
Y29uc3Q7CiAKICAgICBIVE1MVGFibGVDZWxsRWxlbWVudCogY2VsbEFib3ZlKCkgY29uc3Q7CkBA
IC02MCwyOSArNTksMTIgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0IE9WRVJSSURFOwogfTsKIAotSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIHRvSFRN
TFRhYmxlQ2VsbEVsZW1lbnQoTm9kZSogbm9kZSk7Ci1jb25zdCBIVE1MVGFibGVDZWxsRWxlbWVu
dCogdG9IVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBOb2RlKiBub2RlKTsKLQotLy8gVGhpcyB3
aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgotdm9pZCB0b0hUTUxU
YWJsZUNlbGxFbGVtZW50KGNvbnN0IEhUTUxUYWJsZUNlbGxFbGVtZW50Kik7Ci0KLSNpZmRlZiBO
REVCVUcKLQotLy8gVGhlIGRlYnVnIHZlcnNpb25zIG9mIHRoZXNlLCB3aXRoIGFzc2VydGlvbnMs
IGFyZSBub3QgaW5saW5lZC4KLQotaW5saW5lIEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxU
YWJsZUNlbGxFbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxUYWJsZUNlbGxFbGVtZW50Kj4obm9kZSk7Ci19Ci0KLWlubGluZSBjb25zdCBIVE1MVGFibGVD
ZWxsRWxlbWVudCogdG9IVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBOb2RlKiBub2RlKQotewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MVGFibGVDZWxsRWxlbWVudCo+KG5vZGUp
OwotfQotI2VuZGlmCit2b2lkIGlzSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3QgSFRNTFRhYmxl
Q2VsbEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBl
IGtub3duIGF0IGNvbXBpbGUgdGltZS4KK2lubGluZSBib29sIGlzSFRNTFRhYmxlQ2VsbEVsZW1l
bnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
dGRUYWcpIHx8IG5vZGUuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRoVGFnKTsgfQorRUxFTUVOVF9U
WVBFX0NBU1RTKEhUTUxUYWJsZUNlbGxFbGVtZW50KQogCiB9IC8vIG5hbWVzcGFjZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmlu
ZGV4IDcyZTQzODMzYThiYjZmZjY2Nzg4NzVkMzIyZDVmMTk0Y2I1MGRlYzguLjJiYmJlNGJiNmIx
ZmFmMmZlNDcyYWVjMDIxZDQzYWI5ZGQ3OWQ3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC02MDksOSArNjA5LDkgQEAg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25z
dCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgICAgIAogICAgIE5vZGUqIGNvbnRhaW5lciA9IHBv
c2l0aW9uLmNvbnRhaW5lck5vZGUoKTsKICAgICBpZiAoIWNvbnRhaW5lcikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEVsZW1lbnQqIGFuY2VzdG9yID0g
Y29udGFpbmVyLT5zaGFkb3dIb3N0KCk7Ci0gICAgcmV0dXJuIGFuY2VzdG9yICYmIGlzSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQoYW5jZXN0b3IpID8gdG9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudChhbmNlc3RvcikgOiAwOworICAgIHJldHVybiBhbmNlc3RvciAmJiBpc0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50KCphbmNlc3RvcikgPyB0b0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
KGFuY2VzdG9yKSA6IG51bGxwdHI7CiB9CiAKIHN0YXRpYyBjb25zdCBFbGVtZW50KiBwYXJlbnRI
VE1MRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGUzYzhlNDVlMWM0MWI5ZTUz
MGM0ODJmMGY5OGQ1YjkyNDIwODYzNGMuLmJhM2Y0ZGNiMzhmMDBlY2VmYWY4M2EwY2MyNWE1MDg1
YThhN2ViYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3J3YXJk
RXZlbnQoRXZlbnQqKTsKIAotCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgT1ZFUlJJREU7CiAKICAgICAvLyBUaGUg
ZGVyaXZlZCBjbGFzcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgcGxhY2Vob2xkZXIgcHJvY2Vzc2lu
ZyBpcyBuZWVkZWQuCkBAIC0xMzcsMjUgKzEzNiwxMCBAQCBwcml2YXRlOgogICAgIFRleHRGaWVs
ZFNlbGVjdGlvbkRpcmVjdGlvbiBtX2NhY2hlZFNlbGVjdGlvbkRpcmVjdGlvbjsKIH07CiAKLWlu
bGluZSBib29sIGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkK
LXsKLSAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+
aXNUZXh0Rm9ybUNvbnRyb2woKTsKLX0KLQotaW5saW5lIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50JiB0b0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KE5vZGUmIG5vZGUpCi17Ci0gICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCgmbm9kZSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCY+KG5vZGUpOwotfQotCi1pbmxpbmUgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZSB8fCBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KG5vZGUpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQqPihub2RlKTsKLX0KLQotdm9pZCB0b0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNv
bnN0IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7Ci12b2lkIHRvSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqKTsKK3ZvaWQgaXNI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQg
Y29tcGlsZSB0aW1lLgoraW5saW5lIGJvb2wgaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChj
b25zdCBFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmlzVGV4dEZvcm1Db250cm9s
KCk7IH0KK2lubGluZSBib29sIGlzSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgTm9k
ZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUp
LmlzVGV4dEZvcm1Db250cm9sKCk7IH0KK0VMRU1FTlRfVFlQRV9DQVNUUyhIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCkKIAogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1Rl
eHRGb3JtQ29udHJvbChjb25zdCBQb3NpdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcAppbmRleCAxYjhmMzExZGRlYjJmNGJiMDQzMGIyM2U0YjIyNzI3MGFk
NDNlODMwLi4yMjEyOTkwMDBiYWRkNTM1OWNmNGQ0ODllZGZiMDcwZDNhODhmZGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgTm9k
ZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSYKIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpyZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBpZiAoIXBhcmVudE5vZGUo
KSAmJiBXZWJDb3JlOjppc01lZGlhRWxlbWVudCgmaW5zZXJ0aW9uUG9pbnQpKQorICAgIGlmICgh
cGFyZW50Tm9kZSgpICYmIGlzSFRNTE1lZGlhRWxlbWVudChpbnNlcnRpb25Qb2ludCkpCiAgICAg
ICAgIHRvSFRNTE1lZGlhRWxlbWVudChpbnNlcnRpb25Qb2ludCkuZGlkUmVtb3ZlVGV4dFRyYWNr
KHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShpbnNlcnRpb25Qb2ludCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCmluZGV4IGU0ZGY4MmU1M2MxYzBh
MTY1ZWJhMDM0YTcxYjk3OGRiYjg0Y2I3NzEuLmRhZjY3MWE0MmY1NzU3NjdmNmFiM2UxNmEzY2Q4
ZTdmMTQxZWM3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5oCkBAIC0z
NSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBMYWJlbGFibGVFbGVt
ZW50IHJlcHJlc2VudHMgImxhYmVsYWJsZSBlbGVtZW50IiBkZWZpbmVkIGluIHRoZSBIVE1MCi0v
LyBzcGVjaWZpY2F0aW9uLCBhbmQgcHJvdmlkZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSAi
bGFiZWxzIiBhdHRyaWJ1dGUuCisvLyBMYWJlbGFibGVFbGVtZW50IHJlcHJlc2VudHMgImxhYmVs
YWJsZSBlbGVtZW50IiBkZWZpbmVkIGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCiBjbGFzcyBM
YWJlbGFibGVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5MYWJlbGFibGVFbGVtZW50KCk7CisKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBsYWJl
bHMoKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKQEAgLTUwLDE0ICs1MCwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBp
c0xhYmVsYWJsZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KIH07CiAK
LWlubGluZSBib29sIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBOb2RlKiBub2RlKQotewotICAg
IGlmICghbm9kZS0+aXNIVE1MRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4obm9kZSktPmlzTGFiZWxhYmxl
KCk7Ci19Cit2b2lkIGlzTGFiZWxhYmxlRWxlbWVudChjb25zdCBMYWJlbGFibGVFbGVtZW50Jik7
IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21w
aWxlIHRpbWUuCitpbmxpbmUgYm9vbCBpc0xhYmVsYWJsZUVsZW1lbnQoY29uc3QgSFRNTEVsZW1l
bnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNMYWJlbGFibGUoKTsgfQoraW5saW5lIGJv
b2wgaXNMYWJlbGFibGVFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNI
VE1MRWxlbWVudCgpICYmIHRvSFRNTEVsZW1lbnQobm9kZSkuaXNMYWJlbGFibGUoKTsgfQordGVt
cGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IExhYmVsYWJsZUVsZW1l
bnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzTGFiZWxhYmxlRWxlbWVudChl
bGVtZW50KTsgfQogCi10ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8TGFi
ZWxhYmxlRWxlbWVudD4oY29uc3QgRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gaXNMYWJlbGFi
bGVFbGVtZW50KGVsZW1lbnQpOyB9CitFTEVNRU5UX1RZUEVfQ0FTVFMoTGFiZWxhYmxlRWxlbWVu
dCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5oCmluZGV4IGY1MTc3YjI1ZThjM2EwNzY3OTQ1NmE0MzMzNjU3ZTExZmNk
MTAyMjguLmRkODc5ZWUwMzkwNTFjMzkwN2NkYWVjMGE3NWY4NzVmN2I3ODNlZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oCkBAIC01NCw5ICs1NCw4IEBAIHB1
YmxpYzoKICAgICBib29sIGlzUGFzdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzUGFzdE5vZGU7
IH0KICAgICB2b2lkIHNldElzUGFzdE5vZGUoYm9vbCB2YWx1ZSkgeyBtX2lzUGFzdE5vZGUgPSB2
YWx1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzV2ViVlRURWxlbWVudCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KICAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCB7
IHJldHVybiBtX2xhbmd1YWdlOyB9Ci0gICAgdm9pZCBzZXRMYW5ndWFnZShBdG9taWNTdHJpbmcg
dmFsdWUpIHsgbV9sYW5ndWFnZSA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRMYW5ndWFnZShjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IG1fbGFuZ3VhZ2UgPSB2YWx1ZTsgfQogCiAgICAgc3Rh
dGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCiAgICAgewpAQCAt
NzMsMjEgKzcyLDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViVlRURWxlbWVudChXZWJW
VFROb2RlVHlwZSwgRG9jdW1lbnQmKTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc1dlYlZUVEVsZW1l
bnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKICAgICB1bnNpZ25lZCBtX2lz
UGFzdE5vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1fd2ViVlRUTm9kZVR5cGUgOiA0OwogICAgIAog
ICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwogfTsKIAotaW5saW5lIFdlYlZUVEVsZW1lbnQq
IHRvV2ViVlRURWxlbWVudChOb2RlKiBub2RlKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFub2RlIHx8IG5vZGUtPmlzV2ViVlRURWxlbWVudCgpKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViVlRURWxlbWVudCo+KG5vZGUpOwotfQotCi0vLyBUaGlzIHdpbGwg
Y2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCi12b2lkIHRvV2ViVlRURWxl
bWVudChjb25zdCBXZWJWVFRFbGVtZW50Kik7Ci0KK3ZvaWQgaXNXZWJWVFRFbGVtZW50KGNvbnN0
IFdlYlZUVEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0
eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KK2lubGluZSBib29sIGlzV2ViVlRURWxlbWVudChj
b25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzV2ViVlRURWxlbWVudCgpOyB9CitFTEVN
RU5UX1RZUEVfQ0FTVFMoV2ViVlRURWxlbWVudCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCmluZGV4IDdkZjI5YWRjYjNhNDJjM2RiZWE5Y2NlMDA0OWRhYTZkY2NjYjhkNzUu
LmUxMmU5OGQ4OGIxY2FkOGI2NTJhY2M5NGI0OTBmNmZlZDI2YjUyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBA
IC01MTYsMTAgKzUxNiwxMCBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogCiAgICAgc2l6ZV90
IG5vZGVzU2l6ZSA9IG5vZGVzLnNpemUoKTsgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBub2Rlc1NpemU7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbm9kZXNbaV07CisgICAg
ICAgIE5vZGUmIG5vZGUgPSAqbm9kZXNbaV07CiAgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lOwog
ICAgICAgICBpZiAoKGlzSFRNTEZyYW1lRWxlbWVudChub2RlKSB8fCBpc0hUTUxJRnJhbWVFbGVt
ZW50KG5vZGUpIHx8IGlzSFRNTE9iamVjdEVsZW1lbnQobm9kZSkpCi0gICAgICAgICAgICAmJiAo
Y2hpbGRGcmFtZSA9IHRvRnJhbWVPd25lckVsZW1lbnQobm9kZSktPmNvbnRlbnRGcmFtZSgpKSkg
eworICAgICAgICAgICAgJiYgKGNoaWxkRnJhbWUgPSB0b0hUTUxGcmFtZU93bmVyRWxlbWVudChu
b2RlKS5jb250ZW50RnJhbWUoKSkpIHsKICAgICAgICAgICAgIGlmIChmcmFtZUZpbHRlciAmJiAh
ZnJhbWVGaWx0ZXItPnNob3VsZEluY2x1ZGVTdWJmcmFtZShjaGlsZEZyYW1lKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKQEAgLTUzMSw3ICs1MzEsNyBAQCBQ
YXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
ZCB0byBhcmNoaXZlIHN1YmZyYW1lICVzIiwgY2hpbGRGcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IExpc3RIYXNoU2V0PFVSTD4gc3VicmVzb3VyY2VVUkxzOwotICAgICAgICAgICAgbm9kZS0+Z2V0
U3VicmVzb3VyY2VVUkxzKHN1YnJlc291cmNlVVJMcyk7CisgICAgICAgICAgICBub2RlLmdldFN1
YnJlc291cmNlVVJMcyhzdWJyZXNvdXJjZVVSTHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKTsKICAgICAgICAgICAgIExpc3RIYXNoU2V0PFVSTD46Oml0ZXJhdG9yIGl0ZXJF
bmQgPSBzdWJyZXNvdXJjZVVSTHMuZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuaAppbmRleCAzNmVhMDE0YTEwMmQ0MTJiOTljZjA4NmM2NDFhYjI5YmExOTQ5YmRhLi40NGIy
ZmRmMmQ4MmNhNDZiMTI1ZjNhNTdhYWNlN2MxYzVmMGMwMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxFbGVtZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgTWF0aE1MRWxlbWVu
dF9oCiAKICNpZiBFTkFCTEUoTUFUSE1MKQorCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxMyArNTMsMTMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNl
dCopIE9WRVJSSURFOwogfTsKIAotaW5saW5lIE1hdGhNTEVsZW1lbnQqIHRvTWF0aE1MRWxlbWVu
dChOb2RlKiBub2RlKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFu
b2RlIHx8IChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5pc01hdGhN
TEVsZW1lbnQoKSkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxFbGVtZW50Kj4obm9k
ZSk7Ci19Cit2b2lkIGlzTWF0aE1MRWxlbWVudChjb25zdCBNYXRoTUxFbGVtZW50Jik7IC8vIENh
dGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRp
bWUuCitpbmxpbmUgYm9vbCBpc01hdGhNTEVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkg
eyByZXR1cm4gZWxlbWVudC5pc01hdGhNTEVsZW1lbnQoKTsgfQoraW5saW5lIGJvb2wgaXNNYXRo
TUxFbGVtZW50KGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChub2RlKS5pc01hdGhNTEVsZW1lbnQoKTsgfQorRUxFTUVOVF9UWVBFX0NB
U1RTKE1hdGhNTEVsZW1lbnQpCiAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNQVRITUwpCisKICNl
bmRpZiAvLyBNYXRoTUxFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAppbmRleCBlMzg0ZWRhYjU2M2Y4YjZhZjAwN2IyODQxNWM4NDExNTM3NzlhODM5Li5lMWQ2
ZDE2YTQwZDkwOTI4MTZlYzJjYTExMWMzMmZmMDkyMjNjODg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgRWxlbWVudCogRm9jdXND
b250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudERlc2NlbmRpbmdEb3duSW50b0ZyYW1lRG9j
dW1lbnQoRm8KICAgICAvLyAxKSBhIGZvY3VzYWJsZSBub2RlLCBvcgogICAgIC8vIDIpIHRoZSBk
ZWVwZXN0LW5lc3RlZCBIVE1MRnJhbWVPd25lckVsZW1lbnQuCiAgICAgd2hpbGUgKGVsZW1lbnQg
JiYgZWxlbWVudC0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIEhUTUxGcmFtZU93
bmVyRWxlbWVudCYgb3duZXIgPSB0b0ZyYW1lT3duZXJFbGVtZW50KCplbGVtZW50KTsKKyAgICAg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBvd25lciA9IHRvSFRNTEZyYW1lT3duZXJFbGVtZW50
KCplbGVtZW50KTsKICAgICAgICAgaWYgKCFvd25lci5jb250ZW50RnJhbWUoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBFbGVtZW50KiBmb3VuZEVsZW1lbnQgPSBmaW5kRm9jdXNhYmxl
RWxlbWVudChkaXJlY3Rpb24sIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25T
Y29wZU93bmVkQnlJRnJhbWUoJm93bmVyKSwgMCwgZXZlbnQpOwpAQCAtMzE1LDcgKzMxNSw3IEBA
IGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgaWYgKGVsZW1lbnQtPmlzRnJhbWVPd25lckVs
ZW1lbnQoKSAmJiAoIWVsZW1lbnQtPmlzUGx1Z2luRWxlbWVudCgpIHx8ICFlbGVtZW50LT5pc0tl
eWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkpIHsKICAgICAgICAgLy8gV2UgZm9jdXMgZnJhbWVzIHJh
dGhlciB0aGFuIGZyYW1lIG93bmVycy4KICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3Qg
Zm9jdXMgZnJhbWVzIHRoYXQgaGF2ZSBubyBzY3JvbGxiYXJzLCBhcyBmb2N1c2luZyB0aGVtIGlz
bid0IHVzZWZ1bCB0byB0aGUgdXNlci4KLSAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBv
d25lciA9IHRvRnJhbWVPd25lckVsZW1lbnQoKmVsZW1lbnQpOworICAgICAgICBIVE1MRnJhbWVP
d25lckVsZW1lbnQmIG93bmVyID0gdG9IVE1MRnJhbWVPd25lckVsZW1lbnQoKmVsZW1lbnQpOwog
ICAgICAgICBpZiAoIW93bmVyLmNvbnRlbnRGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IGIxNjQwNTlj
ZjkwMzJlMDNjMmYwMTdlYjExYWM4ZDBiOTY4ZDlkM2QuLmFmOTJmZDk1YWE3MTQwYTI0Y2JjY2I1
NWY0ZGNkNjliNjA3NGQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTZXJpYWxpemVyTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZEN1c3RvbUF0dHJpYnV0ZXMoU3RyaW5nQnVpbGRlciYgb3V0LCBjb24KICAgICBpZiAoIWVs
ZW1lbnQuaXNGcmFtZU93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25z
dCBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGZyYW1lT3duZXIgPSB0b0ZyYW1lT3duZXJFbGVtZW50
KGVsZW1lbnQpOworICAgIGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZnJhbWVPd25lciA9
IHRvSFRNTEZyYW1lT3duZXJFbGVtZW50KGVsZW1lbnQpOwogICAgIEZyYW1lKiBmcmFtZSA9IGZy
YW1lT3duZXIuY29udGVudEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IGU4NDE3NDYyYTU3NDlhOGVk
N2EyMTc0NWM2MTliZTNhOTI2Mjc2OGMuLmRkMmUwMWRjOTcwNWJmOGNjNzIwNjhjNzBiYzgxNTMw
YzM2Zjg2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTU5LDcgKzU5
LDYgQEAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEZyYW1lOwotY2xhc3MgTm9kZTsKIGNsYXNzIFJhbmdlOwogY2xhc3MgU2hh
cmVkQnVmZmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKaW5kZXgg
ZTIxYjlhNGU2M2U4NDFiNGQxYzA3MGJjMDFlNmZmY2Y3ZDMyOGQ1Mi4uYmY5YmNjYmFmMWVkNTA2
M2UzNTA1YmYwZTI1ODI2ZTZlMjQxOWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBSZW5kZXJXaWRnZXQgOiBwdWJsaWMg
UmVuZGVyUmVwbGFjZWQsIHByaXZhdGUgT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5SZW5kZXJXaWRnZXQoKTsKIAotICAgIEhUTUxGcmFtZU93bmVyRWxl
bWVudCYgZnJhbWVPd25lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0b0ZyYW1lT3duZXJFbGVt
ZW50KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KKyAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQm
IGZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdG9IVE1MRnJhbWVPd25lckVsZW1l
bnQobm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiAgICAgV2lkZ2V0KiB3aWRnZXQoKSBjb25z
dCB7IHJldHVybiBtX3dpZGdldC5nZXQoKTsgfQogICAgIHZvaWQgc2V0V2lkZ2V0KFBhc3NSZWZQ
dHI8V2lkZ2V0Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDdiZmQxYzdmMzQyZDgwY2I2ZWQ1ZWY5
MGQ2NDllNjQyNDc1YzZlYzIuLjA4ODUwYWRkZDkyMmVkNDdkNGIzZTg3MTE3ZDMyY2MxOTVmMWRi
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtOTQs
MjYgKzk1LDE4IEBAIFBhc3NSZWZQdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyhTVkdGaWx0ZXIqCiAKICAgICAvLyBBZGQgZWZmZWN0
cyB0byB0aGUgYnVpbGRlcgogICAgIFJlZlB0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZGVyID0g
U1ZHRmlsdGVyQnVpbGRlcjo6Y3JlYXRlKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShmaWx0ZXIpLCBT
b3VyY2VBbHBoYTo6Y3JlYXRlKGZpbHRlcikpOwotICAgIGZvciAoTm9kZSogbm9kZSA9IGZpbHRl
ckVsZW1lbnQoKS5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygp
KSB7Ci0gICAgICAgIGlmICghbm9kZS0+aXNTVkdFbGVtZW50KCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gdG9TVkdFbGVtZW50KG5vZGUp
OwotICAgICAgICBpZiAoIWVsZW1lbnQtPmlzRmlsdGVyRWZmZWN0KCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMq
IGVmZmVjdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMqPihlbGVtZW50KTsKLSAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gZWZmZWN0RWxlbWVudC0+YnVpbGQoYnVpbGRlci5nZXQoKSwgZmlsdGVyKTsKKyAgICBhdXRv
IGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzPigmZmlsdGVyRWxlbWVudCgpKTsKKyAgICBmb3IgKGF1dG8gZWxlbWVudCA9IGNoaWxk
cmVuLmJlZ2luKCksIGVuZCA9IGNoaWxkcmVuLmVuZCgpOyBlbGVtZW50ICE9IGVuZDsgKytlbGVt
ZW50KSB7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IGVsZW1lbnQtPmJ1
aWxkKGJ1aWxkZXIuZ2V0KCksIGZpbHRlcik7CiAgICAgICAgIGlmICghZWZmZWN0KSB7CiAgICAg
ICAgICAgICBidWlsZGVyLT5jbGVhckVmZmVjdHMoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci0+
YXBwZW5kRWZmZWN0VG9FZmZlY3RSZWZlcmVuY2VzKGVmZmVjdCwgZWZmZWN0RWxlbWVudC0+cmVu
ZGVyZXIoKSk7Ci0gICAgICAgIGVmZmVjdEVsZW1lbnQtPnNldFN0YW5kYXJkQXR0cmlidXRlcyhl
ZmZlY3QuZ2V0KCkpOwotICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVu
Z3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+KGVmZmVjdEVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
LCB0YXJnZXRCb3VuZGluZ0JveCkpOwotICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoCi0gICAgICAgICAgICBlZmZlY3RFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5z
dmdTdHlsZSgpLT5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ0lfTElORUFSUkdCID8g
Q29sb3JTcGFjZUxpbmVhclJHQiA6IENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBidWls
ZGVyLT5hZGQoZWZmZWN0RWxlbWVudC0+cmVzdWx0KCksIGVmZmVjdCk7CisgICAgICAgIGJ1aWxk
ZXItPmFwcGVuZEVmZmVjdFRvRWZmZWN0UmVmZXJlbmNlcyhlZmZlY3QsIGVsZW1lbnQtPnJlbmRl
cmVyKCkpOworICAgICAgICBlbGVtZW50LT5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0Lmdl
dCgpKTsKKyAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRl
eHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PigmKmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3Vu
ZGluZ0JveCkpOworICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVu
dC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+c3ZnU3R5bGUoKS0+Y29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycygpID09IENJX0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQtPnJlc3VsdCgpLCBlZmZl
Y3QucmVsZWFzZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXIucmVsZWFzZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggNzYxNGRjYjM2NzUwNDI2ZWU3YTk2M2Nj
OTk2OWQ5Y2U3NzNjMDVmMi4uZjJiZTAzMDVmNGFhNTY5MzU4NDNjYTdiNzg5YWNiZmE2YjU2MzU4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC0xNjEsOCArMTYxLDggQEAgdm9p
ZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAgICAg
ICAgICAgIGlmICh1cmxbMF0gPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgRWxlbWVudCogdGFy
Z2V0RWxlbWVudCA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKHVybC5zdWJzdHJpbmcoMSkp
OwotICAgICAgICAgICAgICAgIGlmIChTVkdTTUlMRWxlbWVudDo6aXNTTUlMRWxlbWVudCh0YXJn
ZXRFbGVtZW50KSkgewotICAgICAgICAgICAgICAgICAgICB0b1NWR1NNSUxFbGVtZW50KHRhcmdl
dEVsZW1lbnQpLT5iZWdpbkJ5TGlua0FjdGl2YXRpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAo
dGFyZ2V0RWxlbWVudCAmJiBpc1NWR1NNSUxFbGVtZW50KCp0YXJnZXRFbGVtZW50KSkgeworICAg
ICAgICAgICAgICAgICAgICB0b1NWR1NNSUxFbGVtZW50KCp0YXJnZXRFbGVtZW50KS5iZWdpbkJ5
TGlua0FjdGl2YXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAppbmRleCA5ZGMyNjZlZjcx
ZmM0N2JhYzA2MGIzMmJiN2I3MTcyNGM0ZTkzZDFmLi42OTkwNjYzMTFkNTgyMjIyYTk4ZmM2NzZk
MDllNDk0YTViNjlhYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5j
cHAKQEAgLTQ0OSw2ICs0NDksMTQgQEAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIFNWR0FuaW1h
dGVFbGVtZW50OjplbnN1cmVBbmltYXRvcigpCiAgICAgcmV0dXJuIG1fYW5pbWF0b3IuZ2V0KCk7
CiB9CiAKK2Jvb2wgaXNTVkdBbmltYXRlRWxlbWVudChjb25zdCBOb2RlJiBub2RlKQoreworICAg
IHJldHVybiBub2RlLmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUYWcpCisgICAgICAgIHx8
IG5vZGUuaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKQorICAgICAgICB8fCBu
b2RlLmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpCisgICAgICAgIHx8
IG5vZGUuaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKTsKK30KKwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKaW5kZXggOTc5
OWExNmRmNmQ4M2I0MDc4MmRkM2FiZDc3OWZlYzY4M2Q3ZjU1OS4uZjRhZWYyYmExOWI4N2I4MDVm
MTYwNGRiODVlN2YzNDc4YjRmMWRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50LmgKQEAgLTQ3LDEyICs0NywxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJl
c2V0QW5pbWF0ZWRUeXBlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQW5pbWF0ZWRUeXBlKFNW
R0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpOwogCi0gICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZVRv
QXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmlu
Zyk7Ci0gICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1YWwgYm9v
bCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1l
bnQqIHJlc3VsdEVsZW1lbnQpOwotICAgIHZpcnR1YWwgdm9pZCBhcHBseVJlc3VsdHNUb1Rhcmdl
dCgpOwotICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fs
Y3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRv
VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc0FkZGl0aXZlKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGFy
Z2V0RWxlbWVudChTVkdFbGVtZW50KikgT1ZFUlJJREU7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZh
dGU6CiAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGVuc3VyZUFuaW1hdG9yKCk7CiAgICAg
Ym9vbCBhbmltYXRlZFByb3BlcnR5VHlwZVN1cHBvcnRzQWRkaXRpb24oKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgT1ZFUlJJREU7CiAKICAgICBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBtX2Zyb21UeXBlOwogICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IG1fdG9UeXBl
OwpAQCAtNzYsMTUgKzc2LDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3I+IG1fYW5pbWF0b3I7CiB9OwogCi1pbmxpbmUgU1ZHQW5pbWF0ZUVsZW1lbnQqIHRv
U1ZHQW5pbWF0ZUVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighZWxlbWVudAotICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdO
YW1lKFNWR05hbWVzOjphbmltYXRlVGFnKQotICAgICAgICB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpCi0gICAgICAgIHx8IGVsZW1lbnQtPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdB
bmltYXRlRWxlbWVudCo+KGVsZW1lbnQpOwotfQordm9pZCBpc1NWR0FuaW1hdGVFbGVtZW50KGNv
bnN0IFNWR0FuaW1hdGVFbGVtZW50Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hl
Y2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCitib29sIGlzU1ZHQW5pbWF0ZUVsZW1l
bnQoY29uc3QgTm9kZSYpOworRUxFTUVOVF9UWVBFX0NBU1RTKFNWR0FuaW1hdGVFbGVtZW50KQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDc5
YjU4NTc4ZDRiNzJkZDhhMGNhZWEzYjdiNzVjMTUyNmJlYmQ2OWIuLmU0YTIyZTAwNjMwMzg4MjI3
YzQ0ODZiMzNhYmVkOThmOWQ1YjQxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtODAs
NiArODAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFkaWVudFN0b3AoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTTUlMRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBGb3IgU1ZHVGVzdHMKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTIwNiw4ICsyMDcs
OSBAQCBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3IgewogICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IFF1YWxpZmllZE5hbWUmIGEsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGIpIHsg
cmV0dXJuIGEubWF0Y2hlcyhiKTsgfQogfTsKIAordm9pZCBpc1NWR0VsZW1lbnQoY29uc3QgU1ZH
RWxlbWVudCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25v
d24gYXQgY29tcGlsZSB0aW1lLgogaW5saW5lIGJvb2wgaXNTVkdFbGVtZW50KGNvbnN0IE5vZGUm
IG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNTVkdFbGVtZW50KCk7IH0KLXRlbXBsYXRlIDw+IGlubGlu
ZSBib29sIGlzRWxlbWVudE9mVHlwZTxTVkdFbGVtZW50Pihjb25zdCBFbGVtZW50KiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50LT5pc1NWR0VsZW1lbnQoKTsgfQordGVtcGxhdGUgPD4gaW5saW5l
IGJvb2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0VsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdFbGVtZW50KCk7IH0KIAogRUxFTUVOVF9UWVBF
X0NBU1RTKFNWR0VsZW1lbnQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCBkMGYzNDBiMjJhYTM4
ZDRlZjA1OTk4NDFjZjA0NzdiYmI5MDAwMjQxLi4wMjk1NWE5NmJhY2IxYWJiMzZiZWMzZTAyM2I1
Y2EyODEwNjUxOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC02Niw3ICs2Niw3IEBAIHByb3Rl
Y3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlckVmZmVj
dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgUmVuZGVy
RWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
JikgT1ZFUlJJREU7CkBAIC04MywxMiArODMsMTIgQEAgcHJpdmF0ZToKIAogdm9pZCBpbnZhbGlk
YXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKIAotaW5saW5lIGJvb2wgaXNT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgTm9kZSogbm9kZSkKLXsK
LSAgICByZXR1cm4gbm9kZS0+aXNTVkdFbGVtZW50KCkgJiYgdG9TVkdFbGVtZW50KG5vZGUpLT5p
c0ZpbHRlckVmZmVjdCgpOwotfQordm9pZCBpc1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyhjb25zdCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmKTsgLy8g
Q2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUg
dGltZS4KK2lubGluZSBib29sIGlzU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNGaWx0ZXJFZmZl
Y3QoKTsgfQoraW5saW5lIGJvb2wgaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKSAmJiB0b1NW
R0VsZW1lbnQobm9kZSkuaXNGaWx0ZXJFZmZlY3QoKTsgfQordGVtcGxhdGUgPD4gaW5saW5lIGJv
b2wgaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz4oY29uc3QgRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gaXNTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMoZWxlbWVudCk7IH0KIAotdGVtcGxhdGUgPD4gaW5saW5lIGJv
b2wgaXNFbGVtZW50T2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4o
Y29uc3QgRWxlbWVudCogZWxlbWVudCkgeyByZXR1cm4gaXNTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMoZWxlbWVudCk7IH0KK0VMRU1FTlRfVFlQRV9DQVNUUyhTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpCiAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA3ZjI1ZThkNWE3
NjFkMjQxNjk2Zjg5Njc2Zjc3NGFiYTM0M2I0MDI0Li5mMjYyMzk4YzAxZjA3ZmJkODdjZDBkNjQw
YjgyM2IxZDA4YjAwODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmNwcApAQCAtMTYzLDYgKzE2MywxMSBAQCBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gU1ZH
R3JhZGllbnRFbGVtZW50OjpidWlsZFN0b3BzKCkKICAgICByZXR1cm4gc3RvcHM7CiB9CiAKK2Jv
b2wgaXNTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4g
bm9kZS5oYXNUYWdOYW1lKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykgfHwgbm9kZS5oYXNU
YWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZyk7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKaW5kZXgg
NTQ1NmIyZWEzZDRkMTYxNTUzYTVkODJhYWY2MjgwNjQ5NjlkNmMzMC4uMTFhMGEwMTk5YWY3Njc2
MTE3MTUxMWUyMjY5NDdiMDBjZjZlYzc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuaApAQCAtMTA4LDExICsxMDgsOSBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRJRVMKIH07CiAKLWlubGluZSBTVkdHcmFkaWVudEVsZW1lbnQqIHRv
U1ZHR3JhZGllbnRFbGVtZW50KE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIW5vZGUgfHwgKG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJhZGlh
bEdyYWRpZW50VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVu
dFRhZykpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Kj4obm9k
ZSk7Ci19Cit2b2lkIGlzU1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFNWR0dyYWRpZW50RWxlbWVu
dCYpOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQg
Y29tcGlsZSB0aW1lLgorYm9vbCBpc1NWR0dyYWRpZW50RWxlbWVudChjb25zdCBOb2RlJik7CitF
TEVNRU5UX1RZUEVfQ0FTVFMoU1ZHR3JhZGllbnRFbGVtZW50KQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAppbmRleCA5NzU4
MzlmOTFiNTBkMzQ0MzRjZmYwZDVkMTJjMjk0YjUyYzljODU4Li5jNTUyNzA0OGIyZjZkNDY0MjA3
ZDI0NTM0Nzk2Zjk5MjlmYTcyY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxl
bWVudC5oCkBAIC03NCwyMiArNzQsMTAgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8QWZmaW5lVHJh
bnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKIH07CiAKLWlubGluZSBTVkdHcmFwaGlj
c0VsZW1lbnQmIHRvU1ZHR3JhcGhpY3NFbGVtZW50KE5vZGUmIG5vZGUpCi17Ci0gICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obm9kZS5pc1NWR0VsZW1lbnQoKSk7Ci0gICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odG9TVkdFbGVtZW50KG5vZGUpLmlzU1ZHR3Jh
cGhpY3NFbGVtZW50KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdHcmFwaGljc0VsZW1l
bnQmPihub2RlKTsKLX0KLQotaW5saW5lIFNWR0dyYXBoaWNzRWxlbWVudCogdG9TVkdHcmFwaGlj
c0VsZW1lbnQoTm9kZSogbm9kZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTighbm9kZSB8fCBub2RlLT5pc1NWR0VsZW1lbnQoKSk7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oIW5vZGUgfHwgdG9TVkdFbGVtZW50KG5vZGUpLT5pc1NWR0dyYXBo
aWNzRWxlbWVudCgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50
Kj4obm9kZSk7Ci19Ci0KLXZvaWQgdG9TVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgU1ZHR3JhcGhp
Y3NFbGVtZW50Jik7Ci12b2lkIHRvU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0IFNWR0dyYXBoaWNz
RWxlbWVudCopOwordm9pZCBpc1NWR0dyYXBoaWNzRWxlbWVudChjb25zdCBTVkdHcmFwaGljc0Vs
ZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3du
IGF0IGNvbXBpbGUgdGltZS4KK2lubGluZSBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0
IFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaXNTVkdHcmFwaGljc0VsZW1l
bnQoKTsgfQoraW5saW5lIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gbm9kZS5pc1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQobm9kZSkuaXNT
VkdHcmFwaGljc0VsZW1lbnQoKTsgfQorRUxFTUVOVF9UWVBFX0NBU1RTKFNWR0dyYXBoaWNzRWxl
bWVudCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCmluZGV4IGQ4NWVjNmFmMGI0Mzc3MjUxOWNkZWExZmJhYzBkODUzNzYzMGFm
ZjQuLjhjMjBiMjFhOTIzMDVlZTJmZDBhNjUyNmE2NDE1MGQ1NmEyMGVmNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC02NCw3ICs2NCw2IEBAIGlubGluZSBTVkdJ
bWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYKICAgICAsIG1faGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX2lt
YWdlTG9hZGVyKHRoaXMpCiB7Ci0gICAgQVNTRVJUKGlzU1ZHSW1hZ2VFbGVtZW50KHRoaXMpKTsK
ICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR0ltYWdlRWxlbWVudCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAppbmRleCAzZjY5NmM5MzYzNDZiYjli
ZjE5ZjBlNWU0MzkzMWI2ZDg2NTdjN2E5Li40ZGYzYzZjZWU5YjQ5OGY4OGMwZmQ2ZjVjNGZjYjMx
ZmQwZGY0MTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKQEAgLTE1OSw2
ICsxNTksMTEgQEAgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3Q+KiBTVkdQb2x5
RWxlbWVudDo6YW5pbWF0ZWRQb2ludHMoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qPihzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0Fu
aW1hdGVkUG9pbnRMaXN0Pihsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodGhpcykpLT5hbmlt
VmFsKCkpOwogfQogCitib29sIGlzU1ZHUG9seUVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkKK3sK
KyAgICByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKFNWR05hbWVzOjpwb2x5Z29uVGFnKSB8fCBub2Rl
Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnKTsKK30KKwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKaW5kZXggZGQ0OWY4M2Ix
ZDhiM2U1NjcwNjM3NTkyNjRmODE1ZGU4ZTI5YzdkMy4uMWM2NjNhODUzYmI0ZmE3M2JiOGY4NTEy
NTFhYjBmYjlkODgzMzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTIy
LDYgKzIyLDcgQEAKICNkZWZpbmUgU1ZHUG9seUVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykK
KwogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKQEAg
LTMwLDggKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQb2x5RWxl
bWVudCA6IHB1YmxpYyBTVkdHcmFwaGljc0VsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICwg
cHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgeworY2xhc3MgU1ZHUG9seUVsZW1l
bnQgOiBwdWJsaWMgU1ZHR3JhcGhpY3NFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCB7CiBwdWJsaWM6CiAgICAgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2lu
dExpc3Q+KiBwb2ludHMoKTsKICAgICBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlz
dD4qIGFuaW1hdGVkUG9pbnRzKCk7CkBAIC02NSwxOSArNjUsMTIgQEAgcHJvdGVjdGVkOgogICAg
IG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3BlcnR5PFNWR1BvaW50TGlzdD4g
bV9wb2ludHM7CiB9OwogCi1pbmxpbmUgU1ZHUG9seUVsZW1lbnQmIHRvU1ZHUG9seUVsZW1lbnQo
U1ZHRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihlbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShTVkdOYW1lczo6cG9seWxpbmVUYWcpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHUG9seUVsZW1lbnQmPihlbGVtZW50KTsKLX0KLQotaW5saW5lIFNWR1BvbHlFbGVtZW50
KiB0b1NWR1BvbHlFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWVsZW1lbnQgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShT
VkdOYW1lczo6cG9seWdvblRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cG9s
eWxpbmVUYWcpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUG9seUVsZW1lbnQqPihlbGVt
ZW50KTsKLX0KK3ZvaWQgaXNTVkdQb2x5RWxlbWVudChjb25zdCBTVkdQb2x5RWxlbWVudCYpOyAv
LyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGls
ZSB0aW1lLgorYm9vbCBpc1NWR1BvbHlFbGVtZW50KGNvbnN0IE5vZGUmKTsKK0VMRU1FTlRfVFlQ
RV9DQVNUUyhTVkdQb2x5RWxlbWVudCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmgKaW5kZXggNmY0NWY4NjVjOGU4MTQ2NTlmZDYyYjRmYjU2M2E5YmViOTNm
Nzc0Zi4uZTIwOWNmMjNkN2VjNmI5OGVhMzI5ZjZmNzVhNDNjNzEwNWI4MWRkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaApAQCAtNjUsOCArNjUsNyBAQCBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoQWRqdXN0VHlwZT4gewogICAgIH0KIH07
CiAKLWNsYXNzIFNWR1RleHRDb250ZW50RWxlbWVudCA6IHB1YmxpYyBTVkdHcmFwaGljc0VsZW1l
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCB7CitjbGFzcyBTVkdUZXh0Q29udGVudEVsZW1lbnQgOiBwdWJsaWMgU1ZH
R3JhcGhpY3NFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiBw
dWJsaWM6CiAgICAgLy8gRm9yd2FyZCBkZWNsYXJlIGVudW1lcmF0aW9ucyBpbiB0aGUgVzNDIG5h
bWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbi4KICAgICBlbnVtIHsKQEAgLTEwNyw3ICsx
MDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0
aHMoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udGVudCgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIEN1c3RvbSAn
dGV4dExlbmd0aCcgcHJvcGVydHkKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5n
dGgoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwpAQCAtMTIxLDExICsxMjAsMTAgQEAgcHJp
dmF0ZToKICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiB9OwogCi1pbmxpbmUg
U1ZHVGV4dENvbnRlbnRFbGVtZW50KiB0b1NWR1RleHRDb250ZW50RWxlbWVudChTVkdFbGVtZW50
KiBlbGVtZW50KQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFlbGVt
ZW50IHx8IGVsZW1lbnQtPmlzVGV4dENvbnRlbnQoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNWR1RleHRDb250ZW50RWxlbWVudCo+KGVsZW1lbnQpOwotfQordm9pZCBpc1NWR1RleHRDb250
ZW50RWxlbWVudChjb25zdCBTVkdUZXh0Q29udGVudEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNl
c3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KK2lubGlu
ZSBib29sIGlzU1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuIGVsZW1lbnQuaXNUZXh0Q29udGVudCgpOyB9CitpbmxpbmUgYm9vbCBpc1NWR1Rl
eHRDb250ZW50RWxlbWVudChjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzU1ZHRWxl
bWVudCgpICYmIHRvU1ZHRWxlbWVudChub2RlKS5pc1RleHRDb250ZW50KCk7IH0KK0VMRU1FTlRf
VFlQRV9DQVNUUyhTVkdUZXh0Q29udGVudEVsZW1lbnQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNw
cAppbmRleCBkOTAzMTcxYjIxZDdkZmNhMzAwMWIwNjk5OGUzMTE1YTNkN2FiNjMwLi4zNjZlYTlh
MjI3OWI0NTZjNjNmZDdmZWVhMzQxMDQxOGIyZTc4YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtNDE0LDE0ICs0MTQsNiBAQCBi
b29sIFNWR1NNSUxFbGVtZW50OjpwYXJzZUNvbmRpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlLCBC
ZWdpbk9yRW5kIGJlZ2luT3JFbmQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZHU01J
TEVsZW1lbnQ6OmlzU01JTEVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5v
ZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShT
VkdOYW1lczo6c2V0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFn
KSB8fCBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlTW90aW9uVGFnKQotICAgICAg
ICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykg
fHwgbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKTsKLX0KLSAgICAK
IHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQmVnaW5PckVuZChjb25zdCBTdHJpbmcmIHBhcnNl
U3RyaW5nLCBCZWdpbk9yRW5kIGJlZ2luT3JFbmQpCiB7CiAgICAgVmVjdG9yPFNNSUxUaW1lV2l0
aE9yaWdpbj4mIHRpbWVMaXN0ID0gYmVnaW5PckVuZCA9PSBCZWdpbiA/IG1fYmVnaW5UaW1lcyA6
IG1fZW5kVGltZXM7CkBAIC01MzgsMTIgKzUzMCwxMyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpj
b25uZWN0Q29uZGl0aW9ucygpCiAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm1fdHlwZSA9
PSBDb25kaXRpb246OlN5bmNiYXNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5t
X2Jhc2VJRC5pc0VtcHR5KCkpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fc3luY2Jhc2UgPSB0
cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChjb25kaXRpb24ubV9iYXNlSUQpOwotICAgICAgICAg
ICAgaWYgKCFpc1NNSUxFbGVtZW50KGNvbmRpdGlvbi5tX3N5bmNiYXNlLmdldCgpKSkgewotICAg
ICAgICAgICAgICAgIGNvbmRpdGlvbi5tX3N5bmNiYXNlID0gMDsKKyAgICAgICAgICAgIGlmICgh
Y29uZGl0aW9uLm1fc3luY2Jhc2UpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoIWlzU1ZHU01JTEVsZW1lbnQoKmNvbmRpdGlvbi5tX3N5bmNiYXNlKSkgeworICAg
ICAgICAgICAgICAgIGNvbmRpdGlvbi5tX3N5bmNiYXNlID0gbnVsbHB0cjsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFNWR1NNSUxFbGVtZW50
KiBzeW5jYmFzZSA9IHRvU1ZHU01JTEVsZW1lbnQoY29uZGl0aW9uLm1fc3luY2Jhc2UuZ2V0KCkp
OwotICAgICAgICAgICAgc3luY2Jhc2UtPmFkZFRpbWVEZXBlbmRlbnQodGhpcyk7CisgICAgICAg
ICAgICB0b1NWR1NNSUxFbGVtZW50KCpjb25kaXRpb24ubV9zeW5jYmFzZSkuYWRkVGltZURlcGVu
ZGVudCh0aGlzKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAppbmRleCAzMGZkN2NkYjA5YjU5YmM4NmViNDc5MWVk
MjVlMTQ2YjEyOGI5MDE1Li5jMTUwN2MzYzlhMWI0Y2I1YzQxYTlmYzk5ZTBhN2EzZDBkYTQ1YmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCkBA
IC00Miw4ICs0Miw2IEBAIHB1YmxpYzoKICAgICBTVkdTTUlMRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5TVkdTTUlMRWxlbWVudCgpOwogCi0g
ICAgc3RhdGljIGJvb2wgaXNTTUlMRWxlbWVudChjb25zdCBOb2RlKik7Ci0KICAgICBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBPVkVSUklERTsKQEAgLTEzMCwxMCArMTI4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGVuZGVkQWN0aXZlSW50ZXJ2YWwoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQq
IHJlc3VsdEVsZW1lbnQpID0gMDsKIAotICAgIGVudW0gQmVnaW5PckVuZCB7Ci0gICAgICAgIEJl
Z2luLAotICAgICAgICBFbmQKLSAgICB9OworICAgIGVudW0gQmVnaW5PckVuZCB7IEJlZ2luLCBF
bmQgfTsKICAgICAKICAgICBTTUlMVGltZSBmaW5kSW5zdGFuY2VUaW1lKEJlZ2luT3JFbmQsIFNN
SUxUaW1lIG1pbmltdW1UaW1lLCBib29sIGVxdWFsc01pbmltdW1PSykgY29uc3Q7CiAgICAgdm9p
ZCByZXNvbHZlRmlyc3RJbnRlcnZhbCgpOwpAQCAtMTk3LDYgKzE5Miw4IEBAIHByaXZhdGU6CiAg
ICAgZmxvYXQgY2FsY3VsYXRlQW5pbWF0aW9uUGVyY2VudEFuZFJlcGVhdChTTUlMVGltZSBlbGFw
c2VkLCB1bnNpZ25lZCYgcmVwZWF0KSBjb25zdDsKICAgICBTTUlMVGltZSBjYWxjdWxhdGVOZXh0
UHJvZ3Jlc3NUaW1lKFNNSUxUaW1lIGVsYXBzZWQpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29s
IGlzU01JTEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVlOyB9CisK
ICAgICBtdXRhYmxlIFNWR0VsZW1lbnQqIG1fdGFyZ2V0RWxlbWVudDsKIAogICAgIFZlY3RvcjxD
b25kaXRpb24+IG1fY29uZGl0aW9uczsKQEAgLTIzNiwxMyArMjMzLDEyIEBAIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIENvbmRpdGlvbkV2ZW50TGlzdGVuZXI7CiB9OwogCi1pbmxpbmUgU1ZH
U01JTEVsZW1lbnQqIHRvU1ZHU01JTEVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZWxlbWVudCB8fCBTVkdTTUlMRWxlbWVu
dDo6aXNTTUlMRWxlbWVudChlbGVtZW50KSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1NN
SUxFbGVtZW50Kj4oZWxlbWVudCk7Ci19Cit2b2lkIGlzU1ZHU01JTEVsZW1lbnQoY29uc3QgU1ZH
U01JTEVsZW1lbnQmKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBl
IGtub3duIGF0IGNvbXBpbGUgdGltZS4KK2lubGluZSBib29sIGlzU1ZHU01JTEVsZW1lbnQoY29u
c3QgU1ZHRWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5pc1NNSUxFbGVtZW50KCk7
IH0KK2lubGluZSBib29sIGlzU1ZHU01JTEVsZW1lbnQoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1lbnQobm9kZSkuaXNTTUlMRWxlbWVu
dCgpOyB9Cit0ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgU1ZH
U01JTEVsZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGlzU1ZHU01JTEVs
ZW1lbnQoZWxlbWVudCk7IH0KIAotdGVtcGxhdGUgPD4gaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZU
eXBlPFNWR1NNSUxFbGVtZW50Pihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IHJldHVybiBTVkdT
TUlMRWxlbWVudDo6aXNTTUlMRWxlbWVudChlbGVtZW50KTsgfQorRUxFTUVOVF9UWVBFX0NBU1RT
KFNWR1NNSUxFbGVtZW50KQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBmODhhOTZjOGRiMmU4NjI5NzMxNGRiOWQyODk1YzdmMDc5NWU1YWEyLi5jMGM0MjczZjZl
OTlmM2U1MTM3NTkwNjgwZmVhMzU5ODVlMjE5MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC01ODAsOSArNTgwLDkgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFNoYWRvd1Bz
ZXVkb0lkKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkMKIAog
U3RyaW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQqIGVsZW1lbnQpCiB7
Ci0gICAgaWYgKGVsZW1lbnQgJiYgaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50
KSkgewotICAgICAgICBpZiAodG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChlbGVtZW50KS0+
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0b0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGVsZW1lbnQpLT5wbGFjZWhvbGRlckVsZW1lbnQoKS0+dGV4
dENvbnRlbnQoKTsKKyAgICBpZiAoZWxlbWVudCAmJiBpc0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KCplbGVtZW50KSkgeworICAgICAgICBpZiAodG9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCgqZWxlbWVudCkucGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0b0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCplbGVtZW50KS5wbGFjZWhvbGRlckVs
ZW1lbnQoKS0+dGV4dENvbnRlbnQoKTsKICAgICB9CiAKICAgICByZXR1cm4gU3RyaW5nKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>