<?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>151494</bug_id>
          
          <creation_ts>2015-11-20 08:42:20 -0800</creation_ts>
          <short_desc>[JSC] support Computed Property Names in destructuring Patterns</short_desc>
          <delta_ts>2015-11-24 17:43:27 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143649</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2015-11-20 08:42:20 -0800</bug_when>
    <thetext>[JSC] support Computed Property Names in destructuring Patterns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143650</commentid>
    <comment_count>1</comment_count>
      <attachid>265955</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2015-11-20 08:43:41 -0800</bug_when>
    <thetext>Created attachment 265955
Patch

Support Computed Property names in destructuring patterns, eg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143651</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 08:44:43 -0800</bug_when>
    <thetext>Attachment 265955 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Nodes.h:2020:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/parser/Nodes.h:2025:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/JavaScriptCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143652</commentid>
    <comment_count>3</comment_count>
      <attachid>265956</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2015-11-20 08:47:27 -0800</bug_when>
    <thetext>Created attachment 265956
Patch

fixed changelog style --- check-webkit-style doesn&apos;t seem to approve of the style that was in the tree to begin with, I dunno.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143653</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 08:49:15 -0800</bug_when>
    <thetext>Attachment 265956 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Nodes.h:2020:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/parser/Nodes.h:2025:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143657</commentid>
    <comment_count>5</comment_count>
      <attachid>265956</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-11-20 09:23:30 -0800</bug_when>
    <thetext>Comment on attachment 265956
Patch

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

r=me with some comments

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Add support for computed property names in destructuring BindingPatterns

It&apos;s worth adding a link to the spec here.

&gt; Source/JavaScriptCore/parser/Parser.cpp:891
&gt; +                    consumeOrFail(COLON, &quot;Expected &apos;:&apos; after property name&quot;);

So this kind of expression is only allowed using the new feature you added recently that assigns to the rhs of the colon?

&gt; Source/JavaScriptCore/parser/Parser.cpp:894
&gt; +                    TreeExpression defaultValue = parseDefaultValueForDestructuringPattern(context);

Can we add a test for this case?

&gt; Source/JavaScriptCore/tests/es6/destructuring_assignment_computed_properties.js:1
&gt; +function test() {

I think this test is great. But, it&apos;s a bit tricky to follow. Can you also add just a couple really straight forward tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143673</commentid>
    <comment_count>6</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2015-11-20 09:50:01 -0800</bug_when>
    <thetext>&gt; So this kind of expression is only allowed using the new feature you added recently that assigns to the rhs of the colon?

It was already possible to assign to the rhs of the colon, the consumeOrFail and other code duplication is here to keep it a bit more straight forward (instead of conditionally deciding how to behave depending on whether propertyExpression is null or not, further down). I don&apos;t have a strong opinion on it if people don&apos;t like the code duplication in the name of straightforwardness.

---

Adding some other tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143698</commentid>
    <comment_count>7</comment_count>
      <attachid>265970</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2015-11-20 10:49:16 -0800</bug_when>
    <thetext>Created attachment 265970
more tests + changelog + less code duplication</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143700</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 10:50:55 -0800</bug_when>
    <thetext>Attachment 265970 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Nodes.h:2020:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/parser/Nodes.h:2025:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143720</commentid>
    <comment_count>9</comment_count>
      <attachid>265974</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2015-11-20 11:49:33 -0800</bug_when>
    <thetext>Created attachment 265974
Patch

Fix email in ChangeLog entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143723</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-20 11:52:02 -0800</bug_when>
    <thetext>Attachment 265974 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Nodes.h:2020:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/parser/Nodes.h:2025:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144360</commentid>
    <comment_count>11</comment_count>
      <attachid>265974</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2015-11-24 10:44:51 -0800</bug_when>
    <thetext>Comment on attachment 265974
Patch

Is there anything else needed here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144385</commentid>
    <comment_count>12</comment_count>
      <attachid>265974</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-24 17:43:24 -0800</bug_when>
    <thetext>Comment on attachment 265974
Patch

Clearing flags on attachment: 265974

Committed r192768: &lt;http://trac.webkit.org/changeset/192768&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144386</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-24 17:43:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265955</attachid>
            <date>2015-11-20 08:43:41 -0800</date>
            <delta_ts>2015-11-20 08:47:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151494-20151120114328.patch</filename>
            <type>text/plain</type>
            <size>10690</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDhjNjBhNTMzYjYzNDM5MjVmM2U2NzVkZWNlNTZiNDk3Y2Q3MWVjLi4yN2ZkM2U2Nzg2YThlZThh
NjEzNjAwYTIwNGUyNDAzMmI2OWZhZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNS0xMS0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cG90dGVyODhAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgQ29tcHV0ZWQgUHJvcGVydHkgTmFtZXMg
aW4gZGVzdHJ1Y3R1cmluZyBQYXR0ZXJucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKwkJCQlBZGQgc3VwcG9ydCBmb3IgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgaW4g
ZGVzdHJ1Y3R1cmluZyBCaW5kaW5nUGF0dGVybnMKKwkJCQlhbmQgQXNzaWdubWVudFBhdHRlcm5z
LgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAgICAqIHBhcnNlci9BU1RC
dWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZE9iamVjdFBhdHRlcm5F
bnRyeSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6Ok9iamVjdFBh
dHRlcm5Ob2RlOjphcHBlbmRFbnRyeSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJu
KToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiB0ZXN0cy9lczYueWFtbDoK
KyAgICAgICAgKiB0ZXN0cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3By
b3BlcnRpZXMuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0LmNvbXB1
dGVOYW1lKToKKyAgICAgICAgKHRlc3QubG9hZFZhbHVlKToKKyAgICAgICAgKHRlc3Qub3V0Lmdl
dCBhKToKKyAgICAgICAgKHRlc3Qub3V0LnNldCBhKToKKyAgICAgICAgKHRlc3Qub3V0LmdldCBi
KToKKyAgICAgICAgKHRlc3Qub3V0LnNldCBiKToKKyAgICAgICAgKHRlc3Qub3V0LmdldCBjKToK
KyAgICAgICAgKHRlc3Qub3V0LnNldCBjKToKKyAgICAgICAgKHRlc3QuZ2V0IHZhcik6CisKIDIw
MTUtMTEtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIxODk0MzMpIFdlYiBJbnNwZWN0b3I6IEpTQ29udGV4dCBpbnNwZWN0aW9u
IGV4Y2VwdGlvbnMgc2hvdWxkIGluY2x1ZGUgbmF0aXZlIGNhbGwgZnJhbWVzIGJ5IGRlZmF1bHQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCAzMTJhOGM3YWNlMDQxNTYwOGJkMzc0N2RlZGE3ODY4ZTViYmQwZjUyLi40YTdl
MmU3ODJhZjg0NTc0Njc0N2MwNDY4ZGMzMzI4NDA1ZDRhNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMzQwLDcg
KzMzNDAsMTMgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgYXV0byYgdGFy
Z2V0ID0gbV90YXJnZXRQYXR0ZXJuc1tpXTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRl
bXAgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
QnlJZCh0ZW1wLmdldCgpLCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAo
IXRhcmdldC5wcm9wZXJ0eUV4cHJlc3Npb24pCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1lKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lID0gZ2VuZXJh
dG9yLmVtaXROb2RlKHRhcmdldC5wcm9wZXJ0eUV4cHJlc3Npb24pOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIHByb3BlcnR5TmFtZS5nZXQoKSk7
CisgICAgICAgIH0KKwogICAgICAgICBpZiAodGFyZ2V0LmRlZmF1bHRWYWx1ZSkKICAgICAgICAg
ICAgIGFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKGdlbmVyYXRvciwgdGVtcC5nZXQoKSwg
dGFyZ2V0LmRlZmF1bHRWYWx1ZSk7CiAgICAgICAgIHRhcmdldC5wYXR0ZXJuLT5iaW5kVmFsdWUo
Z2VuZXJhdG9yLCB0ZW1wLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggYWNjMjE2MmU4ZGYxMjQ5ZjU5N2Y4NmY1MjJiNzBlMWU5NjA5YmUwMC4u
Y2U5ODVjYTQ1ZGU5OWU4ZGE1YTU3ZjhiOTNhMzA2NGNhNmYxZDMyNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTg1MSw3ICs4NTEsMTIgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRpb24sIGlkZW50aWZpZXIs
IHdhc1N0cmluZywgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICB9Ci0gICAgCisKKyAgICB2
b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShPYmplY3RQYXR0ZXJuIG5vZGUsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eUV4cHJlc3Np
b24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0
VmFsdWUpCisgICAgeworICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgcHJvcGVy
dHlFeHByZXNzaW9uLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUpOworICAgIH0KKwogICAgIEJpbmRp
bmdQYXR0ZXJuIGNyZWF0ZUJpbmRpbmdMb2NhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQsIEFzc2lnbm1lbnRDb250ZXh0IGNvbnRleHQp
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBCaW5kaW5nTm9kZShi
b3VuZFByb3BlcnR5LCBzdGFydCwgZW5kLCBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCAwYWEzMTFkYzExZDdmOGE4YjAxZmVjN2U0NGJkZTIxZmE1NzhlZWNl
Li41Y2EzNDY2NGZkZjE2NGFhMzllMWY2MTRkM2VlYmQwZGUwNTE4OWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0yMDE3LDcgKzIwMTcsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7CiAgICAgICAgIHZvaWQgYXBwZW5kRW50
cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwg
Ym9vbCB3YXNTdHJpbmcsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVz
c2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgbV90YXJnZXRQ
YXR0ZXJucy5hcHBlbmQoRW50cnl7IGlkZW50aWZpZXIsIHdhc1N0cmluZywgcGF0dGVybiwgZGVm
YXVsdFZhbHVlIH0pOworICAgICAgICAgICAgbV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnl7
IGlkZW50aWZpZXIsIG51bGxwdHIsIHdhc1N0cmluZywgcGF0dGVybiwgZGVmYXVsdFZhbHVlIH0p
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHlFeHByZXNzaW9uLCBEZXN0cnVjdHVyaW5n
UGF0dGVybk5vZGUqIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKEVudHJ5eyBJZGVudGlm
aWVyKCksIHByb3BlcnR5RXhwcmVzc2lvbiwgZmFsc2UsIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSB9
KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTIwMjYsNiArMjAzMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3RyaW5nQnVpbGRlciYp
IGNvbnN0IG92ZXJyaWRlOwogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lOworICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IHByb3BlcnR5RXhwcmVzc2lvbjsKICAgICAgICAgICAgIGJvb2wgd2FzU3RyaW5nOwogICAgICAg
ICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuOwogICAgICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCA0ZWI4NTVhNjM3Yzg4NTliYjU5NWQ0NjExYmMyZWM1NmQ0YjI2MDIyLi5k
NjNkNzFjNjNkYzhkNTY1M2ZjMTY1NDYxMDk4MmUzYmZjMDZhMTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC04ODMsNiArODgzLDE4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IG1fdG9rZW4u
bV9kYXRhLmlkZW50OwogICAgICAgICAgICAgICAgICAgICB3YXNTdHJpbmcgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE9QRU5CUkFDS0VU
OiB7CisgICAgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBwcm9wZXJ0eUV4cHJlc3Npb24gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OworICAgICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eUV4cHJlc3Npb24sICJD
YW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOworICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1
dGVkIHByb3BlcnR5IG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZU9yRmFpbChD
T0xPTiwgIkV4cGVjdGVkICc6JyBhZnRlciBwcm9wZXJ0eSBuYW1lIik7CisgICAgICAgICAgICAg
ICAgICAgIGlubmVyUGF0dGVybiA9IHBhcnNlQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoY29u
dGV4dCwga2luZCwgZXhwb3J0VHlwZSwgZHVwbGljYXRlSWRlbnRpZmllciwgaGFzRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4sIGJpbmRpbmdDb250ZXh0LCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAg
ICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZXN0cnVj
dHVyaW5nIHBhdHRlcm4iKTsKKyAgICAgICAgICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gZGVm
YXVsdFZhbHVlID0gcGFyc2VEZWZhdWx0VmFsdWVGb3JEZXN0cnVjdHVyaW5nUGF0dGVybihjb250
ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5hcHBlbmRPYmplY3RQYXR0ZXJuRW50
cnkob2JqZWN0UGF0dGVybiwgbG9jYXRpb24sIHByb3BlcnR5RXhwcmVzc2lvbiwgaW5uZXJQYXR0
ZXJuLCBkZWZhdWx0VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fdG9rZW4ubV90eXBlICE9IFJFU0VSVkVEICYmIG1fdG9rZW4ubV90eXBlICE9IFJF
U0VSVkVEX0lGX1NUUklDVCAmJiAhKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9FeHBy
ZXNzaW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
aW5kZXggOTU1MzZjM2M3NTY3MjI3MzUxYmM2OTA3MTgyZWQ1M2FiNmM3MTkxYi4uNTQ3ZTQ0ZmM5
ZWJmOTFkNjVhZDI2NDkzMzY0ZGIzMjUwZjdjMzA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTM0Myw2ICszNDMsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgYm9vbCwgY29uc3QgSWRlbnRpZmllciYsIERlc3RydWN0dXJpbmdQYXR0
ZXJuLCBpbnQpCiAgICAgewogICAgIH0KKyAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRy
eShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb24sIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuLCBFeHByZXNzaW9uKQorICAgIHsKKyAgICB9CisKICAgICBEZXN0cnVj
dHVyaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0
UG9zaXRpb24mLCBBc3NpZ25tZW50Q29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBCaW5k
aW5nRGVzdHJ1Y3R1cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYueWFtbCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAppbmRleCBl
MGJjM2Q1MWZiNmM3YThmMDg5YmE0ZDg3ZDRlNjRjNmE5NzBiZTUwLi4yMWVhYzQwMzM0NmM4MjI3
OGRiNmRkY2Q3MzkxZmEyNmU2ZjdlYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2LnlhbWwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55
YW1sCkBAIC0yMTYsNiArMjE2LDggQEAKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBl
czYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X25vbl9zaW1wbGVfdGFyZ2V0LmpzCiAgIGNtZDog
cnVuRVM2IDpub3JtYWwKKy0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF9jb21w
dXRlZF9wcm9wZXJ0aWVzLmpzCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rl
c3RydWN0dXJpbmdfaW5pdGlhbGl6ZXJfc2NvcGluZy5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9mb3IuLm9mX2xvb3BzX3dpdGhfYXJyYXlzLmpzCkBAIC03NDUsNyArNzQ3
LDcgQEAKIC0gcGF0aDogZXM2L2Jsb2NrLWxldmVsX2Z1bmN0aW9uX2RlY2xhcmF0aW9uLmpzCiAg
IGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2NvbXB1dGVkX3By
b3BlcnRpZXMuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19kZWZhdWx0c19pbl9wYXJhbWV0ZXJzX3NlcGFyYXRl
X3Njb3BlLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5n
X2l0ZXJhdG9yX2Nsb3NpbmcuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnRpZXMuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVu
dF9jb21wdXRlZF9wcm9wZXJ0aWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1MGYxMjc2YTY5MjUyMjlhOTM3
OTdiMzhlNjQxNzFkNzQ2Y2Y1MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF9jb21wdXRlZF9wcm9wZXJ0
aWVzLmpzCkBAIC0wLDAgKzEsNjQgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIHN0ZXBz
ID0gW107CisgICAgdmFyIGJhY2tpbmdTdG9yZSA9IHt9OworCisgICAgZnVuY3Rpb24gc3RvcmVQ
cm9wZXJ0eShuYW1lLCB2YWx1ZSkgeworICAgICAgICBzdGVwcy5wdXNoKGBzdG9yZTogJHtuYW1l
fSA9ICR7dmFsdWV9YCk7CisgICAgICAgIGJhY2tpbmdTdG9yZVtuYW1lXSA9IHZhbHVlOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGNvbXB1dGVOYW1lKG5hbWUpIHsKKyAgICAgICAgc3RlcHMucHVz
aChgY29tcHV0ZTogJHtuYW1lfWApOworICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBsb2FkVmFsdWUobmFtZSwgdmFsdWUpIHsKKyAgICAgICAgc3RlcHMucHVzaChg
bG9hZDogJHtuYW1lfSA+ICR7dmFsdWV9YCk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9
CisKKyAgICB2YXIgb3V0ID0geworICAgICAgICBnZXQgYSgpIHsgcmV0dXJuIGJhY2tpbmdTdG9y
ZS5hOyB9LAorICAgICAgICBzZXQgYSh2KSB7IHN0b3JlUHJvcGVydHkoImEiLCB2KTsgfSwKKyAg
ICAgICAgZ2V0IGIoKSB7IHJldHVybiBiYWNraW5nU3RvcmUuYjsgfSwKKyAgICAgICAgc2V0IGIo
dikgeyBzdG9yZVByb3BlcnR5KCJiIiwgdik7IH0sCisgICAgICAgIGdldCBjKCkgeyByZXR1cm4g
YmFja2luZ1N0b3JlLmM7IH0sCisgICAgICAgIHNldCBjKHYpIHsgc3RvcmVQcm9wZXJ0eSgiYyIs
IHYpOyB9LAorICAgIH07CisgICAgKHsKKyAgICAgICAgW2NvbXB1dGVOYW1lKCJwcm9wQSIpXTog
b3V0LmEsCisgICAgICAgIFtjb21wdXRlTmFtZSgicHJvcEIiKV06IG91dC5iLAorICAgICAgICBb
Y29tcHV0ZU5hbWUoInByb3BDIildOiBbLi4ub3V0WyJjIl1dCisgICAgfSA9IHsKKyAgICAgICAg
Z2V0IHByb3BBKCkgeyByZXR1cm4gbG9hZFZhbHVlKCJwcm9wQSIsICJoZWxsbyIpOyB9LAorICAg
ICAgICBnZXQgcHJvcEIoKSB7IHJldHVybiBsb2FkVmFsdWUoInByb3BCIiwgIndvcmxkIik7IH0s
CisgICAgICAgIGdldCBwcm9wQygpIHsgcmV0dXJuIGxvYWRWYWx1ZSgicHJvcEMiLCBbMSwgMiwg
M10pOyB9CisgICAgfSk7CisKKyAgICB2YXIgZXhwZWN0ZWRTdGVwcyA9IFsKKyAgICAgICAgImNv
bXB1dGU6IHByb3BBIiwKKyAgICAgICAgImxvYWQ6IHByb3BBID4gaGVsbG8iLAorICAgICAgICAi
c3RvcmU6IGEgPSBoZWxsbyIsCisKKyAgICAgICAgImNvbXB1dGU6IHByb3BCIiwKKyAgICAgICAg
ImxvYWQ6IHByb3BCID4gd29ybGQiLAorICAgICAgICAic3RvcmU6IGIgPSB3b3JsZCIsCisKKyAg
ICAgICAgImNvbXB1dGU6IHByb3BDIiwKKyAgICAgICAgImxvYWQ6IHByb3BDID4gMSwyLDMiLAor
ICAgICAgICAic3RvcmU6IGMgPSAxLDIsMyIKKyAgICBdOworCisgICAgaWYgKGV4cGVjdGVkU3Rl
cHMubGVuZ3RoICE9PSBzdGVwcy5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkU3RlcHMubGVuZ3RoOyArK2kpCisgICAgICAgIGlm
IChleHBlY3RlZFN0ZXBzW2ldICE9PSBzdGVwc1tpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoYCR7YmFja2luZ1N0b3JlLmF9ICR7YmFja2luZ1N0b3JlLmJ9ICR7YmFja2lu
Z1N0b3JlLmMuam9pbigiOiIpfWAgIT09ICJoZWxsbyB3b3JsZCAxOjI6MyIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitpZiAoIXRlc3QoKSkKKyAgICB0
aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265956</attachid>
            <date>2015-11-20 08:47:27 -0800</date>
            <delta_ts>2015-11-20 10:49:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151494-20151120114714.patch</filename>
            <type>text/plain</type>
            <size>10698</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDhjNjBhNTMzYjYzNDM5MjVmM2U2NzVkZWNlNTZiNDk3Y2Q3MWVjLi4xM2JhYTJiZjE2ZDhlYmY5
MjMyNTUxZjgxMWExODg0NjM5MDI0Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNS0xMS0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cG90dGVyODhAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgQ29tcHV0ZWQgUHJvcGVydHkgTmFtZXMg
aW4gZGVzdHJ1Y3R1cmluZyBQYXR0ZXJucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGVkIHByb3BlcnR5IG5hbWVz
IGluIGRlc3RydWN0dXJpbmcgQmluZGluZ1BhdHRlcm5zCisgICAgICAgIGFuZCBBc3NpZ25tZW50
UGF0dGVybnMuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAg
ICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogcGFy
c2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kT2JqZWN0
UGF0dGVybkVudHJ5KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6
T2JqZWN0UGF0dGVybk5vZGU6OmFwcGVuZEVudHJ5KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgorICAgICAgICAqIHRlc3RzL2Vz
Ni55YW1sOgorICAgICAgICAqIHRlc3RzL2VzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1lbnRfY29t
cHV0ZWRfcHJvcGVydGllcy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRl
c3QuY29tcHV0ZU5hbWUpOgorICAgICAgICAodGVzdC5sb2FkVmFsdWUpOgorICAgICAgICAodGVz
dC5vdXQuZ2V0IGEpOgorICAgICAgICAodGVzdC5vdXQuc2V0IGEpOgorICAgICAgICAodGVzdC5v
dXQuZ2V0IGIpOgorICAgICAgICAodGVzdC5vdXQuc2V0IGIpOgorICAgICAgICAodGVzdC5vdXQu
Z2V0IGMpOgorICAgICAgICAodGVzdC5vdXQuc2V0IGMpOgorICAgICAgICAodGVzdC5nZXQgdmFy
KToKKwogMjAxNS0xMS0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjE4OTQzMykgV2ViIEluc3BlY3RvcjogSlNDb250ZXh0IGlu
c3BlY3Rpb24gZXhjZXB0aW9ucyBzaG91bGQgaW5jbHVkZSBuYXRpdmUgY2FsbCBmcmFtZXMgYnkg
ZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDMxMmE4YzdhY2UwNDE1NjA4YmQzNzQ3ZGVkYTc4NjhlNWJiZDBm
NTIuLjRhN2UyZTc4MmFmODQ1NzQ2NzQ3YzA0NjhkYzMzMjg0MDVkNGE1M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTMzNDAsNyArMzM0MCwxMyBAQCB2b2lkIE9iamVjdFBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcmhzKQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewogICAgICAgICBh
dXRvJiB0YXJnZXQgPSBtX3RhcmdldFBhdHRlcm5zW2ldOwogICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGVtcCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKHRlbXAuZ2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7CisgICAg
ICAgIGlmICghdGFyZ2V0LnByb3BlcnR5RXhwcmVzc2lvbikKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0QnlJZCh0ZW1wLmdldCgpLCByaHMsIHRhcmdldC5wcm9wZXJ0eU5hbWUpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWUg
PSBnZW5lcmF0b3IuZW1pdE5vZGUodGFyZ2V0LnByb3BlcnR5RXhwcmVzc2lvbik7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHRlbXAuZ2V0KCksIHJocywgcHJvcGVydHlOYW1l
LmdldCgpKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0YXJnZXQuZGVmYXVsdFZhbHVlKQog
ICAgICAgICAgICAgYXNzaWduRGVmYXVsdFZhbHVlSWZVbmRlZmluZWQoZ2VuZXJhdG9yLCB0ZW1w
LmdldCgpLCB0YXJnZXQuZGVmYXVsdFZhbHVlKTsKICAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPmJp
bmRWYWx1ZShnZW5lcmF0b3IsIHRlbXAuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAppbmRleCBhY2MyMTYyZThkZjEyNDlmNTk3Zjg2ZjUyMmI3MGUxZTk2
MDliZTAwLi5jZTk4NWNhNDVkZTk5ZThkYTVhNTdmOGI5M2EzMDY0Y2E2ZjFkMzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtODUxLDcgKzg1MSwxMiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRl
bnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUpOwogICAgIH0KLSAgICAK
KworICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4gbm9kZSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5
RXhwcmVzc2lvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUq
IGRlZmF1bHRWYWx1ZSkKKyAgICB7CisgICAgICAgIG5vZGUtPmFwcGVuZEVudHJ5KGxvY2F0aW9u
LCBwcm9wZXJ0eUV4cHJlc3Npb24sIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CisgICAgfQorCiAg
ICAgQmluZGluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCwgQXNzaWdubWVudENvbnRleHQg
Y29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEJpbmRp
bmdOb2RlKGJvdW5kUHJvcGVydHksIHN0YXJ0LCBlbmQsIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDBhYTMxMWRjMTFkN2Y4YThiMDFmZWM3ZTQ0YmRlMjFm
YTU3OGVlY2UuLjVjYTM0NjY0ZmRmMTY0YWEzOWUxZjYxNGQzZWViZDBkZTA1MTg5ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTIwMTcsNyArMjAxNywxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgT2JqZWN0UGF0dGVybk5vZGUoKTsKICAgICAgICAgdm9pZCBh
cHBlbmRFbnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBib29sIHdhc1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJu
LCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X3RhcmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0
ZXJuLCBkZWZhdWx0VmFsdWUgfSk7CisgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVu
ZChFbnRyeXsgaWRlbnRpZmllciwgbnVsbHB0ciwgd2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZhdWx0
VmFsdWUgfSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eUV4cHJlc3Npb24sIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnl7
IElkZW50aWZpZXIoKSwgcHJvcGVydHlFeHByZXNzaW9uLCBmYWxzZSwgcGF0dGVybiwgZGVmYXVs
dFZhbHVlIH0pOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpAQCAtMjAyNiw2ICsyMDMxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdC
dWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWU7CisgICAgICAgICAgICBFeHByZXNz
aW9uTm9kZSogcHJvcGVydHlFeHByZXNzaW9uOwogICAgICAgICAgICAgYm9vbCB3YXNTdHJpbmc7
CiAgICAgICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm47CiAgICAgICAg
ICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IDRlYjg1NWE2MzdjODg1OWJiNTk1ZDQ2MTFiYzJlYzU2ZDRi
MjYwMjIuLmQ2M2Q3MWM2M2RjOGQ1NjUzZmMxNjU0NjEwOTgyZTNiZmMwNmExMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTg4Myw2ICs4ODMsMTggQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRGUKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lID0g
bV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICAgICAgICAgIHdhc1N0cmluZyA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgT1BF
TkJSQUNLRVQ6IHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgICAg
ICAgICBhdXRvIHByb3BlcnR5RXhwcmVzc2lvbiA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
Y29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5RXhwcmVz
c2lvbiwgIkNhbm5vdCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CisgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQi
LCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICBjb25zdW1l
T3JGYWlsKENPTE9OLCAiRXhwZWN0ZWQgJzonIGFmdGVyIHByb3BlcnR5IG5hbWUiKTsKKyAgICAg
ICAgICAgICAgICAgICAgaW5uZXJQYXR0ZXJuID0gcGFyc2VCaW5kaW5nT3JBc3NpZ25tZW50RWxl
bWVudChjb250ZXh0LCBraW5kLCBleHBvcnRUeXBlLCBkdXBsaWNhdGVJZGVudGlmaWVyLCBoYXNE
ZXN0cnVjdHVyaW5nUGF0dGVybiwgYmluZGluZ0NvbnRleHQsIGRlcHRoICsgMSk7CisgICAgICAg
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0aGlz
IGRlc3RydWN0dXJpbmcgcGF0dGVybiIpOworICAgICAgICAgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBkZWZhdWx0VmFsdWUgPSBwYXJzZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0
ZXJuKGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmFwcGVuZE9iamVjdFBh
dHRlcm5FbnRyeShvYmplY3RQYXR0ZXJuLCBsb2NhdGlvbiwgcHJvcGVydHlFeHByZXNzaW9uLCBp
bm5lclBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgIT0gUkVTRVJWRUQgJiYgbV90b2tlbi5tX3R5
cGUgIT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICEobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9r
ZW5GbGFnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1
cmVUb0V4cHJlc3Npb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAppbmRleCA5NTUzNmMzYzc1NjcyMjczNTFiYzY5MDcxODJlZDUzYWI2YzcxOTFiLi41
NDdlNDRmYzllYmY5MWQ2NWFkMjY0OTMzNjRkYjMyNTBmN2MzMDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMzQzLDYgKzM0MywxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJuLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sLCBjb25zdCBJZGVudGlmaWVyJiwgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4sIGludCkKICAgICB7CiAgICAgfQorICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0
dGVybkVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
biwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4sIEV4cHJlc3Npb24pCisgICAgeworICAgIH0KKwogICAg
IERlc3RydWN0dXJpbmdQYXR0ZXJuIGNyZWF0ZUJpbmRpbmdMb2NhdGlvbihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYsIEFzc2lnbm1lbnRDb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIEJpbmRpbmdEZXN0cnVjdHVyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi55YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1s
CmluZGV4IGUwYmMzZDUxZmI2YzdhOGYwODliYTRkODdkNGU2NGM2YTk3MGJlNTAuLjIxZWFjNDAz
MzQ2YzgyMjc4ZGI2ZGRjZDczOTFmYTI2ZTZmN2ViNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2LnlhbWwKQEAgLTIxNiw2ICsyMTYsOCBAQAogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1lbnRfbm9uX3NpbXBsZV90YXJnZXQuanMK
ICAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25t
ZW50X2NvbXB1dGVkX3Byb3BlcnRpZXMuanMKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvZGVzdHJ1Y3R1cmluZ19pbml0aWFsaXplcl9zY29waW5nLmpzCiAgIGNtZDogcnVuRVM2
IDpub3JtYWwKIC0gcGF0aDogZXM2L2Zvci4ub2ZfbG9vcHNfd2l0aF9hcnJheXMuanMKQEAgLTc0
NSw3ICs3NDcsNyBAQAogLSBwYXRoOiBlczYvYmxvY2stbGV2ZWxfZnVuY3Rpb25fZGVjbGFyYXRp
b24uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfY29t
cHV0ZWRfcHJvcGVydGllcy5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2RlZmF1bHRzX2luX3BhcmFtZXRlcnNf
c2VwYXJhdGVfc2NvcGUuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L2Rlc3Ry
dWN0dXJpbmdfaXRlcmF0b3JfY2xvc2luZy5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1lbnRfY29tcHV0ZWRfcHJvcGVy
dGllcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZGVzdHJ1Y3R1cmluZ19h
c3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnRpZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjUwZjEyNzZhNjky
NTIyOWE5Mzc5N2IzOGU2NDE3MWQ3NDZjZjUwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVk
X3Byb3BlcnRpZXMuanMKQEAgLTAsMCArMSw2NCBAQAorZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2
YXIgc3RlcHMgPSBbXTsKKyAgICB2YXIgYmFja2luZ1N0b3JlID0ge307CisKKyAgICBmdW5jdGlv
biBzdG9yZVByb3BlcnR5KG5hbWUsIHZhbHVlKSB7CisgICAgICAgIHN0ZXBzLnB1c2goYHN0b3Jl
OiAke25hbWV9ID0gJHt2YWx1ZX1gKTsKKyAgICAgICAgYmFja2luZ1N0b3JlW25hbWVdID0gdmFs
dWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gY29tcHV0ZU5hbWUobmFtZSkgeworICAgICAgICBz
dGVwcy5wdXNoKGBjb21wdXRlOiAke25hbWV9YCk7CisgICAgICAgIHJldHVybiBuYW1lOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGxvYWRWYWx1ZShuYW1lLCB2YWx1ZSkgeworICAgICAgICBzdGVw
cy5wdXNoKGBsb2FkOiAke25hbWV9ID4gJHt2YWx1ZX1gKTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKworICAgIHZhciBvdXQgPSB7CisgICAgICAgIGdldCBhKCkgeyByZXR1cm4gYmFj
a2luZ1N0b3JlLmE7IH0sCisgICAgICAgIHNldCBhKHYpIHsgc3RvcmVQcm9wZXJ0eSgiYSIsIHYp
OyB9LAorICAgICAgICBnZXQgYigpIHsgcmV0dXJuIGJhY2tpbmdTdG9yZS5iOyB9LAorICAgICAg
ICBzZXQgYih2KSB7IHN0b3JlUHJvcGVydHkoImIiLCB2KTsgfSwKKyAgICAgICAgZ2V0IGMoKSB7
IHJldHVybiBiYWNraW5nU3RvcmUuYzsgfSwKKyAgICAgICAgc2V0IGModikgeyBzdG9yZVByb3Bl
cnR5KCJjIiwgdik7IH0sCisgICAgfTsKKyAgICAoeworICAgICAgICBbY29tcHV0ZU5hbWUoInBy
b3BBIildOiBvdXQuYSwKKyAgICAgICAgW2NvbXB1dGVOYW1lKCJwcm9wQiIpXTogb3V0LmIsCisg
ICAgICAgIFtjb21wdXRlTmFtZSgicHJvcEMiKV06IFsuLi5vdXRbImMiXV0KKyAgICB9ID0gewor
ICAgICAgICBnZXQgcHJvcEEoKSB7IHJldHVybiBsb2FkVmFsdWUoInByb3BBIiwgImhlbGxvIik7
IH0sCisgICAgICAgIGdldCBwcm9wQigpIHsgcmV0dXJuIGxvYWRWYWx1ZSgicHJvcEIiLCAid29y
bGQiKTsgfSwKKyAgICAgICAgZ2V0IHByb3BDKCkgeyByZXR1cm4gbG9hZFZhbHVlKCJwcm9wQyIs
IFsxLCAyLCAzXSk7IH0KKyAgICB9KTsKKworICAgIHZhciBleHBlY3RlZFN0ZXBzID0gWworICAg
ICAgICAiY29tcHV0ZTogcHJvcEEiLAorICAgICAgICAibG9hZDogcHJvcEEgPiBoZWxsbyIsCisg
ICAgICAgICJzdG9yZTogYSA9IGhlbGxvIiwKKworICAgICAgICAiY29tcHV0ZTogcHJvcEIiLAor
ICAgICAgICAibG9hZDogcHJvcEIgPiB3b3JsZCIsCisgICAgICAgICJzdG9yZTogYiA9IHdvcmxk
IiwKKworICAgICAgICAiY29tcHV0ZTogcHJvcEMiLAorICAgICAgICAibG9hZDogcHJvcEMgPiAx
LDIsMyIsCisgICAgICAgICJzdG9yZTogYyA9IDEsMiwzIgorICAgIF07CisKKyAgICBpZiAoZXhw
ZWN0ZWRTdGVwcy5sZW5ndGggIT09IHN0ZXBzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRTdGVwcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgaWYgKGV4cGVjdGVkU3RlcHNbaV0gIT09IHN0ZXBzW2ldKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChgJHtiYWNraW5nU3RvcmUuYX0gJHtiYWNraW5nU3RvcmUuYn0g
JHtiYWNraW5nU3RvcmUuYy5qb2luKCI6Iil9YCAhPT0gImhlbGxvIHdvcmxkIDE6MjozIikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lmICghdGVzdCgp
KQorICAgIHRocm93IG5ldyBFcnJvcigiVGVzdCBmYWlsZWQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265970</attachid>
            <date>2015-11-20 10:49:16 -0800</date>
            <delta_ts>2015-11-20 11:49:27 -0800</delta_ts>
            <desc>more tests + changelog + less code duplication</desc>
            <filename>bug-151494-20151120134903.patch</filename>
            <type>text/plain</type>
            <size>13667</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDhjNjBhNTMzYjYzNDM5MjVmM2U2NzVkZWNlNTZiNDk3Y2Q3MWVjLi45N2RmNzU0ODdjZWZlN2Vi
MzlhYTlkODk3MjFkOTA0OTVmZTQzYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxNS0xMS0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cG90dGVyODhAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgQ29tcHV0ZWQgUHJvcGVydHkgTmFtZXMg
aW4gZGVzdHJ1Y3R1cmluZyBQYXR0ZXJucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJh
dGkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGlu
IGRlc3RydWN0dXJpbmcgQmluZGluZ1BhdHRlcm5zCisgICAgICAgIGFuZCBBc3NpZ25tZW50UGF0
dGVybnMuCisKKyAgICAgICAgUHJvZHVjdGlvbnMgQmluZGluZ1Byb3BlcnR5KDEpIGFuZCBBc3Np
Z25tZW50UHJvcGVydHkoMikgYWxsb3cgZm9yIGFueSB2YWxpZAorICAgICAgICBQcm9wZXJ0TmFt
ZSgzKSwgaW5jbHVkaW5nIENvbXB1dGVkUHJvcGVydHlOYW1lKDQpCisKKyAgICAgICAgMTogaHR0
cDovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Byb2QtQmluZGluZ1Byb3BlcnR5CisgICAgICAg
IDI6IGh0dHA6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUFzc2lnbm1lbnRQcm9wZXJ0
eQorICAgICAgICAzOiBodHRwOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jcHJvZC1Qcm9wZXJ0
eU5hbWUKKyAgICAgICAgNDogaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Byb2QtQ29t
cHV0ZWRQcm9wZXJ0eU5hbWUKKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKToKKyAgICAg
ICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBl
bmRPYmplY3RQYXR0ZXJuRW50cnkpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAg
ICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YXBwZW5kRW50cnkpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0
cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICog
dGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdu
bWVudF9jb21wdXRlZF9wcm9wZXJ0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAodGVzdC5jb21wdXRlTmFtZSk6CisgICAgICAgICh0ZXN0LmxvYWRWYWx1ZSk6CisgICAg
ICAgICh0ZXN0Lm91dC5nZXQgYSk6CisgICAgICAgICh0ZXN0Lm91dC5zZXQgYSk6CisgICAgICAg
ICh0ZXN0Lm91dC5nZXQgYik6CisgICAgICAgICh0ZXN0Lm91dC5zZXQgYik6CisgICAgICAgICh0
ZXN0Lm91dC5nZXQgYyk6CisgICAgICAgICh0ZXN0Lm91dC5zZXQgYyk6CisgICAgICAgICh0ZXN0
LmdldCB2YXIpOgorCiAyMDE1LTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTg5NDMzKSBXZWIgSW5zcGVjdG9yOiBKU0Nv
bnRleHQgaW5zcGVjdGlvbiBleGNlcHRpb25zIHNob3VsZCBpbmNsdWRlIG5hdGl2ZSBjYWxsIGZy
YW1lcyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdkZWRhNzg2
OGU1YmJkMGY1Mi4uNGE3ZTJlNzgyYWY4NDU3NDY3NDdjMDQ2OGRjMzMyODQwNWQ0YTUzZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtMzM0MCw3ICszMzQwLDEzIEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgIGF1dG8mIHRhcmdldCA9IG1fdGFyZ2V0UGF0dGVybnNbaV07CiAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0ZW1wID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1l
KTsKKyAgICAgICAgaWYgKCF0YXJnZXQucHJvcGVydHlFeHByZXNzaW9uKQorICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKHRlbXAuZ2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFt
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3Bl
cnR5TmFtZSA9IGdlbmVyYXRvci5lbWl0Tm9kZSh0YXJnZXQucHJvcGVydHlFeHByZXNzaW9uKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwodGVtcC5nZXQoKSwgcmhzLCBwcm9w
ZXJ0eU5hbWUuZ2V0KCkpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHRhcmdldC5kZWZhdWx0
VmFsdWUpCiAgICAgICAgICAgICBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVmaW5lZChnZW5lcmF0
b3IsIHRlbXAuZ2V0KCksIHRhcmdldC5kZWZhdWx0VmFsdWUpOwogICAgICAgICB0YXJnZXQucGF0
dGVybi0+YmluZFZhbHVlKGdlbmVyYXRvciwgdGVtcC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGFjYzIxNjJlOGRmMTI0OWY1OTdmODZmNTIy
YjcwZTFlOTYwOWJlMDAuLmNlOTg1Y2E0NWRlOTllOGRhNWE1N2Y4YjkzYTMwNjRjYTZmMWQzMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04NTEsNyAr
ODUxLDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG5vZGUtPmFwcGVuZEVudHJ5KGxvY2F0
aW9uLCBpZGVudGlmaWVyLCB3YXNTdHJpbmcsIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CiAgICAg
fQotICAgIAorCisgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJuRW50cnkoT2JqZWN0UGF0dGVy
biBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
cHJvcGVydHlFeHByZXNzaW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNz
aW9uTm9kZSogZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgbm9kZS0+YXBwZW5kRW50cnko
bG9jYXRpb24sIHByb3BlcnR5RXhwcmVzc2lvbiwgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKKyAg
ICB9CisKICAgICBCaW5kaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kLCBBc3NpZ25tZW50
Q29udGV4dCBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVu
YSkgQmluZGluZ05vZGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCwgY29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMGFhMzExZGMxMWQ3ZjhhOGIwMWZlYzdl
NDRiZGUyMWZhNTc4ZWVjZS4uNWNhMzQ2NjRmZGYxNjRhYTM5ZTFmNjE0ZDNlZWJkMGRlMDUxODll
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMjAxNyw3ICsyMDE3LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPYmplY3RQYXR0ZXJuTm9kZSgpOwogICAgICAg
ICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIsIGJvb2wgd2FzU3RyaW5nLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUq
IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKEVudHJ5eyBpZGVudGlmaWVyLCB3YXNTdHJp
bmcsIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSB9KTsKKyAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVy
bnMuYXBwZW5kKEVudHJ5eyBpZGVudGlmaWVyLCBudWxscHRyLCB3YXNTdHJpbmcsIHBhdHRlcm4s
IGRlZmF1bHRWYWx1ZSB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgYXBwZW5kRW50cnko
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5RXhwcmVzc2lv
biwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVm
YXVsdFZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVu
ZChFbnRyeXsgSWRlbnRpZmllcigpLCBwcm9wZXJ0eUV4cHJlc3Npb24sIGZhbHNlLCBwYXR0ZXJu
LCBkZWZhdWx0VmFsdWUgfSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC0yMDI2LDYg
KzIwMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5n
KFN0cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgc3RydWN0IEVudHJ5IHsK
ICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZTsKKyAgICAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eUV4cHJlc3Npb247CiAgICAgICAgICAgICBib29sIHdh
c1N0cmluZzsKICAgICAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybjsK
ICAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNGViODU1YTYzN2M4ODU5YmI1OTVkNDYxMWJj
MmVjNTZkNGIyNjAyMi4uN2I4N2UwYmI0Yjg4MzQxMTM3MTA2OWM4NTZkOWNmN2JhZjJjNmMzYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODYxLDYgKzg2MSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJu
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSA9IG51bGxwdHI7CisgICAg
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0eUV4cHJlc3Npb24gPSAwOwogICAgICAgICAg
ICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIGlubmVyUGF0dGVybiA9IDA7CiAgICAgICAgICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24gPSBtX3Rva2VuLm1fbG9jYXRpb247CiAgICAgICAg
ICAgICBpZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpKSB7CkBAIC04ODMsNiArODg0LDEyIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9
IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICAgICAgICAgICAgICB3YXNTdHJpbmcgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE9Q
RU5CUkFDS0VUOgorICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5RXhwcmVzc2lvbiA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4
dCk7CisgICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5RXhwcmVzc2lvbiwg
IkNhbm5vdCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CisgICAgICAgICAgICAgICAg
ICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0tFVCwgIkV4cGVjdGVkICddJyB0byBlbmQgZW5kIGEg
Y29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBpZiAobV90b2tlbi5t
X3R5cGUgIT0gUkVTRVJWRUQgJiYgbV90b2tlbi5tX3R5cGUgIT0gUkVTRVJWRURfSUZfU1RSSUNU
ICYmICEobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQpAQCAtOTA4
LDggKzkxNSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVy
aW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBh
cnNlIHRoaXMgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBkZWZhdWx0VmFsdWUgPSBwYXJzZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0
ZXJuKGNvbnRleHQpOwotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5TmFtZSk7Ci0gICAgICAg
ICAgICBjb250ZXh0LmFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShvYmplY3RQYXR0ZXJuLCBsb2Nh
dGlvbiwgd2FzU3RyaW5nLCAqcHJvcGVydHlOYW1lLCBpbm5lclBhdHRlcm4sIGRlZmF1bHRWYWx1
ZSk7CisgICAgICAgICAgICBpZiAocHJvcGVydHlFeHByZXNzaW9uKQorICAgICAgICAgICAgICAg
IGNvbnRleHQuYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KG9iamVjdFBhdHRlcm4sIGxvY2F0aW9u
LCBwcm9wZXJ0eUV4cHJlc3Npb24sIGlubmVyUGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KG9iamVjdFBhdHRl
cm4sIGxvY2F0aW9uLCB3YXNTdHJpbmcsICpwcm9wZXJ0eU5hbWUsIGlubmVyUGF0dGVybiwgZGVm
YXVsdFZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSB3aGlsZSAoY29uc3VtZShDT01N
QSkpOwogCiAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAh
bWF0Y2goQ0xPU0VCUkFDRSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIu
LjU0N2U0NGZjOWViZjkxZDY1YWQyNjQ5MzM2NGRiMzI1MGY3YzMwNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0zNDMsNiArMzQzLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wsIGNvbnN0IElkZW50aWZpZXImLCBEZXN0cnVj
dHVyaW5nUGF0dGVybiwgaW50KQogICAgIHsKICAgICB9CisgICAgdm9pZCBhcHBlbmRPYmplY3RQ
YXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJuLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiwgRXhwcmVzc2lvbikKKyAgICB7CisgICAgfQorCiAg
ICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiwgQXNzaWdubWVudENvbnRleHQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gQmluZGluZ0Rlc3RydWN0dXJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2Lnlh
bWwKaW5kZXggZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0YzZhOTcwYmU1MC4uODhkNGE3
Y2MzMTBlM2IxMWE3ZGJmM2MwM2VhYjgxYjRkNjk5NDVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYueWFtbApAQCAtMjE2LDYgKzIxNiwxMiBAQAogICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1lbnRfbm9uX3NpbXBsZV90YXJnZXQu
anMKICAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19hc3Np
Z25tZW50X2NvbXB1dGVkX3Byb3BlcnRpZXMuanMKKyAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBw
YXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnR5X3NpbXBs
ZS5qcworICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCistIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2Fz
c2lnbm1lbnRfY29tcHV0ZWRfcHJvcGVydHlfZGVmYXVsdC5qcworICBjbWQ6IHJ1bkVTNiA6bm9y
bWFsCiAtIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2luaXRpYWxpemVyX3Njb3BpbmcuanMKICAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2FycmF5
cy5qcwpAQCAtNzQ1LDcgKzc1MSw3IEBACiAtIHBhdGg6IGVzNi9ibG9jay1sZXZlbF9mdW5jdGlv
bl9kZWNsYXJhdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZGVzdHJ1
Y3R1cmluZ19jb21wdXRlZF9wcm9wZXJ0aWVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfZGVmYXVsdHNfaW5f
cGFyYW1ldGVyc19zZXBhcmF0ZV9zY29wZS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRo
OiBlczYvZGVzdHJ1Y3R1cmluZ19pdGVyYXRvcl9jbG9zaW5nLmpzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF9jb21w
dXRlZF9wcm9wZXJ0aWVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9kZXN0
cnVjdHVyaW5nX2Fzc2lnbm1lbnRfY29tcHV0ZWRfcHJvcGVydGllcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDNhNDlhY2JlOGRmYTNlZWZkYWE1N2Y1ZWMxMjQ4ODZhYjA1M2YyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1l
bnRfY29tcHV0ZWRfcHJvcGVydGllcy5qcwpAQCAtMCwwICsxLDcyIEBACitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHZhciBzdGVwcyA9IFtdOworICAgIHZhciBiYWNraW5nU3RvcmUgPSB7fTsKKwor
ICAgIGZ1bmN0aW9uIHN0b3JlUHJvcGVydHkobmFtZSwgdmFsdWUpIHsKKyAgICAgICAgc3RlcHMu
cHVzaChgc3RvcmU6ICR7bmFtZX0gPSAke3ZhbHVlfWApOworICAgICAgICBiYWNraW5nU3RvcmVb
bmFtZV0gPSB2YWx1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wdXRlTmFtZShuYW1lKSB7
CisgICAgICAgIHN0ZXBzLnB1c2goYGNvbXB1dGU6ICR7bmFtZX1gKTsKKyAgICAgICAgcmV0dXJu
IG5hbWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9hZFZhbHVlKG5hbWUsIHZhbHVlKSB7Cisg
ICAgICAgIHN0ZXBzLnB1c2goYGxvYWQ6ICR7bmFtZX0gPiAke3ZhbHVlfWApOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgdmFyIG91dCA9IHsKKyAgICAgICAgZ2V0IGEoKSB7
IHJldHVybiBiYWNraW5nU3RvcmUuYTsgfSwKKyAgICAgICAgc2V0IGEodikgeyBzdG9yZVByb3Bl
cnR5KCJhIiwgdik7IH0sCisgICAgICAgIGdldCBiKCkgeyByZXR1cm4gYmFja2luZ1N0b3JlLmI7
IH0sCisgICAgICAgIHNldCBiKHYpIHsgc3RvcmVQcm9wZXJ0eSgiYiIsIHYpOyB9LAorICAgICAg
ICBnZXQgYygpIHsgcmV0dXJuIGJhY2tpbmdTdG9yZS5jOyB9LAorICAgICAgICBzZXQgYyh2KSB7
IHN0b3JlUHJvcGVydHkoImMiLCB2KTsgfSwKKyAgICAgICAgZ2V0IGQoKSB7IHJldHVybiBiYWNr
aW5nU3RvcmUuZDsgfSwKKyAgICAgICAgc2V0IGQodikgeyBzdG9yZVByb3BlcnR5KCJkIiwgdik7
IH0KKyAgICB9OworICAgICh7CisgICAgICAgIFtjb21wdXRlTmFtZSgicHJvcEEiKV06IG91dC5h
LAorICAgICAgICBbY29tcHV0ZU5hbWUoInByb3BCIildOiBvdXQuYiwKKyAgICAgICAgW2NvbXB1
dGVOYW1lKCJwcm9wQyIpXTogWy4uLm91dFsiYyJdXSwKKyAgICAgICAgW2NvbXB1dGVOYW1lKCJw
cm9wRCIpXTogb3V0LmQgPSAiZGVmYXVsdCIKKyAgICB9ID0geworICAgICAgICBnZXQgcHJvcEEo
KSB7IHJldHVybiBsb2FkVmFsdWUoInByb3BBIiwgImhlbGxvIik7IH0sCisgICAgICAgIGdldCBw
cm9wQigpIHsgcmV0dXJuIGxvYWRWYWx1ZSgicHJvcEIiLCAid29ybGQiKTsgfSwKKyAgICAgICAg
Z2V0IHByb3BDKCkgeyByZXR1cm4gbG9hZFZhbHVlKCJwcm9wQyIsIFsxLCAyLCAzXSk7IH0sCisg
ICAgICAgIGdldCBwcm9wRCgpIHsgcmV0dXJuIGxvYWRWYWx1ZSgicHJvcEQiKTsgfQorICAgIH0p
OworCisgICAgdmFyIGV4cGVjdGVkU3RlcHMgPSBbCisgICAgICAgICJjb21wdXRlOiBwcm9wQSIs
CisgICAgICAgICJsb2FkOiBwcm9wQSA+IGhlbGxvIiwKKyAgICAgICAgInN0b3JlOiBhID0gaGVs
bG8iLAorCisgICAgICAgICJjb21wdXRlOiBwcm9wQiIsCisgICAgICAgICJsb2FkOiBwcm9wQiA+
IHdvcmxkIiwKKyAgICAgICAgInN0b3JlOiBiID0gd29ybGQiLAorCisgICAgICAgICJjb21wdXRl
OiBwcm9wQyIsCisgICAgICAgICJsb2FkOiBwcm9wQyA+IDEsMiwzIiwKKyAgICAgICAgInN0b3Jl
OiBjID0gMSwyLDMiLAorCisgICAgICAgICJjb21wdXRlOiBwcm9wRCIsCisgICAgICAgICJsb2Fk
OiBwcm9wRCA+IHVuZGVmaW5lZCIsCisgICAgICAgICJzdG9yZTogZCA9IGRlZmF1bHQiCisgICAg
XTsKKworICAgIGlmIChleHBlY3RlZFN0ZXBzLmxlbmd0aCAhPT0gc3RlcHMubGVuZ3RoKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZFN0ZXBz
Lmxlbmd0aDsgKytpKQorICAgICAgICBpZiAoZXhwZWN0ZWRTdGVwc1tpXSAhPT0gc3RlcHNbaV0p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGAke2JhY2tpbmdTdG9yZS5hfSAk
e2JhY2tpbmdTdG9yZS5ifSAke2JhY2tpbmdTdG9yZS5jLmpvaW4oIjoiKX1gICE9PSAiaGVsbG8g
d29ybGQgMToyOjMiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworaWYgKCF0ZXN0KCkpCisgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9kZXN0cnVjdHVyaW5n
X2Fzc2lnbm1lbnRfY29tcHV0ZWRfcHJvcGVydHlfZGVmYXVsdC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3Bl
cnR5X2RlZmF1bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZhNGU0NjBhNWFiMWY1OTdiOGM1YjI4NjkxMmIy
OWU3YWQxNGU4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnR5X2RlZmF1bHQu
anMKQEAgLTAsMCArMSw4IEBACitmdW5jdGlvbiB0ZXN0KCkgeworICB2YXIgcmVzdWx0MCwgcmVz
dWx0MSwgaSA9IDA7CisgICh7IFtpKytdOiByZXN1bHQwID0gImh1bmdyeUJ5RGVmYXVsdCIsIFtp
KytdOiByZXN1bHQxID0gImhpcHBvQnlEZWZhdWx0In0gPSBbXSk7CisgIHJldHVybiByZXN1bHQw
ID09PSAiaHVuZ3J5QnlEZWZhdWx0IiAmJiByZXN1bHQxID09PSAiaGlwcG9CeURlZmF1bHQiICYm
IGkgPT09IDI7Cit9CisKK2lmICghdGVzdCgpKQorICB0aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFp
bGVkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2Rlc3Ry
dWN0dXJpbmdfYXNzaWdubWVudF9jb21wdXRlZF9wcm9wZXJ0eV9zaW1wbGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF9jb21wdXRl
ZF9wcm9wZXJ0eV9zaW1wbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJkY2M3OWMxNTMyZTEwMTQ4N2E0MzAz
MmQ4MmFjZmI2OGMwYmExMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnR5X3Np
bXBsZS5qcwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgIHZhciByZXN1bHQw
LCByZXN1bHQxLCBpID0gMDsKKyAgKHsgW2krK106IHJlc3VsdDAsIFtpKytdOiByZXN1bHQxIH0g
PSBbImh1bmdyeWh1bmdyeSIsICJoaXBwb3MiXSk7CisgIHJldHVybiByZXN1bHQwID09PSAiaHVu
Z3J5aHVuZ3J5IiAmJiByZXN1bHQxID09PSAiaGlwcG9zIiAmJiBpID09PSAyOworfQorCitpZiAo
IXRlc3QoKSkKKyAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265974</attachid>
            <date>2015-11-20 11:49:33 -0800</date>
            <delta_ts>2015-11-24 17:43:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151494-20151120144919.patch</filename>
            <type>text/plain</type>
            <size>13661</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDhjNjBhNTMzYjYzNDM5MjVmM2U2NzVkZWNlNTZiNDk3Y2Q3MWVjLi45OTUyN2Q0MGVlM2EzY2U2
OTJhMjU1MmJkM2Y1NzZjNDVhYWM3NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxNS0xMS0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIHN1cHBvcnQgQ29tcHV0ZWQgUHJvcGVydHkgTmFtZXMgaW4gZGVz
dHJ1Y3R1cmluZyBQYXR0ZXJucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxNDk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGluIGRlc3Ry
dWN0dXJpbmcgQmluZGluZ1BhdHRlcm5zCisgICAgICAgIGFuZCBBc3NpZ25tZW50UGF0dGVybnMu
CisKKyAgICAgICAgUHJvZHVjdGlvbnMgQmluZGluZ1Byb3BlcnR5KDEpIGFuZCBBc3NpZ25tZW50
UHJvcGVydHkoMikgYWxsb3cgZm9yIGFueSB2YWxpZAorICAgICAgICBQcm9wZXJ0TmFtZSgzKSwg
aW5jbHVkaW5nIENvbXB1dGVkUHJvcGVydHlOYW1lKDQpCisKKyAgICAgICAgMTogaHR0cDovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Byb2QtQmluZGluZ1Byb3BlcnR5CisgICAgICAgIDI6IGh0
dHA6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUFzc2lnbm1lbnRQcm9wZXJ0eQorICAg
ICAgICAzOiBodHRwOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jcHJvZC1Qcm9wZXJ0eU5hbWUK
KyAgICAgICAgNDogaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Byb2QtQ29tcHV0ZWRQ
cm9wZXJ0eU5hbWUKKworICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKToKKyAgICAgICAgKiBw
YXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRPYmpl
Y3RQYXR0ZXJuRW50cnkpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlND
OjpPYmplY3RQYXR0ZXJuTm9kZTo6YXBwZW5kRW50cnkpOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVy
aW5nUGF0dGVybik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogdGVzdHMv
ZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF9j
b21wdXRlZF9wcm9wZXJ0aWVzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAo
dGVzdC5jb21wdXRlTmFtZSk6CisgICAgICAgICh0ZXN0LmxvYWRWYWx1ZSk6CisgICAgICAgICh0
ZXN0Lm91dC5nZXQgYSk6CisgICAgICAgICh0ZXN0Lm91dC5zZXQgYSk6CisgICAgICAgICh0ZXN0
Lm91dC5nZXQgYik6CisgICAgICAgICh0ZXN0Lm91dC5zZXQgYik6CisgICAgICAgICh0ZXN0Lm91
dC5nZXQgYyk6CisgICAgICAgICh0ZXN0Lm91dC5zZXQgYyk6CisgICAgICAgICh0ZXN0LmdldCB2
YXIpOgorCiAyMDE1LTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTg5NDMzKSBXZWIgSW5zcGVjdG9yOiBKU0NvbnRleHQg
aW5zcGVjdGlvbiBleGNlcHRpb25zIHNob3VsZCBpbmNsdWRlIG5hdGl2ZSBjYWxsIGZyYW1lcyBi
eSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggMzEyYThjN2FjZTA0MTU2MDhiZDM3NDdkZWRhNzg2OGU1YmJk
MGY1Mi4uNGE3ZTJlNzgyYWY4NDU3NDY3NDdjMDQ2OGRjMzMyODQwNWQ0YTUzZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMzM0MCw3ICszMzQwLDEzIEBAIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMpCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
IGF1dG8mIHRhcmdldCA9IG1fdGFyZ2V0UGF0dGVybnNbaV07CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0ZW1wID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgaWYgKCF0YXJnZXQucHJvcGVydHlFeHByZXNzaW9uKQorICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKHRlbXAuZ2V0KCksIHJocywgdGFyZ2V0LnByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFt
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZSh0YXJnZXQucHJvcGVydHlFeHByZXNzaW9uKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwodGVtcC5nZXQoKSwgcmhzLCBwcm9wZXJ0eU5h
bWUuZ2V0KCkpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHRhcmdldC5kZWZhdWx0VmFsdWUp
CiAgICAgICAgICAgICBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVmaW5lZChnZW5lcmF0b3IsIHRl
bXAuZ2V0KCksIHRhcmdldC5kZWZhdWx0VmFsdWUpOwogICAgICAgICB0YXJnZXQucGF0dGVybi0+
YmluZFZhbHVlKGdlbmVyYXRvciwgdGVtcC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGFjYzIxNjJlOGRmMTI0OWY1OTdmODZmNTIyYjcwZTFl
OTYwOWJlMDAuLmNlOTg1Y2E0NWRlOTllOGRhNWE1N2Y4YjkzYTMwNjRjYTZmMWQzMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC04NTEsNyArODUxLDEy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG5vZGUtPmFwcGVuZEVudHJ5KGxvY2F0aW9uLCBp
ZGVudGlmaWVyLCB3YXNTdHJpbmcsIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CiAgICAgfQotICAg
IAorCisgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJuRW50cnkoT2JqZWN0UGF0dGVybiBub2Rl
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogcHJvcGVy
dHlFeHByZXNzaW9uLCBEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9k
ZSogZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRp
b24sIHByb3BlcnR5RXhwcmVzc2lvbiwgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKKyAgICB9CisK
ICAgICBCaW5kaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kLCBBc3NpZ25tZW50Q29udGV4
dCBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQmlu
ZGluZ05vZGUoYm91bmRQcm9wZXJ0eSwgc3RhcnQsIGVuZCwgY29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMGFhMzExZGMxMWQ3ZjhhOGIwMWZlYzdlNDRiZGUy
MWZhNTc4ZWVjZS4uNWNhMzQ2NjRmZGYxNjRhYTM5ZTFmNjE0ZDNlZWJkMGRlMDUxODllYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMjAxNyw3ICsyMDE3LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBPYmplY3RQYXR0ZXJuTm9kZSgpOwogICAgICAgICB2b2lk
IGFwcGVuZEVudHJ5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIGJvb2wgd2FzU3RyaW5nLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRl
cm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKEVudHJ5eyBpZGVudGlmaWVyLCB3YXNTdHJpbmcsIHBh
dHRlcm4sIGRlZmF1bHRWYWx1ZSB9KTsKKyAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBw
ZW5kKEVudHJ5eyBpZGVudGlmaWVyLCBudWxscHRyLCB3YXNTdHJpbmcsIHBhdHRlcm4sIGRlZmF1
bHRWYWx1ZSB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5RXhwcmVzc2lvbiwgRGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZh
bHVlKQorICAgICAgICB7CisgICAgICAgICAgICBtX3RhcmdldFBhdHRlcm5zLmFwcGVuZChFbnRy
eXsgSWRlbnRpZmllcigpLCBwcm9wZXJ0eUV4cHJlc3Npb24sIGZhbHNlLCBwYXR0ZXJuLCBkZWZh
dWx0VmFsdWUgfSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC0yMDI2LDYgKzIwMzEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0cmlu
Z0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgc3RydWN0IEVudHJ5IHsKICAgICAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZTsKKyAgICAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBwcm9wZXJ0eUV4cHJlc3Npb247CiAgICAgICAgICAgICBib29sIHdhc1N0cmlu
ZzsKICAgICAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybjsKICAgICAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNGViODU1YTYzN2M4ODU5YmI1OTVkNDYxMWJjMmVjNTZk
NGIyNjAyMi4uN2I4N2UwYmI0Yjg4MzQxMTM3MTA2OWM4NTZkOWNmN2JhZjJjNmMzYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODYxLDYgKzg2MSw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSA9IG51bGxwdHI7CisgICAgICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0eUV4cHJlc3Npb24gPSAwOwogICAgICAgICAgICAgVHJl
ZURlc3RydWN0dXJpbmdQYXR0ZXJuIGlubmVyUGF0dGVybiA9IDA7CiAgICAgICAgICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24gPSBtX3Rva2VuLm1fbG9jYXRpb247CiAgICAgICAgICAgICBp
ZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpKSB7CkBAIC04ODMsNiArODg0LDEyIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IG1fdG9r
ZW4ubV9kYXRhLmlkZW50OwogICAgICAgICAgICAgICAgICAgICB3YXNTdHJpbmcgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE9QRU5CUkFD
S0VUOgorICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5RXhwcmVzc2lvbiA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5RXhwcmVzc2lvbiwgIkNhbm5v
dCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CisgICAgICAgICAgICAgICAgICAgIG1h
dGNoT3JGYWlsKENMT1NFQlJBQ0tFVCwgIkV4cGVjdGVkICddJyB0byBlbmQgZW5kIGEgY29tcHV0
ZWQgcHJvcGVydHkgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUg
IT0gUkVTRVJWRUQgJiYgbV90b2tlbi5tX3R5cGUgIT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICEo
bV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQpAQCAtOTA4LDggKzkx
NSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0
dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZQogICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRo
aXMgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBk
ZWZhdWx0VmFsdWUgPSBwYXJzZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJuKGNv
bnRleHQpOwotICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICBj
b250ZXh0LmFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShvYmplY3RQYXR0ZXJuLCBsb2NhdGlvbiwg
d2FzU3RyaW5nLCAqcHJvcGVydHlOYW1lLCBpbm5lclBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7Cisg
ICAgICAgICAgICBpZiAocHJvcGVydHlFeHByZXNzaW9uKQorICAgICAgICAgICAgICAgIGNvbnRl
eHQuYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KG9iamVjdFBhdHRlcm4sIGxvY2F0aW9uLCBwcm9w
ZXJ0eUV4cHJlc3Npb24sIGlubmVyUGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KG9iamVjdFBhdHRlcm4sIGxv
Y2F0aW9uLCB3YXNTdHJpbmcsICpwcm9wZXJ0eU5hbWUsIGlubmVyUGF0dGVybiwgZGVmYXVsdFZh
bHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSB3aGlsZSAoY29uc3VtZShDT01NQSkpOwog
CiAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAhbWF0Y2go
Q0xPU0VCUkFDRSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCmluZGV4IDk1NTM2YzNjNzU2NzIyNzM1MWJjNjkwNzE4MmVkNTNhYjZjNzE5MWIuLjU0N2U0
NGZjOWViZjkxZDY1YWQyNjQ5MzM2NGRiMzI1MGY3YzMwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0zNDMsNiArMzQzLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4sIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wsIGNvbnN0IElkZW50aWZpZXImLCBEZXN0cnVjdHVyaW5n
UGF0dGVybiwgaW50KQogICAgIHsKICAgICB9CisgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJu
RW50cnkoQXJyYXlQYXR0ZXJuLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uLCBE
ZXN0cnVjdHVyaW5nUGF0dGVybiwgRXhwcmVzc2lvbikKKyAgICB7CisgICAgfQorCiAgICAgRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiwgQXNzaWdubWVudENvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4g
QmluZGluZ0Rlc3RydWN0dXJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2LnlhbWwgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKaW5k
ZXggZTBiYzNkNTFmYjZjN2E4ZjA4OWJhNGQ4N2Q0ZTY0YzZhOTcwYmU1MC4uODhkNGE3Y2MzMTBl
M2IxMWE3ZGJmM2MwM2VhYjgxYjRkNjk5NDVkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL2VzNi55YW1sCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYueWFtbApAQCAtMjE2LDYgKzIxNiwxMiBAQAogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1lbnRfbm9uX3NpbXBsZV90YXJnZXQuanMKICAg
Y21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50
X2NvbXB1dGVkX3Byb3BlcnRpZXMuanMKKyAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBl
czYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnR5X3NpbXBsZS5qcwor
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCistIHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1l
bnRfY29tcHV0ZWRfcHJvcGVydHlfZGVmYXVsdC5qcworICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9kZXN0cnVjdHVyaW5nX2luaXRpYWxpemVyX3Njb3BpbmcuanMKICAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvZm9yLi5vZl9sb29wc193aXRoX2FycmF5cy5qcwpA
QCAtNzQ1LDcgKzc1MSw3IEBACiAtIHBhdGg6IGVzNi9ibG9jay1sZXZlbF9mdW5jdGlvbl9kZWNs
YXJhdGlvbi5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvZGVzdHJ1Y3R1cmlu
Z19jb21wdXRlZF9wcm9wZXJ0aWVzLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVu
RVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L2Rlc3RydWN0dXJpbmdfZGVmYXVsdHNfaW5fcGFyYW1l
dGVyc19zZXBhcmF0ZV9zY29wZS5qcwogICBjbWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYv
ZGVzdHJ1Y3R1cmluZ19pdGVyYXRvcl9jbG9zaW5nLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF9jb21wdXRlZF9w
cm9wZXJ0aWVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9kZXN0cnVjdHVy
aW5nX2Fzc2lnbm1lbnRfY29tcHV0ZWRfcHJvcGVydGllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDNhNDlh
Y2JlOGRmYTNlZWZkYWE1N2Y1ZWMxMjQ4ODZhYjA1M2YyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9kZXN0cnVjdHVyaW5nX2Fzc2lnbm1lbnRfY29t
cHV0ZWRfcHJvcGVydGllcy5qcwpAQCAtMCwwICsxLDcyIEBACitmdW5jdGlvbiB0ZXN0KCkgewor
ICAgIHZhciBzdGVwcyA9IFtdOworICAgIHZhciBiYWNraW5nU3RvcmUgPSB7fTsKKworICAgIGZ1
bmN0aW9uIHN0b3JlUHJvcGVydHkobmFtZSwgdmFsdWUpIHsKKyAgICAgICAgc3RlcHMucHVzaChg
c3RvcmU6ICR7bmFtZX0gPSAke3ZhbHVlfWApOworICAgICAgICBiYWNraW5nU3RvcmVbbmFtZV0g
PSB2YWx1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wdXRlTmFtZShuYW1lKSB7CisgICAg
ICAgIHN0ZXBzLnB1c2goYGNvbXB1dGU6ICR7bmFtZX1gKTsKKyAgICAgICAgcmV0dXJuIG5hbWU7
CisgICAgfQorCisgICAgZnVuY3Rpb24gbG9hZFZhbHVlKG5hbWUsIHZhbHVlKSB7CisgICAgICAg
IHN0ZXBzLnB1c2goYGxvYWQ6ICR7bmFtZX0gPiAke3ZhbHVlfWApOworICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgfQorCisgICAgdmFyIG91dCA9IHsKKyAgICAgICAgZ2V0IGEoKSB7IHJldHVy
biBiYWNraW5nU3RvcmUuYTsgfSwKKyAgICAgICAgc2V0IGEodikgeyBzdG9yZVByb3BlcnR5KCJh
Iiwgdik7IH0sCisgICAgICAgIGdldCBiKCkgeyByZXR1cm4gYmFja2luZ1N0b3JlLmI7IH0sCisg
ICAgICAgIHNldCBiKHYpIHsgc3RvcmVQcm9wZXJ0eSgiYiIsIHYpOyB9LAorICAgICAgICBnZXQg
YygpIHsgcmV0dXJuIGJhY2tpbmdTdG9yZS5jOyB9LAorICAgICAgICBzZXQgYyh2KSB7IHN0b3Jl
UHJvcGVydHkoImMiLCB2KTsgfSwKKyAgICAgICAgZ2V0IGQoKSB7IHJldHVybiBiYWNraW5nU3Rv
cmUuZDsgfSwKKyAgICAgICAgc2V0IGQodikgeyBzdG9yZVByb3BlcnR5KCJkIiwgdik7IH0KKyAg
ICB9OworICAgICh7CisgICAgICAgIFtjb21wdXRlTmFtZSgicHJvcEEiKV06IG91dC5hLAorICAg
ICAgICBbY29tcHV0ZU5hbWUoInByb3BCIildOiBvdXQuYiwKKyAgICAgICAgW2NvbXB1dGVOYW1l
KCJwcm9wQyIpXTogWy4uLm91dFsiYyJdXSwKKyAgICAgICAgW2NvbXB1dGVOYW1lKCJwcm9wRCIp
XTogb3V0LmQgPSAiZGVmYXVsdCIKKyAgICB9ID0geworICAgICAgICBnZXQgcHJvcEEoKSB7IHJl
dHVybiBsb2FkVmFsdWUoInByb3BBIiwgImhlbGxvIik7IH0sCisgICAgICAgIGdldCBwcm9wQigp
IHsgcmV0dXJuIGxvYWRWYWx1ZSgicHJvcEIiLCAid29ybGQiKTsgfSwKKyAgICAgICAgZ2V0IHBy
b3BDKCkgeyByZXR1cm4gbG9hZFZhbHVlKCJwcm9wQyIsIFsxLCAyLCAzXSk7IH0sCisgICAgICAg
IGdldCBwcm9wRCgpIHsgcmV0dXJuIGxvYWRWYWx1ZSgicHJvcEQiKTsgfQorICAgIH0pOworCisg
ICAgdmFyIGV4cGVjdGVkU3RlcHMgPSBbCisgICAgICAgICJjb21wdXRlOiBwcm9wQSIsCisgICAg
ICAgICJsb2FkOiBwcm9wQSA+IGhlbGxvIiwKKyAgICAgICAgInN0b3JlOiBhID0gaGVsbG8iLAor
CisgICAgICAgICJjb21wdXRlOiBwcm9wQiIsCisgICAgICAgICJsb2FkOiBwcm9wQiA+IHdvcmxk
IiwKKyAgICAgICAgInN0b3JlOiBiID0gd29ybGQiLAorCisgICAgICAgICJjb21wdXRlOiBwcm9w
QyIsCisgICAgICAgICJsb2FkOiBwcm9wQyA+IDEsMiwzIiwKKyAgICAgICAgInN0b3JlOiBjID0g
MSwyLDMiLAorCisgICAgICAgICJjb21wdXRlOiBwcm9wRCIsCisgICAgICAgICJsb2FkOiBwcm9w
RCA+IHVuZGVmaW5lZCIsCisgICAgICAgICJzdG9yZTogZCA9IGRlZmF1bHQiCisgICAgXTsKKwor
ICAgIGlmIChleHBlY3RlZFN0ZXBzLmxlbmd0aCAhPT0gc3RlcHMubGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZFN0ZXBzLmxlbmd0
aDsgKytpKQorICAgICAgICBpZiAoZXhwZWN0ZWRTdGVwc1tpXSAhPT0gc3RlcHNbaV0pCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGAke2JhY2tpbmdTdG9yZS5hfSAke2JhY2tp
bmdTdG9yZS5ifSAke2JhY2tpbmdTdG9yZS5jLmpvaW4oIjoiKX1gICE9PSAiaGVsbG8gd29ybGQg
MToyOjMiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
aWYgKCF0ZXN0KCkpCisgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9kZXN0cnVjdHVyaW5nX2Fzc2ln
bm1lbnRfY29tcHV0ZWRfcHJvcGVydHlfZGVmYXVsdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnR5X2Rl
ZmF1bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZhNGU0NjBhNWFiMWY1OTdiOGM1YjI4NjkxMmIyOWU3YWQx
NGU4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYv
ZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnR5X2RlZmF1bHQuanMKQEAg
LTAsMCArMSw4IEBACitmdW5jdGlvbiB0ZXN0KCkgeworICB2YXIgcmVzdWx0MCwgcmVzdWx0MSwg
aSA9IDA7CisgICh7IFtpKytdOiByZXN1bHQwID0gImh1bmdyeUJ5RGVmYXVsdCIsIFtpKytdOiBy
ZXN1bHQxID0gImhpcHBvQnlEZWZhdWx0In0gPSBbXSk7CisgIHJldHVybiByZXN1bHQwID09PSAi
aHVuZ3J5QnlEZWZhdWx0IiAmJiByZXN1bHQxID09PSAiaGlwcG9CeURlZmF1bHQiICYmIGkgPT09
IDI7Cit9CisKK2lmICghdGVzdCgpKQorICB0aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L2Rlc3RydWN0dXJp
bmdfYXNzaWdubWVudF9jb21wdXRlZF9wcm9wZXJ0eV9zaW1wbGUuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvZXM2L2Rlc3RydWN0dXJpbmdfYXNzaWdubWVudF9jb21wdXRlZF9wcm9w
ZXJ0eV9zaW1wbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJkY2M3OWMxNTMyZTEwMTQ4N2E0MzAzMmQ4MmFj
ZmI2OGMwYmExMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYvZGVzdHJ1Y3R1cmluZ19hc3NpZ25tZW50X2NvbXB1dGVkX3Byb3BlcnR5X3NpbXBsZS5q
cwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgIHZhciByZXN1bHQwLCByZXN1
bHQxLCBpID0gMDsKKyAgKHsgW2krK106IHJlc3VsdDAsIFtpKytdOiByZXN1bHQxIH0gPSBbImh1
bmdyeWh1bmdyeSIsICJoaXBwb3MiXSk7CisgIHJldHVybiByZXN1bHQwID09PSAiaHVuZ3J5aHVu
Z3J5IiAmJiByZXN1bHQxID09PSAiaGlwcG9zIiAmJiBpID09PSAyOworfQorCitpZiAoIXRlc3Qo
KSkKKyAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>