<?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>47933</bug_id>
          
          <creation_ts>2010-10-19 14:47:58 -0700</creation_ts>
          <short_desc>navigator.language doesn&apos;t work in WebKit2</short_desc>
          <delta_ts>2010-10-19 15:29:22 -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>WebKit2</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>InRadar</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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296419</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-19 14:47:58 -0700</bug_when>
    <thetext>It should!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296422</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-19 14:49:28 -0700</bug_when>
    <thetext>Mac is somewhat special in that there is a way to override language per application (or even per an instance of an application). This means that we should only be looking at the language in UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296424</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-19 14:49:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/8494337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296450</commentid>
    <comment_count>3</comment_count>
      <attachid>71208</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-19 15:15:48 -0700</bug_when>
    <thetext>Created attachment 71208
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296453</commentid>
    <comment_count>4</comment_count>
      <attachid>71208</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-19 15:18:56 -0700</bug_when>
    <thetext>Comment on attachment 71208
proposed patch

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

&gt; WebCore/platform/mac/Language.mm:95
&gt; +            preferredLanguageCode = [@&quot;en&quot; retain];

No need to retain a constant string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296462</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-19 15:29:22 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/70095&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71208</attachid>
            <date>2010-10-19 15:15:48 -0700</date>
            <delta_ts>2010-10-19 15:18:56 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>NavigatorLanguage.txt</filename>
            <type>text/plain</type>
            <size>64292</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDA5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTAtMTAtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTMzCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NDk0MzM3PiBuYXZpZ2F0b3IubGFuZ3VhZ2UgZG9lc24ndCB3b3JrIGlu
IFdlYktpdDIKKworICAgICAgICAqIENNYWtlTGlzdHNFZmwudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2UuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwOiBDb3BpZWQg
ZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlLmNwcC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9lZmwvTGFuZ3VhZ2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9MYW5ndWFnZUVmbC5jcHA6IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1
YWdlLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTGFuZ3VhZ2UuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHA6IENvcGllZCBmcm9tIFdlYkNv
cmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9MYW5n
dWFnZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHA6
IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2UuY3BwLgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9MYW5ndWFnZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
d2luL0xhbmd1YWdlV2luLmNwcDogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFu
Z3VhZ2UuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDogQWRkZWQuCisgICAg
ICAgIENyb3NzIHBsYXRmb3JtIGNvZGUgaXMgbm93IGluIHBsYXRmb3JtL0xhbmd1YWdlLmNwcC4g
U28sIEkgcmVuYW1lZCBwbGF0Zm9ybSBmaWxlcyB0byBtYXRjaAorICAgICAgICB0aGUgY29tbW9u
IHBhdHRlcm4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5oOiBBZGRlZCBhbiBhYmls
aXR5IHRvIGZvcmNlIHRoZSBsYW5ndWFnZSwgYW5kIGFuIGFiaWxpdHkgdG8gc2V0IHVwCisgICAg
ICAgIGxpc3RlbmVycyBmb3IgY2hhbmdlcyAoaWYgdGhlIHBsYXRmb3JtIGltcGxlbWVudHMgdGhh
dCkuIFdlYiBwcm9jZXNzIHdpbGwgYWx3YXlzIHVzZSB0aGUKKyAgICAgICAgZm9yY2VkIGxhbmd1
YWdlLCBhcyBzZW50IHRvIGl0IGZyb20gVUkgcHJvY2Vzcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9MYW5ndWFnZS5tbTogTW92ZWQgY29kZSBmcm9tIFdlYktpdC4KKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKTogQWRkZWQgY29kZSB0byBzeW5jaHJvbml6ZSB1
c2VyIGRlZmF1bHRzLiBGb3Igc29tZSByZWFzb24sCisgICAgICAgIHRoZXkgY29tZSB1bnN5bmNo
cm9uaXplZCBpbiBXZWJLaXQyIGhlcmUsIHVubGlrZSBXZWJLaXQxLgorCisgICAgICAgICogcGFn
ZS9tYWMvV2ViQ29yZVZpZXdGYWN0b3J5Lmg6IFJlbW92ZWQgZGVmYXVsdExhbmd1YWdlQ29kZS4g
V2ViQ29yZSBubyBsb25nZXIgZ29lcyB0byBXZWJLaXQKKyAgICAgICAgdG8gYXNrIGZvciB0aGF0
LgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbToKKyAgICAgICAg
QWRkZWQgd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKCkuCisKIDIwMTAtMTAtMTkg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCB0
aGUgR1RLKyBidWlsZCBhZnRlciByNzAwNzIuIFRoZSBsb2dpYyBsb29rcyBpbmNvcnJlY3QsIGJ1
dApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzRWZsLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NNYWtlTGlzdHNFZmwudHh0CShyZXZpc2lvbiA2OTk2NCkKKysrIFdlYkNvcmUvQ01ha2VMaXN0
c0VmbC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgTElTVChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgIHBsYXRmb3JtL2VmbC9GaWxlQ2hvb3NlckVmbC5jcHAKICAgcGxhdGZv
cm0vZWZsL0ZpbGVTeXN0ZW1FZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9LVVJMRWZsLmNwcAotICBw
bGF0Zm9ybS9lZmwvTGFuZ3VhZ2UuY3BwCisgIHBsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAK
ICAgcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwCiAgIHBsYXRmb3JtL2VmbC9M
b2dnaW5nRWZsLmNwcAogICBwbGF0Zm9ybS9lZmwvTUlNRVR5cGVSZWdpc3RyeUVmbC5jcHAKSW5k
ZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkocmV2aXNpb24gNjk5NjQpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzQwLDYgKzIzNDAsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL0tVUkxIYXNoLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2Uu
Y3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoQm94LmggXAogCVdlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBcCkBAIC0zNTMzLDcg
KzM1MzQsNyBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1ZlcnNpb25pbmcuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5RXZlbnRHdGsuY3Bw
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9LVVJMR3RrLmNwcCBcCi0JV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvTGFuZ3VhZ2UuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5j
cHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2dnaW5nR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTWFpbkZyYW1lU2Nyb2xsYmFyR3RrLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhw
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDY5OTY0
KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzc1LDYgKzM3
NSw3IEBAIF9fWk43V2ViQ29yZTE1U3RyaW5nVHJ1bmNhdG9yMTRjZW50ZXJUcnUKIF9fWk43V2Vi
Q29yZTE1U3RyaW5nVHJ1bmNhdG9yNXdpZHRoRVJLTjNXVEY2U3RyaW5nRVJLTlNfNEZvbnRFYgog
X19aTjdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb25DMUVQTlNfNE5vZGVFaU5TXzlFQWZmaW5pdHlF
CiBfX1pON1dlYkNvcmUxNVZpc2libGVQb3NpdGlvbkMxRVJLTlNfOFBvc2l0aW9uRU5TXzlFQWZm
aW5pdHlFCitfX1pON1dlYkNvcmUxNWRlZmF1bHRMYW5ndWFnZUV2CiBfX1pON1dlYkNvcmUxNXJl
cG9ydEV4Y2VwdGlvbkVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUUKIF9fWk43V2ViQ29y
ZTE1dmlzaXRlZExpbmtIYXNoRVBLdGoKIF9fWk43V2ViQ29yZTE2QWJzdHJhY3REYXRhYmFzZTE0
c2V0SXNBdmFpbGFibGVFYgpAQCAtNDgzLDYgKzQ4NCw3IEBAIF9fWk43V2ViQ29yZTIyY291bnRl
clZhbHVlRm9yRWxlbWVudEVQTlMKIF9fWk43V2ViQ29yZTIyY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dEVQTlNfNVJhbmdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJl
c2VudGF0aW9uRVBOU181RnJhbWVFagogX19aTjdXZWJDb3JlMjNSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZEMxRVBOU184RG9jdW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZyYWdt
ZW50RUVFYmJiYmJOU18xMEVkaXRBY3Rpb25FCitfX1pON1dlYkNvcmUyM292ZXJyaWRlRGVmYXVs
dExhbmd1YWdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZy
b21Ob2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFRUUKIF9f
Wk43V2ViQ29yZTI0QmluYXJ5UHJvcGVydHlMaXN0V3JpdGVyMTd3cml0ZVByb3BlcnR5TGlzdEV2
CiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEzcmVtb3ZlTWFya2Vyc0VO
U18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRQpAQCAtNTAzLDYgKzUwNSw3IEBAIF9fWk43
V2ViQ29yZTI1UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjEKIF9fWk43V2ViQ29yZTI1UGx1Z2lu
TWFpblRocmVhZFNjaGVkdWxlcjE0cmVnaXN0ZXJQbHVnaW5FUDRfTlBQCiBfX1pON1dlYkNvcmUy
NVBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIxNnVucmVnaXN0ZXJQbHVnaW5FUDRfTlBQCiBfX1pO
N1dlYkNvcmUyNVBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI5c2NoZWR1bGVyRXYKK19fWk43V2Vi
Q29yZTI1YWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckVQdlBGdlMwX0UKIF9fWk43V2ViQ29yZTI1
Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZUV2CiBfX1pON1dlYkNvcmUyNkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uQzFFdgogX19aTjdXZWJDb3JlMjZOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjZjcmVhdGVFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVu
dEUKQEAgLTUyMyw2ICs1MjYsNyBAQCBfX1pON1dlYkNvcmUyOGNvbnRleHRNZW51SXRlbVRhZ0Nh
cGl0YWxpCiBfX1pON1dlYkNvcmUyOGNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnNFdgogX19a
TjdXZWJDb3JlMjhjb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzRXYKIF9fWk43V2ViQ29yZTI4
Y29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudUV2CitfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1
YWdlQ2hhbmdlT2JzZXJ2ZXJFUHYKIF9fWk43V2ViQ29yZTI5Y29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHRFdgogX19aTjdXZWJDb3JlMjljb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdEV2
CiBfX1pON1dlYkNvcmUyOWNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzRXYKQEAgLTExMjUs
NiArMTEyOSw3IEBAIF9zdHJpbmdJc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJpbmcKIF9zdWdn
ZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZQogX3drQWR2YW5jZURlZmF1bHRCdXR0b25QdWxzZUFu
aW1hdGlvbgogX3drQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMKK193a0NvcHlDRkxvY2Fs
aXphdGlvblByZWZlcnJlZE5hbWUKIF93a0NvcHlDT05ORUNUUHJveHlSZXNwb25zZQogX3drQ29w
eU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lCiBfd2tDcmVhdGVDdXN0b21DRlJlYWRTdHJlYW0KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5n
eXBpCShyZXZpc2lvbiA2OTk2NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzIxLDcgKzIzMjEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L0dlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL0tleUNvZGVDb252ZXJzaW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL0tleUNvZGVDb252ZXJzaW9uR3RrLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vTGFuZ3VhZ2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9MYW5n
dWFnZUNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTGlua0hh
c2hDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL01JTUVUeXBl
UmVnaXN0cnlDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Bh
c3RlYm9hcmRDaHJvbWl1bS5jcHAnLApAQCAtMjgxMSw3ICsyODExLDcgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ndGsvR2VvbG9jYXRpb25TZXJ2aWNlR3RrLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2d0ay9LVVJMR3RrLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3RrL0tleUV2
ZW50R3RrLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3RrL0xhbmd1YWdlLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ndGsvTG9nZ2luZ0d0ay5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2d0ay9NSU1F
VHlwZVJlZ2lzdHJ5R3RrLmNwcCcsCkBAIC0zMTk1LDcgKzMxOTUsNyBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL3dpbi9HRElPYmplY3RDb3VudGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vd2luL0dESU9iamVjdENvdW50ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vd2luL0tl
eUV2ZW50V2luLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vd2luL0xhbmd1YWdlLmNwcCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS93
aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcCcsCkBAIC0zMjk5LDYgKzMyOTksNyBAQAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL0tVUkxHb29nbGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9LVVJMR29vZ2xl
UHJpdmF0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9LVVJMSGFzaC5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9MYW5ndWFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0xhbmd1
YWdlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0xlbmd0aC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL0xlbmd0aC5oJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjk5NjQpCisrKyBXZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY3LDYgKzExNjcsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAgXAogICAgIHBsYXRm
b3JtL0tVUkwuY3BwIFwKKyAgICBwbGF0Zm9ybS9MYW5ndWFnZS5jcHAgXAogICAgIHBsYXRmb3Jt
L0xlbmd0aC5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXAogICAgIHBs
YXRmb3JtL0xpbmtIYXNoLmNwcCBcCkBAIC0yNjM4LDcgKzI2MzksNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBwbGF0Zm9ybS9xdC9TaGFyZWRUaW1lclF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvU291
bmRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L0xvZ2dpbmdRdC5jcHAgXAotICAgIHBsYXRmb3Jt
L3F0L0xhbmd1YWdlLmNwcCBcCisgICAgcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAgXAogICAg
IHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4
dC9xdC9UZXh0Qm91bmRhcmllc1F0LmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0QnJl
YWtJdGVyYXRvclF0LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHJldmlzaW9uIDY5OTY0KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQyOTksNiArMjQyOTksMTAgQEAKIAkJCQk+DQogCQkJ
PC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGFuZ3Vh
Z2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2UuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0yNDcx
OCw3ICsyNDcyMiw3IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cTGFuZ3VhZ2UuY3BwIg0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVx3aW5cTGFuZ3VhZ2VXaW4uY3BwIg0KIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDY5OTY0KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI0MTksNyArMjQxOSw3IEBACiAJ
CTg1RTlFMEE4MEFCM0ExMTkwMDA2OUNEMCAvKiBET01YUGF0aEV4cHJlc3Npb24uaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
RTlFMDlCMEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aEV4cHJlc3Npb24uaCAqLzsgfTsKIAkJ
ODVFOUUwQUEwQUIzQTExOTAwMDY5Q0QwIC8qIERPTVhQYXRoTlNSZXNvbHZlci5oIGluIENvcHkg
R2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVF
OUUwOUUwQUIzQTBDNzAwMDY5Q0QwIC8qIERPTVhQYXRoTlNSZXNvbHZlci5oICovOyB9OwogCQk4
NUU5RTBBQjBBQjNBMTE5MDAwNjlDRDAgLyogRE9NWFBhdGhSZXN1bHQuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTlFMDlG
MEFCM0EwQzcwMDA2OUNEMCAvKiBET01YUGF0aFJlc3VsdC5oICovOyB9OwotCQk4NUVDOUFGQjBB
NzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUM5QUY5MEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5o
ICovOyB9OworCQk4NUVDOUFGQjBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUM5QUY5MEE3MUEyQzYw
MEVFRUFFRCAvKiBMYW5ndWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg1RUNCRUVCMEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MQXJlYUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1
RUNCRUREMEFBNzYyNjgwMDU0NEYwQiAvKiBET01IVE1MQXJlYUVsZW1lbnQuaCAqLzsgfTsKIAkJ
ODVFQ0JFRUMwQUE3NjI2OTAwNTQ0RjBCIC8qIERPTUhUTUxBcmVhRWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RUNCRURFMEFBNzYyNjgw
MDU0NEYwQiAvKiBET01IVE1MQXJlYUVsZW1lbnQubW0gKi87IH07CiAJCTg1RUNCRUVEMEFBNzYy
NjkwMDU0NEYwQiAvKiBET01IVE1MQmFzZUZvbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUVDQkVERjBBQTc2MjY4MDA1NDRGMEIgLyog
RE9NSFRNTEJhc2VGb250RWxlbWVudC5oICovOyB9OwpAQCAtNTMzMyw2ICs1MzMzLDcgQEAKIAkJ
RTE4MjU2OEYwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNTY4RDBFRjJCMDJEMDA5
MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsKIAkJRTE4MjU2OTAwRUYyQjAyRDAw
OTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29u
dGV4dC5oICovOyB9OwogCQlFMTgyNThBQzBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHRDdXN0b20uY3Bw
ICovOyB9OworCQlFMTg3NzJGMTEyNkUyNjI5MDAzREQ1ODYgLyogTGFuZ3VhZ2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4NzcyRjAxMjZFMjYy
OTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVD
MEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuaCAqLzsgfTsKIAkJRTFBNUY5OUIwRTdFQUEyNTAwQUY4NUVBIC8q
IEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwICovOyB9OwogCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29y
a2VyU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRy
b2xsZXIuaCAqLzsgfTsKQEAgLTExMzMwLDYgKzExMzMxLDcgQEAKIAkJRTE4MjU2OEQwRUYyQjAy
RDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTgyNTY4RTBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV29ya2VyQ29udGV4dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxQTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3Jp
dGhtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWluZXJOb2RlQWxn
b3JpdGhtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUE1Rjk5QTBFN0VBQTI1
MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNj
cmlwdENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyNTcs
NiArMTcyNTksNyBAQAogCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAq
LywKIAkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovLAogCQkJCUJDQkQy
MUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovLAorCQkJCUUxODc3MkYwMTI2RTI2
MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgKi8sCiAJCQkJODVFQzlBRjkwQTcxQTJDNjAwRUVF
QUVEIC8qIExhbmd1YWdlLmggKi8sCiAJCQkJQkNFNjVCRTgwRUFDREYxNjAwN0U0NTMzIC8qIExl
bmd0aC5jcHAgKi8sCiAJCQkJQkNFNjVCRTkwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oICov
LApAQCAtMjExMzgsNiArMjExNDEsNyBAQAogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKIAkJCWNvbXBhdGli
aWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xp
c2g7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgK
IAkJCQlFbmdsaXNoLApAQCAtMjM2MjcsNiArMjM2MzEsNyBAQAogCQkJCTk3REQ0RDg2MEZERjRE
NkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGQTNCOTBB
MTI1Q0QxMjIwMDMwMEJBRCAvKiBJbnNwZWN0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlVmlld0ZhY3Rvcnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVWaWV3RmFjdG9yeS5oCShy
ZXZpc2lvbiA2OTk2NCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZVZpZXdGYWN0b3J5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogQHByb3RvY29sIFdlYkNvcmVWaWV3
RmFjdG9yeQogCi0tIChOU1N0cmluZyAqKWRlZmF1bHRMYW5ndWFnZUNvZGU7Ci0KIC0gKEJPT0wp
b2JqZWN0SXNUZXh0TWFya2VyOihpZClvYmplY3Q7CiAtIChCT09MKW9iamVjdElzVGV4dE1hcmtl
clJhbmdlOihpZClvYmplY3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGFu
Z3VhZ2UuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIEhhc2hNYXA8dm9pZCos
IExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbj4gT2JzZXJ2ZXJNYXA7CitzdGF0aWMgT2Jz
ZXJ2ZXJNYXAmIG9ic2VydmVyTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE9ic2Vy
dmVyTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCit2b2lkIGFkZExhbmd1YWdl
Q2hhbmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0
aW9uIGN1c3RvbU9ic2VydmVyKQoreworICAgIG9ic2VydmVyTWFwKCkuc2V0KGNvbnRleHQsIGN1
c3RvbU9ic2VydmVyKTsKK30KKwordm9pZCByZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZv
aWQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKG9ic2VydmVyTWFwKCkuY29udGFpbnMoY29udGV4
dCkpOworICAgIG9ic2VydmVyTWFwKCkucmVtb3ZlKGNvbnRleHQpOworfQorCit2b2lkIGxhbmd1
YWdlRGlkQ2hhbmdlKCkKK3sKKyAgICBPYnNlcnZlck1hcDo6aXRlcmF0b3IgZW5kID0gb2JzZXJ2
ZXJNYXAoKS5lbmQoKTsKKyAgICBmb3IgKE9ic2VydmVyTWFwOjppdGVyYXRvciBpdGVyID0gb2Jz
ZXJ2ZXJNYXAoKS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBpdGVyLT5z
ZWNvbmQoaXRlci0+Zmlyc3QpOworfQorCitzdGF0aWMgU3RyaW5nJiBsYW5ndWFnZU92ZXJyaWRl
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3ZlcnJpZGUsICgpKTsKKyAg
ICByZXR1cm4gb3ZlcnJpZGU7Cit9CisKK1N0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQoreworICAg
IGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUgPSBsYW5ndWFnZU92ZXJyaWRlKCk7CisgICAgaWYgKCFv
dmVycmlkZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOworCisgICAgcmV0dXJu
IHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCk7Cit9CisKK3ZvaWQgb3ZlcnJpZGVEZWZhdWx0TGFu
Z3VhZ2UoY29uc3QgU3RyaW5nJiBvdmVycmlkZSkKK3sKKyAgICBsYW5ndWFnZU92ZXJyaWRlKCkg
PSBvdmVycmlkZTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gNjk5NjQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTAsMTcgKzEwLDE3IEBACiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CiAjaWZuZGVmIExhbmd1YWdlX2gKQEAgLTMwLDggKzMwLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKTsKK1N0cmluZyBkZWZhdWx0TGFu
Z3VhZ2UoKTsKK3ZvaWQgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJik7CiAK
Ky8vIFRoZSBvYnNlcnZlciBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHN5c3RlbSBsYW5n
dWFnZSBjaGFuZ2VzICh1bmxlc3MgaXQncyBvdmVycmlkZGVuIGJ5IG92ZXJyaWRlRGVmYXVsdExh
bmd1YWdlKCkpLgordHlwZWRlZiB2b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9u
KSh2b2lkKiBjb250ZXh0KTsKK3ZvaWQgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBj
b250ZXh0LCBMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24pOwordm9pZCByZW1vdmVMYW5n
dWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRleHQpOworCitTdHJpbmcgcGxhdGZvcm1EZWZh
dWx0TGFuZ3VhZ2UoKTsKK3ZvaWQgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKIH0KIAogI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlLmNwcAkocmV2aXNpb24gNjk5NjQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJMYW5ndWFnZS5oIgotCi0jaW5jbHVkZSAiQ2hyb21pdW1CcmlkZ2UuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmluZyBkZWZhdWx0
TGFuZ3VhZ2UoKQotewotICAgIHN0YXRpYyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7
Ci0gICAgaWYgKGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKLSAgICAgICAgY29t
cHV0ZWREZWZhdWx0TGFuZ3VhZ2UgPSBDaHJvbWl1bUJyaWRnZTo6Y29tcHV0ZWREZWZhdWx0TGFu
Z3VhZ2UoKTsKLSAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTGFuZ3Vh
Z2VDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9M
YW5ndWFnZUNocm9taXVtLmNwcAkocmV2aXNpb24gNjk5NjQpCShmcm9tIFdlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vTGFuZ3VhZ2UuY3BwOjY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgorCisj
aW5jbHVkZSAiQ2hyb21pdW1CcmlkZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQoreworICAg
IHN0YXRpYyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisgICAgaWYgKGNvbXB1dGVk
RGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKKyAgICAgICAgY29tcHV0ZWREZWZhdWx0TGFuZ3Vh
Z2UgPSBDaHJvbWl1bUJyaWRnZTo6Y29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UoKTsKKyAgICByZXR1
cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNw
cAkocmV2aXNpb24gNjk5NjQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdl
Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCitTdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0TGFuZ3VhZ2UoKQogewogICAgIHN0YXRpYyBTdHJpbmcgY29tcHV0ZWREZWZhdWx0TGFu
Z3VhZ2U7CiAgICAgaWYgKGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2VmbC9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDY5OTY0KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0
byBOb2tpYSBkZSBUZWNub2xvZ2lhCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBF
bGVjdHJvbmljcwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMYW5ndWFn
ZS5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmluZyBkZWZhdWx0TGFuZ3VhZ2Uo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi19
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCShyZXZpc2lvbiA2OTk2NCkJ
KGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2UuY3BwOjY5OTY0KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIElu
c3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
YW5ndWFnZS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBkZWZhdWx0TGFu
Z3VhZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCShyZXZpc2lvbiA2
OTk2NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBk
ZWZhdWx0TGFuZ3VhZ2UoKQorU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9MYW5ndWFnZS5jcHAJKHJldmlzaW9uIDY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0KLSNpbmNsdWRlICJHT3duUHRyLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8bG9jYWxlLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotLy8gVXNpbmcgcGFuZ29fbGFuZ3VhZ2VfZ2V0X2RlZmF1bHQoKSBoZXJlIGlz
IG5vdCBhbiBvcHRpb24sIGJlY2F1c2UKLS8vIGl0IGRvZXNuJ3Qgc3VwcG9ydCBjaGFuZ2luZyB0
aGUgbG9jYWxlIGluIHJ1bnRpbWUsIHNvIGl0IHJldHVybnMKLS8vIGFsd2F5cyB0aGUgc2FtZSB2
YWx1ZS4KLVN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQotewotICAgIGNoYXIqIGxvY2FsZURlZmF1
bHQgPSBzZXRsb2NhbGUoTENfQ1RZUEUsIE5VTEwpOwotCi0gICAgaWYgKCFsb2NhbGVEZWZhdWx0
KQotICAgICAgICByZXR1cm4gU3RyaW5nKCJjIik7Ci0KLSAgICBHT3duUHRyPGdjaGFyPiBub3Jt
YWxpemVkRGVmYXVsdChnX2FzY2lpX3N0cmRvd24obG9jYWxlRGVmYXVsdCwgLTEpKTsKLSAgICBj
aGFyKiBwdHIgPSBzdHJjaHIobm9ybWFsaXplZERlZmF1bHQuZ2V0KCksICdfJyk7Ci0KLSAgICBp
ZiAocHRyKQotICAgICAgICAqcHRyID0gJy0nOwotCi0gICAgcHRyID0gc3RyY2hyKG5vcm1hbGl6
ZWREZWZhdWx0LmdldCgpLCAnLicpOwotCi0gICAgaWYgKHB0cikKLSAgICAgICAgKnB0ciA9ICdc
MCc7Ci0KLSAgICByZXR1cm4gU3RyaW5nKG5vcm1hbGl6ZWREZWZhdWx0LmdldCgpKTsKLX0KLQot
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAkocmV2aXNpb24gNjk5NjQp
CShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlLmNwcDo2OTk2NCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgorCisjaW5jbHVk
ZSAiR093blB0ci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGxvY2FsZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9k
ZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNlCisvLyBpdCBkb2Vzbid0IHN1
cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCisvLyBh
bHdheXMgdGhlIHNhbWUgdmFsdWUuCitTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKK3sKKyAgICBj
aGFyKiBsb2NhbGVEZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKKworICAgIGlm
ICghbG9jYWxlRGVmYXVsdCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiYyIpOworCisgICAgR093
blB0cjxnY2hhcj4gbm9ybWFsaXplZERlZmF1bHQoZ19hc2NpaV9zdHJkb3duKGxvY2FsZURlZmF1
bHQsIC0xKSk7CisgICAgY2hhciogcHRyID0gc3RyY2hyKG5vcm1hbGl6ZWREZWZhdWx0LmdldCgp
LCAnXycpOworCisgICAgaWYgKHB0cikKKyAgICAgICAgKnB0ciA9ICctJzsKKworICAgIHB0ciA9
IHN0cmNocihub3JtYWxpemVkRGVmYXVsdC5nZXQoKSwgJy4nKTsKKworICAgIGlmIChwdHIpCisg
ICAgICAgICpwdHIgPSAnXDAnOworCisgICAgcmV0dXJuIFN0cmluZyhub3JtYWxpemVkRGVmYXVs
dC5nZXQoKSk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJ
KHJldmlzaW9uIDY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4gb3B0aW9u
LCBiZWNhdXNlCiAvLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2FsZSBpbiBy
dW50aW1lLCBzbyBpdCByZXR1cm5zCiAvLyBhbHdheXMgdGhlIHNhbWUgdmFsdWUuCi1TdHJpbmcg
ZGVmYXVsdExhbmd1YWdlKCkKK1N0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiB7CiAg
ICAgY2hhciogbG9jYWxlRGVmYXVsdCA9IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiA2OTk2NCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwNiwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEwLDMyICsxMCwxMDYgQEAKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTGFuZ3VhZ2UuaCIKIAogI2ltcG9ydCAiQmxv
Y2tFeGNlcHRpb25zLmgiCi0jaW1wb3J0ICJQbGF0Zm9ybVN0cmluZy5oIgotI2ltcG9ydCAiV2Vi
Q29yZVZpZXdGYWN0b3J5LmgiCisjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
Kworc3RhdGljIE5TU3RyaW5nICpwcmVmZXJyZWRMYW5ndWFnZUNvZGU7CisKK0BpbnRlcmZhY2Ug
TGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKK30KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIKKworKyAodm9pZClfd2Via2l0X2xhbmd1YWdl
UHJlZmVyZW5jZXNEaWRDaGFuZ2UKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZWxlYXNlXTsKKyAgICBwcmVmZXJyZWRMYW5ndWFn
ZUNvZGUgPSBuaWw7CisKKyAgICBsYW5ndWFnZURpZENoYW5nZSgpOworfQorCitAZW5kCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgTlNT
dHJpbmcgKmNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29kZShOU1N0cmluZyAqbGFuZ3VhZ2VDb2Rl
KQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBMb29rIHVwIHRoZSBs
YW5ndWFnZSBjb2RlIHVzaW5nIENGQnVuZGxlLgorICAgIENGU3RyaW5nUmVmIHByZWZlcnJlZExh
bmd1YWdlQ29kZSA9IHdrQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZSgoQ0ZTdHJpbmdS
ZWYpbGFuZ3VhZ2VDb2RlKTsKKworICAgIGlmIChwcmVmZXJyZWRMYW5ndWFnZUNvZGUpCisgICAg
ICAgIGxhbmd1YWdlQ29kZSA9IChOU1N0cmluZyAqKXByZWZlcnJlZExhbmd1YWdlQ29kZTsKKyAg
ICAKKyAgICAvLyBNYWtlIHRoZSBzdHJpbmcgbG93ZXJjYXNlLgorICAgIE5TU3RyaW5nICpsb3dl
cmNhc2VMYW5ndWFnZUNvZGUgPSBbbGFuZ3VhZ2VDb2RlIGxvd2VyY2FzZVN0cmluZ107CisgICAg
CisgICAgLy8gVHVybiBhICdfJyBpbnRvIGEgJy0nIGlmIGl0IGFwcGVhcnMgYWZ0ZXIgYSAyLWxl
dHRlciBsYW5ndWFnZSBjb2RlLgorICAgIGlmIChbbG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIGxlbmd0
aF0gPCAzIHx8IFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgY2hhcmFjdGVyQXRJbmRleDoyXSAhPSAn
XycpCisgICAgICAgIHJldHVybiBsb3dlcmNhc2VMYW5ndWFnZUNvZGU7CisKKyAgICBOU011dGFi
bGVTdHJpbmcgKnJlc3VsdCA9IFtsb3dlcmNhc2VMYW5ndWFnZUNvZGUgbXV0YWJsZUNvcHldOwor
ICAgIFtyZXN1bHQgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOk5TTWFrZVJhbmdlKDIsIDEpIHdp
dGhTdHJpbmc6QCItIl07CisKKyAgICBpZiAocHJlZmVycmVkTGFuZ3VhZ2VDb2RlKQorICAgICAg
ICBDRlJlbGVhc2UocHJlZmVycmVkTGFuZ3VhZ2VDb2RlKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK1N0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBy
ZXR1cm4gW1tXZWJDb3JlVmlld0ZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gZGVmYXVsdExhbmd1YWdl
Q29kZV07CisKKyAgICBpZiAoIXByZWZlcnJlZExhbmd1YWdlQ29kZSkgeworICAgICAgICBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzeW5jaHJvbml6ZV07CisgICAgICAg
IE5TQXJyYXkgKmxhbmd1YWdlcyA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHN0cmluZ0FycmF5Rm9yS2V5OkAiQXBwbGVMYW5ndWFnZXMiXTsKKyAgICAgICAgaWYgKCFb
bGFuZ3VhZ2VzIGNvdW50XSkKKyAgICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IFtA
ImVuIiByZXRhaW5dOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmVmZXJyZWRMYW5ndWFn
ZUNvZGUgPSBjcmVhdGVIVFRQU3R5bGVMYW5ndWFnZUNvZGUoW2xhbmd1YWdlcyBvYmplY3RBdElu
ZGV4OjBdKTsKKyAgICB9CisKKyAgICBOU1N0cmluZyAqY29kZSA9IFtbcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlIHJldGFpbl0gYXV0b3JlbGVhc2VdOworCisgICAgc3RhdGljIGJvb2wgbGFuZ3VhZ2VD
aGFuZ2VPYnNlcnZlckFkZGVkOworICAgIGlmICghbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVk
KSB7CisgICAgICAgIFtbTlNEaXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSBhZGRPYnNlcnZlcjpbTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciBzZWxmXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5nZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0Om5pbF07CisgICAgICAgIGxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJBZGRlZCA9IHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIGNvZGU7CisKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgJKHJldmlzaW9uIDY5OTY0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw2ICs5NCw3IEBAIGV4dGVybiBDRlJlYWRTdHJlYW1SZWYgKCp3a0NyZWF0ZUN1c3Rv
bUMKICAgICB2b2lkICgqZm9ybVNjaGVkdWxlKShDRlJlYWRTdHJlYW1SZWYsIENGUnVuTG9vcFJl
ZiwgQ0ZTdHJpbmdSZWYsIHZvaWQgKiksIAogICAgIHZvaWQgKCpmb3JtVW5zY2hlZHVsZSkoQ0ZS
ZWFkU3RyZWFtUmVmLCBDRlJ1bkxvb3BSZWYsIENGU3RyaW5nUmVmLCB2b2lkICopLAogICAgIHZv
aWQgKmNvbnRleHQpOworZXh0ZXJuIENGU3RyaW5nUmVmICgqd2tDb3B5Q0ZMb2NhbGl6YXRpb25Q
cmVmZXJyZWROYW1lKShDRlN0cmluZ1JlZik7CiBleHRlcm4gTlNTdHJpbmcqICgqd2tDb3B5TlNV
UkxSZXNwb25zZVN0YXR1c0xpbmUpKE5TVVJMUmVzcG9uc2UqKTsKIGV4dGVybiBpZCAoKndrQ3Jl
YXRlTlNVUkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSkodm9pZCk7CiBleHRlcm4gdm9pZCAoKndr
RHJhd0JlemVsZWRUZXh0RmllbGRDZWxsKShOU1JlY3QsIEJPT0wgZW5hYmxlZCk7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0JKHJldmlz
aW9uIDY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiB2b2lkICgqd2tBZHZhbmNl
RGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uKShOU0J1dHRvbkNlbGwgKik7CiBCT09MICgqd2tD
R0NvbnRleHRHZXRTaG91bGRTbW9vdGhGb250cykoQ0dDb250ZXh0UmVmKTsKK0NGU3RyaW5nUmVm
ICgqd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKShDRlN0cmluZ1JlZik7CiBOU1N0
cmluZyogKCp3a0NvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSkoTlNVUkxSZXNwb25zZSopOwog
TlNTdHJpbmcqICgqd2tDcmVhdGVVUkxQYXN0ZWJvYXJkRmxhdm9yVHlwZU5hbWUpKHZvaWQpOwog
TlNTdHJpbmcqICgqd2tDcmVhdGVVUkxOUGFzdGVib2FyZEZsYXZvclR5cGVOYW1lKSh2b2lkKTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiA2OTk2NCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBU
ZWNub2xvZ2lhCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkxhbmd1YWdlLmgiCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUg
PFFMb2NhbGU+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3RyaW5nIGRlZmF1bHRMYW5ndWFn
ZSgpCi17Ci0gICAgUUxvY2FsZSBsb2NhbGU7Ci0gICAgcmV0dXJuIGxvY2FsZS5uYW1lKCkucmVw
bGFjZSgiXyIsICItIik7Ci19Ci0KLX0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3Vh
Z2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNw
cAkocmV2aXNpb24gNjk5NjQpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2UuY3Bw
OjY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIElOZFQgLSBJ
bnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlIDxRTG9jYWxlPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0
cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQoreworICAgIFFMb2NhbGUgbG9jYWxlOworICAgIHJldHVy
biBsb2NhbGUubmFtZSgpLnJlcGxhY2UoIl8iLCAiLSIpOworfQorCit9CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vcXQvTGFuZ3VhZ2VRdC5jcHAJKHJldmlzaW9uIDY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9xdC9MYW5ndWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQorU3RyaW5nIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKIHsKICAgICBRTG9jYWxlIGxvY2FsZTsKICAgICByZXR1
cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKCJfIiwgIi0iKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vd2luL0xhbmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9M
YW5ndWFnZS5jcHAJKHJldmlzaW9uIDY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFu
Z3VhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUgbG9jYWxlVHlwZSwgY29uc3QgU3RyaW5nJiBmYWxs
YmFjaykKLXsKLSAgICBMQU5HSUQgbGFuZ0lEID0gR2V0VXNlckRlZmF1bHRVSUxhbmd1YWdlKCk7
Ci0gICAgaW50IGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxvY2FsZVR5cGUs
IDAsIDApOwotICAgIGlmICghbG9jYWxlQ2hhcnMpCi0gICAgICAgIHJldHVybiBmYWxsYmFjazsK
LSAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsKLSAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IFN0cmlu
Zzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2NhbGVDaGFycywgbG9jYWxlTmFtZUJ1Zik7Ci0gICAg
bG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZvKGxhbmdJRCwgbG9jYWxlVHlwZSwgbG9jYWxlTmFt
ZUJ1ZiwgbG9jYWxlQ2hhcnMpOwotICAgIGlmICghbG9jYWxlQ2hhcnMpCi0gICAgICAgIHJldHVy
biBmYWxsYmFjazsKLSAgICBpZiAobG9jYWxlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBmYWxsYmFjazsKLQotICAgIGxvY2FsZU5hbWUudHJ1bmNhdGUobG9jYWxlTmFtZS5sZW5ndGgo
KSAtIDEpOwotICAgIHJldHVybiBsb2NhbGVOYW1lOwotfQotCi1TdHJpbmcgZGVmYXVsdExhbmd1
YWdlKCkKLXsKLSAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwotICAg
IGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
Y29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7Ci0KLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9j
YWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iKTsKLSAgICBTdHJpbmcgY291bnRy
eU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLCBTdHJpbmcoKSk7Ci0K
LSAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQotICAgICAgICBjb21wdXRlZERlZmF1bHRM
YW5ndWFnZSA9IGxhbmd1YWdlTmFtZTsKLSAgICBlbHNlCi0gICAgICAgIGNvbXB1dGVkRGVmYXVs
dExhbmd1YWdlID0gbWFrZVN0cmluZyhsYW5ndWFnZU5hbWUsICctJywgY291bnRyeU5hbWUpOwot
Ci0gICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwotfQotCi19CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCShyZXZpc2lvbiA2OTk2NCkJKGZyb20gV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2UuY3BwOjY5OTY0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTGFuZ3VhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUgbG9jYWxlVHlwZSwgY29uc3QgU3Ry
aW5nJiBmYWxsYmFjaykKK3sKKyAgICBMQU5HSUQgbGFuZ0lEID0gR2V0VXNlckRlZmF1bHRVSUxh
bmd1YWdlKCk7CisgICAgaW50IGxvY2FsZUNoYXJzID0gR2V0TG9jYWxlSW5mbyhsYW5nSUQsIGxv
Y2FsZVR5cGUsIDAsIDApOworICAgIGlmICghbG9jYWxlQ2hhcnMpCisgICAgICAgIHJldHVybiBm
YWxsYmFjazsKKyAgICBVQ2hhciogbG9jYWxlTmFtZUJ1ZjsKKyAgICBTdHJpbmcgbG9jYWxlTmFt
ZSA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsb2NhbGVDaGFycywgbG9jYWxlTmFtZUJ1
Zik7CisgICAgbG9jYWxlQ2hhcnMgPSBHZXRMb2NhbGVJbmZvKGxhbmdJRCwgbG9jYWxlVHlwZSwg
bG9jYWxlTmFtZUJ1ZiwgbG9jYWxlQ2hhcnMpOworICAgIGlmICghbG9jYWxlQ2hhcnMpCisgICAg
ICAgIHJldHVybiBmYWxsYmFjazsKKyAgICBpZiAobG9jYWxlTmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxsYmFjazsKKworICAgIGxvY2FsZU5hbWUudHJ1bmNhdGUobG9jYWxlTmFt
ZS5sZW5ndGgoKSAtIDEpOworICAgIHJldHVybiBsb2NhbGVOYW1lOworfQorCitTdHJpbmcgZGVm
YXVsdExhbmd1YWdlKCkKK3sKKyAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1
YWdlOworICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CisKKyAgICBTdHJpbmcgbGFuZ3VhZ2VO
YW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iKTsKKyAgICBTdHJp
bmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLCBTdHJp
bmcoKSk7CisKKyAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQorICAgICAgICBjb21wdXRl
ZERlZmF1bHRMYW5ndWFnZSA9IGxhbmd1YWdlTmFtZTsKKyAgICBlbHNlCisgICAgICAgIGNvbXB1
dGVkRGVmYXVsdExhbmd1YWdlID0gbWFrZVN0cmluZyhsYW5ndWFnZU5hbWUsICctJywgY291bnRy
eU5hbWUpOworCisgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOworfQorCit9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCShyZXZpc2lvbiA2OTk2NCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5CiAg
ICAgcmV0dXJuIGxvY2FsZU5hbWU7CiB9CiAKLVN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQorU3Ry
aW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKIHsKICAgICBzdGF0aWMgU3RyaW5nIGNvbXB1
dGVkRGVmYXVsdExhbmd1YWdlOwogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNF
bXB0eSgpKQpJbmRleDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcwMDkwKQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0xMC0xOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5MzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg0OTQzMzc+IG5hdmlnYXRvci5sYW5ndWFnZSBkb2Vzbid0
IHdvcmsgaW4gV2ViS2l0MgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgIFBhc3MgbGFuZ3VhZ2UgY29kZSB3aGVuIGNyZWF0aW5nIGEgd2ViIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6On5XZWJDb250ZXh0KTogRG9uJ3Qgc2VuZCBsYW5ndWFnZSBjaGFu
Z2Ugbm90aWZpY2F0aW9ucyB0byB0aGUgZGVzdHJveWVkCisgICAgICAgIHByb2Nlc3MuCisgICAg
ICAgIChXZWJLaXQ6Omxhbmd1YWdlQ2hhbmdlZCk6IE1ha2Ugd2ViIHByb2Nlc3Mga25vdyBhYm91
dCB0aGUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVXZWJQcm9j
ZXNzKTogRmlsbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLCBhbmQgcmVnaXN0ZXIgZm9y
CisgICAgICAgIGNoYW5nZSBub3RpZmljYXRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViU3lzdGVtSW50ZXJmYWNlLm1tOiAoSW5pdFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UpOgorICAgICAgICBJbml0aWFsaXplIHdrQ29weUNGTG9jYWxpemF0aW9uUHJl
ZmVycmVkTmFtZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKTogVXNlIHBhc3Nl
ZCBpbiBsYW5ndWFnZSBhcyBhbiBvdmVycmlkZS4gV2ViIHByb2Nlc3MKKyAgICAgICAgZG9lc24n
dCBrbm93IGFib3V0IHBlci1hcHBsaWNhdGlvbiBzZXR0aW5ncywgc28gaXQgZGVwZW5kcyBvbiBV
SSBwcm9jZXNzIGZvciB0aG9zZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bGFuZ3Vh
Z2VDaGFuZ2VkKTogVXBkYXRlIHRoZSBsYW5ndWFnZSBvdmVycmlkZSB3aGVuIG1lc3NhZ2VkLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICBBZGRlZCBMYW5ndWFnZUNoYW5nZWQg
bWVzc2FnZS4KKwogMjAxMC0xMC0xOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gNjk5
NjQpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVybFNjaGVtZXNGb3JXaGljaERv
bWFpblJlbGF4YXRpb25Jc0ZvcmJpZGRlbik7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19j
YXN0PHVpbnQzMl90PihjYWNoZU1vZGVsKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHNob3VsZFRy
YWNrVmlzaXRlZExpbmtzKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobGFuZ3VhZ2VDb2RlKTsKIAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyLT5lbmNvZGUoYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1BvcnQpOwpAQCAtODMsNiArODQsOCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kCiAKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLnNob3Vs
ZFRyYWNrVmlzaXRlZExpbmtzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubGFuZ3VhZ2VDb2RlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFt
ZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpKQpJbmRleDogV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gNjk5NjQpCisrKyBX
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDYgKzYwLDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
ewogICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbDsKICAgICBib29sIHNob3VsZFRyYWNrVmlzaXRl
ZExpbmtzOwogCisgICAgU3RyaW5nIGxhbmd1YWdlQ29kZTsKKwogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBDb3JlSVBDOjpNYWNoUG9ydCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydDsKICNlbGlm
IFBMQVRGT1JNKFdJTikKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA2
OTk2NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01hbmFnZXIuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFz
aC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
QXJyYXlQdHIuaD4KQEAgLTEwMSw3ICsxMDIsOCBAQCBXZWJDb250ZXh0Ojp+V2ViQ29udGV4dCgp
CiB7CiAgICAgQVNTRVJUKG1fcGFnZU5hbWVzcGFjZXMuaXNFbXB0eSgpKTsKICAgICBtX3ByZWZl
cmVuY2VzLT5yZW1vdmVDb250ZXh0KHRoaXMpOwotCisgICAgcmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VP
YnNlcnZlcih0aGlzKTsKKyAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgd2ViQ29udGV4dENvdW50
ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKQEAgLTEyMiw2ICsxMjQsMTMgQEAgdm9pZCBXZWJDb250
ZXh0Ojppbml0aWFsaXplSGlzdG9yeUNsaWVudAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MobV9oaXN0b3J5Q2xpZW50
LnNob3VsZFRyYWNrVmlzaXRlZExpbmtzKCkpLCAwKTsKIH0KIAorc3RhdGljIHZvaWQgbGFuZ3Vh
Z2VDaGFuZ2VkKHZvaWQqIGNvbnRleHQpCit7CisgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
ID0gc3RhdGljX2Nhc3Q8V2ViQ29udGV4dCo+KGNvbnRleHQpLT5wcm9jZXNzKCk7CisgICAgaWYg
KHByb2Nlc3MpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Okxh
bmd1YWdlQ2hhbmdlZChkZWZhdWx0TGFuZ3VhZ2UoKSksIDApOworfQorCiB2b2lkIFdlYkNvbnRl
eHQ6OmVuc3VyZVdlYlByb2Nlc3MoKQogewogICAgIGlmIChoYXNWYWxpZFByb2Nlc3MoKSkKQEAg
LTE1MCw3ICsxNTksMTIgQEAgdm9pZCBXZWJDb250ZXh0OjplbnN1cmVXZWJQcm9jZXNzKCkKIAog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MgPSBtX2hpc3RvcnlDbGllbnQu
c2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoKTsKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwgPSBt
X2NhY2hlTW9kZWw7Ci0gICAgCisKKyAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlQ29kZSA9IGRlZmF1
bHRMYW5ndWFnZSgpOworICAgIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodGhpcywgbGFuZ3Vh
Z2VDaGFuZ2VkKTsKKworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKwogICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVt
ZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3VtZW50LCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVyZEFzRW1wdHlEb2N1bWVudCk7CiAgICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0
ZXJBc1NlY3VyZSwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzU2VjdXJlKTsKICAg
ICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9TZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9y
LCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNGb3JXaGljaERvbWFpblJlbGF4YXRpb25Jc0ZvcmJpZGRl
bik7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiA2OTk2NCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CkBAIC0xMzQsNiArMTM1LDkgQEAgdm9pZCBX
ZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhjbwogICAgIHNldFNob3VsZFRyYWNrVmlz
aXRlZExpbmtzKHBhcmFtZXRlcnMuc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpOwogICAgIHNldENh
Y2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpOwog
CisgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlQ29kZS5pc0VtcHR5KCkpCisgICAgICAgIG92
ZXJyaWRlRGVmYXVsdExhbmd1YWdlKHBhcmFtZXRlcnMubGFuZ3VhZ2VDb2RlKTsKKwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlcmRBc0Vt
cHR5RG9jdW1lbnQuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0
eURvY3VtZW50KHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZXJkQXNFbXB0eURvY3VtZW50
W2ldKTsKIApAQCAtMTcxLDYgKzE3NSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldERvbWFpblJl
bGF4YXRpb25Gb3JiCiAgICAgU2VjdXJpdHlPcmlnaW46OnNldERvbWFpblJlbGF4YXRpb25Gb3Ji
aWRkZW5Gb3JVUkxTY2hlbWUodHJ1ZSwgdXJsU2NoZW1lKTsKIH0KIAordm9pZCBXZWJQcm9jZXNz
OjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkgY29uc3QKK3sKKyAgICBv
dmVycmlkZURlZmF1bHRMYW5ndWFnZShsYW5ndWFnZSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6
c2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlKQog
ewogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7CkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgJKHJldmlzaW9uIDY5OTY0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCByZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShjb25zdCBTdHJp
bmcmKSBjb25zdDsKKyAgICB2b2lkIGxhbmd1YWdlQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBjb25z
dDsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRy
b2xzKGJvb2wpOwogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gNjk5NjQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIHsKICAgICBSZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVudChX
VEY6OlN0cmluZyBzY2hlbWUpCiAgICAgUmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZShXVEY6OlN0
cmluZyBzY2hlbWUpCiAgICAgU2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVt
ZShXVEY6OlN0cmluZyBzY2hlbWUpCisgICAgTGFuZ3VhZ2VDaGFuZ2VkKFdURjo6U3RyaW5nIGxh
bmd1YWdlKQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRy
b2xzKGJvb2wgc2hvdWxkUGFpbnROYXRpdmVDb250cm9scykKICNlbmRpZgpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0
ZW1JbnRlcmZhY2UubW0JKHJldmlzaW9uIDY5OTY0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAgdm9pZCBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSh2b2lkKQogICAg
IAogICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBeewogICAgICAgICBJTklUKEFkdmFuY2VE
ZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24pOworICAgICAgICBJTklUKENvcHlDRkxvY2FsaXph
dGlvblByZWZlcnJlZE5hbWUpOwogICAgICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290
aEZvbnRzKTsKICAgICAgICAgSU5JVChDb3B5Q09OTkVDVFByb3h5UmVzcG9uc2UpOwogICAgICAg
ICBJTklUKENvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSk7CkluZGV4OiBXZWJLaXQvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzAw
OTEpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDEwLTEwLTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzkzMworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODQ5NDMzNz4gbmF2aWdhdG9yLmxhbmd1YWdlIGRvZXNuJ3Qgd29yayBpbiBXZWJLaXQyCisK
KyAgICAgICAgKiBNaXNjL1dlYk5TVXNlckRlZmF1bHRzRXh0cmFzLm1tOiBNb3ZlZCBjb2RlIGZv
ciBjb21wdXRpbmcgZGVmYXVsdCBsYW5ndWFnZSB0byBXZWJDb3JlLgorICAgICAgICBXZSBuZWVk
IHRvIGtlZXAgX3dlYmtpdF9wcmVmZXJyZWRMYW5ndWFnZUNvZGUgZm9yIFNhZmFyaS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbTogKEluaXRXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlKToKKyAgICAgICAgSW5pdGlhbGl6ZSB3a0NvcHlDRkxvY2FsaXphdGlv
blByZWZlcnJlZE5hbWUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9y
eS5tbTogUmVtb3ZlZCBkZWZhdWx0TGFuZ3VhZ2UuIFdlYkNvcmUgd2FzIHRoZSBvbmx5IGNhbGxl
ci4KKwogMjAxMC0xMC0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIuCkluZGV4OiBXZWJLaXQvbWFjL01pc2Mv
V2ViTlNVc2VyRGVmYXVsdHNFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9NaXNj
L1dlYk5TVXNlckRlZmF1bHRzRXh0cmFzLm1tCShyZXZpc2lvbiA3MDA2OSkKKysrIFdlYktpdC9t
YWMvTWlzYy9XZWJOU1VzZXJEZWZhdWx0c0V4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgs
NzQgKzI4LDE2IEBACiAKICNpbXBvcnQgIldlYk5TVXNlckRlZmF1bHRzRXh0cmFzLmgiCiAKLSNp
bXBvcnQgIldlYk5TT2JqZWN0RXh0cmFzLmgiCi0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9MYW5ndWFnZS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLXN0YXRpYyBOU1N0cmluZyAqY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VDb2Rl
KE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LQotICAgIC8vIExvb2sgdXAgdGhlIGxhbmd1YWdlIGNvZGUgdXNpbmcgQ0ZCdW5kbGUuCi0gICAg
TlNTdHJpbmcgKnByZWZlcnJlZExhbmd1YWdlQ29kZSA9IFdlYkNGQXV0b3JlbGVhc2UoV0tDb3B5
Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKChDRlN0cmluZ1JlZilsYW5ndWFnZUNvZGUpKTsK
LQotICAgIGlmIChwcmVmZXJyZWRMYW5ndWFnZUNvZGUpCi0gICAgICAgIGxhbmd1YWdlQ29kZSA9
IHByZWZlcnJlZExhbmd1YWdlQ29kZTsKLSAgICAKLSAgICAvLyBNYWtlIHRoZSBzdHJpbmcgbG93
ZXJjYXNlLgotICAgIE5TU3RyaW5nICpsb3dlcmNhc2VMYW5ndWFnZUNvZGUgPSBbbGFuZ3VhZ2VD
b2RlIGxvd2VyY2FzZVN0cmluZ107Ci0gICAgCi0gICAgLy8gVHVybiBhICdfJyBpbnRvIGEgJy0n
IGlmIGl0IGFwcGVhcnMgYWZ0ZXIgYSAyLWxldHRlciBsYW5ndWFnZSBjb2RlLgotICAgIGlmIChb
bG93ZXJjYXNlTGFuZ3VhZ2VDb2RlIGxlbmd0aF0gPCAzIHx8IFtsb3dlcmNhc2VMYW5ndWFnZUNv
ZGUgY2hhcmFjdGVyQXRJbmRleDoyXSAhPSAnXycpCi0gICAgICAgIHJldHVybiBsb3dlcmNhc2VM
YW5ndWFnZUNvZGU7Ci0KLSAgICBOU011dGFibGVTdHJpbmcgKnJlc3VsdCA9IFtsb3dlcmNhc2VM
YW5ndWFnZUNvZGUgbXV0YWJsZUNvcHldOwotICAgIFtyZXN1bHQgcmVwbGFjZUNoYXJhY3RlcnNJ
blJhbmdlOk5TTWFrZVJhbmdlKDIsIDEpIHdpdGhTdHJpbmc6QCItIl07Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW1wbGVtZW50YXRpb24gTlNV
c2VyRGVmYXVsdHMgKFdlYk5TVXNlckRlZmF1bHRzRXh0cmFzKQogCi1zdGF0aWMgTlNTdHJpbmcg
KnByZWZlcnJlZExhbmd1YWdlQ29kZSA9IG5pbDsKLXN0YXRpYyBib29sIGxhbmd1YWdlQ2hhbmdl
T2JzZXJ2ZXJBZGRlZCA9IGZhbHNlOwotCi0rICh2b2lkKV93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJl
bmNlc0RpZENoYW5nZQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBbcHJl
ZmVycmVkTGFuZ3VhZ2VDb2RlIHJlbGVhc2VdOwotICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9
IG5pbDsKLX0KLQotc3RhdGljIHZvaWQgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKQot
ewotICAgIFtbTlNEaXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBh
ZGRPYnNlcnZlcjpbTlNVc2VyRGVmYXVsdHMgc2VsZl0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJr
aXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5nZSkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6QCJBcHBsZUxhbmd1YWdl
UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWxdOwotfQotCiArIChO
U1N0cmluZyAqKV93ZWJraXRfcHJlZmVycmVkTGFuZ3VhZ2VDb2RlCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLQotICAgIGlmICghcHJlZmVycmVkTGFuZ3VhZ2VDb2RlKSB7Ci0gICAg
ICAgIE5TQXJyYXkgKmxhbmd1YWdlcyA9IFtbc2VsZiBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc3Ry
aW5nQXJyYXlGb3JLZXk6QCJBcHBsZUxhbmd1YWdlcyJdOwotICAgICAgICBpZiAoIVtsYW5ndWFn
ZXMgY291bnRdKQotICAgICAgICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gW0AiZW4iIHJl
dGFpbl07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9
IGNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29kZShbbGFuZ3VhZ2VzIG9iamVjdEF0SW5kZXg6MF0p
OwotICAgIH0KLQotICAgIE5TU3RyaW5nICpjb2RlID0gW1twcmVmZXJyZWRMYW5ndWFnZUNvZGUg
cmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgaWYgKCFsYW5ndWFnZUNoYW5nZU9ic2Vy
dmVyQWRkZWQpIHsKLSAgICAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcigpOwotICAgICAg
ICBsYW5ndWFnZUNoYW5nZU9ic2VydmVyQWRkZWQgPSB0cnVlOwotICAgIH0KLQotICAgIHJldHVy
biBjb2RlOworICAgIHJldHVybiBkZWZhdWx0TGFuZ3VhZ2UoKTsKIH0KIAogQGVuZApJbmRleDog
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRlcmZhY2UubW0JKHJl
dmlzaW9uIDY5OTY0KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTeXN0ZW1JbnRl
cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgdm9pZCBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSh2b2lkKQogCiAgICAgSU5JVChBZHZhbmNlRGVmYXVsdEJ1dHRvblB1
bHNlQW5pbWF0aW9uKTsKICAgICBJTklUKENHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzKTsK
KyAgICBJTklUKENvcHlDRkxvY2FsaXphdGlvblByZWZlcnJlZE5hbWUpOwogICAgIElOSVQoQ29w
eUNPTk5FQ1RQcm94eVJlc3BvbnNlKTsKICAgICBJTklUKENvcHlOU1VSTFJlc3BvbnNlU3RhdHVz
TGluZSk7CiAgICAgSU5JVChDcmVhdGVDdXN0b21DRlJlYWRTdHJlYW0pOwpJbmRleDogV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3RmFjdG9yeS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdGYWN0b3J5Lm1tCShyZXZpc2lvbiA2OTk2NCkK
KysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0ZhY3RvcnkubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDExICs2Myw2IEBAICsgKHZvaWQpY3JlYXRlU2hhcmVkRmFjdG9yeQogICAg
IEFTU0VSVChbW3NlbGYgc2hhcmVkRmFjdG9yeV0gaXNLaW5kT2ZDbGFzczpzZWxmXSk7CiB9CiAK
LS0gKE5TU3RyaW5nICopZGVmYXVsdExhbmd1YWdlQ29kZQotewotICAgIHJldHVybiBbTlNVc2Vy
RGVmYXVsdHMgX3dlYmtpdF9wcmVmZXJyZWRMYW5ndWFnZUNvZGVdOwotfQotCiAtIChCT09MKW9i
amVjdElzVGV4dE1hcmtlcjooaWQpb2JqZWN0CiB7CiAgICAgcmV0dXJuIG9iamVjdCAhPSBuaWwg
JiYgQ0ZHZXRUeXBlSUQob2JqZWN0KSA9PSBXS0dldEFYVGV4dE1hcmtlclR5cGVJRCgpOwo=
</data>
<flag name="review"
          id="61213"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>