<?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>171350</bug_id>
          
          <creation_ts>2017-04-26 16:18:25 -0700</creation_ts>
          <short_desc>[WebCrypto] Add an api test for testing wrapping/unwrapping serialized crypto keys</short_desc>
          <delta_ts>2017-05-03 16:50:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=162554</see_also>
          <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="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1301819</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-26 16:18:25 -0700</bug_when>
    <thetext>Add an api test for testing wrapping/unwrapping serialized crypto keys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301820</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-26 16:19:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/28600836&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301823</commentid>
    <comment_count>2</comment_count>
      <attachid>308303</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-26 16:25:05 -0700</bug_when>
    <thetext>Created attachment 308303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304034</commentid>
    <comment_count>3</comment_count>
      <attachid>308303</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-05-03 09:04:14 -0700</bug_when>
    <thetext>Comment on attachment 308303
Patch

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

This looks good, but I think your test case is wrong in the openRequest.onerror handler. Can you please fix before landing?

&gt; Tools/TestWebKitAPI/Tests/WebKit2/navigation-client-default-crypto.html:49
&gt; +        finishJSTest();

There are no definitions for &quot;testFailed&quot; or &quot;finishJSTest&quot; in TestWebKitAPI -- I&apos;m surprised this doesn&apos;t create an error when you run.

Please remove these lines and switch to &quot;alert(&quot;FAIL&quot;)&quot; or something for these failure case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304166</commentid>
    <comment_count>4</comment_count>
      <attachid>308303</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-05-03 12:16:24 -0700</bug_when>
    <thetext>Comment on attachment 308303
Patch

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

Thanks Brent for r+ the patch.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2/navigation-client-default-crypto.html:49
&gt;&gt; +        finishJSTest();
&gt; 
&gt; There are no definitions for &quot;testFailed&quot; or &quot;finishJSTest&quot; in TestWebKitAPI -- I&apos;m surprised this doesn&apos;t create an error when you run.
&gt; 
&gt; Please remove these lines and switch to &quot;alert(&quot;FAIL&quot;)&quot; or something for these failure case.

I think that&apos;s because those code paths are never executed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304184</commentid>
    <comment_count>5</comment_count>
      <attachid>308939</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-05-03 12:31:55 -0700</bug_when>
    <thetext>Created attachment 308939
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304378</commentid>
    <comment_count>6</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-05-03 16:50:52 -0700</bug_when>
    <thetext>Committed r216157: &lt;http://trac.webkit.org/changeset/216157&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308303</attachid>
            <date>2017-04-26 16:25:05 -0700</date>
            <delta_ts>2017-05-03 09:04:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171350-20170426162504.patch</filename>
            <type>text/plain</type>
            <size>16045</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWE5ODRjOTY4NjJiZmY3NTM5NWU4ZTVhMmU1MjdmNGNi
YzcwNGViMS4uNTE3N2JlYjg3NDVlNWEzYTgxZTY0MzVhODNiMzc0MzYzNWMwNDQyMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE3LTA0LTI2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkNyeXB0b10gQWRkIGFuIGFwaSB0ZXN0IGZvciB0ZXN0aW5nIHdyYXBwaW5nL3Vu
d3JhcHBpbmcgc2VyaWFsaXplZCBjcnlwdG8ga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
ODYwMDgzNj4KKworICAgICAgICBQYXRjaGVkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9OYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHA6IEFk
ZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9uYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sOiBBZGRl
ZC4KKwogMjAxNy0wNC0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEVuY29kZWQgZmlsZW5hbWUgc2hvdWxkIGJlIGRlY29kZWQgZm9yIFdL
Q29udGVudEV4dGVuc2lvbi5pZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdm
OWExZjhkZTVmYzBmOWQ2MGQ5YWM2NWNmOTE1MjY0NjRiMDNiMjMuLjcxNGNiN2Q3NDNiYmFkNzFi
OTZjMDM0MzM2ZjBjYjViMWI0NjU1YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODUs
NiArMTg1LDggQEAKIAkJNTcxNEVDQkQxQ0E4QzIyQTAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVz
dE9yaWdpbmFsVVJMMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3MTRFQ0JDMUNBOEMyMTgwMDA1MUFDOCAvKiBEb3dubG9hZFJlcXVl
c3RPcmlnaW5hbFVSTDIuaHRtbCAqLzsgfTsKIAkJNTc2OUM1MEIxRDlCMDAwMjAwMDg0N0ZCIC8q
IFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTc2OUM1MEExRDlCMDAwMTAwMDg0N0ZCIC8qIFNlcmlhbGl6ZWRD
cnlwdG9LZXlXcmFwLm1tICovOyB9OwogCQk1NzkwMUZCMTFDQUYxNDJEMDBFRDY0RjkgLyogTG9h
ZEludmFsaWRVUkxSZXF1ZXN0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5MDFGQjAxQ0FGMTQxQzAwRUQ2NEY5IC8qIExvYWRJbnZh
bGlkVVJMUmVxdWVzdC5odG1sICovOyB9OworCQk1Nzk3RkUzMTFFQjE1QTY4MDBCMkY0QTAgLyog
TmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5N0ZFMkYxRUIxNUE1RjAwQjJGNEEwIC8qIE5hdmln
YXRpb25DbGllbnREZWZhdWx0Q3J5cHRvLmNwcCAqLzsgfTsKKwkJNTc5N0ZFMzMxRUIxNUFCMTAw
QjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5N0ZFMzIxRUIx
NUE4OTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgKi87
IH07CiAJCTU3RjU2QTVDMUM3RjhDQzEwMEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVz
dGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdGNTZBNUIxQzdGOEE0MDAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0
ZWQuaHRtbCAqLzsgfTsKIAkJNUMwQkY4OEQxREQ1OTY0RDAwQjAwMzI4IC8qIE1lbW9yeVByZXNz
dXJlSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMEJGODhDMURENTk1NzQwMEIwMDMyOCAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0g
Ki87IH07CiAJCTVDMEJGODkxMURENTk5QTkwMEIwMDMyOCAvKiBXZWJWaWV3Q2FuUGFzdGVaZXJv
UG5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMw
QkY4OEYxREQ1OTk5QjAwQjAwMzI4IC8qIFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0gKi87IH07
CkBAIC02ODAsNiArNjgyLDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNl
czsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJCQkJNTc5N0ZFMzMx
RUIxNUFCMTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMDc0OTk0NDIxRUE1MDM0QjAwMERBNDRFIC8qIGdl
dFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUM5QkYwNkVGMUU5QzEz
MjUwMDU5NUUzRSAvKiBhdXRvcGxheS1tdXRlZC13aXRoLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJRjRERUY2RUQxRTlCNERCNjAwNDhFRjYxIC8qIGltYWdlLWluLWxp
bmstYW5kLWlucHV0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMTM1LDYgKzExMzgs
OCBAQAogCQk1NzkwMUZBQzFDQUYxMkMyMDBFRDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZEludmFsaWRV
UkxSZXF1ZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzkwMUZBRTFDQUYx
MzcxMDBFRDY0RjkgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NzkwMUZCMDFDQUYxNDFDMDBFRDY0RjkgLyogTG9hZElu
dmFsaWRVUkxSZXF1ZXN0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBMb2FkSW52
YWxpZFVSTFJlcXVlc3QuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5N0ZF
MkYxRUIxNUE1RjAwQjJGNEEwIC8qIE5hdmlnYXRpb25DbGllbnREZWZhdWx0Q3J5cHRvLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRpb25DbGllbnREZWZh
dWx0Q3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc5N0ZFMzIxRUIx
NUE4OTAwQjJGNEEwIC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlw
dG8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OThFMkFGMUNBRjVDMjgw
MEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZp
Z2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAwMEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25U
cnVzdGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rp
b25UcnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc2LDYgKzIw
ODEsNyBAQAogCQkJCTUxQ0I0QUQ3MUIzQTA3OUMwMEMxQjFDNiAvKiBNb2RhbEFsZXJ0c1NQSS5j
cHAgKi8sCiAJCQkJMzNCRTVBRjQxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jh
c2guY3BwICovLAogCQkJCTMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRl
ckNyYXNoX0J1bmRsZS5jcHAgKi8sCisJCQkJNTc5N0ZFMkYxRUIxNUE1RjAwQjJGNEEwIC8qIE5h
dmlnYXRpb25DbGllbnREZWZhdWx0Q3J5cHRvLmNwcCAqLywKIAkJCQk5M0YxREIzMDE0REEyMDc2
MDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcCAqLywKIAkJCQk5
M0YxREIzMzE0REEyMDg3MDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
X0J1bmRsZS5jcHAgKi8sCiAJCQkJOTNGMURCNTQxNERCMUI3MzAwMjRDMzYyIC8qIE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxzLmNwcCAqLywKQEAgLTIyNDYsNiArMjI1Miw3IEBA
CiAJCQkJOTNBRjRFQ0YxNTA2RjEyMzAwN0ZENTdFIC8qIGxvdHMtb2YtaW1hZ2VzLmh0bWwgKi8s
CiAJCQkJMkREN0QzQUUxNzgyMjdBQzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1s
ci5odG1sICovLAogCQkJCTkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQu
aHRtbCAqLywKKwkJCQk1Nzk3RkUzMjFFQjE1QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGll
bnQtZGVmYXVsdC1jcnlwdG8uaHRtbCAqLywKIAkJCQlBRDU3QUMxRDFEQTc0NjM4MDBGRjFCREUg
LyogbWFueS1pZnJhbWVzLmh0bWwgKi8sCiAJCQkJNTFDRDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8q
IG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmstd2luZG93Lmh0bWwgKi8sCiAJCQkJN0Ex
NDU4RkIxQUQ1QzAzNTAwRTA2NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1sICovLApA
QCAtMzA3NCw2ICszMDgxLDcgQEAKIAkJCQk5QkQ0MjM5QTFFMDRCRDk4MDAyMDAzOTUgLyogQXR0
cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRTc3NjVDRDE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJFNzc2NUNGMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTc5N0ZFMzExRUIxNUE2ODAwQjJGNEEwIC8qIE5hdmlnYXRpb25DbGllbnRE
ZWZhdWx0Q3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBRDNGRThFMUQ3NjEzMTIwMEIx
NjlBNCAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENy
eXB0by5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmF2aWdhdGlvbkNs
aWVudERlZmF1bHRDcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4NWM5YmViYzE1OTk3M2JjOGUzY2Zh
MGY4YWUxZmVkMGMyZWViZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwCkBAIC0wLDAg
KzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0hBVkVfQ19TUEkKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2ltcG9ydCAiVGVz
dC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK3N0YXRpYyBib29sIHJlY2VpdmVkQWxlcnQ7CitzdGF0aWMgUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBsYXN0QWxlcnQ7CisKK3N0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXS1Bh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgYWxlcnRUZXh0LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1Nl
Y3VyaXR5T3JpZ2luUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGxhc3RBbGVy
dCA9IGFsZXJ0VGV4dDsKKyAgICByZWNlaXZlZEFsZXJ0ID0gdHJ1ZTsKK30KKworc3RhdGljIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlv
bkFjdGlvblJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqKQoreworICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7
Cit9CisKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXS1Bh
Z2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7CisgICAgV0tGcmFtZVBvbGljeUxp
c3RlbmVyVXNlKGxpc3RlbmVyKTsKK30KKworVEVTVChXZWJLaXQyLCBOYXZpZ2F0aW9uQ2xpZW50
RGVmYXVsdENyeXB0bykKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENy
ZWF0ZSgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKKwor
ICAgIC8vIFRoZSBuYXZpZ2F0aW9uQ2xpZW50IHF1aXRlIGV4cGxpY2l0bHkgZG9lcyAqbm90KiBo
YXZlIGEgY29weVdlYkNyeXB0b01hc3RlcktleSBjYWxsYmFjaywKKyAgICAvLyB3aGljaCBhbGxv
d3MgdGhpcyB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IFdlYktpdDIgaW5zdGVhZCBjcmVhdGVzIGEg
ZGVmYXVsdCBjcnlwdG8gbWFzdGVyIGtleS4KKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAg
bmF2aWdhdGlvbkNsaWVudDsKKyAgICBtZW1zZXQoJm5hdmlnYXRpb25DbGllbnQsIDAsIHNpemVv
ZihuYXZpZ2F0aW9uQ2xpZW50KSk7CisgICAgbmF2aWdhdGlvbkNsaWVudC5iYXNlLnZlcnNpb24g
PSAwOworICAgIG5hdmlnYXRpb25DbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biA9IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb247CisgICAgbmF2aWdhdGlvbkNsaWVu
dC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2U7CisKKyAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJW
aWV3LnBhZ2UoKSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CisKKyAgICBXS1BhZ2VVSUNsaWVu
dFY1IHVpQ2xpZW50OworICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkp
OworICAgIHVpQ2xpZW50LmJhc2UudmVyc2lvbiA9IDU7CisgICAgdWlDbGllbnQucnVuSmF2YVNj
cmlwdEFsZXJ0ID0gcnVuSmF2YVNjcmlwdEFsZXJ0OworCisgICAgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KHdlYlZpZXcucGFnZSgpLCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gdXJsID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgibmF2aWdh
dGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8iLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJM
KHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZyZWNlaXZlZEFs
ZXJ0KTsKKyAgICBFWFBFQ1RfVFJVRShXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGxhc3RB
bGVydC5nZXQoKSwgInN1Y2Nlc3NmdWxseSBzdG9yZWQga2V5IikpOworCisgICAgcmVjZWl2ZWRB
bGVydCA9IGZhbHNlOworICAgIFV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7CisgICAgRVhQRUNU
X1RSVUUoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhsYXN0QWxlcnQuZ2V0KCksICJyZXRy
aWV2ZWQgdmFsaWQga2V5IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
KyNlbmRpZiAvLyBXS19IQVZFX0NfU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9uYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0
LWNyeXB0by5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNjVhOWRlN2YzYmQ3YmVlNmM0ZTg1YmI0MTcyNWQ0
OTVkYmEzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbApAQCAtMCwwICsxLDk5
IEBACis8c2NyaXB0PgorCit2YXIgcHJpdmF0ZUtleUpTT04gPSB7CisgICAga3R5OiAiUlNBIiwK
KyAgICBhbGc6ICJSUzI1NiIsCisgICAgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdP
cDhRTGs4Wml5MnAxMEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1N
YkxTSElHZ1dRR08yMWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIw
UUc1TXNEaEQ2czJnVjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1Nn
QTFPZ3VaOTg5YkZ5Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1Nj
eVdiR3lFeTNCaXc2NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJL
VXAwMm1KRFppaXlpZ2x4TUxfaTMtX0NlZWNDdyIsCisgICAgZTogIkFRQUIiLAorICAgIGQ6ICJl
TkxTMzdhQ3o3UlhTTlBEX0R0TEJKNmo1VDhjU3hkelJCQ2pQYUk2V2NHcUpwMTZscTNVVHd1b0RM
QXFsQTlvR1ltMjM4ZHNJV3B1dWNQX2xRdGJXZS03U3B4b0k2X3ZtWUdmN1lWVUh2MS1ERjlxaU9t
U3JNbWR4TW5WT3pZWFk4UmFUNnRoUGpuX0o1Y2ZMVjJ4SV9Md3NyTXRtcGRTeU5sZ1gwelRVaHd0
dWFoZ0FLTUVDaFlqSDJFbmpIZEh3NnNZMi13QXBkY1FJN1VMRTBvbzVSemJRWnBtdWhjTjloaUJj
MEwzaGhGMHFvNTBtYmwwMl82NV9HUTdEcFZrWEJ4TmdSQkx6bFBhYm16ekcyb0FoZmVmTGdZbVND
MW9wYUNrWEU2dlJXUU5XTkw0NVJaTlpGWU0zdW9KZ2hPTXFHZW9jTTBCcGpkQ2hIclBPbEZ2U1Ei
LAorICAgIHA6ICI0bWlUdUFqS01lSDV1SjVLQjM5N1FVd2hia1lFZ1NiY0EybWlmbVNrdkUyMDE4
Z2I1NXFrQkhLMWVWcnlmMV9tNDNMTmxjNk9fYWs2Z2Z6ZFpJWnZTNU5DR2pQbDBxMDlwbFVwdThx
Rk9Tc3BCd0E2N3FHSDc2bEZsWkxuX2Q0eWdsUzd3ZkxydTRfNVlzOHFMTHMtRHFWTHZpd3Bvc09u
eXlXcXdNNUFYcDAiLAorICAgIHE6ICJ4SFlyemtpdnRtbnpfc0djaG5XR2MwcS1wRE9rS2ljcHRS
cHYycE1GSUlYeG5GWDVhTWVFWElaalZ1alh0d1V5MVVsRklOMkdaSlN2eTVLSjc5bXVfWHlObkZI
TXplZEgtQTNlZTN1OGgxVVVyWkYtdlV1MV9lNFVfeDY3Tk4xZGVkelVTS3luTjdwRmwzT2t1U2hN
QldHVi1jd3pPUGRjVkFmVnVabHhVTWMiLAorICAgIGRwOiAiZkJ6RHpZRFVCbUJRR29wN0huMGR2
Zl9UMjdWNlJxcGN0V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlkMlZIemNnaURIZGZwTTNu
RVZsRU8xd3dJb25HQ1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlGdnFiWGtlMDZWd1BJSVZ2
ZktlU1UyenVoYlBfXzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwKKyAgICBkcTogImptRTJEaUlQ
ZGh3RGdMWEFRcElhQnFRODFiTzNYZlZUX0xSVUxBd3d3d2xQdVFWMTQ4SDA0emxoOVRKNlkyR1pI
WW9rVjFVMGVPQnBKeGZrYjdkTFl0cEpwdWlCalJmNHlJVUVvR2xra0lfUWxKbkZTRnItWWpHUmRm
TkhxV0JreGxTTVpMNzcwUjltSUFUbmRHa0g3ejV4LXI5S3dCWkZDNEZDRzJoZ196RSIsCisgICAg
cWk6ICJZQ1hfcEx3Yk1CQTFUaFZIMFdjd21ueXRxTmNyTUNFd1RtN0J5QTJlVTZuV2JRclVMdmY3
bTlfa3pmTFVjanNucEFWbEJRRzVKTVhNeTBTcTRwdHdieXdzYTUtRzhLQU9PT1IyTDN2NGhDLUV5
czlmdGdGTV8zaTBvNDBlZVFINGIzaGFQYm50ckllTWc4SXpsT3VWWUtmOS0yUXVLRG9XZVJkZDdO
c2R4VGsiCit9OworCitmdW5jdGlvbiBhc2NpaVRvVWludDhBcnJheShzdHIpCit7CisgICAgdmFy
IGNoYXJzID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpCisg
ICAgICAgIGNoYXJzLnB1c2goc3RyLmNoYXJDb2RlQXQoaSkpOworICAgIHJldHVybiBuZXcgVWlu
dDhBcnJheShjaGFycyk7Cit9CisKK2Z1bmN0aW9uIGJ5dGVzVG9IZXhTdHJpbmcoYnl0ZXMpCit7
CisgICAgaWYgKCFieXRlcykKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICBieXRlcyA9IG5l
dyBVaW50OEFycmF5KGJ5dGVzKTsKKyAgICB2YXIgaGV4Qnl0ZXMgPSBbXTsKKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGJ5dGVTdHJp
bmcgPSBieXRlc1tpXS50b1N0cmluZygxNik7CisgICAgICAgIGlmIChieXRlU3RyaW5nLmxlbmd0
aCA8IDIpCisgICAgICAgICAgICBieXRlU3RyaW5nID0gIjAiICsgYnl0ZVN0cmluZzsKKyAgICAg
ICAgaGV4Qnl0ZXMucHVzaChieXRlU3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gaGV4Qnl0
ZXMuam9pbigiIik7Cit9CisKK2NyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBwcml2YXRl
S2V5SlNPTiwgeyBuYW1lOiAnUlNBU1NBLVBLQ1MxLXYxXzUnLCBoYXNoOiAic2hhLTI1NiIgfSwg
dHJ1ZSwgWyJzaWduIl0pLnRoZW4oZnVuY3Rpb24oa2V5KSB7CisgICAgdmFyIG9wZW5SZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oImNyeXB0b19zdWJ0bGUiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICB2YXIgb2JqZWN0U3RvcmUg
PSBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJyc2EtaW5kZXhlZGRiIik7
CisgICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZTogIiArIGV2ZW50LnRhcmdl
dC5lcnJvci5uYW1lKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIG9wZW5S
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgc3RvcmVLZXkoKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBzdG9yZUtleSgpIHsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24o
InJzYS1pbmRleGVkZGIiLCAicmVhZHdyaXRlIikub2JqZWN0U3RvcmUoInJzYS1pbmRleGVkZGIi
KTsKKyAgICAgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLnB1dChrZXksICJteWtleSIpOworICAg
ICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBhbGVydCgn
ZmFpbGVkIHRvIHN0b3JlIGtleScpOworCisgICAgICAgIH0KKyAgICAgICAgcmVxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHN0
b3JlZCBrZXknKTsKKyAgICAgICAgICAgIHJlYWRLZXkoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJlYWRLZXkoKSB7CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLnRy
YW5zYWN0aW9uKCJyc2EtaW5kZXhlZGRiIikub2JqZWN0U3RvcmUoInJzYS1pbmRleGVkZGIiKTsK
KyAgICAgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLmdldCgibXlrZXkiKTsKKyAgICAgICAgcmVx
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcmV0cmlldmVGYWlsZWQo
KTsKKyAgICAgICAgfQorICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgICAgIHdpbmRvdy5yZXRyaWV2ZWRLZXkgPSBldmVudC50YXJnZXQucmVzdWx0Owor
ICAgICAgICAgICAgaWYgKHJldHJpZXZlZEtleS50eXBlICE9ICdwcml2YXRlJykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtleS50eXBlICE9ICdwcml2YXRlJzogIiAr
IHJldHJpZXZlZEtleS50eXBlKTsKKyAgICAgICAgICAgIGlmIChyZXRyaWV2ZWRLZXkuZXh0cmFj
dGFibGUgIT0gdHJ1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtl
eS5leHRyYWN0YWJsZSAhPSB0cnVlOiAiICsgcmV0cmlldmVkS2V5LmV4dHJhY3RhYmxlKTsKKyAg
ICAgICAgICAgIGlmIChyZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLm5hbWUgIT0gJ1JTQVNTQS1QS0NT
MS12MV81JykKKyAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtleS5hbGdv
cml0aG0ubmFtZSAhPSAnUlNBU1NBLVBLQ1MxLXYxXzUnOiAiICsgcmV0cmlldmVkS2V5LmFsZ29y
aXRobS5uYW1lKTsKKyAgICAgICAgICAgIGlmIChyZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLm1vZHVs
dXNMZW5ndGggIT0gMjA0OCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZl
ZEtleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCAhPSAyMDQ4OiAiICsgcmV0cmlldmVkS2V5LmFs
Z29yaXRobS5tb2R1bHVzTGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChieXRlc1RvSGV4U3RyaW5n
KHJldHJpZXZlZEtleS5hbGdvcml0aG0ucHVibGljRXhwb25lbnQpICE9ICcwMTAwMDEnKQorICAg
ICAgICAgICAgICAgIHJldHVybiBhbGVydCgiYnl0ZXNUb0hleFN0cmluZyhyZXRyaWV2ZWRLZXku
YWxnb3JpdGhtLnB1YmxpY0V4cG9uZW50KSAhPSAnMDEwMDAxJzogIiArIGJ5dGVzVG9IZXhTdHJp
bmcocmV0cmlldmVkS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkpOworICAgICAgICAgICAg
aWYgKHJldHJpZXZlZEtleS5hbGdvcml0aG0uaGFzaC5uYW1lICE9ICdTSEEtMjU2JykKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtleS5hbGdvcml0aG0uaGFzaC5uYW1l
ICE9ICdTSEEtMjU2JzogIiArIHJldHJpZXZlZEtleS5hbGdvcml0aG0uaGFzaC5uYW1lKTsKKyAg
ICAgICAgICAgIGlmIChyZXRyaWV2ZWRLZXkudXNhZ2VzLmxlbmd0aCAhPSAxKQorICAgICAgICAg
ICAgICAgIHJldHVybiBhbGVydCgicmV0cmlldmVkS2V5LnVzYWdlcy5sZW5ndGggIT0gMTogIiAr
IHJldHJpZXZlZEtleS51c2FnZXMubGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChyZXRyaWV2ZWRL
ZXkudXNhZ2VzWzBdICE9ICdzaWduJykKKyAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnQoInJl
dHJpZXZlZEtleS51c2FnZXNbMF0gIT0gJ3NpZ24nOiAiICsgcmV0cmlldmVkS2V5LnVzYWdlc1sw
XSk7CisKKyAgICAgICAgICAgIGFsZXJ0KCdyZXRyaWV2ZWQgdmFsaWQga2V5Jyk7CisgICAgICAg
IH0KKyAgICB9Cit9KTsKKworPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="329485"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="330076"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308939</attachid>
            <date>2017-05-03 12:31:55 -0700</date>
            <delta_ts>2017-05-03 12:31:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171350-20170503123154.patch</filename>
            <type>text/plain</type>
            <size>16023</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWE5ODRjOTY4NjJiZmY3NTM5NWU4ZTVhMmU1MjdmNGNi
YzcwNGViMS4uMDVkZmVmYTBjMGYxMzIxOTAyNGE4MTE5MWIzZjJhMTUzMTUwODkxOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE3LTA0LTI2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkNyeXB0b10gQWRkIGFuIGFwaSB0ZXN0IGZvciB0ZXN0aW5nIHdyYXBwaW5nL3Vu
d3JhcHBpbmcgc2VyaWFsaXplZCBjcnlwdG8ga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMzUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
ODYwMDgzNj4KKworICAgICAgICBQYXRjaGVkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBS
ZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL05hdmlnYXRpb25DbGllbnREZWZhdWx0Q3J5cHRvLmNwcDogQWRk
ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL25hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWw6IEFkZGVk
LgorCiAyMDE3LTA0LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRW5jb2RlZCBmaWxlbmFtZSBzaG91bGQgYmUgZGVjb2RlZCBmb3IgV0tD
b250ZW50RXh0ZW5zaW9uLmlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Y5
YTFmOGRlNWZjMGY5ZDYwZDlhYzY1Y2Y5MTUyNjQ2NGIwM2IyMy4uNzE0Y2I3ZDc0M2JiYWQ3MWI5
NmMwMzQzMzZmMGNiNWIxYjQ2NTVhNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NSw2
ICsxODUsOCBAQAogCQk1NzE0RUNCRDFDQThDMjJBMDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0
T3JpZ2luYWxVUkwyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcxNEVDQkMxQ0E4QzIxODAwMDUxQUM4IC8qIERvd25sb2FkUmVxdWVz
dE9yaWdpbmFsVVJMMi5odG1sICovOyB9OwogCQk1NzY5QzUwQjFEOUIwMDAyMDAwODQ3RkIgLyog
U2VyaWFsaXplZENyeXB0b0tleVdyYXAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzY5QzUwQTFEOUIwMDAxMDAwODQ3RkIgLyogU2VyaWFsaXplZENy
eXB0b0tleVdyYXAubW0gKi87IH07CiAJCTU3OTAxRkIxMUNBRjE0MkQwMEVENjRGOSAvKiBMb2Fk
SW52YWxpZFVSTFJlcXVlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzkwMUZCMDFDQUYxNDFDMDBFRDY0RjkgLyogTG9hZEludmFs
aWRVUkxSZXF1ZXN0Lmh0bWwgKi87IH07CisJCTU3OTdGRTMxMUVCMTVBNjgwMEIyRjRBMCAvKiBO
YXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk3RkUyRjFFQjE1QTVGMDBCMkY0QTAgLyogTmF2aWdh
dGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwICovOyB9OworCQk1Nzk3RkUzMzFFQjE1QUIxMDBC
MkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk3RkUzMjFFQjE1
QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCAqLzsg
fTsKIAkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0
ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3Rl
ZC5odG1sICovOyB9OwogCQk1QzBCRjg4RDFERDU5NjREMDBCMDAzMjggLyogTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMwQkY4OEMxREQ1OTU3NDAwQjAwMzI4IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSAq
LzsgfTsKIAkJNUMwQkY4OTExREQ1OTlBOTAwQjAwMzI4IC8qIFdlYlZpZXdDYW5QYXN0ZVplcm9Q
bmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBC
Rjg4RjFERDU5OTlCMDBCMDAzMjggLyogV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbSAqLzsgfTsK
QEAgLTY4MCw2ICs2ODIsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
OwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1Nzk3RkUzMzFF
QjE1QUIxMDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkwNzQ5OTQ0MjFFQTUwMzRCMDAwREE0NEUgLyogZ2V0
VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzlCRjA2RUYxRTlDMTMy
NTAwNTk1RTNFIC8qIGF1dG9wbGF5LW11dGVkLXdpdGgtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQlGNERFRjZFRDFFOUI0REI2MDA0OEVGNjEgLyogaW1hZ2UtaW4tbGlu
ay1hbmQtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTExMzUsNiArMTEzOCw4
IEBACiAJCTU3OTAxRkFDMUNBRjEyQzIwMEVENjRGOSAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkSW52YWxpZFVS
TFJlcXVlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OTAxRkFFMUNBRjEz
NzEwMEVENjRGOSAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2FkSW52YWxpZFVSTFJlcXVlc3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3OTAxRkIwMUNBRjE0MUMwMEVENjRGOSAvKiBMb2FkSW52
YWxpZFVSTFJlcXVlc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IExvYWRJbnZh
bGlkVVJMUmVxdWVzdC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Nzk3RkUy
RjFFQjE1QTVGMDBCMkY0QTAgLyogTmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvbkNsaWVudERlZmF1
bHRDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Nzk3RkUzMjFFQjE1
QTg5MDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0
by5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc5OEUyQUYxQ0FGNUMyODAw
QzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RjEwRDkyMUM3RTdCMzgwMEVDREYzMCAvKiBJc05hdmln
YXRpb25BY3Rpb25UcnVzdGVkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTdGNTZBNUIxQzdGOEE0MDAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFjdGlvblRy
dXN0ZWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElzTmF2aWdhdGlvbkFjdGlv
blRydXN0ZWQuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzYsNiArMjA4
MSw3IEBACiAJCQkJNTFDQjRBRDcxQjNBMDc5QzAwQzFCMUM2IC8qIE1vZGFsQWxlcnRzU1BJLmNw
cCAqLywKIAkJCQkzM0JFNUFGNDEzN0I1QTZDMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFz
aC5jcHAgKi8sCiAJCQkJMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVy
Q3Jhc2hfQnVuZGxlLmNwcCAqLywKKwkJCQk1Nzk3RkUyRjFFQjE1QTVGMDBCMkY0QTAgLyogTmF2
aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwICovLAogCQkJCTkzRjFEQjMwMTREQTIwNzYw
MDI0QzM2MiAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwICovLAogCQkJCTkz
RjFEQjMzMTREQTIwODcwMDI0QzM2MiAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRf
QnVuZGxlLmNwcCAqLywKIAkJCQk5M0YxREI1NDE0REIxQjczMDAyNEMzNjIgLyogTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwICovLApAQCAtMjI0Niw2ICsyMjUyLDcgQEAK
IAkJCQk5M0FGNEVDRjE1MDZGMTIzMDA3RkQ1N0UgLyogbG90cy1vZi1pbWFnZXMuaHRtbCAqLywK
IAkJCQkyREQ3RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxy
Lmh0bWwgKi8sCiAJCQkJOTMwQUQ0MDExNTA2OThCMzAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5o
dG1sICovLAorCQkJCTU3OTdGRTMyMUVCMTVBODkwMEIyRjRBMCAvKiBuYXZpZ2F0aW9uLWNsaWVu
dC1kZWZhdWx0LWNyeXB0by5odG1sICovLAogCQkJCUFENTdBQzFEMURBNzQ2MzgwMEZGMUJERSAv
KiBtYW55LWlmcmFtZXMuaHRtbCAqLywKIAkJCQk1MUNEMUM3MTFCMzhENDg0MDAxNDJDQTUgLyog
bW9kYWwtYWxlcnRzLWluLW5ldy1hYm91dC1ibGFuay13aW5kb3cuaHRtbCAqLywKIAkJCQk3QTE0
NThGQjFBRDVDMDM1MDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0bWwgKi8sCkBA
IC0zMDc0LDYgKzMwODEsNyBAQAogCQkJCTlCRDQyMzlBMUUwNEJEOTgwMDIwMDM5NSAvKiBBdHRy
aWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdpdGhJbWFnZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTJFNzc2NUNEMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1Nzk3RkUzMTFFQjE1QTY4MDBCMkY0QTAgLyogTmF2aWdhdGlvbkNsaWVudERl
ZmF1bHRDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FEM0ZFOEUxRDc2MTMxMjAwQjE2
OUE0IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05hdmlnYXRpb25DbGllbnREZWZhdWx0Q3J5
cHRvLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OYXZpZ2F0aW9uQ2xp
ZW50RGVmYXVsdENyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg1YzliZWJjMTU5OTczYmM4ZTNjZmEw
ZjhhZTFmZWQwYzJlZWJkNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9OYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAKQEAgLTAsMCAr
MSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8V2ViS2l0
L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW1wb3J0ICJUZXN0
LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworc3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVydDsKK3N0YXRpYyBSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGxhc3RBbGVydDsKKworc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFn
ZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgbGFzdEFsZXJ0
ID0gYWxlcnRUZXh0OworICAgIHJlY2VpdmVkQWxlcnQgPSB0cnVlOworfQorCitzdGF0aWMgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9u
QWN0aW9uUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCopCit7CisgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKGxpc3RlbmVyKTsK
K30KKworc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdLUGFn
ZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBs
aXN0ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBXS0ZyYW1lUG9saWN5TGlz
dGVuZXJVc2UobGlzdGVuZXIpOworfQorCitURVNUKFdlYktpdDIsIE5hdmlnYXRpb25DbGllbnRE
ZWZhdWx0Q3J5cHRvKQoreworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3Jl
YXRlKCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworCisg
ICAgLy8gVGhlIG5hdmlnYXRpb25DbGllbnQgcXVpdGUgZXhwbGljaXRseSBkb2VzICpub3QqIGhh
dmUgYSBjb3B5V2ViQ3J5cHRvTWFzdGVyS2V5IGNhbGxiYWNrLAorICAgIC8vIHdoaWNoIGFsbG93
cyB0aGlzIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgV2ViS2l0MiBpbnN0ZWFkIGNyZWF0ZXMgYSBk
ZWZhdWx0IGNyeXB0byBtYXN0ZXIga2V5LgorICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBu
YXZpZ2F0aW9uQ2xpZW50OworICAgIG1lbXNldCgmbmF2aWdhdGlvbkNsaWVudCwgMCwgc2l6ZW9m
KG5hdmlnYXRpb25DbGllbnQpKTsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9
IDA7CisgICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
ID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTsKKworICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdlYlZp
ZXcucGFnZSgpLCAmbmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKKworICAgIFdLUGFnZVVJQ2xpZW50
VjUgdWlDbGllbnQ7CisgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7
CisgICAgdWlDbGllbnQuYmFzZS52ZXJzaW9uID0gNTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2Ny
aXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQod2ViVmlldy5wYWdlKCksICZ1aUNsaWVudC5iYXNlKTsKKworICAgIFdLUmV0YWluUHRyPFdL
VVJMUmVmPiB1cmwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJuYXZpZ2F0
aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0byIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwo
d2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJnJlY2VpdmVkQWxl
cnQpOworICAgIEVYUEVDVF9UUlVFKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobGFzdEFs
ZXJ0LmdldCgpLCAic3VjY2Vzc2Z1bGx5IHN0b3JlZCBrZXkiKSk7CisKKyAgICByZWNlaXZlZEFs
ZXJ0ID0gZmFsc2U7CisgICAgVXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsKKyAgICBFWFBFQ1Rf
VFJVRShXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGxhc3RBbGVydC5nZXQoKSwgInJldHJp
ZXZlZCB2YWxpZCBrZXkiKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwor
I2VuZGlmIC8vIFdLX0hBVkVfQ19TUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9uYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL25hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQt
Y3J5cHRvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNhYmRiNTQwZWNhYWIwOTAwNjk3MTNmZGM3YTU1NzBl
MDhhYTA4MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9uYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sCkBAIC0wLDAgKzEsOTcg
QEAKKzxzY3JpcHQ+CisKK3ZhciBwcml2YXRlS2V5SlNPTiA9IHsKKyAgICBrdHk6ICJSU0EiLAor
ICAgIGFsZzogIlJTMjU2IiwKKyAgICBuOiAicmNDVUN2N09jMUhWYW0xREloQ3pxa25UaFdhd09w
OFFMazhaaXkycDEwQnlqUUZDYWpvRml5dUFXbC1SMVdYWmFmNHhpdExScmFjVDlhZ3B6SXpjLU1i
TFNISUdnV1FHTzIxbEdpSW15NWZ0Wi1EOGJIQXFSejJ5MTVwekQ0YzRDRW91N1hTU0xEb1JuUjBR
RzVNc0RoRDZzMmdWOW13SGtydGtDeHRNV2RCaS03N2FzOHdHbWxOUmxkY09TZ1pETEs4VW5DU2dB
MU9ndVo5ODliRnljOHRPT0VJYjB4VVNmUFN6M0xQU0NueVl6NjhhRGptS1ZlTkgtaWc4NTdPU2N5
V2JHeUV5M0JpdzY0cXVuM2p1VWxOV3NKM3puZ2tPZHRlWVd5dHg1UXI0WEtOczZSLU15eXE3MktV
cDAybUpEWmlpeWlnbHhNTF9pMy1fQ2VlY0N3IiwKKyAgICBlOiAiQVFBQiIsCisgICAgZDogImVO
TFMzN2FDejdSWFNOUERfRHRMQko2ajVUOGNTeGR6UkJDalBhSTZXY0dxSnAxNmxxM1VUd3VvRExB
cWxBOW9HWW0yMzhkc0lXcHV1Y1BfbFF0YldlLTdTcHhvSTZfdm1ZR2Y3WVZVSHYxLURGOXFpT21T
ck1tZHhNblZPellYWThSYVQ2dGhQam5fSjVjZkxWMnhJX0x3c3JNdG1wZFN5TmxnWDB6VFVod3R1
YWhnQUtNRUNoWWpIMkVuakhkSHc2c1kyLXdBcGRjUUk3VUxFMG9vNVJ6YlFacG11aGNOOWhpQmMw
TDNoaEYwcW81MG1ibDAyXzY1X0dRN0RwVmtYQnhOZ1JCTHpsUGFibXp6RzJvQWhmZWZMZ1ltU0Mx
b3BhQ2tYRTZ2UldRTldOTDQ1UlpOWkZZTTN1b0pnaE9NcUdlb2NNMEJwamRDaEhyUE9sRnZTUSIs
CisgICAgcDogIjRtaVR1QWpLTWVINXVKNUtCMzk3UVV3aGJrWUVnU2JjQTJtaWZtU2t2RTIwMThn
YjU1cWtCSEsxZVZyeWYxX200M0xObGM2T19hazZnZnpkWkladlM1TkNHalBsMHEwOXBsVXB1OHFG
T1NzcEJ3QTY3cUdINzZsRmxaTG5fZDR5Z2xTN3dmTHJ1NF81WXM4cUxMcy1EcVZMdml3cG9zT255
eVdxd001QVhwMCIsCisgICAgcTogInhIWXJ6a2l2dG1uel9zR2NobldHYzBxLXBET2tLaWNwdFJw
djJwTUZJSVh4bkZYNWFNZUVYSVpqVnVqWHR3VXkxVWxGSU4yR1pKU3Z5NUtKNzltdV9YeU5uRkhN
emVkSC1BM2VlM3U4aDFVVXJaRi12VXUxX2U0VV94NjdOTjFkZWR6VVNLeW5ON3BGbDNPa3VTaE1C
V0dWLWN3ek9QZGNWQWZWdVpseFVNYyIsCisgICAgZHA6ICJmQnpEellEVUJtQlFHb3A3SG4wZHZm
X1QyN1Y2UnFwY3RXbzA3NENRWmNGYlAyYXRGVnRLU2ozdmlXVDN4aWQyVkh6Y2dpREhkZnBNM25F
VmxFTzF3d0lvbkdDU3ZkakdFT1ppaUZWT2pyWkFPVnhBOGd1T2p5eUZ2cWJYa2UwNlZ3UElJVnZm
S2VTVTJ6dWhiUF9fMXR0NkZfZnhvdzRLYjJ4b25HVDBHR2siLAorICAgIGRxOiAiam1FMkRpSVBk
aHdEZ0xYQVFwSWFCcVE4MWJPM1hmVlRfTFJVTEF3d3d3bFB1UVYxNDhIMDR6bGg5VEo2WTJHWkhZ
b2tWMVUwZU9CcEp4ZmtiN2RMWXRwSnB1aUJqUmY0eUlVRW9HbGtrSV9RbEpuRlNGci1ZakdSZGZO
SHFXQmt4bFNNWkw3NzBSOW1JQVRuZEdrSDd6NXgtcjlLd0JaRkM0RkNHMmhnX3pFIiwKKyAgICBx
aTogIllDWF9wTHdiTUJBMVRoVkgwV2N3bW55dHFOY3JNQ0V3VG03QnlBMmVVNm5XYlFyVUx2Zjdt
OV9remZMVWNqc25wQVZsQlFHNUpNWE15MFNxNHB0d2J5d3NhNS1HOEtBT09PUjJMM3Y0aEMtRXlz
OWZ0Z0ZNXzNpMG80MGVlUUg0YjNoYVBibnRySWVNZzhJemxPdVZZS2Y5LTJRdUtEb1dlUmRkN05z
ZHhUayIKK307CisKK2Z1bmN0aW9uIGFzY2lpVG9VaW50OEFycmF5KHN0cikKK3sKKyAgICB2YXIg
Y2hhcnMgPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkKKyAg
ICAgICAgY2hhcnMucHVzaChzdHIuY2hhckNvZGVBdChpKSk7CisgICAgcmV0dXJuIG5ldyBVaW50
OEFycmF5KGNoYXJzKTsKK30KKworZnVuY3Rpb24gYnl0ZXNUb0hleFN0cmluZyhieXRlcykKK3sK
KyAgICBpZiAoIWJ5dGVzKQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIGJ5dGVzID0gbmV3
IFVpbnQ4QXJyYXkoYnl0ZXMpOworICAgIHZhciBoZXhCeXRlcyA9IFtdOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgYnl0ZVN0cmlu
ZyA9IGJ5dGVzW2ldLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgaWYgKGJ5dGVTdHJpbmcubGVuZ3Ro
IDwgMikKKyAgICAgICAgICAgIGJ5dGVTdHJpbmcgPSAiMCIgKyBieXRlU3RyaW5nOworICAgICAg
ICBoZXhCeXRlcy5wdXNoKGJ5dGVTdHJpbmcpOworICAgIH0KKworICAgIHJldHVybiBoZXhCeXRl
cy5qb2luKCIiKTsKK30KKworY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoImp3ayIsIHByaXZhdGVL
ZXlKU09OLCB7IG5hbWU6ICdSU0FTU0EtUEtDUzEtdjFfNScsIGhhc2g6ICJzaGEtMjU2IiB9LCB0
cnVlLCBbInNpZ24iXSkudGhlbihmdW5jdGlvbihrZXkpIHsKKyAgICB2YXIgb3BlblJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbigiY3J5cHRvX3N1YnRsZSIpOworICAgIG9wZW5SZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9
IGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInJzYS1pbmRleGVkZGIiKTsK
KyAgICB9CisgICAgb3BlblJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGFsZXJ0KCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZTogIiArIGV2ZW50LnRhcmdldC5lcnJv
ci5uYW1lKTsKKyAgICB9CisgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICBzdG9yZUtl
eSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0b3JlS2V5KCkgeworICAgICAgICB2YXIgb2Jq
ZWN0U3RvcmUgPSBkYi50cmFuc2FjdGlvbigicnNhLWluZGV4ZWRkYiIsICJyZWFkd3JpdGUiKS5v
YmplY3RTdG9yZSgicnNhLWluZGV4ZWRkYiIpOworICAgICAgICB2YXIgcmVxID0gb2JqZWN0U3Rv
cmUucHV0KGtleSwgIm15a2V5Iik7CisgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgICAgIGFsZXJ0KCdmYWlsZWQgdG8gc3RvcmUga2V5Jyk7CisgICAgICAg
IH0KKyAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAg
ICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHN0b3JlZCBrZXknKTsKKyAgICAgICAgICAgIHJlYWRLZXko
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJlYWRLZXkoKSB7CisgICAgICAg
IHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJyc2EtaW5kZXhlZGRiIikub2JqZWN0
U3RvcmUoInJzYS1pbmRleGVkZGIiKTsKKyAgICAgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLmdl
dCgibXlrZXkiKTsKKyAgICAgICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICAgICAgYWxlcnQoJ2ZhaWxlZCB0byByZWFkIGtleScpOworICAgICAgICB9CisgICAgICAg
IHJlcS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgd2luZG93LnJl
dHJpZXZlZEtleSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBpZiAocmV0cmll
dmVkS2V5LnR5cGUgIT0gJ3ByaXZhdGUnKQorICAgICAgICAgICAgICAgIHJldHVybiBhbGVydCgi
cmV0cmlldmVkS2V5LnR5cGUgIT0gJ3ByaXZhdGUnOiAiICsgcmV0cmlldmVkS2V5LnR5cGUpOwor
ICAgICAgICAgICAgaWYgKHJldHJpZXZlZEtleS5leHRyYWN0YWJsZSAhPSB0cnVlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBhbGVydCgicmV0cmlldmVkS2V5LmV4dHJhY3RhYmxlICE9IHRydWU6
ICIgKyByZXRyaWV2ZWRLZXkuZXh0cmFjdGFibGUpOworICAgICAgICAgICAgaWYgKHJldHJpZXZl
ZEtleS5hbGdvcml0aG0ubmFtZSAhPSAnUlNBU1NBLVBLQ1MxLXYxXzUnKQorICAgICAgICAgICAg
ICAgIHJldHVybiBhbGVydCgicmV0cmlldmVkS2V5LmFsZ29yaXRobS5uYW1lICE9ICdSU0FTU0Et
UEtDUzEtdjFfNSc6ICIgKyByZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLm5hbWUpOworICAgICAgICAg
ICAgaWYgKHJldHJpZXZlZEtleS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCAhPSAyMDQ4KQorICAg
ICAgICAgICAgICAgIHJldHVybiBhbGVydCgicmV0cmlldmVkS2V5LmFsZ29yaXRobS5tb2R1bHVz
TGVuZ3RoICE9IDIwNDg6ICIgKyByZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGgp
OworICAgICAgICAgICAgaWYgKGJ5dGVzVG9IZXhTdHJpbmcocmV0cmlldmVkS2V5LmFsZ29yaXRo
bS5wdWJsaWNFeHBvbmVudCkgIT0gJzAxMDAwMScpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFs
ZXJ0KCJieXRlc1RvSGV4U3RyaW5nKHJldHJpZXZlZEtleS5hbGdvcml0aG0ucHVibGljRXhwb25l
bnQpICE9ICcwMTAwMDEnOiAiICsgYnl0ZXNUb0hleFN0cmluZyhyZXRyaWV2ZWRLZXkuYWxnb3Jp
dGhtLnB1YmxpY0V4cG9uZW50KSk7CisgICAgICAgICAgICBpZiAocmV0cmlldmVkS2V5LmFsZ29y
aXRobS5oYXNoLm5hbWUgIT0gJ1NIQS0yNTYnKQorICAgICAgICAgICAgICAgIHJldHVybiBhbGVy
dCgicmV0cmlldmVkS2V5LmFsZ29yaXRobS5oYXNoLm5hbWUgIT0gJ1NIQS0yNTYnOiAiICsgcmV0
cmlldmVkS2V5LmFsZ29yaXRobS5oYXNoLm5hbWUpOworICAgICAgICAgICAgaWYgKHJldHJpZXZl
ZEtleS51c2FnZXMubGVuZ3RoICE9IDEpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFsZXJ0KCJy
ZXRyaWV2ZWRLZXkudXNhZ2VzLmxlbmd0aCAhPSAxOiAiICsgcmV0cmlldmVkS2V5LnVzYWdlcy5s
ZW5ndGgpOworICAgICAgICAgICAgaWYgKHJldHJpZXZlZEtleS51c2FnZXNbMF0gIT0gJ3NpZ24n
KQorICAgICAgICAgICAgICAgIHJldHVybiBhbGVydCgicmV0cmlldmVkS2V5LnVzYWdlc1swXSAh
PSAnc2lnbic6ICIgKyByZXRyaWV2ZWRLZXkudXNhZ2VzWzBdKTsKKworICAgICAgICAgICAgYWxl
cnQoJ3JldHJpZXZlZCB2YWxpZCBrZXknKTsKKyAgICAgICAgfQorICAgIH0KK30pOworCis8L3Nj
cmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>