<?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>132689</bug_id>
          
          <creation_ts>2014-05-08 10:02:02 -0700</creation_ts>
          <short_desc>Make BlobDataFileReference manage its sandbox extension</short_desc>
          <delta_ts>2014-05-08 11:33:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007655</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-08 10:02:02 -0700</bug_when>
    <thetext>Currently, sandbox extensions for registered file blobs are tracked in WebKit2 in NetworkBlobRegistry, while the files itself are tracked in BlobRegistryImpl.

This creates a potential for these getting out of sync. Also, I&apos;m going to make WebCore read the files in some cases, so we&apos;ll need a way to consume extensions from WebCore code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007665</commentid>
    <comment_count>1</comment_count>
      <attachid>231077</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-08 10:25:09 -0700</bug_when>
    <thetext>Created attachment 231077
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007690</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-08 11:33:53 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r168478&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231077</attachid>
            <date>2014-05-08 10:25:09 -0700</date>
            <delta_ts>2014-05-08 10:32:56 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>SandboxExtension.txt</filename>
            <type>text/plain</type>
            <size>40874</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE0LTA1LTA4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlIG1hbmFnZSBpdHMgc2FuZGJveCBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjY4OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4cG9ydCBz
eW1ib2xzIHRoYXQgYXJlIG5vdyBuZWVkZWQgaW4gV2ViS2l0MiB0byBzdWJjbGFzcyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2UuCisKKyAgICAgICAgKiBmaWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0
cnkuY3BwOiAoV2ViQ29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHA6IChXZWJDb3Jl
OjpCbG9iRGF0YTo6YXBwZW5kRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YS5oOiAoV2ViQ29yZTo6QmxvYkRhdGFJdGVtOjpCbG9iRGF0YUl0ZW0pOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDogKFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJl
Z2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5oOgorICAgICAgICBCbG9iUmVnaXN0cnkgbm93IHRha2VzIGEgQmxvYkRhdGFGaWxl
UmVmZXJlbmNlIGFuZCBub3QgYSBwYXRoLCBzbyB0aGF0IFdlYktpdDIKKyAgICAgICAgY291bGQg
cGFzcyBvYmplY3RzIHRoYXQgaW5jbHVkZSBzYW5kYm94IGV4dGVuc2lvbnMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSk6IEFkZGVk
IGEgdmlydHVhbCBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOjpzaXplKTogV2Ugbm93IHJlY29yZCB0aGUgc2l6ZSBhbmQgbW9kaWZpY2F0aW9uIHRp
bWUgcmlnaHQgYXdheSwgbm8gbmVlZCB0byBsYXppbHkgY2FsY3VsYXRlIHRoZW0uCisgICAgICAg
IChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFy
dFRyYWNraW5nTW9kaWZpY2F0aW9ucyk6IFJlY29yZCB0aW1lIGFuZCBzaXplCisgICAgICAgIChz
aW5jZSBpdCdzIGEgc2luZ2xlIGNhbGwpLiBIb3dldmVyLCBzaXplIGNhbGN1bGF0aW9uIHdpbGwg
YmVjb21lIGNvbXBsaWNhdGVkIGFnYWluIHNvb24uCisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OnByZXBhcmVGb3JGaWxlQWNjZXNzKTogQSBob29rIGZvciBzdWJjbGFz
c2VzLgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpyZXZva2VGaWxl
QWNjZXNzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmNvbXB1dGVGaWxlU3lzdGVtRGF0YSk6IERlbGV0ZWQuCisKIDIwMTQtMDUtMDggIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV2ViS2l0Ml0gQ2FuJ3Qg
YWN0aXZhdGUgdGV4dCBmaWVsZHMgb24gRmFjZWJvb2sKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtODY1LDYgKzg2NSw3IEBAIF9fWk43V2ViQ29yZTIxQXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyNmNyZWEKIF9fWk43V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyMTFpdGVt
QXRJbmRleEVpCiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjZnb0JhY2tFdgog
X19aTjdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXI5Z29Gb3J3YXJkRXYKK19fWk43V2Vi
Q29yZTIxQmxvYkRhdGFGaWxlUmVmZXJlbmNlRDJFdgogX19aTjdXZWJDb3JlMjFDcm9zc1RocmVh
ZENvcGllckJhc2VJTGIwRUxiMEVOM1dURjZTdHJpbmdFRTRjb3B5RVJLUzJfCiBfX1pON1dlYkNv
cmUyMUNyb3NzVGhyZWFkQ29waWVyQmFzZUlMYjBFTGIwRU5TXzE5SURCRGF0YWJhc2VNZXRhZGF0
YUVFNGNvcHlFUktTMV8KIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJlc3N1cmVIYW5kbGVyN2luc3Rh
bGxFdgpAQCAtMTY5MCw2ICsxNjkxLDcgQEAgX19aTks3V2ViQ29yZTE1VmlzaWJsZVBvc2l0aW9u
MTlhYnNvbHV0ZQogX19aTks3V2ViQ29yZTE1VmlzaWJsZVBvc2l0aW9uNDVsaW5lRGlyZWN0aW9u
UG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb25FdgogX19aTks3V2ViQ29yZTE1VmlzaWJs
ZVBvc2l0aW9uNG5leHRFTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pOSzdX
ZWJDb3JlMTVWaXNpYmxlUG9zaXRpb244cHJldmlvdXNFTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGVFCitfX1pOSzdXZWJDb3JlMTZCbG9iUmVnaXN0cnlJbXBsMThnZXRCbG9iRGF0YUZy
b21VUkxFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTE2RXZlbnRMaXN0ZW5lck1hcDhjb250YWlu
c0VSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50
MTBpc1VSTEZpZWxkRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxMWlzRGF0ZUZp
ZWxkRXYKQEAgLTE5NzUsNiArMTk3Nyw3IEBAIF9fWlRWTjdXZWJDb3JlMTZEYXRhYmFzZVN0cmF0
ZWd5RQogX19aVFZON1dlYkNvcmUxNkljb25EYXRhYmFzZUJhc2VFCiBfX1pUVk43V2ViQ29yZTE3
RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTE5Qmx1ckZpbHRlck9wZXJhdGlvbkUK
K19fWlRWTjdXZWJDb3JlMjFCbG9iRGF0YUZpbGVSZWZlcmVuY2VFCiBfX1pUVk43V2ViQ29yZTIy
RGVmYXVsdEZpbHRlck9wZXJhdGlvbkUKIF9fWlRWTjdXZWJDb3JlMjVEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uRQogX19aVFZON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw4
U2V0dGluZ3NFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDE2ODQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmgiCiAKKyNpbmNsdWRlICJCbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJCbG9iUGFydC5oIgogI2luY2x1ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkJsb2JV
UkwuaCIKQEAgLTEwMiwxMyArMTAzLDEzIEBAIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxCbG9iVXJs
T3JpZ2luTWFwPiYKIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxv
YlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIHBhdGgsIGNvbnRlbnRUeXBlKTsKKyAgICAg
ICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTo6Y3JlYXRlKHBhdGgpLCBjb250ZW50VHlwZSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IC8vIEJsb2JSZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRh
LgogICAgICAgICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3Ry
eUNvbnRleHQodXJsLCBwYXRoLCBjb250ZW50VHlwZSk7CiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NvbnRleHRdIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlD
b250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgYmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51cmwsIGJs
b2JSZWdpc3RyeUNvbnRleHQtPnBhdGgsIGJsb2JSZWdpc3RyeUNvbnRleHQtPmNvbnRlbnRUeXBl
KTsKKyAgICAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyRmlsZUJsb2JVUkwoYmxvYlJl
Z2lzdHJ5Q29udGV4dC0+dXJsLCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmNyZWF0ZShibG9iUmVn
aXN0cnlDb250ZXh0LT5wYXRoKSwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+Y29udGVudFR5cGUpOwog
ICAgICAgICB9KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JEYXRhLmNwcAkocmV2aXNpb24gMTY4NDM1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDkgKzc4
LDEwIEBAIHZvaWQgQmxvYkRhdGE6OmFwcGVuZERhdGEoUGFzc1JlZlB0cjxSYXcKICAgICBtX2l0
ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0oZGF0YSwgb2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAotdm9p
ZCBCbG9iRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCit2b2lkIEJsb2JEYXRh
OjphcHBlbmRGaWxlKFBhc3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBmaWxlKQogewot
ICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShwYXRoKSk7CisgICAgZmlsZS0+c3RhcnRU
cmFja2luZ01vZGlmaWNhdGlvbnMoKTsKKyAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0o
ZmlsZSkpOwogfQogCiB2b2lkIEJsb2JEYXRhOjphcHBlbmRGaWxlKEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZSogZmlsZSwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgJKHJldmlzaW9uIDE2ODQx
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsOSArODYsOSBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEJsb2JEYXRhOwogCi0gICAgZXhwbGljaXQgQmxvYkRhdGFJdGVt
KGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICBleHBsaWNpdCBCbG9iRGF0YUl0ZW0oUGFzc1JlZlB0
cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGZpbGUpCiAgICAgICAgIDogdHlwZShGaWxlKQotICAg
ICAgICAsIGZpbGUoQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjcmVhdGUocGF0aCkpCisgICAgICAg
ICwgZmlsZShmaWxlKQogICAgICAgICAsIG1fb2Zmc2V0KDApCiAgICAgICAgICwgbV9sZW5ndGgo
dG9FbmRPZkZpbGUpCiAgICAgewpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN3YXBJdGVtcyhCbG9iRGF0YUl0ZW1MaXN0Jik7CiAKICAgICB2b2lkIGFwcGVuZERhdGEoUGFz
c1JlZlB0cjxSYXdEYXRhPik7Ci0gICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCk7CisgICAgdm9pZCBhcHBlbmRGaWxlKFBhc3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuY3BwCShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDI2ICszMCwyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVuc2lnbmVkIGxv
bmcgbG9uZyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUoKSBjb25zdAorQmxvYkRhdGFGaWxl
UmVmZXJlbmNlOjp+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCkKIHsKLSAgICBpZiAoIW1fZmlsZVN5
c3RlbURhdGFDb21wdXRlZCkKLSAgICAgICAgY29tcHV0ZUZpbGVTeXN0ZW1EYXRhKCk7Cit9CiAK
K3Vuc2lnbmVkIGxvbmcgbG9uZyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUoKSBjb25zdAor
ewogICAgIHJldHVybiBtX3NpemU7CiB9CiAKIGRvdWJsZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0
ZW1EYXRhQ29tcHV0ZWQpCi0gICAgICAgIGNvbXB1dGVGaWxlU3lzdGVtRGF0YSgpOwotCiAgICAg
cmV0dXJuIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwogfQogCi12b2lkIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTo6Y29tcHV0ZUZpbGVTeXN0ZW1EYXRhKCkgY29uc3QKK3ZvaWQgQmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpCiB7Ci0gICAgbV9maWxl
U3lzdGVtRGF0YUNvbXB1dGVkID0gdHJ1ZTsKLQorICAgIC8vIFRoaXMgaXMgbm90IGRvbmUgYXV0
b21hdGljYWxseSBieSB0aGUgY29uc3RydWN0b3IsIGJlY2F1c2UgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlIGlzCisgICAgLy8gYWxzbyB1c2VkIHRvIHBhc3MgcGF0aHMgYXJvdW5kIGJlZm9yZSByZWdp
c3RyYXRpb24uIE9ubHkgcmVnaXN0ZXJlZCBibG9icyBuZWVkIHRvIHBheQorICAgIC8vIHRoZSBj
b3N0IG9mIHRyYWNraW5nIGZpbGUgbW9kaWZpY2F0aW9ucy4KICAgICBGaWxlTWV0YWRhdGEgbWV0
YWRhdGE7CiAgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEobV9wYXRoLCBtZXRhZGF0YSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTU4LDQgKzU3LDEyIEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
Ojpjb21wdXRlRmlsZVMKICAgICBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSA9IG1ldGFkYXRh
Lm1vZGlmaWNhdGlvblRpbWU7CiB9CiAKK3ZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpwcmVw
YXJlRm9yRmlsZUFjY2VzcygpCit7Cit9CisKK3ZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpy
ZXZva2VGaWxlQWNjZXNzKCkKK3sKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCShyZXZpc2lv
biAxNjg0MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNyArMzksMjkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKSk7
CiAgICAgfQogCisgICAgdmlydHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlKCk7CisKKyAgICB2
b2lkIHN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKCk7CisKICAgICBjb25zdCBTdHJpbmcmIHBh
dGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6
ZSgpIGNvbnN0OwogICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSBjb25zdDsK
IAotcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpOworCitwcm90ZWN0ZWQ6CiAgICAgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgOiBtX3BhdGgo
cGF0aCkKLSAgICAgICAgLCBtX2ZpbGVTeXN0ZW1EYXRhQ29tcHV0ZWQoZmFsc2UpCiAgICAgICAg
ICwgbV9zaXplKDApCiAgICAgICAgICwgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoaW52YWxp
ZEZpbGVUaW1lKCkpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjLCBhIEZp
bGUgb2JqZWN0IHNob3VsZCBzdGFydCB3YXRjaGluZyBmb3IgY2hhbmdlcyBhcyBzb29uIGFzIGl0
J3MgY3JlYXRlZCwgc28gd2Ugc2hvdWxkIHJlY29yZCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSByaWdodCBhd2F5LgotICAgICAgICAvLyBGSVhNRTogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBi
ZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lzdGVtIG9iamVjdCBjaGFuZ2VzLCBjb25z
aWRlciB1c2luZyB0aGVzZS4KICAgICB9CiAKLSAgICB2b2lkIGNvbXB1dGVGaWxlU3lzdGVtRGF0
YSgpIGNvbnN0OwotCitwcml2YXRlOgogICAgIFN0cmluZyBtX3BhdGg7Ci0gICAgbXV0YWJsZSBi
b29sIG1fZmlsZVN5c3RlbURhdGFDb21wdXRlZDsKLSAgICBtdXRhYmxlIHVuc2lnbmVkIGxvbmcg
bG9uZyBtX3NpemU7Ci0gICAgbXV0YWJsZSBkb3VibGUgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRp
bWU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fc2l6ZTsKKyAgICBkb3VibGUgbV9leHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgJKHJldmlzaW9uIDE2ODQzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeTsKIGNs
YXNzIFVSTDsKQEAgLTQ3LDcgKzQ4LDcgQEAgY2xhc3MgQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoK
IAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVk
IGZpbGUuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc1JlZlB0cjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CiAK
ICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBi
bG9iIGRhdGEuCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBW
ZWN0b3I8QmxvYlBhcnQ+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSA9IDA7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAJKHJldmlzaW9uIDE2ODQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBA
QCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtCiAgICAgQVNTRVJUKCFs
ZW5ndGgpOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgUGFzc1JlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGZpbGUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBy
ZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckZpbGVCbG9iVQogICAgIFJlZlB0cjxC
bG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CiAgICAgYmxvYkRhdGEtPnNl
dENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTsKIAotICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKHBh
dGgpOworICAgIGJsb2JEYXRhLT5hcHBlbmRGaWxlKGZpbGUpOwogICAgIG1fYmxvYnMuc2V0KHVy
bC5zdHJpbmcoKSwgYmxvYkRhdGEucmVsZWFzZSgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgJKHJldmlzaW9u
IDE2ODQzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYkRhdGEqLCBjb25zdCBCbG9iRGF0YUl0
ZW1MaXN0JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFBhc3NS
ZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBW
ZWN0b3I8QmxvYlBhcnQ+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3Jj
VVJMKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGVuZCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjg0NzMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MCBAQAorMjAx
NC0wNS0wOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBN
YWtlIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSBtYW5hZ2UgaXRzIHNhbmRib3ggZXh0ZW5zaW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI2ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbGVCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JS
ZWdpc3RyeS5oOgorICAgICAgICBXZSBubyBsb25nZXIgdHJhY2sgc2FuZGJveCBleHRlbnNpb25z
IGhlcmUuIEluc3RlYWQsIHByb3ZpZGUgYSB3YXkgdG8gZ2V0IGZpbGVzCisgICAgICAgIGZvciBh
IGJsb2IsIHdoaWNoIGNvbnRhaW4gZXh0ZW5zaW9ucyBhbmQgY2FuIGFsbG93IGFjY2VzcyB0byB0
aGVtc2VsdmVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6aW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgQWxsb3cvcmV2b2tl
IGFjY2VzcyB0byBmaWxlcyBpbiBibG9iLCBqdXN0IGxpa2Ugd2UgZG8gZm9yIGV4cGxpY2l0bHkg
cGFzc2VkIGV4dGVuc2lvbnMuCisKKyAgICAgICAgKiBTaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6QmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246On5CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpwcmVwYXJlRm9yRmlsZUFjY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2VG
aWxlQWNjZXNzKToKKyAgICAgICAgKiBTaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkJsb2JEYXRhRmlsZVJl
ZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUpOgorICAgICAgICBBIHN1YmNsYXNz
IG9mIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSB0aGF0IGFsc28gY29udGFpbnMgYSBzYW5kYm94IGV4
dGVuc2lvbi4gTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgYWx3YXlzIHVzZXMgaXQgaW4gQmxvYlJl
Z2lzdHJ5SW1wbC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHA6IChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJM
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaDoKKyAg
ICAgICAgVXBkYXRlZCBmb3IgQmxvYlJlZ2lzdHJ5IGludGVyZmFjZSBjaGFuZ2VzLiBCbG9iUmVn
aXN0cnlQcm94eSBkb2Vzbid0IHJlYWxseSBuZWVkCisgICAgICAgIGEgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlIGhlcmUsIGFzIGl0IG9ubHkgdXNlcyBhIHBhdGgsIGJ1dCBpdCBuZWVkcyB0byBpbXBs
ZW1lbnQgdGhlIHNhbWUgaW50ZXJmYWNlCisgICAgICAgIGFzIEJsb2JSZWdpc3RyeUltcGwuCisK
IDIwMTQtMDUtMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFtpT1MgV2ViS2l0Ml0gQ2FuJ3QgYWN0aXZhdGUgdGV4dCBmaWVsZHMgb24gRmFjZWJvb2sKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4NSw3IEBAIHNldChX
ZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvQVBJVVJMUmVxdWVzdC5jcHAKICAgICBTaGFyZWQv
QVBJVVJMUmVzcG9uc2UuY3BwCiAgICAgU2hhcmVkL0FjdGl2aXR5QXNzZXJ0aW9uLmNwcAorICAg
IFNoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAKICAg
ICBTaGFyZWQvQ2FjaGVNb2RlbC5jcHAKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcAogICAg
IFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtNTYzLDYgKzU2Myw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BS
T0NFU1MpCiAgICAgICAgIFBsdWdpblByb2Nlc3MvdW5peC9QbHVnaW5Qcm9jZXNzVW5peC5jcHAK
IAogICAgICAgICBTaGFyZWQvQWN0aXZpdHlBc3NlcnRpb24uY3BwCisgICAgICAgIFNoYXJlZC9C
bG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAKICAgICAgICAgU2hh
cmVkL0NoaWxkUHJvY2Vzcy5jcHAKICAgICAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNw
cAogICAgICAgICBTaGFyZWQvQ29ubmVjdGlvblN0YWNrLmNwcApJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgi
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CkBAIC04MywxOCArODQsMTUgQEAgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgaWYg
KG1fcmVxdWVzdC5odHRwQm9keSgpKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0YUVs
ZW1lbnQ+JiBlbGVtZW50cyA9IG1fcmVxdWVzdC5odHRwQm9keSgpLT5lbGVtZW50cygpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBlbGVtZW50cy5zaXplKCk7IGkgPCBjb3Vu
dDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBlID09IEZvcm1EYXRh
RWxlbWVudDo6VHlwZTo6RW5jb2RlZEJsb2IpIHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8UmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+PiBibG9iRWxlbWVudEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9ucyhlbGVtZW50c1tpXS5tX3VybCk7
Ci0gICAgICAgICAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLmFwcGVuZFZl
Y3RvcihibG9iRWxlbWVudEV4dGVuc2lvbnMpOwotICAgICAgICAgICAgfQorICAgICAgICBmb3Ig
KGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IG1fcmVxdWVzdC5odHRwQm9keSgpLT5l
bGVtZW50cygpKSB7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFF
bGVtZW50OjpUeXBlOjpFbmNvZGVkQmxvYikKKyAgICAgICAgICAgICAgICBtX2ZpbGVSZWZlcmVu
Y2VzLmFwcGVuZFZlY3RvcihOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5maWxlc0luQmxv
Yihjb25uZWN0aW9uLCBlbGVtZW50Lm1fdXJsKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAobV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJsb2IiKSkgewogICAgICAgICBBU1NFUlQo
IVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShwYXJhbWV0ZXJzLnJlc291cmNlU2FuZGJveEV4dGVu
c2lvbikpOwotICAgICAgICBtX3Jlc291cmNlU2FuZGJveEV4dGVuc2lvbnMgPSBOZXR3b3JrQmxv
YlJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5kYm94RXh0ZW5zaW9ucyhtX3JlcXVlc3QudXJsKCkpOwor
ICAgICAgICBtX2ZpbGVSZWZlcmVuY2VzLmFwcGVuZFZlY3RvcihOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpzaGFyZWQoKS5maWxlc0luQmxvYihjb25uZWN0aW9uLCBtX3JlcXVlc3QudXJsKCkpKTsKICAg
ICB9IGVsc2UKICNlbmRpZgogICAgIGlmIChSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gcmVzb3Vy
Y2VTYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHBhcmFtZXRlcnMu
cmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uKSkKQEAgLTM1NSwxMSArMzUzLDE0IEBAIElQQzo6Q29u
bmVjdGlvbiogTmV0d29ya1Jlc291cmNlTG9hZGVyOjoKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDAsIGNvdW50ID0gbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zLnNpemUoKTsgaSA8IGNv
dW50OyArK2kpCi0gICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uc1tpXS0+Y29u
c3VtZSgpOworICAgIGZvciAoUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiBleHRlbnNpb24gOiBt
X3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMpCisgICAgICAgIGV4dGVuc2lvbi0+Y29uc3Vt
ZSgpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gbV9yZXNvdXJjZVNhbmRib3hF
eHRlbnNpb25zLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIG1fcmVzb3VyY2VTYW5k
Ym94RXh0ZW5zaW9uc1tpXS0+Y29uc3VtZSgpOworICAgIGZvciAoUmVmUHRyPFNhbmRib3hFeHRl
bnNpb24+JiBleHRlbnNpb24gOiBtX3Jlc291cmNlU2FuZGJveEV4dGVuc2lvbnMpCisgICAgICAg
IGV4dGVuc2lvbi0+Y29uc3VtZSgpOworCisgICAgZm9yIChSZWZQdHI8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiYgZmlsZVJlZmVyZW5jZSA6IG1fZmlsZVJlZmVyZW5jZXMpCisgICAgICAgIGZpbGVS
ZWZlcmVuY2UtPnByZXBhcmVGb3JGaWxlQWNjZXNzKCk7CiAKICAgICBtX3NhbmRib3hFeHRlbnNp
b25zQXJlQ29uc3VtZWQgPSB0cnVlOwogfQpAQCAtMzY3LDE0ICszNjgsMTcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnN1bWVTYW5kYgogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKG1fc2FuZGJveEV4
dGVuc2lvbnNBcmVDb25zdW1lZCkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQg
PSBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkK
LSAgICAgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uc1tpXS0+cmV2b2tlKCk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IG1fcmVzb3VyY2VTYW5kYm94RXh0
ZW5zaW9ucy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgbV9yZXNvdXJjZVNh
bmRib3hFeHRlbnNpb25zW2ldLT5yZXZva2UoKTsKKyAgICAgICAgZm9yIChSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4mIGV4dGVuc2lvbiA6IG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucykK
KyAgICAgICAgICAgIGV4dGVuc2lvbi0+cmV2b2tlKCk7CisgICAgICAgIGZvciAoUmVmUHRyPFNh
bmRib3hFeHRlbnNpb24+JiBleHRlbnNpb24gOiBtX3Jlc291cmNlU2FuZGJveEV4dGVuc2lvbnMp
CisgICAgICAgICAgICBleHRlbnNpb24tPnJldm9rZSgpOworICAgICAgICBmb3IgKFJlZlB0cjxC
bG9iRGF0YUZpbGVSZWZlcmVuY2U+JiBmaWxlUmVmZXJlbmNlIDogbV9maWxlUmVmZXJlbmNlcykK
KyAgICAgICAgICAgIGZpbGVSZWZlcmVuY2UtPnJldm9rZUZpbGVBY2Nlc3MoKTsKICAgICB9CiAK
ICAgICBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuY2xlYXIoKTsKICAgICBtX3Jlc291
cmNlU2FuZGJveEV4dGVuc2lvbnMuY2xlYXIoKTsKKyAgICBtX2ZpbGVSZWZlcmVuY2VzLmNsZWFy
KCk7CiAKICAgICBtX3NhbmRib3hFeHRlbnNpb25zQXJlQ29uc3VtZWQgPSBmYWxzZTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZTsKIGNsYXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC0xODksNiArMTkwLDcgQEAgcHJpdmF0ZToK
IAogICAgIFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IG1fcmVxdWVzdEJvZHlTYW5k
Ym94RXh0ZW5zaW9uczsKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBtX3Jl
c291cmNlU2FuZGJveEV4dGVuc2lvbnM7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIGJvb2wgbV9zYW5kYm94
RXh0ZW5zaW9uc0FyZUNvbnN1bWVkOwogCiAgICAgUmVmUHRyPE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJ
KHJldmlzaW9uIDE2ODQzNSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVB
UEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShCTE9CKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCisjaW5j
bHVkZSAiQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUGFydC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgpAQCAtNTEsMTUgKzUyLDcgQEAg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6TmV0d29ya0Jsb2JSZWdpc3RyeQogCiB2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gc2FuZGJveEV4dGVuc2lvbiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKLSAgICBBU1NFUlQoIW1fc2FuZGJveEV4dGVuc2lvbnMuY29udGFp
bnModXJsLnN0cmluZygpKSk7Ci0KLSAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZpbGVCbG9i
VVJMKHVybCwgcGF0aCwgY29udGVudFR5cGUpOwotCi0gICAgaWYgKHNhbmRib3hFeHRlbnNpb24p
IHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gZXh0ZW5zaW9uc1Zl
Y3RvcjsKLSAgICAgICAgZXh0ZW5zaW9uc1ZlY3Rvci5hcHBlbmQoc2FuZGJveEV4dGVuc2lvbik7
Ci0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbnMuYWRkKHVybC5zdHJpbmcoKSwgc3RkOjptb3Zl
KGV4dGVuc2lvbnNWZWN0b3IpKTsKLSAgICB9CisgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJG
aWxlQmxvYlVSTCh1cmwsIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUocGF0aCwgc2FuZGJveEV4dGVuc2lvbiksIGNvbnRlbnRUeXBlKTsKIAogICAgIEFT
U0VSVCghbV9ibG9ic0ZvckNvbm5lY3Rpb24uZ2V0KGNvbm5lY3Rpb24pLmNvbnRhaW5zKHVybCkp
OwogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwOjppdGVyYXRvciBtYXBJdGVyYXRvciA9IG1fYmxv
YnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbik7CkBAIC03MCwyMCArNjMsOCBAQCB2b2lk
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsCiAKIHZvaWQgTmV0d29ya0Jsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBj
b25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9i
UGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgQVNTRVJUKCFtX3NhbmRi
b3hFeHRlbnNpb25zLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpOwotCi0gICAgLy8gQ29tYmluZSBl
eGlzdGluZyBleHRlbnNpb25zIGZvciBpbm5lciBCbG9iIGl0ZW1zLgotICAgIFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+IHNhbmRib3hFeHRlbnNpb25zOwotICAgIGZvciAoY29uc3Qg
QmxvYlBhcnQmIHBhcnQgOiBibG9iUGFydHMpIHsKLSAgICAgICAgaWYgKHBhcnQudHlwZSgpID09
IEJsb2JQYXJ0OjpCbG9iKQotICAgICAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kVmVj
dG9yKG1fc2FuZGJveEV4dGVuc2lvbnMuZ2V0KHBhcnQudXJsKCkuc3RyaW5nKCkpKTsKLSAgICB9
Ci0KICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzdGQ6Om1vdmUoYmxv
YlBhcnRzKSwgY29udGVudFR5cGUpOwogCi0gICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9ucy5pc0Vt
cHR5KCkpCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbnMuYWRkKHVybC5zdHJpbmcoKSwgc3Rk
Ojptb3ZlKHNhbmRib3hFeHRlbnNpb25zKSk7Ci0KICAgICBBU1NFUlQoIW1fYmxvYnNGb3JDb25u
ZWN0aW9uLmdldChjb25uZWN0aW9uKS5jb250YWlucyh1cmwpKTsKICAgICBCbG9iRm9yQ29ubmVj
dGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5k
KGNvbm5lY3Rpb24pOwogICAgIGlmIChtYXBJdGVyYXRvciA9PSBtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5lbmQoKSkKQEAgLTk0LDkgKzc1LDYgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUgogdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkKIHsKICAgICBibG9iUmVnaXN0cnko
KS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwotICAgIFNhbmRib3hFeHRlbnNpb25NYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX3NhbmRib3hFeHRlbnNpb25zLmZpbmQoc3JjVVJMLnN0cmluZygp
KTsKLSAgICBpZiAoaXRlciAhPSBtX3NhbmRib3hFeHRlbnNpb25zLmVuZCgpKQotICAgICAgICBt
X3NhbmRib3hFeHRlbnNpb25zLmFkZCh1cmwuc3RyaW5nKCksIGl0ZXItPnZhbHVlKTsKIAogICAg
IEFTU0VSVChtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucyhjb25uZWN0aW9uKSk7CiAgICAg
QVNTRVJUKG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLmNvbnRh
aW5zKHNyY1VSTCkpOwpAQCAtMTA3LDExICs4NSw2IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVIKIHsKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxG
b3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCk7CiAKLSAgICAvLyBGSVhNRTogT25seSBz
dG9yZSBleHRlbnNpb25zIGZvciBmaWxlcyB0aGF0IHRoZSBzbGljZSBhY3R1YWxseSBjb250YWlu
cywgbm90IGZvciBhbGwgdGhlIGZpbGVzIGluIG9yaWdpbmFsIGJsb2IuCi0gICAgU2FuZGJveEV4
dGVuc2lvbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fc2FuZGJveEV4dGVuc2lvbnMuZmluZChzcmNV
Ukwuc3RyaW5nKCkpOwotICAgIGlmIChpdGVyICE9IG1fc2FuZGJveEV4dGVuc2lvbnMuZW5kKCkp
Ci0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbnMuYWRkKHVybC5zdHJpbmcoKSwgaXRlci0+dmFs
dWUpOwotCiAgICAgQVNTRVJUKG1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rp
b24pKTsKICAgICBBU1NFUlQobV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKS0+
dmFsdWUuY29udGFpbnMoc3JjVVJMKSk7CiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChj
b25uZWN0aW9uKS0+dmFsdWUuYWRkKHVybCk7CkBAIC0xMjAsNyArOTMsNiBAQCB2b2lkIE5ldHdv
cmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSCiB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6
OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBibG9iUmVnaXN0cnkoKS51bnJl
Z2lzdGVyQmxvYlVSTCh1cmwpOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbnMucmVtb3ZlKHVybC5z
dHJpbmcoKSk7CiAKICAgICBBU1NFUlQobV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29u
bmVjdGlvbikpOwogICAgIEFTU0VSVChtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rp
b24pLT52YWx1ZS5jb250YWlucyh1cmwpKTsKQEAgLTE0MSwxNyArMTEzLDI5IEBAIHZvaWQgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2UKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SGFzaFNldDxVUkw+JiBibG9ic0ZvckNvbm5lY3Rpb24gPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5m
aW5kKGNvbm5lY3Rpb24pLT52YWx1ZTsKLSAgICBmb3IgKEhhc2hTZXQ8VVJMPjo6aXRlcmF0b3Ig
aXRlciA9IGJsb2JzRm9yQ29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBibG9ic0ZvckNvbm5lY3Rp
b24uZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICBmb3IgKEhhc2hTZXQ8VVJMPjo6
aXRlcmF0b3IgaXRlciA9IGJsb2JzRm9yQ29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBibG9ic0Zv
ckNvbm5lY3Rpb24uZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgIGJsb2JSZWdp
c3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKCppdGVyKTsKLSAgICAgICAgbV9zYW5kYm94RXh0ZW5z
aW9ucy5yZW1vdmUoKml0ZXIpOwotICAgIH0KIAogICAgIG1fYmxvYnNGb3JDb25uZWN0aW9uLnJl
bW92ZShjb25uZWN0aW9uKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCitWZWN0b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IE5ldHdv
cmtCbG9iUmVnaXN0cnk6OmZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gbV9z
YW5kYm94RXh0ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKKyAgICBpZiAoIW1fYmxvYnNGb3JD
b25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pIHx8ICFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5m
aW5kKGNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQorICAgICAgICByZXR1cm4gVmVj
dG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PigpOworCisgICAgQVNTRVJUKGJsb2JS
ZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgpKTsKKyAgICBCbG9iRGF0YSogYmxvYkRhdGEg
PSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JE
YXRhRnJvbVVSTCh1cmwpOworICAgIGlmICghYmxvYkRhdGEpCisgICAgICAgIHJldHVybiBWZWN0
b3I8UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+KCk7CisKKyAgICBWZWN0b3I8UmVmUHRy
PEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc3VsdDsKKyAgICBmb3IgKGNvbnN0IEJsb2JEYXRh
SXRlbSYgaXRlbSA6IGJsb2JEYXRhLT5pdGVtcygpKSB7CisgICAgICAgIGlmIChpdGVtLnR5cGUg
PT0gQmxvYkRhdGFJdGVtOjpGaWxlKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLmZp
bGUpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5oCShyZXZpc2lvbiAxNjg0MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogfQog
CkBAIC01NiwxNCArNTcsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKIAotICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IHNhbmRib3hFeHRlbnNpb25zKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4gZmlsZXNJbkJsb2IoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdp
c3RyeSgpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPj4+IFNhbmRib3hFeHRlbnNpb25NYXA7Ci0gICAgU2FuZGJveEV4dGVuc2lv
bk1hcCBtX3NhbmRib3hFeHRlbnNpb25zOwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29u
bmVjdGlvbk1hcDsKICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcCBtX2Jsb2JzRm9yQ29ubmVjdGlv
bjsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCIKKworI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gc2FuZGJv
eEV4dGVuc2lvbikKKyAgICA6IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRoKQorICAgICwgbV9z
YW5kYm94RXh0ZW5zaW9uKHNhbmRib3hFeHRlbnNpb24pCit7Cit9CisKK0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjp+QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24oKQoreworfQorCit2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uOjpwcmVwYXJlRm9yRmlsZUFjY2VzcygpCit7CisgICAgbV9zYW5kYm94
RXh0ZW5zaW9uLT5jb25zdW1lKCk7Cit9CisKK3ZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb246OnJldm9rZUZpbGVBY2Nlc3MoKQoreworICAgIG1fc2FuZGJveEV4
dGVuc2lvbi0+cmV2b2tlKCk7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbl9oCisjZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
OworCitjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbiA6IHB1
YmxpYyBXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2UgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBzYW5kYm94RXh0ZW5zaW9uKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRo
U2FuZGJveEV4dGVuc2lvbihwYXRoLCBzYW5kYm94RXh0ZW5zaW9uKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPik7CisgICAgdmlydHVh
bCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKKworICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlRm9yRmlsZUFjY2VzcygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCByZXZva2VGaWxlQWNjZXNzKCkgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8U2FuZGJveEV4
dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOworfTsKKworfQorCisjZW5kaWYgLy8gQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb25faAoKUHJvcGVydHkgY2hhbmdlcyBv
bjogU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94
RXh0ZW5zaW9uLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMj
CituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTY4NDEyKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTI4LDYgKzE1MjgsOCBAQAogCQlFMTUxM0M2NzE2NkVB
QkIyMDAxNDlGQ0IgLyogQ2hpbGRQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTEzQzY1MTY2RUFCQjIwMDE0OUZDQiAvKiBDaGls
ZFByb2Nlc3NQcm94eS5oICovOyB9OwogCQlFMTUyNTUxQTE3MDExODE5MDAzRDdBREIgLyogTmV0
d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE4MTcwMTE4MTkwMDNEN0FEQiAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlFMTUyNTUx
QjE3MDExODE5MDAzRDdBREIgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE5MTcwMTE4
MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovOyB9OworCQlF
MTY0QTJGMTE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRi
b3hFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE2NEEyRUYxOTFBRjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uLmNwcCAqLzsgfTsKKwkJRTE2NEEyRjIxOTFBRjE0RTAwMTA3MzdE
IC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTY0QTJGMDE5MUFGMTRFMDAx
MDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaCAqLzsg
fTsKIAkJRTE3MDg3NkIxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNzA4NzY5MTZE
NkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5jcHAgKi87IH07CiAJCUUxNzA4NzZD
MTZENkNBNjkwMEY5OTIyNiAvKiBCbG9iUmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE3MDg3NkExNkQ2Q0E2OTAwRjk5MjI2IC8q
IEJsb2JSZWdpc3RyeVByb3h5LmggKi87IH07CiAJCUUxNzkwODhEMTY5QkFBNjIwMDY5MDRDNyAv
KiBTZWNJdGVtU2hpbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMThFNjk0NzE2OUI3N0M4MDA5QjY2NzAgLyogU2VjSXRlbVNoaW0uY3BwICovOyB9
OwpAQCAtMzQ1Miw2ICszNDU0LDggQEAKIAkJRTE1MjU1MTcxNzAxMDlGQjAwM0Q3QURCIC8qIE5l
dHdvcmtSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW47IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTI1NTE4MTcw
MTE4MTkwMDNEN0FEQiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1
MjU1MTkxNzAxMTgxOTAwM0Q3QURCIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRlck1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNjRBMkVGMTkxQUYxNEUw
MDEwNzM3RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxNjRBMkYwMTkxQUYxNEUwMDEwNzM3RCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2Fu
ZGJveEV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9iRGF0
YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTcwODc2OTE2RDZDQTY5MDBGOTkyMjYgLyogQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwOyBwYXRoID0gV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3MDg3NkExNkQ2Q0E2OTAwRjk5MjI2IC8q
IEJsb2JSZWdpc3RyeVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJs
b2JSZWdpc3RyeVByb3h5Lmg7IHBhdGggPSBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE3OThDNzcxNkU2ODE4ODAw
MjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDEwNCw2ICs0MTA4LDggQEAKIAkJCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIw
M0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLywKIAkJCQk1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0Yg
LyogQXN5bmNSZXF1ZXN0LmggKi8sCiAJCQkJNTFCQTI0NDMxODU4RUUzMDAwRUEyODExIC8qIEFz
eW5jVGFzay5oICovLAorCQkJCUUxNjRBMkVGMTkxQUYxNEUwMDEwNzM3RCAvKiBCbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgKi8sCisJCQkJRTE2NEEyRjAxOTFB
RjE0RTAwMTA3MzdEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
LmggKi8sCiAJCQkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VN
YXAuaCAqLywKIAkJCQlCQ0YxODYzNzE2N0QwNzFFMDBBMUE4NUEgLyogQ2FjaGVNb2RlbC5jcHAg
Ki8sCiAJCQkJQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLywKQEAg
LTY3ODksNiArNjc5NSw3IEBACiAJCQkJMUFEQ0I4NkIxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmln
YXRpb25BY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVFRUJBMjEyNzc2MUQwMDAz
MzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzNUVFQkE0MTI3NzYxRDYwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCUUxNjRBMkYyMTkxQUYxNEUwMDEwNzM3RCAv
KiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE2NjM3RDcxOEIyODMxRjAwQzBCQ0YzIC8qIEFQSUhpc3RvcnlDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRUU3REM1MTI4QjY0NUQwMDk4MjdEQSAvKiBJbmplY3RlZEJ1
bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0OTg2MTgxMjREMTBFMjAwRDgzNEUx
IC8qIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCkBAIC04NTgy
LDYgKzg1ODksNyBAQAogCQkJCTMzRDNBM0M4MTMzOTYxNzkwMDcwOUJFNCAvKiBXZWJNZWRpYUNh
Y2hlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzM0QzQTNC
QTEzMzk2MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzM0QzQTNDQTEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTY0QTJG
MTE5MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRl
bnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNEQxOEJCRTA0NDAwMEZDRkM5IC8q
IFdLQ29udGVudFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTlFRjU5MjE4RUY4MENFMDAw
M0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTA5ODU0RUMxMkJDNEUxNzAwMEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAJKHJldmlzaW9uIDE2ODQzNSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDIyICszMiwyMyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwsIFBhc3NSZWZQdHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBmaWxl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIEFTU0VSVChXZWJQcm9jZXNzOjpz
aGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSk7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgZXh0ZW5zaW9uSGFuZGxlOwogCiAgICAgLy8gRmlsZSBwYXRoIGNhbiBiZSBlbXB0eSB3
aGVuIHN1Ym1pdHRpbmcgYSBmb3JtIGZpbGUgaW5wdXQgd2l0aG91dCBhIGZpbGUsIHNlZSBidWcg
MTExNzc4LgotICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgZXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCisgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNp
b246OlJlYWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIHBhdGgs
IGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgZmls
ZS0+cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKIHZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9y
PEJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaAkocmV2aXNpb24gMTY4NDM1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEJsb2JSZWdpc3RyeVByb3h5IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJy
aWRlOwo=
</data>
<flag name="review"
          id="255495"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>