<?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>42696</bug_id>
          
          <creation_ts>2010-07-20 15:16:55 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs layoutTestController.elementDoesAutoCompleteForElementWithId</short_desc>
          <delta_ts>2013-03-06 17:19:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jochen</cc>
    
    <cc>kling</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>253977</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-20 15:16:55 -0700</bug_when>
    <thetext>WebKitTestRunner needs layoutTestController.elementDoesAutoCompleteForElementWithId</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254003</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-20 15:31:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/8213840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844502</commentid>
    <comment_count>2</comment_count>
      <attachid>190814</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-28 14:49:32 -0800</bug_when>
    <thetext>Created attachment 190814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848580</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-06 00:47:22 -0800</bug_when>
    <thetext>Ping? The patch is long but it is verrry easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848716</commentid>
    <comment_count>4</comment_count>
      <attachid>190814</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-03-06 04:28:48 -0800</bug_when>
    <thetext>Comment on attachment 190814
Patch

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

r=me, nice API change.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Since the method acts direclty on a WebCore element and strictly test
&gt; +        HTMLInputElement::shouldAutoComplete(), the test function is moved to internals.

Typo, directly.

&gt; Source/WebCore/testing/Internals.cpp:1096
&gt; +bool Internals::elementShouldAutoComplete(Element* element, ExceptionCode&amp; ec)

I&apos;d pass a const Element* to a method like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849336</commentid>
    <comment_count>5</comment_count>
      <attachid>191838</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-06 14:59:06 -0800</bug_when>
    <thetext>Created attachment 191838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849514</commentid>
    <comment_count>6</comment_count>
      <attachid>191838</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-06 17:19:37 -0800</bug_when>
    <thetext>Comment on attachment 191838
Patch

Clearing flags on attachment: 191838

Committed r145012: &lt;http://trac.webkit.org/changeset/145012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849515</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-06 17:19:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190814</attachid>
            <date>2013-02-28 14:49:32 -0800</date>
            <delta_ts>2013-03-06 14:59:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42696-20130228144544.patch</filename>
            <type>text/plain</type>
            <size>31212</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNjZjZiZjAxMDMzNjcz
YmEwMjA3NzZhNWY0OWNlODE0Y2U0YzU3Yi4uZjJhNjJlZDIzZjg5OGM4YWEzOTcyMTQ0MTY2OTIx
NzE1NjYxY2M4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTI4ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI2OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaW5jZSB0aGUgbWV0aG9kIGFjdHMgZGlyZWNsdHkgb24gYSBXZWJDb3JlIGVsZW1l
bnQgYW5kIHN0cmljdGx5IHRlc3QKKyAgICAgICAgSFRNTElucHV0RWxlbWVudDo6c2hvdWxkQXV0
b0NvbXBsZXRlKCksIHRoZSB0ZXN0IGZ1bmN0aW9uIGlzIG1vdmVkIHRvIGludGVybmFscy4KKwor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6ZWxlbWVudFNob3VsZEF1dG9Db21wbGV0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDItMjgg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQxMjYgYW5kIHIxNDQxNzYuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggNzU0Y2RkZDRiZTM5OWExZWJiYjQ5YjIxYWVkMzllZmZiNGZmZjQ4NS4uMzUzM2M5MmQy
OWExYTIzYjcyMWRmOTZlYmNjNzFiOTI3YWEwNjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTAyLTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9s
bGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2OTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmg6CisKIDIwMTMtMDItMjMgIEphc29uIEFuZGVyc3NlbiAgPGph
bmRlcnNzZW5AZ21haWwuY29tPgogCiAgICAgICAgIE1vdmUgc2V0QXV0b2ZpbGxlZCBmcm9tIFRl
c3RSdW5uZXIgdG8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDAzMzRhY2I5MjM5MmIzMzFk
NmE0ODNiNjBiMzNiYjM1YjU0NTM1YTguLmViODNlOGYzNjM0ZjZjNTk3NTU4ZmMwOGNlYmZjYjU0
YmJlN2MxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMi0yOCAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV2ViS2l0
VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5lbGVtZW50RG9lc0F1dG9Db21w
bGV0ZUZvckVsZW1lbnRXaXRoSWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyNjk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMy0wMi0yNiAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjE0MzYxOSk6IENyYXNoZXMgaW4gdGhyZWUgbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4
IDgyMjM1ZDUzMTg5MTc0ZDcxMmJiN2Q5OTdmM2QxYzNiMWQwNmE1MjUuLmUxODE5YWQ3OWUxYjYy
NDg0YzNhZjI3ZWE4NjkwZDkwM2FiZDlkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDItMjggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZWxl
bWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjY5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Lmg6CisKIDIwMTMtMDItMjQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6IERvbid0IGV4cG9zZSBhIG11dGFibGUgZGly
ZWN0IGludGVyZmFjZSB0byB0aGUgaW5saW5lIHN0eWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IGNmNTZmMzFmY2FlYzhkYTdiZGI5YjM5MWEzMGE3MDM5NTAwNTMxYjAu
LjcwMDdjYTBlODFmNzZlMzdjZWM3OWJmZmQyYTRlZDkzY2ZkM2VkYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEwOTMsNiArMTA5MywyMCBAQCBib29sIEludGVybmFs
czo6d2FzTGFzdENoYW5nZVVzZXJFZGl0KEVsZW1lbnQqIHRleHRGaWVsZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEludGVybmFsczo6ZWxlbWVudFNo
b3VsZEF1dG9Db21wbGV0ZShFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gZWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IGlucHV0RWxlbWVudC0+c2hvdWxkQXV0b2NvbXBsZXRlKCk7CisKKyAgICBlYyA9IElOVkFMSURf
Tk9ERV9UWVBFX0VSUjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBJbnRlcm5hbHM6
OnN1Z2dlc3RlZFZhbHVlKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmICghZWxlbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggY2Mz
YmFlNjZhZGZlNmY1NmMxMGVjNGI0N2U5M2QyNjkyZTUzYWFkNS4uZDU2MzA2YmZlNDY4ZmE3MjRm
NGRlZTBjOTE1ZTg4OGZjM2IyMzg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjb25maWd1cmF0aW9uRm9yVmll
d3BvcnQoRG9jdW1lbnQqLCBmbG9hdCBkZXZpY2VQaXhlbFJhdGlvLCBpbnQgZGV2aWNlV2lkdGgs
IGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0aCwgaW50IGF2YWlsYWJsZUhlaWdo
dCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgYm9vbCB3YXNMYXN0Q2hhbmdlVXNlckVkaXQoRWxl
bWVudCogdGV4dEZpZWxkLCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBlbGVtZW50U2hvdWxk
QXV0b0NvbXBsZXRlKEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IFN0cmluZyBzdWdnZXN0ZWRWYWx1ZShFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHNldFN1Z2dlc3RlZFZhbHVlKEVsZW1lbnQqIGlucHV0RWxlbWVudCwg
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0RWRpdGluZ1ZhbHVl
KEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGZiMDYwMDk4YTlmYjNhOWY5MjFm
OTY1ZTNhYWIzMzVmZTc0MjM1MjEuLjc5YmQyMWJmMDNhY2Q2NTVhNTVhMGU1ZGVmM2U0MTA5NDJj
MzZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTEyMiw2ICsxMjIs
NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbG9uZyBhdmFp
bGFibGVIZWlnaHQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgYm9vbGVhbiB3YXNMYXN0
Q2hhbmdlVXNlckVkaXQoaW4gRWxlbWVudCB0ZXh0RmllbGQpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKKyAgICBib29sZWFuIGVsZW1lbnRTaG91bGRBdXRvQ29tcGxldGUoaW4gRWxlbWVudCBpbnB1
dEVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICBET01TdHJpbmcgc3VnZ2VzdGVk
VmFsdWUoaW4gRWxlbWVudCBpbnB1dEVsZW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAg
ICB2b2lkIHNldFN1Z2dlc3RlZFZhbHVlKGluIEVsZW1lbnQgaW5wdXRFbGVtZW50LCBpbiBET01T
dHJpbmcgdmFsdWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEVkaXRpbmdW
YWx1ZShpbiBFbGVtZW50IGlucHV0RWxlbWVudCwgaW4gRE9NU3RyaW5nIHZhbHVlKSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRleCBiOWQxN2U4YzE4
NDJmMzAzMWNlOTdjMGRhYzdmZDgyNWMxNzIxNzg0Li4zZDM0ZjAwMzgwNWRmMjBiMDEwMjY1MWJi
NTQ1NGU0NzVkMzdjY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTEyNSwyMSAr
MTI1LDYgQEAgU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6bGF5ZXJUcmVlQXNUZXh0
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAgICByZXR1cm4gZnJhbWUtPmxheWVyVHJl
ZUFzVGV4dCgpOwogfQogCi1ib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZWxlbWVudERv
ZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SWQpCi17Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUsIGZhbHNlKTsKLQotICAgIFdlYkNvcmU6OkRvY3Vt
ZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIEFTU0VSVChkb2N1bWVudCk7
Ci0KLSAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kj4oZG9jdW1lbnQtPmdldEVsZW1lbnRCeUlk
KGVsZW1lbnRJZCkpOwotCi0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkgJiYgIWlucHV0
RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgaW5wdXRFbGVtZW50LT5zaG91bGRBdXRvY29t
cGxldGUoKTsKLX0KLQogRWluYV9MaXN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZyYW1l
Q2hpbGRyZW4oY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewogICAgIERSVF9TVVBQT1JU
X0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5o
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmgKaW5kZXggYWVkM2M3NWQwMmY5ZmYzOTMxZTM3N2Q1OTRhMzgyOTExMmViYWJhNy4uOTY0
Y2M5YmUxMDg5MTkyOWZjOGUyYzI1ZmI5NmY3N2JmNWQ5YzA5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmgKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsZWFyRnJh
bWVOYW1lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJPcGVu
ZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIGNvdW50ZXJWYWx1
ZUJ5RWxlbWVudElkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogZWxl
bWVudElkKTsKLSAgICBzdGF0aWMgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1l
bnRXaXRoSWQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1l
bnRJZCk7CiAgICAgc3RhdGljIEVpbmFfTGlzdCogZnJhbWVDaGlsZHJlbihjb25zdCBFdmFzX09i
amVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBXZWJDb3JlOjpGcmFtZSogZnJhbWVQYXJlbnQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgdm9pZCBsYXlvdXRGcmFt
ZShFdmFzX09iamVjdCogZXdrRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXgg
ZWVjY2Q2NzI2YTBmNjZmYWMyNGUzOWM1ZWUwZWRlOGEwNjBkODY5OS4uMWM1YWQ4MTFiYWI4NDA0
NDBmMzMzNjJlMDI2N2NlMmM3ZTA1N2IxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBA
IC02ODQsMjYgKzY4NCw2IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTdHls
ZVNjb3BlZEVuYWJsZWQoYm9vbCBlbmFibGVkKQogI2VuZGlmCiB9CiAKLWJvb2wgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKU1N0cmluZ1JlZiBpZCkKLXsKLSAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShmcmFtZSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQo
KTsKLSAgICBBU1NFUlQoZG9jdW1lbnQpOwotCi0gICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBKU1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoaWQpOwotICAgIEdPd25QdHI8Z2NoYXI+IGlk
QnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKLSAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKGlkLCBpZEJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7Ci0g
ICAgTm9kZSogY29yZU5vZGUgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoU3RyaW5nOjpmcm9t
VVRGOChpZEJ1ZmZlci5nZXQoKSkpOwotICAgIGlmICghY29yZU5vZGUgfHwgIWNvcmVOb2RlLT5y
ZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oY29yZU5vZGUp
OwotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkgJiYgIWlucHV0RWxlbWVu
dC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgaW5wdXRFbGVtZW50LT5zaG91bGRBdXRvY29tcGxldGUo
KTsKLX0KLQogSlNWYWx1ZVJlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBu
b2RlT2JqZWN0KQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggNDJiODVjZDVmZDlmY2JjNTgyMjRmMjE5OWQ2OGE2
MTQxNDliMzIyMC4uYzZkYjQyZDM1MWNmZDQ1OTU5MzRiOTQxMzFkNWNmMmRhMGNjNjJjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTcwLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGxheW91dEZyYW1lKFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgc2V0
VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYpOwogICAg
IHN0YXRpYyBib29sIHNob3VsZENsb3NlKFdlYktpdFdlYkZyYW1lKik7Ci0gICAgc3RhdGljIGJv
b2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKFdlYktpdFdlYkZyYW1l
KiwgSlNTdHJpbmdSZWYpOwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNs
dWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAgICAgLy8gV2Vi
S2l0V2ViVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA0ZWM1ZDJlOWViNGFmNzdkNzE0
MjdlMmZhMGI0NTcxZGM1NzljOWVjLi5jY2IwMjIyYzA2YTJjNjBlMjc1ZGZhNGE2M2U3YjJhNzUw
NjRiZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtNDU0LDI0ICs0NTQsNiBAQCBRVmFy
aWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKFFXZWJQYWdlQWRhcHRlcgogICAgIHJldHVybiByZWN0OwogfQogCi1ib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQo
UVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlciwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKQotewot
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFtZTsKLSAgICBpZiAoIWNvcmVGcmFt
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIGRvYyA9IGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwotCi0gICAgTm9kZSogY29yZU5vZGUg
PSBkb2MtPmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAh
Y29yZU5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
Pihjb3JlTm9kZSk7Ci0KLSAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpICYm
ICFpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYmIGlucHV0RWxlbWVudC0+c2hvdWxk
QXV0b2NvbXBsZXRlKCk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdp
bmRvd3NCZWhhdmlvckFzRWRpdGluZ0JlaGF2aW9yKFFXZWJQYWdlQWRhcHRlciogYWRhcHRlcikK
IHsKICAgICBQYWdlKiBjb3JlUGFnZSA9IGFkYXB0ZXItPnBhZ2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgK
aW5kZXggMDNiNDg4YjljY2FmMjUzYzk5MWQ4ZDAyZTBmNjQyNDhlYjQzNGIyMy4uMGY5YzFmZjg2
Y2IxYmQwYjc1YmVkZmNmYjg2NDFlMmFjYjcxYWI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAt
MTIyLDcgKzEyMiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjbGVhckZyYW1lTmFtZShR
V2ViRnJhbWVBZGFwdGVyKik7CiAgICAgc3RhdGljIHZvaWQgb3ZlcndyaXRlUGx1Z2luRGlyZWN0
b3JpZXMoKTsKICAgICBzdGF0aWMgYm9vbCBoYXNEb2N1bWVudEVsZW1lbnQoUVdlYkZyYW1lQWRh
cHRlciopOwotICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVu
dFdpdGhJZChRV2ViRnJhbWVBZGFwdGVyKiwgY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKICAg
ICBzdGF0aWMgdm9pZCBzZXRXaW5kb3dzQmVoYXZpb3JBc0VkaXRpbmdCZWhhdmlvcihRV2ViUGFn
ZUFkYXB0ZXIqKTsKIAogICAgIHN0YXRpYyB2b2lkIGNsZWFyQWxsQXBwbGljYXRpb25DYWNoZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDllMWNmNjU3YWIzYjBlNjAyY2Q5Y2Q1YWY5
Mzg0ZmU0MDFkYWE5ZTEuLjk3MTc4Y2UwMTVjNmM2NzRlODc4NGQ0MDUxYjliM2ZlOTVlOGRiZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMjgwLDYgKzI4MCw3IEBAIF9aTjdXZWJDb3Jl
N0VsZW1lbnQxNmNyZWF0ZVNoYWRvd1Jvb3RFUmk7CiBfWk5LN1dlYkNvcmU0S1VSTDZzdHJpbmdF
djsKIF9aTjdXZWJDb3JlOVBhZ2VHcm91cDE4Y2FwdGlvblByZWZlcmVuY2VzRXY7CiBfWk43V2Vi
Q29yZTRQYWdlOWluaXRHcm91cEV2OworX1pOSzdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MThz
aG91bGRBdXRvY29tcGxldGVFdjsKIAogbG9jYWw6CiBfWio7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDMwOWNhNjg3ZTVkMjE4ZTNmMmMzMjc0
OWMwYmE4MjZiN2FjNTcyZS4uZjMzYTNjMDk4YjMyMGRhODUwODI0NTBhNmUzZGE2OGQ1OTQ4MWQx
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDEzLTAyLTI4ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250
cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2OTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVy
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0Jl
cnJ5LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0
LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDoKKyAgICAg
ICAgKFRlc3RSdW5uZXJRdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5u
ZXJXaW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6
CisKIDIwMTMtMDItMjggIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBFbmFibGUgdGhpbiBhcmNoaXZlcyBiZWZvcmUgcGFyc2luZyB0aGUgcHJv
amVjdCBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCA3MmU2ZmYxNWQz
MDNlNGFkYWE5YWIwODEwNjUyZmE4OWMzMzBmMGExLi4yMzc2ODZkMjk0MDE5ZGE1NzNjYTc1NzQw
NDU4MWUzNDY1MTIzMDMyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMTYx
MywxNyArMTYxMyw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRl
ZFdvcmxkQW5kUmV0dXJuVmFsdWVDYWxsYmFjayhKU0NvbnRleHRSCiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBlbGVtZW50
RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCi17Ci0gICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0
PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBlbGVtZW50SWQoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKLSAgICBBU1NFUlQoISpleGNlcHRp
b24pOwotCi0gICAgYm9vbCBhdXRvQ29tcGxldGVzID0gY29udHJvbGxlci0+ZWxlbWVudERvZXNB
dXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGVsZW1lbnRJZC5nZXQoKSk7Ci0KLSAgICByZXR1
cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGF1dG9Db21wbGV0ZXMpOwotfQotCiBzdGF0
aWMgSlNWYWx1ZVJlZiB3YWl0Rm9yUG9saWN5RGVsZWdhdGVDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCwgY29u
c3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKikKIHsKICAgICBUZXN0UnVubmVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CkBAIC0yMTAzLDcgKzIwOTIsNiBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVy
OjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJkdW1wVGl0bGVDaGFuZ2VzIiwgZHVtcFRp
dGxlQ2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBJY29uQ2hhbmdlcyIs
IGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBXaWxsQ2Fj
aGVSZXNwb25zZSIsIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAg
ICAgIHsgImVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCIsIGVsZW1lbnRE
b2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImVuY29kZUhvc3ROYW1lIiwgZW5jb2RlSG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJldmFsdWF0ZUluV2ViSW5zcGVjdG9yIiwgZXZhbHVhdGVJbldlYkluc3BlY3RvckNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxk
QW5kUmV0dXJuVmFsdWUiLCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZh
bHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCBkZjg0
MGUxYzI4M2Q2MzdjNjI2MjUwY2Q4NTAxMmUxOGE2ODYwYzg4Li4zYzdmY2RlZmMwYzZhZTMxNTYy
ZTg2NWJjNzkyODI5ZDJhMmViN2FiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC0x
MzYsOCArMTM2LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMoKTsKICAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNW
YWx1ZVJlZiBub3RpZmljYXRpb24pOwogCi0gICAgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0
ZUZvckVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgaWQpOwotCiAgICAgYm9vbCBkdW1wQXNBdWRp
bygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEFzQXVkaW87IH0KICAgICB2b2lkIHNldER1bXBBc0F1
ZGlvKGJvb2wgZHVtcEFzQXVkaW8pIHsgbV9kdW1wQXNBdWRpbyA9IGR1bXBBc0F1ZGlvOyB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5u
ZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1
bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IDM2NjZiZmIzY2JmMjFlNTc5NjU5NDQyNjE4NDVhNGNi
NTE0ZGQ4MzMuLjI3YmMwODYxNjI3NWQzZjcyOWIxMTQxNzRhNjE4MjQ4MmM4YjQ5ZTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVy
cnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJs
YWNrQmVycnkuY3BwCkBAIC0zMTcsMTMgKzMxNyw2IEBAIGludCBUZXN0UnVubmVyOjp3aW5kb3dD
b3VudCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNB
dXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKQotewotICAgIFVOVVNF
RF9QQVJBTShpZCk7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2FpdFRvRHVtcChib29sIHdhaXRUb0R1bXApCiB7CiAg
ICAgLy8gQ2hhbmdlIGZyb20gMzBzIHRvIDM1cyBiZWNhdXNlIHNvbWUgdGVzdCBjYXNlcyBpbiBt
dWx0aXBhcnQgbmVlZCAzMCBzZWNvbmRzLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAppbmRleCA3Mzkw
YTE3ZjQ4NDQ0YTU0M2M1MDY0ZmZkMWU4ODY0ZGRhYWM1YjI0Li5jNWY0ZDM1ZGI3MmEwNGExNzll
MzI0OWY0Y2ZmNmQ3YTJhODM2YTcyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcApAQCAtMTgyLDcg
KzE4Miw2IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoVGVzdEludGVyZmFjZXMqIGludGVyZmFj
ZXMpCiAgICAgYmluZE1ldGhvZCgic2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzIiwgJlRl
c3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyk7CiAgICAgYmluZE1ldGhv
ZCgiZXhlY0NvbW1hbmQiLCAmVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQpOwogICAgIGJpbmRNZXRo
b2QoImlzQ29tbWFuZEVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZCk7Ci0g
ICAgYmluZE1ldGhvZCgiZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwg
JlRlc3RSdW5uZXI6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCk7CiAg
ICAgYmluZE1ldGhvZCgiY2FsbFNob3VsZENsb3NlT25XZWJWaWV3IiwgJlRlc3RSdW5uZXI6OmNh
bGxTaG91bGRDbG9zZU9uV2ViVmlldyk7CiAgICAgYmluZE1ldGhvZCgic2V0RG9tYWluUmVsYXhh
dGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZSIsICZUZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKTsKICAgICBiaW5kTWV0aG9kKCJldmFsdWF0ZVNjcmlw
dEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlIiwgJlRlc3RSdW5uZXI6OmV2YWx1YXRlU2Ny
aXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0dXJuVmFsdWUpOwpAQCAtMTE0NCwzMCArMTE0Myw2IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldChydik7CiB9CiAKLWJvb2wg
VGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0
IFdlYlN0cmluZyYgZWxlbWVudElkKQotewotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IG1fd2Vi
Vmlldy0+bWFpbkZyYW1lKCk7Ci0gICAgaWYgKCF3ZWJGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgV2ViRWxlbWVudCBlbGVtZW50ID0gd2ViRnJhbWUtPmRvY3VtZW50KCkuZ2V0
RWxlbWVudEJ5SWQoZWxlbWVudElkKTsKLSAgICBpZiAoZWxlbWVudC5pc051bGwoKSB8fCAhZWxl
bWVudC5oYXNUYWdOYW1lKCJpbnB1dCIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBX
ZWJJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50ID0gZWxlbWVudC50bzxXZWJJbnB1dEVsZW1lbnQ+
KCk7Ci0gICAgcmV0dXJuIGlucHV0RWxlbWVudC5hdXRvQ29tcGxldGUoKTsKLX0KLQotdm9pZCBU
ZXN0UnVubmVyOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSAhPSAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkgewot
ICAgICAgICByZXN1bHQtPnNldChmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
V2ViU3RyaW5nIGVsZW1lbnRJZCA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0p
OwotICAgIHJlc3VsdC0+c2V0KGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJ
ZChlbGVtZW50SWQpKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpjYWxsU2hvdWxkQ2xvc2VPbldl
YlZpZXcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAg
IHJlc3VsdC0+c2V0KG1fd2ViVmlldy0+ZGlzcGF0Y2hCZWZvcmVVbmxvYWRFdmVudCgpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuaAppbmRleCBmYWQwOGU3N2Q4MmFjMDg1NzU1OThlZWZiN2FjYTUxYjUwYjUy
M2U0Li42ZGU1NmQxMzc4YjZlNzQzMmUxZDJmM2FlMWM2YTU1MGU0Y2UyOGZhIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCkBAIC0yMTQsNyArMjE0LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDaGVja3MgaWYg
YW4gaW50ZXJuYWwgY29tbWFuZCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLgogICAgIHZvaWQgaXND
b21tYW5kRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAg
ICB2b2lkIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBjYWxsU2hvdWxkQ2xvc2VPbldl
YlZpZXcoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0
RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3Js
ZEFuZFJldHVyblZhbHVlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKQEAg
LTUyNSw3ICs1MjQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTm90QWNxdWlyZVBvaW50ZXJM
b2NrSW50ZXJuYWwoKTsKICAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9ja0ludGVybmFsKCk7CiAK
LSAgICBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIGJvb2wgY3BwVmFyaWFudFRvQm9vbChjb25zdCBDcHBW
YXJpYW50Jik7CiAgICAgaW50MzJfdCBjcHBWYXJpYW50VG9JbnQzMihjb25zdCBDcHBWYXJpYW50
Jik7CiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGNvbnN0IENw
cFZhcmlhbnQmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVu
bmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApp
bmRleCBmMzk0M2RjNWRlODg4NWQ5MmNmZDRhYWEyNjEwYWI4MWExN2QxYTVkLi5lM2I5MzYzYjZj
OTJkODdjNWUwZGQ4OThjNDkxMWM4Yjg5Y2I2OTk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC00NDEsMTMgKzQ0MSw2IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIGV3a192aWV3X3NldHRpbmdfZW5h
YmxlX3BsdWdpbnNfc2V0KGJyb3dzZXItPm1haW5WaWV3KCksIGZsYWcpOwogfQogCi1ib29sIFRl
c3RSdW5uZXI6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChKU1N0cmlu
Z1JlZiBpZCkKLXsKLSAgICBjb25zdCBTdHJpbmcgZWxlbWVudElkKGlkLT5zdHJpbmcoKSk7Ci0g
ICAgY29uc3QgRXZhc19PYmplY3QqIG1haW5GcmFtZSA9IGJyb3dzZXItPm1haW5GcmFtZSgpOwot
ICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmVsZW1lbnREb2VzQXV0b0NvbXBs
ZXRlRm9yRWxlbWVudFdpdGhJZChtYWluRnJhbWUsIGVsZW1lbnRJZCk7Ci19Ci0KIHZvaWQgVGVz
dFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYgbmFtZSwgSlNTdHJpbmdSZWYgdmFsdWUp
CiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5h
bWUoYnJvd3Nlci0+bWFpblZpZXcoKSwgbmFtZS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdmFs
dWUtPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rl
c3RSdW5uZXJHdGsuY3BwCmluZGV4IDk5NmZiNTgyY2MwNzljZjZkYTA5MmZmMjcxZDBlM2FmNzE5
MGJmMGMuLjkzZGYyMDJkZWQ1Mjk0MTYyZTFlZjllMjZiNGY3MWY1MDliMzcyMDYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTUxNCwxMSArNTE0LDYg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGZsYWcpCiAgICAgZ19v
YmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIiwgZmxhZywgTlVM
TCk7CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVt
ZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKSAKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQobWFpbkZy
YW1lLCBpZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYg
bmFtZSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdl
YmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDM2YjNjOTI5ZjE0MTUwZTcyYWNjNTZkNDFk
NDJkZGVmZmY1Nzk2NGEuLmViYjM0ZTgwOGRiNjIyMDU3ZWQ0YTRlZjgwZDdlMzIyZDZhNTA0ZjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC02NzcsMjAg
KzY3Nyw2IEBAIGludCBUZXN0UnVubmVyOjp3aW5kb3dDb3VudCgpCiAgICAgcmV0dXJuIENGQXJy
YXlHZXRDb3VudChvcGVuV2luZG93c1JlZik7CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVu
dERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGpzU3RyaW5nKQot
ewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZykpOwotICAgIE5TU3RyaW5nICpp
ZE5TID0gKE5TU3RyaW5nICopaWRDRi5nZXQoKTsKLSAgICAKLSAgICBET01FbGVtZW50ICplbGVt
ZW50ID0gW1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIGdldEVsZW1lbnRCeUlkOmlkTlNdOwotICAg
IGlkIHJlcCA9IFtbbWFpbkZyYW1lIGRhdGFTb3VyY2VdIHJlcHJlc2VudGF0aW9uXTsKLSAgICAK
LSAgICBpZiAoW3JlcCBjbGFzc10gPT0gW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10pCi0g
ICAgICAgIHJldHVybiBbKFdlYkhUTUxSZXByZXNlbnRhdGlvbiAqKXJlcCBlbGVtZW50RG9lc0F1
dG9Db21wbGV0ZTplbGVtZW50XTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBUZXN0
UnVubmVyOjpleGVjQ29tbWFuZChKU1N0cmluZ1JlZiBuYW1lLCBKU1N0cmluZ1JlZiB2YWx1ZSkK
IHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWVDRihBZG9wdENGLCBKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1lKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAppbmRleCAxNWFkMTI3NjExZGJjZDllZjEyNDY0ZTVjMjBm
MmRhOGI3ZTIxNDE1Li5jOWU5MDJjOWQ4NWE1MTA4OGU1NTY0ZGVkMDJiNjNkMDY1ZDRiMjY4IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKQEAgLTc1NSwxMSArNzU1
LDYgQEAgUVZhcmlhbnRNYXAgVGVzdFJ1bm5lclF0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlz
aXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQmIGUKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhlbGVtZW50KTsKIH0K
IAotYm9vbCBUZXN0UnVubmVyUXQ6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZChjb25zdCBRU3RyaW5nJiBlbGVtZW50SWQpCi17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQobV9k
cnQtPm1haW5GcmFtZUFkYXB0ZXIoKSwgZWxlbWVudElkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVy
UXQ6OmF1dGhlbnRpY2F0ZVNlc3Npb24oY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBj
b25zdCBRU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogSWYgdGhlcmUgaXMgYSBjb25jZXB0IHBl
ci1zZXNzaW9uIChwZXItcHJvY2VzcykgY3JlZGVudGlhbCBzdG9yYWdlLCB0aGUgY3JlZGVudGlh
bHMgc2hvdWxkIGJlIGFkZGVkIHRvIGl0IGZvciBsYXRlciB1c2UuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L1Rlc3RSdW5uZXJRdC5oCmluZGV4IDY1MmFkMWMxN2IwNjQ1N2QxMDU0MTdmZTJlNDA1NGU0
YjhmYTQxN2MuLmMwYzlkMWFiOTZjMjIzNmRjMWVlZGYzN2M1YjZiOTg2Yzc4YTk1YjUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0xODQsOCArMTg0LDYgQEAgcHVi
bGljIFFfU0xPVFM6CiAgICAgYm9vbCBpc0NvbW1hbmRFbmFibGVkKGNvbnN0IFFTdHJpbmcmIG5h
bWUpIGNvbnN0OwogICAgIGJvb2wgZmluZFN0cmluZyhjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0
cmluZ0xpc3QmIG9wdGlvbkFycmF5KTsKIAotICAgIGJvb2wgZWxlbWVudERvZXNBdXRvQ29tcGxl
dGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCk7Ci0KICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdp
biwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVz
dGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKICAgICB2b2lk
IHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IDRhMGI3ODdhYjg3
NTkwYjViODA2MjVhZWY5ZDIzYzk2ZTBlOThmNzMuLmQzOWMyMTA5ZmI2ZDJkZjEzYjFmNTY0ZDdh
NTFlOTU1YmU5NzhhZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0
UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHAKQEAgLTgwMSwzMiArODAxLDYgQEAgaW50IFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KCkK
ICAgICByZXR1cm4gb3BlbldpbmRvd3MoKS5zaXplKCk7CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6
ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKQot
ewotICAgIENPTVB0cjxJRE9NRG9jdW1lbnQ+IGRvY3VtZW50OwotICAgIGlmIChGQUlMRUQoZnJh
bWUtPkRPTURvY3VtZW50KCZkb2N1bWVudCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICB3c3RyaW5nIGlkV3N0cmluZyA9IGpzU3RyaW5nUmVmVG9XU3RyaW5nKGlkKTsKLSAgICBCU1RS
IGlkQlNUUiA9IFN5c0FsbG9jU3RyaW5nTGVuKChPTEVDSEFSKilpZFdzdHJpbmcuY19zdHIoKSwg
aWRXc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGVsZW1lbnQ7Ci0g
ICAgSFJFU1VMVCByZXN1bHQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWRCU1RSLCAmZWxl
bWVudCk7Ci0gICAgU3lzRnJlZVN0cmluZyhpZEJTVFIpOwotCi0gICAgaWYgKEZBSUxFRChyZXN1
bHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDT01QdHI8SVdlYkZyYW1lUHJpdmF0
ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZVByaXZhdGUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEJPT0wgYXV0b0NvbXBsZXRlczsKLSAgICBpZiAo
RkFJTEVEKGZyYW1lUHJpdmF0ZS0+ZWxlbWVudERvZXNBdXRvQ29tcGxldGUoZWxlbWVudC5nZXQo
KSwgJmF1dG9Db21wbGV0ZXMpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IGF1dG9Db21wbGV0ZXM7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNTdHJp
bmdSZWYgbmFtZSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgd3N0cmluZyB3TmFtZSA9IGpz
U3RyaW5nUmVmVG9XU3RyaW5nKG5hbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvVGVzdFJ1bm5lcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5u
ZXJXeC5jcHAKaW5kZXggYjFjNDVjNDMwYjY3MzdhZDcwMDAwNDQxMTk4MjM5NWQxNmUxYTMwOS4u
YWU5Y2FkZTExY2YxOTgxOGYxZDdkOTc0MjJjYTc5MjFkMjcwNjc3OSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCkBAIC0yMDksMTIgKzIwOSw2IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBmbGFnKQogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQKIH0KIAotYm9vbCBUZXN0UnVubmVyOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVs
ZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYgaWQpIAotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNT
dHJpbmdSZWYgbmFtZSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IGltcGxl
bWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGVjNzhlNzBjNzExMWM2ZTBkZjEyODczNGZkMTZmZGE3NDNlNDA3MmMuLjc5
NGExNjU3NDAyNjQwODgwY2IyYmYxMzJhZTIwZGQ2M2M4NjBhNjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMy0wMi0yOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5l
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNjk2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzZWN1cml0eS9zZXQtZm9ybS1hdXRvY29t
cGxldGUtYXR0cmlidXRlLmh0bWw6IFVwZGF0ZSB0aGUgdGVzdC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9uczogVW5za2lwIGl0IGZvciBXZWJLaXQyLgorCiAyMDEzLTAy
LTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ0MTI2IGFuZCByMTQ0MTc2LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1Yjk4NjkxMDM3NzQxYjM5OGZm
YzVhNjc0MzJmMmRmMTQyY2ExYTc5Li41MjE3NDNhYjJlMjA5YjM0ZmYxNzljNGNkOGVkZTk4YzFm
NjFmYjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MjIxLDEwICsyMjEsNiBAQCBwcmludGluZy9zaW5nbGUtbGluZS1tdXN0LW5vdC1iZS1zcGxpdC1p
bnRvLXR3by1wYWdlcy5odG1sCiBwcmludGluZy9zaW11bHRhbmVvdXMtcG9zaXRpb24tZmxvYXQt
Y2hhbmdlLmh0bWwKIHByaW50aW5nL3dpZHRoLW92ZXJmbG93Lmh0bWwKIAotIyBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZAotIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyNjk2Pgotc2VjdXJpdHkvc2V0LWZvcm0tYXV0b2NvbXBsZXRlLWF0dHJpYnV0ZS5odG1s
Ci0KICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxs
U2VuZFJlcXVlc3RDbGVhckhlYWRlcgogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQyNjk5PgogaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9zZXQtZm9ybS1hdXRvY29tcGxldGUtYXR0
cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9zZXQtZm9ybS1hdXRvY29tcGxldGUt
YXR0cmlidXRlLmh0bWwKaW5kZXggYjgxMWVkMGI5YWNiZTY4YTRkZDExYjNhMjcxODQyMjhiMGIw
NzI0NC4uMWEzOWFkYzI1YmYzMTkxZTliMjFjZWVkODhkMzE4M2YxNmQ4NGNmNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvc2V0LWZvcm0tYXV0b2NvbXBsZXRlLWF0dHJpYnV0ZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3NlY3VyaXR5L3NldC1mb3JtLWF1dG9jb21wbGV0ZS1hdHRy
aWJ1dGUuaHRtbApAQCAtMTIsOSArMTIsOSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYnInKSk7CiB9CiAKLWZ1bmN0aW9uIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3Vs
dCgpCitmdW5jdGlvbiBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoaW5wdXQpCiB7Ci0gICAgaWYg
KHRlc3RSdW5uZXIuZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKCJhdXRv
SW5wdXQiKSkKKyAgICBpZiAoaW50ZXJuYWxzLmVsZW1lbnRTaG91bGRBdXRvQ29tcGxldGUoaW5w
dXQpKQogICAgICAgICBsb2coIkVsZW1lbnQgZG9lcyBhdXRvY29tcGxldGUiKTsKICAgICBlbHNl
CiAgICAgICAgIGxvZygiRWxlbWVudCBkb2VzICpub3QqIGF1dG9jb21wbGV0ZSIpOwpAQCAtMzEs
NDEgKzMxLDQxIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIHZhciBpbnB1dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJhdXRvSW5wdXQiKTsKICAgICAKICAgICAvLyBUZXN0IHdpdGggbm8g
YXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBvbiB0aGUgPGZvcm0+Ci0gICAgbG9nQXV0b0NvbXBsZXRl
QVBJUmVzdWx0KCk7CisgICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KGlucHV0KTsKIAogICAg
IGlucHV0LnNldEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwgImNoZWVzZSIpOwotICAgIGxvZ0F1
dG9Db21wbGV0ZUFQSVJlc3VsdCgpOworICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdChpbnB1
dCk7CiAKICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJvZmYiKTsKLSAg
ICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1
bHQoaW5wdXQpOwogCiAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCAib24i
KTsKLSAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVB
UElSZXN1bHQoaW5wdXQpOwogCiAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUi
LCAiY2hlZXNlIik7Ci0gICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KCk7CisgICAgbG9nQXV0
b0NvbXBsZXRlQVBJUmVzdWx0KGlucHV0KTsKIAogICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZSgi
YXV0b2NvbXBsZXRlIik7Ci0gICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KCk7CisgICAgbG9n
QXV0b0NvbXBsZXRlQVBJUmVzdWx0KGlucHV0KTsKICAgICAKICAgICAvLyBUZXN0IHdpdGggYXV0
b2NvbXBsZXRlPSJvZmYiIG9uIHRoZSA8Zm9ybT4KICAgICBmb3JtLnNldEF0dHJpYnV0ZSgiYXV0
b2NvbXBsZXRlIiwgIm9mZiIpOwotICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdCgpOworICAg
IGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdChpbnB1dCk7CiAgICAgCiAgICAgaW5wdXQuc2V0QXR0
cmlidXRlKCJhdXRvY29tcGxldGUiLCAiY2hlZXNlIik7Ci0gICAgbG9nQXV0b0NvbXBsZXRlQVBJ
UmVzdWx0KCk7CisgICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KGlucHV0KTsKIAogICAgIGlu
cHV0LnNldEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwgIm9mZiIpOwotICAgIGxvZ0F1dG9Db21w
bGV0ZUFQSVJlc3VsdCgpOworICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdChpbnB1dCk7CiAK
ICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJvbiIpOwotICAgIGxvZ0F1
dG9Db21wbGV0ZUFQSVJlc3VsdCgpOworICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdChpbnB1
dCk7CiAKICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJjaGVlc2UiKTsK
LSAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVBUElS
ZXN1bHQoaW5wdXQpOwogCiAgICAgaW5wdXQucmVtb3ZlQXR0cmlidXRlKCJhdXRvY29tcGxldGUi
KTsKLSAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVB
UElSZXN1bHQoaW5wdXQpOwogfQogCiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191838</attachid>
            <date>2013-03-06 14:59:06 -0800</date>
            <delta_ts>2013-03-06 17:19:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42696-20130306145511.patch</filename>
            <type>text/plain</type>
            <size>29322</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDk4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAzLTA2ICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXZWJLaXRUZXN0UnVu
bmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9y
RWxlbWVudFdpdGhJZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDI2OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAg
ICAgIFNpbmNlIHRoZSBtZXRob2QgYWN0cyBkaXJlY3RseSBvbiBhIFdlYkNvcmUgZWxlbWVudCBh
bmQgc3RyaWN0bHkgdGVzdAorICAgICAgICBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRBdXRvQ29t
cGxldGUoKSwgdGhlIHRlc3QgZnVuY3Rpb24gaXMgbW92ZWQgdG8gaW50ZXJuYWxzLgorCisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjplbGVtZW50U2hvdWxkQXV0b0NvbXBsZXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFs
cy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMy0wNiAgTWlr
ZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgogCiAgICAgICAgIFVzZSBTa1R5cGVmYWNlIEFQSSBk
aXJlY3RseSwgcmF0aGVyIHRoYW4gKHNvb24gdG8gYmUgcHJpdmF0ZSkgU2tGb250SG9zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTQ0OTgyKQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTA1LDYgKzExMDUsMjAgQEAgYm9vbCBJbnRlcm5hbHM6Ondhc0xhc3RDaGFuZ2VVc2VyRWRpdChF
bAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6OmVsZW1lbnRTaG91bGRB
dXRvQ29tcGxldGUoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKCFlbGVtZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCA9IGVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBpbnB1
dEVsZW1lbnQtPnNob3VsZEF1dG9jb21wbGV0ZSgpOworCisgICAgZWMgPSBJTlZBTElEX05PREVf
VFlQRV9FUlI7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJpbmcgSW50ZXJuYWxzOjpzdWdn
ZXN0ZWRWYWx1ZShFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBp
ZiAoIWVsZW1lbnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNp
b24gMTQ0OTgyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY29uZmlndXJh
dGlvbkZvclZpZXdwb3J0KERvY3VtZW50KiwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywgaW50IGRl
dmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFp
bGFibGVIZWlnaHQsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgd2FzTGFzdENoYW5nZVVz
ZXJFZGl0KEVsZW1lbnQqIHRleHRGaWVsZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgZWxl
bWVudFNob3VsZEF1dG9Db21wbGV0ZShFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBTdHJpbmcgc3VnZ2VzdGVkVmFsdWUoRWxlbWVudCogaW5wdXRFbGVtZW50LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRTdWdnZXN0ZWRWYWx1ZShFbGVtZW50KiBpbnB1
dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldEVk
aXRpbmdWYWx1ZShFbGVtZW50KiBpbnB1dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9u
IDE0NDk4MikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBsb25nIGF2YWlsYWJsZUhlaWdodCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAKICAgICBib29sZWFuIHdhc0xhc3RDaGFuZ2VVc2VyRWRpdChpbiBFbGVtZW50IHRleHRGaWVs
ZCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgIGJvb2xlYW4gZWxlbWVudFNob3VsZEF1dG9D
b21wbGV0ZShpbiBFbGVtZW50IGlucHV0RWxlbWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
ICAgIERPTVN0cmluZyBzdWdnZXN0ZWRWYWx1ZShpbiBFbGVtZW50IGlucHV0RWxlbWVudCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogICAgIHZvaWQgc2V0U3VnZ2VzdGVkVmFsdWUoaW4gRWxlbWVu
dCBpbnB1dEVsZW1lbnQsIGluIERPTVN0cmluZyB2YWx1ZSkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogICAgIHZvaWQgc2V0RWRpdGluZ1ZhbHVlKGluIEVsZW1lbnQgaW5wdXRFbGVtZW50LCBpbiBE
T01TdHJpbmcgdmFsdWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0NDk4MikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTA2ICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXZWJLaXRUZXN0UnVubmVyIG5lZWRz
IGxheW91dFRlc3RDb250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKKwogMjAxMy0wMy0wNSAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZWQgc29tZSBk
ZWFkIGNvZGUgaW4gdGhlIHBhZ2UgY2FjaGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cAkocmV2aXNpb24gMTQ0OTgyKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDIxICsx
MjUsNiBAQCBTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpsYXllclRyCiAgICAgcmV0
dXJuIGZyYW1lLT5sYXllclRyZWVBc1RleHQoKTsKIH0KIAotYm9vbCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElkKQotewotICAgIERS
VF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBmYWxzZSk7Ci0K
LSAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAg
ICBBU1NFUlQoZG9jdW1lbnQpOwotCi0gICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaW5w
dXRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCo+KGRvY3Vt
ZW50LT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpKTsKLQotICAgIGlmICghaW5wdXRFbGVtZW50
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5pc1Rl
eHRGaWVsZCgpICYmICFpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYmIGlucHV0RWxl
bWVudC0+c2hvdWxkQXV0b2NvbXBsZXRlKCk7Ci19Ci0KIEVpbmFfTGlzdCogRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsOjpmcmFtZUNoaWxkcmVuKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkK
IHsKICAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBmcmFtZSwg
MCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAkocmV2aXNpb24gMTQ0OTgyKQorKysgU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGNsZWFyRnJhbWVOYW1lKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3RhdGljIHZvaWQg
Y2xlYXJPcGVuZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIGNv
dW50ZXJWYWx1ZUJ5RWxlbWVudElkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3Qg
Y2hhciogZWxlbWVudElkKTsKLSAgICBzdGF0aWMgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0
ZUZvckVsZW1lbnRXaXRoSWQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBTdHJp
bmcmIGVsZW1lbnRJZCk7CiAgICAgc3RhdGljIEVpbmFfTGlzdCogZnJhbWVDaGlsZHJlbihjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBXZWJDb3JlOjpGcmFtZSogZnJh
bWVQYXJlbnQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgdm9pZCBs
YXlvdXRGcmFtZShFdmFzX09iamVjdCogZXdrRnJhbWUpOwpJbmRleDogU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwko
cmV2aXNpb24gMTQ0OTgyKQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDMtMDYgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjY5Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrKToKKwogMjAxMy0wMy0wNiAgRG9taW5pcXVlIExldWVuYmVyZ2VyICA8ZGlt
c3RhckBvcGVuc3VzZS5vcmc+CiAKICAgICAgICAgTGluayB0aGUgd2Via2l0X3Rlc3RzIHRvIFhS
RU5ERVJfTElCUy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gMTQ0
OTgyKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjczLDI2ICs2NzMsNiBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0U3R5bGVTCiAjZW5kaWYKIH0KIAotYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIEpTU3RyaW5nUmVmIGlkKQotewotICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1
bWVudCgpOwotICAgIEFTU0VSVChkb2N1bWVudCk7Ci0KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShpZCk7Ci0gICAgR093blB0cjxnY2hh
cj4gaWRCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwot
ICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaWQsIGlkQnVmZmVyLmdldCgpLCBidWZmZXJTaXpl
KTsKLSAgICBOb2RlKiBjb3JlTm9kZSA9IGRvY3VtZW50LT5nZXRFbGVtZW50QnlJZChTdHJpbmc6
OmZyb21VVEY4KGlkQnVmZmVyLmdldCgpKSk7Ci0gICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5v
ZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb3Jl
Tm9kZSk7Ci0gICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSAmJiAhaW5wdXRF
bGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKSAmJiBpbnB1dEVsZW1lbnQtPnNob3VsZEF1dG9jb21w
bGV0ZSgpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVsaXZlckFsbE11
dGF0aW9uc0lmTmVjZXNzYXJ5KCkKIHsKICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxs
TXV0YXRpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkocmV2aXNpb24gMTQ0OTgy
KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGxheW91dEZyYW1lKFdlYktpdFdlYkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQg
c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYpOwog
ICAgIHN0YXRpYyBib29sIHNob3VsZENsb3NlKFdlYktpdFdlYkZyYW1lKik7Ci0gICAgc3RhdGlj
IGJvb2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKFdlYktpdFdlYkZy
YW1lKiwgSlNTdHJpbmdSZWYpOwogCiAgICAgLy8gV2ViS2l0V2ViVmlldwogICAgIHN0YXRpYyB2
b2lkIGV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShXZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIq
IG5hbWUsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24g
MTQ0OTgyKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0wMy0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29u
dHJvbGxlci5lbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNjk2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEzLTAzLTA2ICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gSWxsZWdhbCBuYXJy
b3dpbmcgaW4gdHN0X3F3ZWJoaXN0b3J5CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2
aXNpb24gMTQ0OTgyKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiwyNCArNDE2LDYgQEAg
UVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpmaQogICAgIHJldHVybiByZWN0
OwogfQogCi1ib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjplbGVtZW50RG9lc0F1dG9Db21w
bGV0ZUZvckVsZW1lbnRXaXRoSWQoUVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlciwgY29uc3QgUVN0
cmluZyYgZWxlbWVudElkKQotewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFt
ZTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRG9j
dW1lbnQqIGRvYyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBRX0FTU0VSVChkb2MpOwot
Ci0gICAgTm9kZSogY29yZU5vZGUgPSBkb2MtPmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0g
ICAgaWYgKCFjb3JlTm9kZSB8fCAhY29yZU5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjb3JlTm9kZSk7Ci0KLSAgICByZXR1cm4gaW5wdXRFbGVt
ZW50LT5pc1RleHRGaWVsZCgpICYmICFpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYm
IGlucHV0RWxlbWVudC0+c2hvdWxkQXV0b2NvbXBsZXRlKCk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldFdpbmRvd3NCZWhhdmlvckFzRWRpdGluZ0JlaGF2aW9yKFFXZWJQ
YWdlQWRhcHRlciogYWRhcHRlcikKIHsKICAgICBQYWdlKiBjb3JlUGFnZSA9IGFkYXB0ZXItPnBh
Z2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCShyZXZpc2lvbiAxNDQ5ODIpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2xl
YXJGcmFtZU5hbWUoUVdlYkZyYW1lQWRhcHRlciopOwogICAgIHN0YXRpYyB2b2lkIG92ZXJ3cml0
ZVBsdWdpbkRpcmVjdG9yaWVzKCk7CiAgICAgc3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50
KFFXZWJGcmFtZUFkYXB0ZXIqKTsKLSAgICBzdGF0aWMgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21w
bGV0ZUZvckVsZW1lbnRXaXRoSWQoUVdlYkZyYW1lQWRhcHRlciosIGNvbnN0IFFTdHJpbmcmIGVs
ZW1lbnRJZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0V2luZG93c0JlaGF2aW9yQXNFZGl0aW5nQmVo
YXZpb3IoUVdlYlBhZ2VBZGFwdGVyKik7CiAKICAgICBzdGF0aWMgdm9pZCBjbGVhckFsbEFwcGxp
Y2F0aW9uQ2FjaGVzKCk7CkluZGV4OiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHJldmlzaW9uIDE0
NDk4MikKKysrIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIJKHdvcmtpbmcgY29weSkK
QEAgLTI4NCw2ICsyODQsNyBAQCBfWk5LN1dlYkNvcmU0S1VSTDZzdHJpbmdFdjsKIF9aTjdXZWJD
b3JlOVBhZ2VHcm91cDE4Y2FwdGlvblByZWZlcmVuY2VzRXY7CiBfWk43V2ViQ29yZTRQYWdlOWlu
aXRHcm91cEV2OwogX1pON1dlYkNvcmUyMW1hcmtlclRleHRGb3JMaXN0SXRlbUVQTlNfN0VsZW1l
bnRFOworX1pOSzdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MThzaG91bGRBdXRvY29tcGxldGVF
djsKIAogbG9jYWw6CiBfWio7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQ5ODIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wMy0wNiAgQmVuamFtaW4gUG91bGFp
biAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVk
cyBsYXlvdXRUZXN0Q29udHJvbGxlci5lbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRX
aXRoSWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQy
Njk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGlj
RnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAg
ICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rl
c3RSdW5uZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RSdW5uZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
cXQvVGVzdFJ1bm5lclF0LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVu
bmVyUXQuaDoKKyAgICAgICAgKFRlc3RSdW5uZXJRdCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rl
c3RSdW5uZXJXeC5jcHA6CisKIDIwMTMtMDMtMDYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxy
ZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl1bR1RLXSBGaXggdW5pdCB0ZXN0IFdlYktp
dDJBUElUZXN0cy9XZWJLaXRXZWJWaWV3L21vdXNlLXRhcmdldApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDE0NDk4MikKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAzLDE3ICsxNjAzLDYgQEAg
c3RhdGljIEpTVmFsdWVSZWYgZXZhbHVhdGVTY3JpcHRJbklzb2xhdAogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgZWxlbWVu
dERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQotewotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2Fz
dDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gZWxlbWVudElkKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Ci0gICAgQVNTRVJUKCEqZXhjZXB0
aW9uKTsKLQotICAgIGJvb2wgYXV0b0NvbXBsZXRlcyA9IGNvbnRyb2xsZXItPmVsZW1lbnREb2Vz
QXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChlbGVtZW50SWQuZ2V0KCkpOwotCi0gICAgcmV0
dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBhdXRvQ29tcGxldGVzKTsKLX0KLQogc3Rh
dGljIEpTVmFsdWVSZWYgd2FpdEZvclBvbGljeURlbGVnYXRlQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QsIGNv
bnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopCiB7CiAgICAgVGVzdFJ1bm5lciogY29udHJv
bGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwpAQCAtMjA4NCw3ICsyMDczLDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5l
cjo6c3RhdGljRnVuYwogICAgICAgICB7ICJkdW1wVGl0bGVDaGFuZ2VzIiwgZHVtcFRpdGxlQ2hh
bmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBJY29uQ2hhbmdlcyIsIGR1bXBJ
Y29uQ2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBXaWxsQ2FjaGVSZXNw
b25zZSIsIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsg
ImVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCIsIGVsZW1lbnREb2VzQXV0
b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVu
Y29kZUhvc3ROYW1lIiwgZW5jb2RlSG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJldmFsdWF0ZUluV2ViSW5zcGVjdG9yIiwgZXZhbHVhdGVJbldlYkluc3BlY3RvckNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0
dXJuVmFsdWUiLCBldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZEFuZFJldHVyblZhbHVlQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgJKHJldmlzaW9u
IDE0NDk4MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM1LDggKzEzNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFsbFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrKEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uKTsKIAotICAgIGJvb2wgZWxlbWVudERvZXNB
dXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKTsKLQogICAgIGJvb2wg
ZHVtcEFzQXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2R1bXBBc0F1ZGlvOyB9CiAgICAgdm9pZCBz
ZXREdW1wQXNBdWRpbyhib29sIGR1bXBBc0F1ZGlvKSB7IG1fZHVtcEFzQXVkaW8gPSBkdW1wQXNB
dWRpbzsgfQogICAgIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0
UnVubmVyQmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
YmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDE0NDk4MikKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsMTMgKzMxNyw2IEBAIGludCBUZXN0UnVubmVyOjp3aW5k
b3dDb3VudCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERv
ZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKQotewotICAgIFVO
VVNFRF9QQVJBTShpZCk7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2FpdFRvRHVtcChib29sIHdhaXRUb0R1bXApCiB7
CiAgICAgLy8gQ2hhbmdlIGZyb20gMzBzIHRvIDM1cyBiZWNhdXNlIHNvbWUgdGVzdCBjYXNlcyBp
biBtdWx0aXBhcnQgbmVlZCAzMCBzZWNvbmRzLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAJ
KHJldmlzaW9uIDE0NDk4MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDYg
QEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcihUZXN0SW50ZXJmYWNlcyogaQogICAgIGJpbmRNZXRo
b2QoInNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyIsICZUZXN0UnVubmVyOjpzZXRUYWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMpOwogICAgIGJpbmRNZXRob2QoImV4ZWNDb21tYW5kIiwg
JlRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKTsKICAgICBiaW5kTWV0aG9kKCJpc0NvbW1hbmRFbmFi
bGVkIiwgJlRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQpOwotICAgIGJpbmRNZXRob2QoImVs
ZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCIsICZUZXN0UnVubmVyOjplbGVt
ZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQpOwogICAgIGJpbmRNZXRob2QoImNh
bGxTaG91bGRDbG9zZU9uV2ViVmlldyIsICZUZXN0UnVubmVyOjpjYWxsU2hvdWxkQ2xvc2VPbldl
YlZpZXcpOwogICAgIGJpbmRNZXRob2QoInNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JV
UkxTY2hlbWUiLCAmVGVzdFJ1bm5lcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVS
TFNjaGVtZSk7CiAgICAgYmluZE1ldGhvZCgiZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGRB
bmRSZXR1cm5WYWx1ZSIsICZUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3Js
ZEFuZFJldHVyblZhbHVlKTsKQEAgLTExNDMsMzAgKzExNDIsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OmlzQ29tbWFuZEVuYWJsZWQoY29uc3QgCiAgICAgcmVzdWx0LT5zZXQocnYpOwogfQogCi1ib29s
IFRlc3RSdW5uZXI6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25z
dCBXZWJTdHJpbmcmIGVsZW1lbnRJZCkKLXsKLSAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBtX3dl
YlZpZXctPm1haW5GcmFtZSgpOwotICAgIGlmICghd2ViRnJhbWUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IHdlYkZyYW1lLT5kb2N1bWVudCgpLmdl
dEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7Ci0gICAgaWYgKGVsZW1lbnQuaXNOdWxsKCkgfHwgIWVs
ZW1lbnQuaGFzVGFnTmFtZSgiaW5wdXQiKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
V2ViSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCA9IGVsZW1lbnQudG88V2ViSW5wdXRFbGVtZW50
PigpOwotICAgIHJldHVybiBpbnB1dEVsZW1lbnQuYXV0b0NvbXBsZXRlKCk7Ci19Ci0KLXZvaWQg
VGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMSB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpIHsK
LSAgICAgICAgcmVzdWx0LT5zZXQoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IFdlYlN0cmluZyBlbGVtZW50SWQgPSBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBd
KTsKLSAgICByZXN1bHQtPnNldChlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRo
SWQoZWxlbWVudElkKSk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbFNob3VsZENsb3NlT25X
ZWJWaWV3KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAg
ICByZXN1bHQtPnNldChtX3dlYlZpZXctPmRpc3BhdGNoQmVmb3JlVW5sb2FkRXZlbnQoKSk7Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5oCShyZXZpc2lvbiAxNDQ5ODIpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNCw3ICsyMTQsNiBAQCBwcml2YXRlOgogICAgIC8vIENoZWNrcyBpZiBhbiBpbnRl
cm5hbCBjb21tYW5kIGlzIGN1cnJlbnRseSBhdmFpbGFibGUuCiAgICAgdm9pZCBpc0NvbW1hbmRF
bmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIHZvaWQg
ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGNhbGxTaG91bGRDbG9zZU9uV2ViVmlldyhj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXREb21haW5S
ZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkQW5kUmV0
dXJuVmFsdWUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAtNTI0LDcg
KzUyMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRlckxvY2tJbnRl
cm5hbCgpOwogICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrSW50ZXJuYWwoKTsKIAotICAgIGJv
b2wgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJik7CiAgICAgYm9vbCBjcHBWYXJpYW50VG9Cb29sKGNvbnN0IENwcFZhcmlhbnQm
KTsKICAgICBpbnQzMl90IGNwcFZhcmlhbnRUb0ludDMyKGNvbnN0IENwcFZhcmlhbnQmKTsKICAg
ICBXZWJLaXQ6OldlYlN0cmluZyBjcHBWYXJpYW50VG9XZWJTdHJpbmcoY29uc3QgQ3BwVmFyaWFu
dCYpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAko
cmV2aXNpb24gMTQ0OTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJF
ZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzYsMTMgKzQzNiw2IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCAKICAgICBld2tfdmlld19zZXR0aW5nX2VuYWJsZV9w
bHVnaW5zX3NldChicm93c2VyLT5tYWluVmlldygpLCBmbGFnKTsKIH0KIAotYm9vbCBUZXN0UnVu
bmVyOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYg
aWQpCi17Ci0gICAgY29uc3QgU3RyaW5nIGVsZW1lbnRJZChpZC0+c3RyaW5nKCkpOwotICAgIGNv
bnN0IEV2YXNfT2JqZWN0KiBtYWluRnJhbWUgPSBicm93c2VyLT5tYWluRnJhbWUoKTsKLSAgICBy
ZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZv
ckVsZW1lbnRXaXRoSWQobWFpbkZyYW1lLCBlbGVtZW50SWQpOwotfQotCiB2b2lkIFRlc3RSdW5u
ZXI6OmV4ZWNDb21tYW5kKEpTU3RyaW5nUmVmIG5hbWUsIEpTU3RyaW5nUmVmIHZhbHVlKQogewog
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKGJy
b3dzZXItPm1haW5WaWV3KCksIG5hbWUtPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlLT5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9U
ZXN0UnVubmVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
VGVzdFJ1bm5lckd0ay5jcHAJKHJldmlzaW9uIDE0NDk4MikKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5LDExICs1MDks
NiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKGJvb2wgCiAgICAgZ19vYmpl
Y3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1wbHVnaW5zIiwgZmxhZywgTlVMTCk7
CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50
V2l0aElkKEpTU3RyaW5nUmVmIGlkKSAKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQobWFpbkZyYW1l
LCBpZCk7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYgbmFt
ZSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtp
dF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMTQ0OTgyKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY2
MywyMCArNjYzLDYgQEAgaW50IFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KCkKICAgICByZXR1cm4g
Q0ZBcnJheUdldENvdW50KG9wZW5XaW5kb3dzUmVmKTsKIH0KIAotYm9vbCBUZXN0UnVubmVyOjpl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoSlNTdHJpbmdSZWYganNTdHJp
bmcpCi17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpZENGKEFkb3B0Q0YsIEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nKSk7Ci0gICAgTlNTdHJp
bmcgKmlkTlMgPSAoTlNTdHJpbmcgKilpZENGLmdldCgpOwotICAgIAotICAgIERPTUVsZW1lbnQg
KmVsZW1lbnQgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gZ2V0RWxlbWVudEJ5SWQ6aWROU107
Ci0gICAgaWQgcmVwID0gW1ttYWluRnJhbWUgZGF0YVNvdXJjZV0gcmVwcmVzZW50YXRpb25dOwot
ICAgIAotICAgIGlmIChbcmVwIGNsYXNzXSA9PSBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNz
XSkKLSAgICAgICAgcmV0dXJuIFsoV2ViSFRNTFJlcHJlc2VudGF0aW9uICopcmVwIGVsZW1lbnRE
b2VzQXV0b0NvbXBsZXRlOmVsZW1lbnRdOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lk
IFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKEpTU3RyaW5nUmVmIG5hbWUsIEpTU3RyaW5nUmVmIHZh
bHVlKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZUNGKEFkb3B0Q0YsIEpTU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKTsKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAkocmV2aXNpb24gMTQ0OTgyKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzQ1LDExICs3NDUsNiBAQCBib29sIFRlc3RSdW5uZXJRdDo6ZmluZFN0cmluZyhjb25zdCBR
U3RyCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpmaW5kU3RyaW5nKG1fZHJ0
LT5wYWdlQWRhcHRlcigpLCBzdHJpbmcsIG9wdGlvbkFycmF5KTsKIH0KIAotYm9vbCBUZXN0UnVu
bmVyUXQ6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChjb25zdCBRU3Ry
aW5nJiBlbGVtZW50SWQpCi17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQobV9kcnQtPm1haW5GcmFtZUFk
YXB0ZXIoKSwgZWxlbWVudElkKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyUXQ6OmF1dGhlbnRpY2F0
ZVNlc3Npb24oY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJikK
IHsKICAgICAvLyBGSVhNRTogSWYgdGhlcmUgaXMgYSBjb25jZXB0IHBlci1zZXNzaW9uIChwZXIt
cHJvY2VzcykgY3JlZGVudGlhbCBzdG9yYWdlLCB0aGUgY3JlZGVudGlhbHMgc2hvdWxkIGJlIGFk
ZGVkIHRvIGl0IGZvciBsYXRlciB1c2UuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9U
ZXN0UnVubmVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0
UnVubmVyUXQuaAkocmV2aXNpb24gMTQ0OTgyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGVzdFJ1bm5lclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw4ICsxODQsNiBAQCBwdWJsaWMg
UV9TTE9UUzoKICAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoY29uc3QgUVN0cmluZyYgbmFtZSkg
Y29uc3Q7CiAgICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5n
TGlzdCYgb3B0aW9uQXJyYXkpOwogCi0gICAgYm9vbCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZv
ckVsZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgZWxlbWVudElkKTsKLQogICAgIHZvaWQgYWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBj
b25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5h
dGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHZvaWQgcmVt
b3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0
aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCShyZXZpc2lvbiAxNDQ5
ODIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2OCwzMiArNzY4LDYgQEAgaW50IFRlc3RSdW5uZXI6OndpbmRvd0NvdW50
KCkKICAgICByZXR1cm4gb3BlbldpbmRvd3MoKS5zaXplKCk7CiB9CiAKLWJvb2wgVGVzdFJ1bm5l
cjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlk
KQotewotICAgIENPTVB0cjxJRE9NRG9jdW1lbnQ+IGRvY3VtZW50OwotICAgIGlmIChGQUlMRUQo
ZnJhbWUtPkRPTURvY3VtZW50KCZkb2N1bWVudCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICB3c3RyaW5nIGlkV3N0cmluZyA9IGpzU3RyaW5nUmVmVG9XU3RyaW5nKGlkKTsKLSAgICBC
U1RSIGlkQlNUUiA9IFN5c0FsbG9jU3RyaW5nTGVuKChPTEVDSEFSKilpZFdzdHJpbmcuY19zdHIo
KSwgaWRXc3RyaW5nLmxlbmd0aCgpKTsKLSAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGVsZW1lbnQ7
Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBkb2N1bWVudC0+Z2V0RWxlbWVudEJ5SWQoaWRCU1RSLCAm
ZWxlbWVudCk7Ci0gICAgU3lzRnJlZVN0cmluZyhpZEJTVFIpOwotCi0gICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDT01QdHI8SVdlYkZyYW1lUHJp
dmF0ZT4gZnJhbWVQcml2YXRlKFF1ZXJ5LCBmcmFtZSk7Ci0gICAgaWYgKCFmcmFtZVByaXZhdGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEJPT0wgYXV0b0NvbXBsZXRlczsKLSAgICBp
ZiAoRkFJTEVEKGZyYW1lUHJpdmF0ZS0+ZWxlbWVudERvZXNBdXRvQ29tcGxldGUoZWxlbWVudC5n
ZXQoKSwgJmF1dG9Db21wbGV0ZXMpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIGF1dG9Db21wbGV0ZXM7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNT
dHJpbmdSZWYgbmFtZSwgSlNTdHJpbmdSZWYgdmFsdWUpCiB7CiAgICAgd3N0cmluZyB3TmFtZSA9
IGpzU3RyaW5nUmVmVG9XU3RyaW5nKG5hbWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvVGVzdFJ1bm5lcld4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93
eC9UZXN0UnVubmVyV3guY3BwCShyZXZpc2lvbiAxNDQ5ODIpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS93eC9UZXN0UnVubmVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMTIgKzIwOSw2
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCAKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxl
dGVGb3JFbGVtZW50V2l0aElkKEpTU3RyaW5nUmVmIGlkKSAKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OmV4ZWNDb21t
YW5kKEpTU3RyaW5nUmVmIG5hbWUsIEpTU3RyaW5nUmVmIHZhbHVlKQogewogICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDk4MikKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTA2ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI2OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisg
ICAgICAgICogc2VjdXJpdHkvc2V0LWZvcm0tYXV0b2NvbXBsZXRlLWF0dHJpYnV0ZS5odG1sOiBV
cGRhdGUgdGhlIHRlc3QuCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6
IFVuc2tpcCBpdCBmb3IgV2ViS2l0Mi4KKwogMjAxMy0wMy0wNiAgUmFmYWVsIFdlaW5zdGVpbiAg
PHJhZmFlbHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9u
IDE0NDk4MikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjEsMTAgKzIyMSw2IEBAIHByaW50aW5nL3NpbmdsZS1saW5lLW11
c3Qtbm90LWJlLXNwbGl0LWkKIHByaW50aW5nL3NpbXVsdGFuZW91cy1wb3NpdGlvbi1mbG9hdC1j
aGFuZ2UuaHRtbAogcHJpbnRpbmcvd2lkdGgtb3ZlcmZsb3cuaHRtbAogCi0jIFdlYktpdFRlc3RS
dW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuZWxlbWVudERvZXNBdXRvQ29tcGxldGVG
b3JFbGVtZW50V2l0aElkCi0jIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDI2OTY+Ci1zZWN1cml0eS9zZXQtZm9ybS1hdXRvY29tcGxldGUtYXR0cmlidXRlLmh0bWwK
LQogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxT
ZW5kUmVxdWVzdENsZWFySGVhZGVyCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI2OTk+CiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKSW5k
ZXg6IExheW91dFRlc3RzL3NlY3VyaXR5L3NldC1mb3JtLWF1dG9jb21wbGV0ZS1hdHRyaWJ1dGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zZWN1cml0eS9zZXQtZm9ybS1hdXRvY29t
cGxldGUtYXR0cmlidXRlLmh0bWwJKHJldmlzaW9uIDE0NDk4MikKKysrIExheW91dFRlc3RzL3Nl
Y3VyaXR5L3NldC1mb3JtLWF1dG9jb21wbGV0ZS1hdHRyaWJ1dGUuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMTIsOSArMTIsOSBAQCBmdW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYnInKSk7CiB9CiAKLWZ1bmN0aW9uIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdCgpCitmdW5j
dGlvbiBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoaW5wdXQpCiB7Ci0gICAgaWYgKHRlc3RSdW5u
ZXIuZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKCJhdXRvSW5wdXQiKSkK
KyAgICBpZiAoaW50ZXJuYWxzLmVsZW1lbnRTaG91bGRBdXRvQ29tcGxldGUoaW5wdXQpKQogICAg
ICAgICBsb2coIkVsZW1lbnQgZG9lcyBhdXRvY29tcGxldGUiKTsKICAgICBlbHNlCiAgICAgICAg
IGxvZygiRWxlbWVudCBkb2VzICpub3QqIGF1dG9jb21wbGV0ZSIpOwpAQCAtMzEsNDEgKzMxLDQx
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJhdXRvSW5wdXQiKTsKICAgICAKICAgICAvLyBUZXN0IHdpdGggbm8gYXV0b2NvbXBs
ZXRlIGF0dHJpYnV0ZSBvbiB0aGUgPGZvcm0+Ci0gICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0
KCk7CisgICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KGlucHV0KTsKIAogICAgIGlucHV0LnNl
dEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwgImNoZWVzZSIpOwotICAgIGxvZ0F1dG9Db21wbGV0
ZUFQSVJlc3VsdCgpOworICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdChpbnB1dCk7CiAKICAg
ICBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJvZmYiKTsKLSAgICBsb2dBdXRv
Q29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoaW5wdXQp
OwogCiAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCAib24iKTsKLSAgICBs
b2dBdXRvQ29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQo
aW5wdXQpOwogCiAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCAiY2hlZXNl
Iik7Ci0gICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KCk7CisgICAgbG9nQXV0b0NvbXBsZXRl
QVBJUmVzdWx0KGlucHV0KTsKIAogICAgIGlucHV0LnJlbW92ZUF0dHJpYnV0ZSgiYXV0b2NvbXBs
ZXRlIik7Ci0gICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KCk7CisgICAgbG9nQXV0b0NvbXBs
ZXRlQVBJUmVzdWx0KGlucHV0KTsKICAgICAKICAgICAvLyBUZXN0IHdpdGggYXV0b2NvbXBsZXRl
PSJvZmYiIG9uIHRoZSA8Zm9ybT4KICAgICBmb3JtLnNldEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRl
IiwgIm9mZiIpOwotICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdCgpOworICAgIGxvZ0F1dG9D
b21wbGV0ZUFQSVJlc3VsdChpbnB1dCk7CiAgICAgCiAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJh
dXRvY29tcGxldGUiLCAiY2hlZXNlIik7Ci0gICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KCk7
CisgICAgbG9nQXV0b0NvbXBsZXRlQVBJUmVzdWx0KGlucHV0KTsKIAogICAgIGlucHV0LnNldEF0
dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwgIm9mZiIpOwotICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJl
c3VsdCgpOworICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdChpbnB1dCk7CiAKICAgICBpbnB1
dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJvbiIpOwotICAgIGxvZ0F1dG9Db21wbGV0
ZUFQSVJlc3VsdCgpOworICAgIGxvZ0F1dG9Db21wbGV0ZUFQSVJlc3VsdChpbnB1dCk7CiAKICAg
ICBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJjaGVlc2UiKTsKLSAgICBsb2dB
dXRvQ29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQoaW5w
dXQpOwogCiAgICAgaW5wdXQucmVtb3ZlQXR0cmlidXRlKCJhdXRvY29tcGxldGUiKTsKLSAgICBs
b2dBdXRvQ29tcGxldGVBUElSZXN1bHQoKTsKKyAgICBsb2dBdXRvQ29tcGxldGVBUElSZXN1bHQo
aW5wdXQpOwogfQogCiA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>