<?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>73002</bug_id>
          
          <creation_ts>2011-11-22 22:49:49 -0800</creation_ts>
          <short_desc>Incorrect value of CSSStyleDeclaration#length when a shorthand property is inherit or initial</short_desc>
          <delta_ts>2012-11-27 04:40:51 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsfiddle.net/leaverou/SGf9v/show</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103245</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lea Verou">lea</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>abecsi</cc>
    
    <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>davidbarr</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>paulirish</cc>
    
    <cc>rniwa</cc>
    
    <cc>shanestephens</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>splatcol</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>507947</commentid>
    <comment_count>0</comment_count>
    <who name="Lea Verou">lea</who>
    <bug_when>2011-11-22 22:49:49 -0800</bug_when>
    <thetext>Check testcase URL. Other browsers expand the shorthand even when the value is inherit or initial, at least for calculating the length property. Webkit does not.

(Not sure which category to file this in, as there&apos;s none for CSSOM)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508584</commentid>
    <comment_count>1</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2011-11-23 19:59:29 -0800</bug_when>
    <thetext>Please clarify the expected result, I found that the value of length matched the number properties in the value of cssText when read back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508588</commentid>
    <comment_count>2</comment_count>
    <who name="Lea Verou">lea</who>
    <bug_when>2011-11-23 20:08:26 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Please clarify the expected result, I found that the value of length matched the number properties in the value of cssText when read back.

When shorthands are set to any other value, they are expanded into their longhand properties, as can be observed in the first 2 examples. This is consistent in every browser, even though the exact counts may differ. 

Webkit differentiates its behavior when inherit and initial are used and doesn&apos;t expand the shorthand properties, thus causing inconsistency which can break scripts depending on the same count for any value. Every other browser tested consistently expanded shorthands regardless of their value, as can be observed in examples 3-6. 
If cssText differentiates its behavior in that way, then I would assume that&apos;s buggy too. The spec is a bit unclear as to what is supposed to happen, but the de facto standard behavior of the other UAs is different to what Webkit does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512376</commentid>
    <comment_count>3</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2011-11-30 19:49:45 -0800</bug_when>
    <thetext>We should seek clarification from the CSSWG as to the correct behavior here. In the meantime, I think Lea is right - WebKit should seek to conform with the de-facto standard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534925</commentid>
    <comment_count>4</comment_count>
      <attachid>122264</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-12 09:56:23 -0800</bug_when>
    <thetext>Created attachment 122264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534934</commentid>
    <comment_count>5</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-12 10:08:14 -0800</bug_when>
    <thetext>This is work in progress but I think it&apos;s the time to bring the discussion here.

Should the shorthands be part of the list of properties of the style, so part of the count/length? Implementation wise should we call CSSParser::addProperty.

Today if inherit or initial is set on a shorthant it will always be added to the property list but the longhands will not.
If the shorthand is correctly parsed only the longhands are added to the m_properties list of the style. It is valid for most of them but for example font: 15px arial,sans-serif expands the longhands, add them to m_properties and also add the font shorthand to the list. CSSMutableStyleDeclaration::fontValue even expect the font shorthand to be present to even do something.

const CSSProperty* fontSizeProperty = findPropertyWithId(CSSPropertyFontSize);

So let say to be consistent we also add the shorthands now even when successfully parsed, which value they should get when we call addProperty(). A unquoted string that we managed to parse?

Secondly, when we set initial to a shorthand will it mean that the longhands will have initial implicitely set or would it be explicitely?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534966</commentid>
    <comment_count>6</comment_count>
      <attachid>122264</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 10:57:52 -0800</bug_when>
    <thetext>Comment on attachment 122264
Patch

Attachment 122264 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11227108

New failing tests:
fast/css/shorthands-expand-when-inherit-or-initial.html
inspector/styles/styles-new-API.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543356</commentid>
    <comment_count>7</comment_count>
      <attachid>122264</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-01-26 12:04:56 -0800</bug_when>
    <thetext>Comment on attachment 122264
Patch

Clearing review for now.

I asked clarification on the working group : http://lists.w3.org/Archives/Public/www-style/2012Jan/1122.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557841</commentid>
    <comment_count>8</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2012-02-15 19:29:11 -0800</bug_when>
    <thetext>*** Bug 75538 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771618</commentid>
    <comment_count>9</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-11-20 00:03:34 -0800</bug_when>
    <thetext>*** Bug 102345 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772795</commentid>
    <comment_count>10</comment_count>
      <attachid>175409</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-11-21 04:29:30 -0800</bug_when>
    <thetext>Created attachment 175409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773908</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-22 06:36:22 -0800</bug_when>
    <thetext>At some point all this serialization stuff should be factored out from StylePropertySet. It might belong to PropertySetCSSStyleDeclaration (assuming there are no internal clients).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774455</commentid>
    <comment_count>12</comment_count>
      <attachid>175409</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-11-23 04:56:44 -0800</bug_when>
    <thetext>Comment on attachment 175409
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        When reconstructing shorthands, a &quot;universal value&quot; is tracked. If all longhands involved have the same explicit value, it becomes the

Universal is a strange name but I don&apos;t have better suggestion. What we are trying to say is that all longhands should have the same value. So maybe &quot;common value&quot; is tracked.

&gt; Source/WebCore/css/CSSParser.cpp:1746
&gt; +                addProperty(longhands[i], initialValue, important);

These two blocks of code are almost identical and the only difference is rather you add the longhands with initial or inherit. Could you factorize the code into a function on its own?

&gt; LayoutTests/css3/flexbox/flex-property-parsing-expected.txt:110
&gt; +PASS flexitem.style.webkitFlex is &quot;0 0 auto&quot;

Cool :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774499</commentid>
    <comment_count>13</comment_count>
      <attachid>175792</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-11-23 06:22:08 -0800</bug_when>
    <thetext>Created attachment 175792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775430</commentid>
    <comment_count>14</comment_count>
      <attachid>175995</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-11-26 06:34:59 -0800</bug_when>
    <thetext>Created attachment 175995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776579</commentid>
    <comment_count>15</comment_count>
      <attachid>175995</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-11-27 03:39:06 -0800</bug_when>
    <thetext>Comment on attachment 175995
Patch

It makes the length of the style finally consistent no matter if you set inherit, initial, or any value. It matches Firefox and Opera (at least for inherit, the latter seems to not expand initial). We are not patching the computed style here but the declaration so &quot;initial&quot; and &quot;inherit&quot; are possible return values in that case. Indeed we&apos;re the only browser supporting that : for example elem.style.background = &quot;inherit&quot;; elem.style.background will return &quot;inherit&quot; as is today and it&apos;s valid for any other property. Antti has a good suggestion on moving out the property expansion and construction out of StylePropertySet if there is no internal clients and I think it could be done (provided it&apos;s feasible) in a latter patch, moving altogether what&apos;s need to be moved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776593</commentid>
    <comment_count>16</comment_count>
      <attachid>176227</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-11-27 03:58:10 -0800</bug_when>
    <thetext>Created attachment 176227
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776621</commentid>
    <comment_count>17</comment_count>
      <attachid>176227</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 04:40:44 -0800</bug_when>
    <thetext>Comment on attachment 176227
Patch for landing

Clearing flags on attachment: 176227

Committed r135848: &lt;http://trac.webkit.org/changeset/135848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776622</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 04:40:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122264</attachid>
            <date>2012-01-12 09:56:23 -0800</date>
            <delta_ts>2012-11-21 04:29:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73002-20120112145615.patch</filename>
            <type>text/plain</type>
            <size>23923</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0ODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY2ZjQwMzFmMWRhNzJl
NjQyZWUzNGM0YmVmMjMxODM3ZDQ5NWE1Ny4uNTc3YzRmZjhiOGZhMTg5MzE3ZjlmMDVlZDZjOGY4
ZjE1YTJlNDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAxLTEyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY29y
cmVjdCB2YWx1ZSBvZiBDU1NTdHlsZURlY2xhcmF0aW9uI2xlbmd0aCB3aGVuIGEgc2hvcnRoYW5k
IHByb3BlcnR5IGlzIGluaGVyaXQgb3IgaW5pdGlhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1cmUgd2UgZXhwYW5kIHRoZSBsb25naGFuZCBw
cm9wZXJ0aWVzIHdoZW4gdGhlIHNob3J0aGFuZCBpcyBzZXQgdG8gaW5pdGlhbCBvciBpbmhlcml0
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3Nob3J0aGFuZHMtZXhwYW5kLXdoZW4taW5oZXJp
dC1vci1pbml0aWFsLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRMb25naGFuZFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpleHBhbmRTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VG
aWxsU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTaG9ydGhh
bmQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKwogMjAxMi0wMS0xMiAgTWlobmVhIE92
aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBBZGQgUmVuZGVyU3R5bGU6Omlz
UG9zaXRpb25lZCgpIGhlbHBlciBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGM4MzFiMDdkZmM0MTI5YTFmMWUyNjA5
ZGQxNzY5Yjg1ZDg5ZWViODguLmNjYTk3NjE2ODBhYjlhMzhjYmM0YThjNGY4NTBlNjBiN2MzODcx
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtNjE5LDEwICs2MTksNyBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OnJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBib29sIG5vdGlmeUNoYQogICAg
IFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlm
CiAKLSAgICBpZiAocmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkocHJvcGVydHlJRCwgbm90aWZ5Q2hh
bmdlZCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFJldHVybiBhbiBlcXVpdmFsZW50IHNob3J0aGFu
ZCB3aGVuIHBvc3NpYmxlLgotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQorICAgIHJl
bW92ZVNob3J0aGFuZFByb3BlcnR5KHByb3BlcnR5SUQsIG5vdGlmeUNoYW5nZWQpOwogCiAgICAg
Q1NTUHJvcGVydHkqIGZvdW5kUHJvcGVydHkgPSBmaW5kUHJvcGVydHlXaXRoSWQocHJvcGVydHlJ
RCk7CiAgICAgaWYgKCFmb3VuZFByb3BlcnR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCA0NmIzMDQ0MjQ2YzU0OWY0ODkyNjIxMGViZmYxMDczZjAwNmVmZjllLi4xZDk2ZTIzZTRhYzJh
NDg4NGIwYjBmZDk1MjM4Yjg0YWE2ODljNGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkNTU1BhZ2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TG9uZ2hhbmQuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVl
LmgiCkBAIC04NDMsNiArODQ0LDI2MSBAQCBpbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZlKGludCBpZCwgQ1NTUAogICAgIHJl
dHVybiAwOwogfQogCit2b2lkIENTU1BhcnNlcjo6YWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKGNvbnN0
IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50LCBib29s
IGluaGVyaXQpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kp
IHsKKyAgICAgICAgaWYgKGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydGllc1tpXSkubGVuZ3Ro
KCkpIHsKKyAgICAgICAgICAgIGV4cGFuZFNob3J0aGFuZChwcm9wZXJ0aWVzW2ldLCBpbXBvcnRh
bnQsIGluaGVyaXQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGluaGVyaXQpCisgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCBjc3NW
YWx1ZVBvb2woKS0+Y3JlYXRlSW5oZXJpdGVkVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAg
ZWxzZSBpZiAobV9pbXBsaWNpdFNob3J0aGFuZCkKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KHBy
b3BlcnRpZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgp
LCBpbXBvcnRhbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9w
ZXJ0aWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKSwg
aW1wb3J0YW50KTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTUGFyc2VyOjpleHBhbmRTaG9ydGhhbmQo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW5oZXJpdCkKK3sKKyAgICBTaG9ydGhh
bmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NT
UHJvcGVydHlJRD4ocHJvcElkKSkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5n
OiB7CisgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OworICAgICAgICBhZGRM
b25naGFuZFByb3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVz
KSwgaW1wb3J0YW50LCBpbmhlcml0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOiB7CisgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzVdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlU3BlZWQgfTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJp
dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQ29sbGFwc2U6IHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsCisgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UgfTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0
aWVzKHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwg
aW5oZXJpdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZDogeworICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGlu
IHRoaXMgYXJyYXkgYmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgorICAg
ICAgICAvLyBpbiBxdWlya3MgbW9kZSBidXQgaXQncyB1c3VhbGx5IHRoZSBYIGNvb3JkaW5hdGUg
b2YgYSBwb3NpdGlvbi4KKyAgICAgICAgLy8gRklYTUU6IEFkZCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRTaXplIHRvIHRoZSBzaG9ydGhhbmQuCisgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yIH07Cisg
ICAgICAgIGFkZExvbmdoYW5kUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KHByb3BlcnRpZXMpLCBpbXBvcnRhbnQsIGluaGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6IHsKKyAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OworICAgICAgICBhZGRMb25naGFuZFByb3BlcnRpZXMo
cHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50LCBpbmhl
cml0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb246IHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkg
fTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJpdCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazogeworICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwIH07CisgICAgICAgIGFkZExv
bmdoYW5kUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMp
LCBpbXBvcnRhbnQsIGluaGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlcjoKKyAgICAgICAgLy8gWyAnYm9yZGVyLXdpZHRoJyB8fCAnYm9yZGVy
LXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CisgICAgeworICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRl
clN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSB9OworICAgICAgICBhZGRMb25naGFu
ZFByb3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1w
b3J0YW50LCBpbmhlcml0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJUb3A6CisgICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3Jk
ZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKKyAgICB7CisgICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5
Qm9yZGVyVG9wU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlclRvcENvbG9yfTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJp
dCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHQ6CisgICAgICAgIC8vIFsgJ2JvcmRlci1yaWdodC13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScg
fHwgPGNvbG9yPiBdIHwgaW5oZXJpdAorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0U3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0Q29sb3IgfTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJpdCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
OgorICAgICAgICAvLyBbICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8
fCA8Y29sb3I+IF0gfCBpbmhlcml0CisgICAgeworICAgICAgICBjb25zdCBpbnQgcHJvcGVydGll
c1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21Db2xvciB9OworICAgICAgICBhZGRMb25naGFuZFByb3BlcnRpZXMocHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50LCBpbmhlcml0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
OgorICAgICAgICAvLyBbICdib3JkZXItbGVmdC13aWR0aCcgfHwgJ2JvcmRlci1zdHlsZScgfHwg
PGNvbG9yPiBdIHwgaW5oZXJpdAorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0Q29sb3IgfTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJpdCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6
CisgICAgeworICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwK
KyAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OworICAgICAg
ICBhZGRMb25naGFuZFByb3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9w
ZXJ0aWVzKSwgaW1wb3J0YW50LCBpbmhlcml0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6CisgICAgeworICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlLAorICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRDb2xvciB9OworICAgICAgICBhZGRMb25naGFuZFByb3BlcnRpZXMocHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50LCBpbmhlcml0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmU6CisgICAgeworICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZVN0eWxlLAorICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciB9
OworICAgICAgICBhZGRMb25naGFuZFByb3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50LCBpbmhlcml0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKKyAgICB7CisgICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLAorICAgICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yIH07CisgICAgICAgIGFkZExvbmdoYW5k
UHJvcGVydGllcyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBv
cnRhbnQsIGluaGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmU6CisgICAgICAgIC8vIFsgJ291dGxpbmUtY29sb3InIHx8ICdvdXRsaW5lLXN0
eWxlJyB8fCAnb3V0bGluZS13aWR0aCcgXSB8IGluaGVyaXQKKyAgICB7CisgICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0
eU91dGxpbmVTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5T3V0bGluZUNvbG9yIH07CisgICAgICAgIGFkZExvbmdoYW5kUHJvcGVydGllcyhwcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQsIGluaGVyaXQp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
OgorICAgICAgICAvLyA8Y29sb3I+ezEsNH0gfCBpbmhlcml0CisgICAgeworICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciB9OworICAgICAgICBhZGRMb25naGFuZFByb3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0YW50LCBpbmhlcml0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKKyAgICAgICAgLy8gPGJv
cmRlci13aWR0aD57MSw0fSB8IGluaGVyaXQKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBwcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoIH07CisgICAg
ICAgIGFkZExvbmdoYW5kUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHBy
b3BlcnRpZXMpLCBpbXBvcnRhbnQsIGluaGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgorICAgICAgICAvLyA8Ym9yZGVyLXN0eWxl
PnsxLDR9IHwgaW5oZXJpdAorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUgfTsKKyAgICAgICAgYWRkTG9u
Z2hhbmRQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyks
IGltcG9ydGFudCwgaW5oZXJpdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENT
U1Byb3BlcnR5TWFyZ2luOgorICAgICAgICAvLyA8bWFyZ2luLXdpZHRoPnsxLDR9IHwgaW5oZXJp
dAorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0IH07CisgICAgICAgIGFkZExvbmdoYW5kUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQsIGluaGVyaXQpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CisgICAgICAgIC8vIDxwYWRk
aW5nLXdpZHRoPnsxLDR9IHwgaW5oZXJpdAorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5UGFkZGlu
Z0JvdHRvbSwgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCB9OworICAgICAgICBhZGRMb25naGFuZFBy
b3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwgaW1wb3J0
YW50LCBpbmhlcml0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlGb250OgorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlGb250RmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQsIENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0IH07Cisg
ICAgICAgIGFkZExvbmdoYW5kUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KHByb3BlcnRpZXMpLCBpbXBvcnRhbnQsIGluaGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgorICAgIHsKKyAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBD
U1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwIH07CisgICAgICAgIGFkZExvbmdoYW5kUHJvcGVydGll
cyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQsIGlu
aGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RT
dHlsZToKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsK
KyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJpdCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczogeworICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07CisgICAgICAgIGFkZExvbmdoYW5kUHJvcGVydGllcyhw
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQsIGluaGVy
aXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblJ1bGU6IHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlQ29sb3IgfTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJpdCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZTogeworICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKKyAg
ICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
cHJvcGVydGllcyksIGltcG9ydGFudCwgaW5oZXJpdCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKKyAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHls
ZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OworICAgICAgICBhZGRMb25n
aGFuZFByb3BlcnRpZXMocHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKSwg
aW1wb3J0YW50LCBpbmhlcml0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFdyYXA6IHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2lu
LCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nIH07CisgICAgICAgIGFkZExvbmdoYW5kUHJv
cGVydGllcyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRh
bnQsIGluaGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uOiB7CisgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7
ICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25E
aXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlIH07CisgICAgICAgIGFkZExvbmdoYW5kUHJvcGVydGll
cyhwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQsIGlu
aGVyaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb246IHsKKyAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uRGVsYXkgfTsKKyAgICAgICAgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVz
KHByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyksIGltcG9ydGFudCwgaW5o
ZXJpdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogewogICAgIGlmICghbV92YWx1ZUxpc3QpCkBAIC04NjQsMTMgKzExMjAs
MjEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCkgewogICAgICAgICBpZiAobnVtICE9
IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgYWRkUHJvcGVydHkocHJv
cElkLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW5oZXJpdGVkVmFsdWUoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgaWYgKGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcElkKS5sZW5ndGgoKSkKKyAgICAg
ICAgICAgIGV4cGFuZFNob3J0aGFuZChwcm9wSWQsIGltcG9ydGFudCwgdHJ1ZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUluaXRpYWwp
IHsKICAgICAgICAgaWYgKG51bSAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUV4cGxpY2l0
SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CisgICAgICAgIGlmIChsb25naGFuZEZvclByb3Bl
cnR5KHByb3BJZCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGlj
aXRTY29wZSh0aGlzLCBQcm9wZXJ0eUV4cGxpY2l0KTsKKyAgICAgICAgICAgIGV4cGFuZFNob3J0
aGFuZChwcm9wSWQsIGltcG9ydGFudCwgZmFsc2UpOworICAgICAgICB9CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApAQCAtMjM1Miw2ICsyNjE2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBu
dW1Qcm8KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlb
aV0gPSBmYWxzZTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKCFtX3ZhbHVlTGlz
dC0+Y3VycmVudCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMzk1
LDYgKzI2NjAsOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hvcnRoYW5kKGludCBwcm9w
SWQsIGNvbnN0IGludCogcHJvcGVydGllcywgaW50IG51bVBybwogICAgIC8vIEZpbGwgaW4gYW55
IHJlbWFpbmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCiAgICAgZm9yIChp
ID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewogICAgICAgICBpZiAoIXBhcnNlZFByb3Bl
cnR5W2ldKSB7CisgICAgICAgICAgICBpZiAobG9uZ2hhbmRGb3JQcm9wZXJ0eShwYXJzZWRQcm9w
ZXJ0eVtpXSkubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgZXhwYW5kU2hvcnRoYW5kKHBhcnNl
ZFByb3BlcnR5W2ldLCBpbXBvcnRhbnQsIGZhbHNlKTsKICAgICAgICAgICAgIGFkZEZpbGxWYWx1
ZSh2YWx1ZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgp
KTsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzW2ldID09IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uIHx8IHByb3BlcnRpZXNbaV0gPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b24pCiAgICAgICAgICAgICAgICAgYWRkRmlsbFZhbHVlKHBvc2l0aW9uWVZhbHVlLCBjc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSk7CkBAIC0yNjA3LDggKzI4NzQs
MTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGlu
dCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnQKICAgICAvLyBGaWxsIGluIGFueSByZW1haW5p
bmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAgIEltcGxpY2l0U2NvcGUg
aW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewotICAgICAgICBpZiAoIWZuZFtpXSkKKyAgICAg
ICAgaWYgKCFmbmRbaV0pIHsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0s
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQp
OworICAgICAgICAgICAgaWYgKGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydGllc1tpXSkubGVu
Z3RoKCkpCisgICAgICAgICAgICAgICAgZXhwYW5kU2hvcnRoYW5kKHByb3BlcnRpZXNbaV0sIGlt
cG9ydGFudCwgZmFsc2UpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggYTBkZjY5NjdjODQ5YTRlYzk4MjA4ODRhNzY1YTFhYzk3
MzRlZDA4My4uM2FlNTUxNzJhYjljZTg5ZjE3MTBhYzYxMmNmN2NiYTczM2Y0MTlmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaApAQCAtMzQwLDYgKzM0MCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBw
YXJzZUdlbmVyYXRlZEltYWdlKENTU1BhcnNlclZhbHVlTGlzdCosIFJlZlB0cjxDU1NWYWx1ZT4m
KTsKIAogICAgIGJvb2wgcGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGlu
dCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBj
b250ZXh0U3R5bGVTaGVldCA9IDApOworICAgIHZvaWQgYWRkTG9uZ2hhbmRQcm9wZXJ0aWVzKGNv
bnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50LCBi
b29sIGluaGVyaXQpOworICAgIHZvaWQgZXhwYW5kU2hvcnRoYW5kKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50LCBib29sIGluaGVyaXQpOwogCiAgICAgZW51bSBTaXplUGFyYW1ldGVyVHlwZSB7
CiAgICAgICAgIE5vbmUsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDg3M2IxNDUwYWYxNTkzMDY3MjQ4OWRjNTViMzgyNGFk
MDE5OTJjYi4uZTA3NGExY2MxYmQ5ZjZkNjRjZmNjMjkxZjYyMmM2NjEzZmU5ODg2NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDEyLTAxLTEyICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFy
ZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY29ycmVjdCB2YWx1ZSBvZiBDU1NTdHlsZURl
Y2xhcmF0aW9uI2xlbmd0aCB3aGVuIGEgc2hvcnRoYW5kIHByb3BlcnR5IGlzIGluaGVyaXQgb3Ig
aW5pdGlhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzMwMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgZXhpc3RpbmcgdGVzdCB3aXRjaCBjb3JyZWN0IGV4cGVjdGF0aW9ucy4gQWRkIG5ldyB0
ZXN0IHRvIGNvdmVyIHRoYXQgd2UgZXhwYW5kIHRoZSBsb25naGFuZHMKKyAgICAgICAgcHJvcGVy
bHkgaW4gY2FzZSBvZiBpbmhlcml0IG9yIGluaXRpYWwuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9w
YXJzaW5nLXRleHQtZW1waGFzaXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzL3Bh
cnNpbmctdGV4dC1lbXBoYXNpcy5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL3Nob3J0aGFuZHMt
ZXhwYW5kLXdoZW4taW5oZXJpdC1vci1pbml0aWFsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3Mvc2hvcnRoYW5kcy1leHBhbmQtd2hlbi1pbmhlcml0LW9yLWluaXRpYWwu
aHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTIgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQsIHVwZGF0ZSB0ZXN0
IGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmct
dGV4dC1lbXBoYXNpcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5n
LXRleHQtZW1waGFzaXMtZXhwZWN0ZWQudHh0CmluZGV4IDcyMmRlZjliOTQ3MmQ0MDBkNjY5MTlk
MjFmOGRhNzVjZDA5MjI2NDYuLjBhODlmZjk3YzIzMGU5ODdjYThkYWEzZTMyZWY4YmY2NjczMzMy
Y2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNp
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVt
cGhhc2lzLWV4cGVjdGVkLnR4dApAQCAtMzYsOCArMzYsOCBAQCBQQVNTOiAnLXdlYmtpdC10ZXh0
LWVtcGhhc2lzLXN0eWxlOiBub25lIG5vbmU7JyBwYXJzZWQgYXMgWycnLCAnJywgJycsICcnXQog
UEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpcy1zdHlsZTogImNoZWVzZSIgb3BlbjsnIHBhcnNl
ZCBhcyBbJycsICcnLCAnJywgJyddCiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzLXN0eWxl
OiBvcGVuICJjaGVlc2UiOycgcGFyc2VkIGFzIFsnJywgJycsICcnLCAnJ10KIAotUEFTUzogJy13
ZWJraXQtdGV4dC1lbXBoYXNpczogaW5pdGlhbCcgcGFyc2VkIGFzIFsnJywgJycsICcnLCAnaW5p
dGlhbCddCi1QQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0JyBwYXJzZWQgYXMg
WycnLCAnJywgJycsICdpbmhlcml0J10KK1BBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXM6IGlu
aXRpYWwnIHBhcnNlZCBhcyBbJ2luaXRpYWwnLCAnJywgJ2luaXRpYWwnLCAnaW5pdGlhbCddCitQ
QVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0JyBwYXJzZWQgYXMgWydpbmhlcml0
JywgJycsICdpbmhlcml0JywgJ2luaGVyaXQnXQogUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNp
czogcmVkJyBwYXJzZWQgYXMgWydyZWQnLCAnJywgJ2luaXRpYWwnLCAnJ10KIFBBU1M6ICctd2Vi
a2l0LXRleHQtZW1waGFzaXM6ICJjaGVlc2UiJyBwYXJzZWQgYXMgWydpbml0aWFsJywgJycsICdj
aGVlc2UnLCAnJ10KIFBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXM6IHJlZCAiY2hlZXNlIicg
cGFyc2VkIGFzIFsncmVkJywgJycsICdjaGVlc2UnLCAnJ10KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0bWwKaW5kZXggY2VjMDU0ZGZmZWNjODllMWM3
NmM1YzA0ZDRjYmM5NmRkM2M3YTUzMC4uNzNjMTQ5MmNiOGFjYjA0OTAxMDNlZjljYjVkZWExMGIy
YTQyNmFmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVt
cGhhc2lzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhh
c2lzLmh0bWwKQEAgLTY3LDggKzY3LDggQEAKICAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFz
aXMtc3R5bGU6IG9wZW4gImNoZWVzZSI7JywgJycsICcnLCAnJyk7CiAKICAgICBsb2coIiIpOwot
ICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5pdGlhbCcsICcnLCAnJywgJycsICdp
bml0aWFsJyk7Ci0gICAgdGVzdCgnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0JywgJycs
ICcnLCAnJywgJ2luaGVyaXQnKTsKKyAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6IGlu
aXRpYWwnLCAnaW5pdGlhbCcsICcnLCAnaW5pdGlhbCcsICdpbml0aWFsJyk7CisgICAgdGVzdCgn
LXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0JywgJ2luaGVyaXQnLCAnJywgJ2luaGVyaXQn
LCAnaW5oZXJpdCcpOwogICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogcmVkJywgJ3Jl
ZCcsICcnLCAnaW5pdGlhbCcpOwogICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogImNo
ZWVzZSInLCAnaW5pdGlhbCcsICcnLCAnY2hlZXNlJyk7CiAgICAgdGVzdCgnLXdlYmtpdC10ZXh0
LWVtcGhhc2lzOiByZWQgImNoZWVzZSInLCAncmVkJywgJycsICdjaGVlc2UnKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Nob3J0aGFuZHMtZXhwYW5kLXdoZW4taW5oZXJpdC1v
ci1pbml0aWFsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Nob3J0aGFuZHMt
ZXhwYW5kLXdoZW4taW5oZXJpdC1vci1pbml0aWFsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ODdkMzQ1ZWQ1NWZiNGVhYTM0YjUyMjM5NGI0MmU2MWU1MzdjYjhhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc2hvcnRoYW5kcy1leHBhbmQtd2hlbi1pbmhlcml0LW9y
LWluaXRpYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgZm9yIFdlYktpdCBi
dWcgNzMwMDIgOiBJbmNvcnJlY3QgdmFsdWUgb2YgQ1NTU3R5bGVEZWNsYXJhdGlvbiNsZW5ndGgg
d2hlbiBhIHNob3J0aGFuZCBwcm9wZXJ0eSBpcyBpbmhlcml0IG9yIGluaXRpYWwKKworUEFTUyBs
ZW5ndGgwID09IGxlbmd0aEluaGVyaXQgaXMgdHJ1ZQorUEFTUyBsZW5ndGhJbml0aWFsID09IGxl
bmd0aEluaGVyaXQgaXMgdHJ1ZQorUEFTUyBsZW5ndGgwID09IGxlbmd0aEluaGVyaXQgaXMgdHJ1
ZQorUEFTUyBsZW5ndGhJbml0aWFsID09IGxlbmd0aEluaGVyaXQgaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3Nob3J0aGFuZHMtZXhwYW5kLXdoZW4taW5oZXJpdC1vci1pbml0
aWFsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zaG9ydGhhbmRzLWV4cGFuZC13aGVuLWlu
aGVyaXQtb3ItaW5pdGlhbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMTk2ZWI5ZDQyZWU2NmQ1OWE0YjUw
MzljMTNmOTQ0MzdiZTRlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zaG9ydGhhbmRzLWV4cGFuZC13aGVuLWluaGVyaXQtb3ItaW5pdGlhbC5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZv
ciBXZWJLaXQgYnVnIDczMDAyIDogSW5jb3JyZWN0IHZhbHVlIG9mIENTU1N0eWxlRGVjbGFyYXRp
b24jbGVuZ3RoIHdoZW4gYSBzaG9ydGhhbmQgcHJvcGVydHkgaXMgaW5oZXJpdCBvciBpbml0aWFs
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPlRlc3QgZm9yIFdl
YktpdCBidWcgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMDAyIj43MzAwMjwvYT4gOiBJbmNvcnJlY3QgdmFsdWUgb2YgQ1NTU3R5bGVEZWNsYXJhdGlv
biNsZW5ndGggd2hlbiBhIHNob3J0aGFuZCBwcm9wZXJ0eSBpcyBpbmhlcml0IG9yIGluaXRpYWw8
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGRpdiBpZD0idGVzdHNfY29udGFpbmVy
Ij4KKworPGRpdiBpZD0idGVzdCI+PC9kaXY+CisKKzwvZGl2PgorCis8c2NyaXB0PgorICAgIHZh
ciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKworICAgIHZhciBwcm9w
ZXJ0aWVzID0gbmV3IEFycmF5KCJib3JkZXIiLCJiYWNrZ3JvdW5kIiwgImZvbnQiKTsKKworICAg
IGZvciAoaSA9IDA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRlc3Qu
c3R5bGUuY3NzVGV4dCA9IHByb3BlcnRpZXNbaV0gKyAiOiAwOyI7CisgICAgICAgIHZhciBsZW5n
dGgwID0gdGVzdC5zdHlsZS5sZW5ndGg7CisgICAgICAgIHRlc3Quc3R5bGUuY3NzVGV4dCA9IHBy
b3BlcnRpZXNbaV0gKyAiOiBpbmhlcml0OyI7CisgICAgICAgIHZhciBsZW5ndGhJbmhlcml0ID0g
dGVzdC5zdHlsZS5sZW5ndGg7CisgICAgICAgIHRlc3Quc3R5bGUuY3NzVGV4dCA9IHByb3BlcnRp
ZXNbaV0gKyAiOiBpbml0aWFsOyI7CisgICAgICAgIHZhciBsZW5ndGhJbml0aWFsID0gdGVzdC5z
dHlsZS5sZW5ndGg7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgibGVuZ3RoMCA9PSBsZW5ndGhJbmhl
cml0Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgibGVuZ3RoSW5pdGlhbCA9PSBsZW5ndGhJbmhl
cml0Iik7CisgICAgfQorCisgICAgLy8gY2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCisgICAgdmFy
IHRlc3RzX2NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0c19jb250YWlu
ZXIiKTsKKyAgICB0ZXN0c19jb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXN0c19j
b250YWluZXIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175409</attachid>
            <date>2012-11-21 04:29:30 -0800</date>
            <delta_ts>2012-11-23 06:22:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73002-20121121162716.patch</filename>
            <type>text/plain</type>
            <size>21711</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1Mzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFmYTA1ZWU5YTUzY2Zm
ZWI4MDhhNjg5ZTBlYWZkMDM0ODg0YTMwYS4uYzc2MzYwZmNjMGY5ZjM1MmU0YTE2OTUzNTE4NjZh
ODVmOGJlY2JhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEyLTExLTIxICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgSW5jb3JyZWN0
IHZhbHVlIG9mIENTU1N0eWxlRGVjbGFyYXRpb24jbGVuZ3RoIHdoZW4gYSBzaG9ydGhhbmQgcHJv
cGVydHkgaXMgaW5oZXJpdCBvciBpbml0aWFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsICJpbmhlcml0IiBhbmQgImluaXRp
YWwiIHNob3J0aGFuZHMgd291bGQgZ2V0IGFkZGVkIHRvIHRoZSBTdHlsZVByb3BlcnR5U2V0IGFz
LWlzLCB0aGVpciBsb25naGFuZHMgdW5zcGVjaWZpZWQuCisgICAgICAgIFRoaXMgcGF0Y2ggdGFj
a2xlcyB0d28gYXNwZWN0cyBvZiB0aGUgcHJvYmxlbToKKyAgICAgICAgLSBXaGVuIHBhcnNpbmcg
ImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5kcywgdGhlaXIgbG9uZ2hhbmRzIGFyZSBh
ZGRlZCB0byB0aGUgcHJvcGVydHkgc2V0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzLgor
ICAgICAgICAtIFdoZW4gcXVlcnlpbmcgImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5k
cywgdGhlaXIgdmFsdWVzIGFyZSByZWNvbnN0cnVjdGVkIGZyb20gdGhlIGxvbmdoYW5kcyBhcyB1
c3VhbCwgYnV0IGlmIGFsbCBvZiB0aGUgbG9uZ2hhbmRzCisgICAgICAgICAgYXJlIGZvdW5kIHRv
IGhhdmUgdGhlIHNhbWUgZXhwbGljaXQgImluaXRpYWwiIG9yICJpbmhlcml0IiB2YWx1ZSwgdGhl
IHJlc3BlY3RpdmUgc2luZ2xlIHZhbHVlIGlzIHJldHVybmVkIGFzIHRoZSBzaG9ydGhhbmQgdmFs
dWUuCisKKyAgICAgICAgV2hlbiByZWNvbnN0cnVjdGluZyBzaG9ydGhhbmRzLCBhICJ1bml2ZXJz
YWwgdmFsdWUiIGlzIHRyYWNrZWQuIElmIGFsbCBsb25naGFuZHMgaW52b2x2ZWQgaGF2ZSB0aGUg
c2FtZSBleHBsaWNpdCB2YWx1ZSwgaXQgYmVjb21lcyB0aGUKKyAgICAgICAgInVuaXZlcnNhbCB2
YWx1ZSIsIG90aGVyd2lzZSBpdCBpcyBhIFN0cmluZygpLiBUaGUgImluaGVyaXQiIG9yICJpbml0
aWFsIiB1bml2ZXJzYWwgdmFsdWUgdWx0aW1hdGVseSBiZWNvbWVzIHRoZSBzaG9ydGhhbmQgdmFs
dWUuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlS2V5d29yZFZhbHVlKTogUGFyc2Ugc2hvcnRoYW5kcycgImluaXRpYWwiIGFuZCAiaW5oZXJp
dCIgdmFsdWVzIHVzaW5nIHRoZSBDU1NQYXJzZXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUpOiBGb3IgImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5kcywg
YWRkIHRoZWlyIGxvbmdoYW5kcyB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlLCBub3QgdGhlIHNo
b3J0aGFuZHMgcHJvcGVyLgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzSW5pdGlhbE9ySW5oZXJpdCk6IENoZWNrIGlmIHRoZSB2YWx1ZSBp
cyAiaW5pdGlhbCIgb3IgImluaGVyaXQiLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjphcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGlj
aXQpOiBNb2RpZmllZCB0byB0cmFjayB0aGUgdW5pdmVyc2FsIHZhbHVlIGZvciB0aGUgImZvbnQi
IHNob3J0aGFuZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmZvbnRWYWx1
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVl
cyk6IFJldHVybiAiaW5oZXJpdCIgb3IgImluaXRpYWwiIGlmIGFsbCA0IHZhbHVlcyBhcmUgZXhw
bGljaXRseSAiaW5oZXJpdCIgb3IgImluaXRpYWwiLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKTogVXNlIHRoZSB1bml2ZXJzYWwg
dmFsdWUgYXBwcm9hY2ggZm9yIGxheWVyZWQgc2hvcnRoYW5kcy4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKTogVXNlIHRoZSB1bml2ZXJzYWwg
dmFsdWUgYXBwcm9hY2ggZm9yIG9yZGluYXJ5IHNob3J0aGFuZHMuCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJQcm9wZXJ0eVZhbHVlKTogVXNlIHRoZSB1bml2ZXJz
YWwgdmFsdWUgYXBwcm9hY2ggZm9yIHRoZSAiYm9yZGVyIiBzaG9ydGhhbmQuCisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaDogTW9kaWZ5IHRoZSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1
ZUlmRXhwbGljaXQoKSBzaWduYXR1cmUuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0Rm9udCk6IE5vdyB0aGF0ICJpbmhlcml0IiBhbmQgImluaXRpYWwiIHNob3J0
aGFuZHMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZWlyIHNob3J0aGFuZHMsCisgICAgICAgIHdlIG5l
ZWQgdG8gY2hlY2sgdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgImZvbnQiIHNob3J0aGFuZCBmb3Ig
YmVpbmcgImluaGVyaXQiIG9yICJpbml0aWFsIiAoZ2V0UHJvcGVydHlDU1NWYWx1ZSgpIG5vIGxv
bmdlciB3b3JrcywKKyAgICAgICAgc2luY2UgdGhlIHNob3J0aGFuZCBpdHNlbGYgaXMgbm8gbG9u
Z2VyIGFkZGVkIHRvIHRoZSBTdHlsZVByb3BlcnR5U2V0KS4KKworMjAxMi0xMS0yMSAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFR1cm4gLXdlYmtp
dC10ZXh0LWVtcGhhc2lzIGludG8gYSBzaG9ydGhhbmQgcHJvcGVydHkKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjg3OQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCmluZGV4IGQ1OGM1N2I3YmYxN2EwN2JhYjg4NjgxYmIyNGFmNDhlYzhkZTk0YjIu
LjUzMTI5NTJlOGYwMmIyYTUzMjExNjk1MzE1NzU1NDExYzU5YjA4YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCkBAIC0xMDg2LDggKzEwODYsMTYgQEAgc3RhdGljIGJvb2wgcGFyc2VLZXl3
b3JkVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5SUQgcHJv
cGUKIHsKICAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOwogCi0gICAgaWYgKCFpc0tleXdv
cmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKSB7CisgICAgICAgIC8vIEFsbCBwcm9w
ZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVzIG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgorICAg
ICAgICBTdHJpbmcgbG93ZXJDYXNlU3RyaW5nID0gc3RyaW5nLmxvd2VyKCk7CisgICAgICAgIGlm
IChsb3dlckNhc2VTdHJpbmcgIT0gImluaXRpYWwiICYmIGxvd2VyQ2FzZVN0cmluZyAhPSAiaW5o
ZXJpdCIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gUGFyc2UgaW5p
dGlhbC9pbmhlcml0IHNob3J0aGFuZHMgdXNpbmcgdGhlIENTU1BhcnNlci4KKyAgICAgICAgaWYg
KHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SWQpLmxlbmd0aCgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIENTU1BhcnNlclN0cmluZyBjc3NTdHJpbmc7CiAg
ICAgY3NzU3RyaW5nLmluaXQoc3RyaW5nKTsKQEAgLTE3MTAsMTMgKzE3MTgsMzMgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogICAgIGlmIChpZCA9PSBDU1NWYWx1ZUluaGVyaXQpIHsKICAgICAgICAgaWYgKG51bSAhPSAx
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQs
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUluaGVyaXRlZFZhbHVlKCksIGltcG9ydGFudCk7CisgICAg
ICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9IHNob3J0aGFuZEZv
clByb3BlcnR5KHByb3BJZCk7CisgICAgICAgIHVuc2lnbmVkIHNob3J0aGFuZExlbmd0aCA9IHNo
b3J0aGFuZC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFzaG9ydGhhbmRMZW5ndGgpCisgICAgICAg
ICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUluaGVyaXRlZFZh
bHVlKCksIGltcG9ydGFudCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU2hvcnRoYW5k
U2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4g
aW5oZXJpdGVkVmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwor
ICAgICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhh
bmRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0s
IGluaGVyaXRlZFZhbHVlLCBpbXBvcnRhbnQpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUluaXRpYWwpIHsKICAgICAg
ICAgaWYgKG51bSAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wSWQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVl
KCksIGltcG9ydGFudCk7CisgICAgICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNo
b3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BJZCk7CisgICAgICAgIHVuc2lnbmVk
IHNob3J0aGFuZExlbmd0aCA9IHNob3J0aGFuZC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKCFzaG9y
dGhhbmRMZW5ndGgpCisgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIGNzc1ZhbHVlUG9v
bCgpLmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gaW5pdGlhbFZhbHVlID0gY3NzVmFsdWVQb29sKCku
Y3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKKyAgICAgICAgICAgIGNvbnN0IENTU1Byb3Bl
cnR5SUQqIGxvbmdoYW5kcyA9IHNob3J0aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kTGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICAgICAgYWRkUHJvcGVydHkobG9uZ2hhbmRzW2ldLCBpbml0aWFsVmFsdWUsIGltcG9ydGFudCk7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggYzNmNmRjODBkZDMwNzc2Y2EwMWY5MDhmMzIy
OTUxYjhkOGIxYjY5NC4uNmE4N2I4MjFjNDE3MWRiYWU3ZTk3MzgzMTI2NmZjZGIyODc0ODM5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNjAsNiArNjAsMTMg
QEAgc3RhdGljIHNpemVfdCBzaXplRm9ySW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldFdpdGhQcm9w
ZXJ0eUNvdW50KHVuc2lnbmVkIGNvdW50KQogICAgIHJldHVybiBzaXplb2YoSW1tdXRhYmxlU3R5
bGVQcm9wZXJ0eVNldCkgLSBzaXplb2Yodm9pZCopICsgc2l6ZW9mKENTU1ZhbHVlKikgKiBjb3Vu
dCArIHNpemVvZihTdHlsZVByb3BlcnR5TWV0YWRhdGEpICogY291bnQ7CiB9CiAKK3N0YXRpYyBi
b29sIGlzSW5pdGlhbE9ySW5oZXJpdChjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBpbml0aWFsLCAoImluaXRpYWwiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGluaGVyaXQsICgiaW5oZXJpdCIpKTsKKyAgICByZXR1cm4g
dmFsdWUubGVuZ3RoKCkgPT0gNyAmJiAodmFsdWUgPT0gaW5pdGlhbCB8fCB2YWx1ZSA9PSBpbmhl
cml0KTsKK30KKwogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0
OjpjcmVhdGVJbW11dGFibGUoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnRpZXMsIHVuc2lnbmVk
IGNvdW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7CiAgICAgdm9pZCogc2xvdCA9
IFdURjo6ZmFzdE1hbGxvYyhzaXplRm9ySW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldFdpdGhQcm9w
ZXJ0eUNvdW50KGNvdW50KSk7CkBAIC0yMTgsMTQgKzIyNSwxNiBAQCBTdHJpbmcgU3R5bGVQcm9w
ZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQm
IHNob3J0aAogICAgIHJldHVybiBob3Jpem9udGFsVmFsdWVDU1NUZXh0ICsgJyAnICsgdmVydGlj
YWxWYWx1ZUNTU1RleHQ7CiB9CiAKLWJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6YXBwZW5kRm9udExv
bmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgU3RyaW5nQnVp
bGRlciYgcmVzdWx0KSBjb25zdAorYm9vbCBTdHlsZVByb3BlcnR5U2V0OjphcHBlbmRGb250TG9u
Z2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBTdHJpbmdCdWls
ZGVyJiByZXN1bHQsIFN0cmluZyYgdW5pdmVyc2FsVmFsdWUpIGNvbnN0CiB7CiAgICAgaW50IGZv
dW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4KHByb3BlcnR5SUQpOwogICAgIGlm
IChmb3VuZFByb3BlcnR5SW5kZXggPT0gLTEpCiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWxs
IGxvbmdoYW5kcyBtdXN0IGhhdmUgYXQgbGVhc3QgaW1wbGljaXQgdmFsdWVzIGlmICJmb250IiBp
cyBzcGVjaWZpZWQuCiAKLSAgICBpZiAocHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLmlz
SW1wbGljaXQoKSkKKyAgICBpZiAocHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLmlzSW1w
bGljaXQoKSkgeworICAgICAgICB1bml2ZXJzYWxWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICBjaGFyIHByZWZpeCA9ICdcMCc7CiAgICAgc3dpdGNo
IChwcm9wZXJ0eUlEKSB7CkBAIC0yNDUsNyArMjU0LDEwIEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNl
dDo6YXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJCiAKICAgICBpZiAocHJlZml4ICYmICFyZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKHByZWZpeCk7Ci0gICAgcmVzdWx0LmFwcGVuZChwcm9wZXJ0eUF0KGZvdW5kUHJv
cGVydHlJbmRleCkudmFsdWUoKS0+Y3NzVGV4dCgpKTsKKyAgICBTdHJpbmcgdmFsdWUgPSBwcm9w
ZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKS0+Y3NzVGV4dCgpOworICAgIHJlc3Vs
dC5hcHBlbmQodmFsdWUpOworICAgIGlmICghdW5pdmVyc2FsVmFsdWUuaXNOdWxsKCkgJiYgdW5p
dmVyc2FsVmFsdWUgIT0gdmFsdWUpCisgICAgICAgIHVuaXZlcnNhbFZhbHVlID0gU3RyaW5nKCk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI2MCwyMiArMjcyLDI1IEBAIFN0cmluZyBTdHls
ZVByb3BlcnR5U2V0Ojpmb250VmFsdWUoKSBjb25zdAogICAgIGlmIChmb250U2l6ZVByb3BlcnR5
LmlzSW1wbGljaXQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICBTdHJp
bmcgdW5pdmVyc2FsVmFsdWUgPSBmb250U2l6ZVByb3BlcnR5LnZhbHVlKCktPmNzc1RleHQoKTsK
ICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAg
IHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5
Rm9udFN0eWxlLCByZXN1bHQpOwotICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFs
dWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIHJlc3VsdCk7Ci0gICAgc3VjY2Vz
cyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlGb250V2Vp
Z2h0LCByZXN1bHQpOworICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4
cGxpY2l0KENTU1Byb3BlcnR5Rm9udFN0eWxlLCByZXN1bHQsIHVuaXZlcnNhbFZhbHVlKTsKKyAg
ICBzdWNjZXNzICY9IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0
eUZvbnRWYXJpYW50LCByZXN1bHQsIHVuaXZlcnNhbFZhbHVlKTsKKyAgICBzdWNjZXNzICY9IGFw
cGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIHJl
c3VsdCwgdW5pdmVyc2FsVmFsdWUpOwogICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgIHJlc3VsdC5hcHBlbmQoZm9udFNpemVQcm9wZXJ0
eS52YWx1ZSgpLT5jc3NUZXh0KCkpOwotICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5k
VmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5TGluZUhlaWdodCwgcmVzdWx0KTsKLSAgICBzdWNj
ZXNzICY9IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksIHJlc3VsdCk7CisgICAgc3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlm
RXhwbGljaXQoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCByZXN1bHQsIHVuaXZlcnNhbFZhbHVlKTsK
KyAgICBzdWNjZXNzICY9IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHksIHJlc3VsdCwgdW5pdmVyc2FsVmFsdWUpOwogICAgIGlmICghc3VjY2Vz
cykgewogICAgICAgICAvLyBBbiBpbnZhbGlkICJmb250IiB2YWx1ZSBoYXMgYmVlbiBidWlsdCAo
c2hvdWxkIG5ldmVyIGhhcHBlbiwgYXMgYXQgbGVhc3QgaW1wbGljaXQgdmFsdWVzCiAgICAgICAg
IC8vIGZvciBtYW5kYXRvcnkgbG9uZ2hhbmRzIGFyZSBhbHdheXMgZm91bmQgaW4gdGhlIHN0eWxl
KSwgcmVwb3J0IGVtcHR5IHZhbHVlIGluc3RlYWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CisgICAgaWYgKGlzSW5p
dGlhbE9ySW5oZXJpdCh1bml2ZXJzYWxWYWx1ZSkpCisgICAgICAgIHJldHVybiB1bml2ZXJzYWxW
YWx1ZTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKQEAgLTI5OCw4ICszMTMs
MTcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKSBjb24KICAgICAvLyBBbGwgNCBwcm9wZXJ0aWVzIG11
c3QgYmUgc3BlY2lmaWVkLgogICAgIGlmICghdG9wLnZhbHVlKCkgfHwgIXJpZ2h0LnZhbHVlKCkg
fHwgIWJvdHRvbS52YWx1ZSgpIHx8ICFsZWZ0LnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICBpZiAodG9wLnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwgcmlnaHQudmFs
dWUoKS0+aXNJbml0aWFsVmFsdWUoKSB8fCBib3R0b20udmFsdWUoKS0+aXNJbml0aWFsVmFsdWUo
KSB8fCBsZWZ0LnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkpCisKKyAgICBpZiAodG9wLmlzSW5o
ZXJpdGVkKCkgJiYgcmlnaHQuaXNJbmhlcml0ZWQoKSAmJiBib3R0b20uaXNJbmhlcml0ZWQoKSAm
JiBsZWZ0LmlzSW5oZXJpdGVkKCkpCisgICAgICAgIHJldHVybiBnZXRWYWx1ZU5hbWUoQ1NTVmFs
dWVJbmhlcml0KTsKKworICAgIGlmICh0b3AudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSB8fCBy
aWdodC52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpIHx8IGJvdHRvbS52YWx1ZSgpLT5pc0luaXRp
YWxWYWx1ZSgpIHx8IGxlZnQudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBp
ZiAodG9wLnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgJiYgcmlnaHQudmFsdWUoKS0+aXNJbml0
aWFsVmFsdWUoKSAmJiBib3R0b20udmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSAmJiBsZWZ0LnZh
bHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgJiYgIXRvcC5pc0ltcGxpY2l0KCkpIHsKKyAgICAgICAg
ICAgIC8vIEFsbCBjb21wb25lbnRzIGFyZSAiaW5pdGlhbCIgYW5kICJ0b3AiIGlzIG5vdCBpbXBs
aWNpdC4KKyAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVJbml0aWFsKTsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQogICAgIGlmICh0b3Au
aXNJbXBvcnRhbnQoKSAhPSByaWdodC5pc0ltcG9ydGFudCgpIHx8IHJpZ2h0LmlzSW1wb3J0YW50
KCkgIT0gYm90dG9tLmlzSW1wb3J0YW50KCkgfHwgYm90dG9tLmlzSW1wb3J0YW50KCkgIT0gbGVm
dC5pc0ltcG9ydGFudCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTM0NCw2ICsz
NjgsOSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVl
KGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBT
dHJpbmcgdW5pdmVyc2FsVmFsdWU7CisgICAgYm9vbCB1bml2ZXJzYWxWYWx1ZUluaXRpYWxpemVk
ID0gZmFsc2U7CisKICAgICAvLyBOb3cgc3RpdGNoIHRoZSBwcm9wZXJ0aWVzIHRvZ2V0aGVyLiAg
SW1wbGljaXQgaW5pdGlhbCB2YWx1ZXMgYXJlIGZsYWdnZWQgYXMgc3VjaCBhbmQKICAgICAvLyBj
YW4gc2FmZWx5IGJlIG9taXR0ZWQuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1MYXll
cnM7IGkrKykgewpAQCAtNDAwLDYgKzQyNyw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIFN0cmluZyB2YWx1
ZVRleHQ7CiAgICAgICAgICAgICBpZiAodmFsdWUgJiYgIXZhbHVlLT5pc0ltcGxpY2l0SW5pdGlh
bFZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWxheWVyUmVzdWx0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICAgICAgbGF5ZXJSZXN1bHQuYXBwZW5kKCcgJyk7CkBAIC00MTQsMTUg
KzQ0MiwyOCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZh
bHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmCiAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICh1c2VSZXBlYXRZU2hvcnRoYW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHVzZVJlcGVh
dFlTaG9ydGhhbmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgbGF5ZXJSZXN1bHQuYXBw
ZW5kKGdldFZhbHVlTmFtZShDU1NWYWx1ZVJlcGVhdFkpKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHVzZVNpbmdsZVdvcmRTaG9ydGhhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgdXNl
U2luZ2xlV29yZFNob3J0aGFuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBsYXllclJl
c3VsdC5hcHBlbmQodmFsdWUtPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIGxheWVyUmVzdWx0LmFwcGVuZCh2YWx1ZS0+Y3NzVGV4dCgpKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAodXNlU2lu
Z2xlV29yZFNob3J0aGFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZVNpbmdsZVdvcmRT
aG9ydGhhbmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVUZXh0ID0gdmFsdWUt
PmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJSZXN1bHQuYXBwZW5kKHZhbHVl
VGV4dCk7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHNob3J0aGFu
ZC5wcm9wZXJ0aWVzKClbal0gPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorICAg
ICAgICAgICAgICAgIGlmIChzaG9ydGhhbmQucHJvcGVydGllcygpW2pdID09IENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSkgewogICAgICAgICAgICAgICAgICAgICBmb3VuZEJhY2tncm91
bmRQb3NpdGlvbllDU1NQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
YmFja2dyb3VuZC1wb3NpdGlvbiBpcyBhIHNwZWNpYWwgY2FzZTogaWYgb25seSB0aGUgZmlyc3Qg
b2Zmc2V0IGlzIHNwZWNpZmllZCwKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHNlY29uZCBv
bmUgZGVmYXVsdHMgdG8gImNlbnRlciIsIG5vdCB0aGUgc2FtZSB2YWx1ZS4KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHVuaXZlcnNhbFZhbHVlSW5pdGlhbGl6ZWQgJiYgdW5pdmVyc2FsVmFsdWUg
IT0gImluaXRpYWwiICYmIHVuaXZlcnNhbFZhbHVlICE9ICJpbmhlcml0IikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaXZlcnNhbFZhbHVlID0gU3RyaW5nKCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXVuaXZlcnNhbFZhbHVlSW5pdGlh
bGl6ZWQpIHsKKyAgICAgICAgICAgICAgICB1bml2ZXJzYWxWYWx1ZSA9IHZhbHVlVGV4dDsKKyAg
ICAgICAgICAgICAgICB1bml2ZXJzYWxWYWx1ZUluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIXVuaXZlcnNhbFZhbHVlLmlzTnVsbCgpICYmIHVuaXZlcnNhbFZhbHVl
ICE9IHZhbHVlVGV4dCkKKyAgICAgICAgICAgICAgICB1bml2ZXJzYWxWYWx1ZSA9IFN0cmluZygp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFsYXllclJlc3VsdC5pc0VtcHR5KCkpIHsKQEAg
LTQzMSw2ICs0NzIsMTAgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9y
dGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJgogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChsYXllclJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoaXNJ
bml0aWFsT3JJbmhlcml0KHVuaXZlcnNhbFZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHVuaXZlcnNh
bFZhbHVlOworCiAgICAgaWYgKHJlc3VsdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CkBAIC00MzgsMTkgKzQ4MywyOCBA
QCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmCiAKIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRT
aG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNv
bnN0CiB7CisgICAgU3RyaW5nIHVuaXZlcnNhbFZhbHVlOwogICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsr
aSkgewogICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChzaG9ydGhhbmQucHJvcGVydGll
cygpW2ldKSkgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3Bl
cnR5Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIFN0
cmluZyB2YWx1ZVRleHQgPSB2YWx1ZS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgaWYgKCFpKQor
ICAgICAgICAgICAgICAgIHVuaXZlcnNhbFZhbHVlID0gdmFsdWVUZXh0OworICAgICAgICAgICAg
ZWxzZSBpZiAoIXVuaXZlcnNhbFZhbHVlLmlzTnVsbCgpICYmIHVuaXZlcnNhbFZhbHVlICE9IHZh
bHVlVGV4dCkKKyAgICAgICAgICAgICAgICB1bml2ZXJzYWxWYWx1ZSA9IFN0cmluZygpOwogICAg
ICAgICAgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUt
PmNzc1RleHQoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWVU
ZXh0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB1bml2ZXJzYWxWYWx1ZSA9IFN0cmlu
ZygpOwogICAgIH0KKyAgICBpZiAoaXNJbml0aWFsT3JJbmhlcml0KHVuaXZlcnNhbFZhbHVlKSkK
KyAgICAgICAgcmV0dXJuIHVuaXZlcnNhbFZhbHVlOwogICAgIGlmIChyZXN1bHQuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwpAQCAtNDg1LDYgKzUzOSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25W
YWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiBTdHJpbmcgU3R5
bGVQcm9wZXJ0eVNldDo6Ym9yZGVyUHJvcGVydHlWYWx1ZShDb21tb25WYWx1ZU1vZGUgdmFsdWVN
b2RlKSBjb25zdAogewogICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQgcHJvcGVydGll
c1szXSA9IHsgYm9yZGVyV2lkdGhTaG9ydGhhbmQoKSwgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKSwg
Ym9yZGVyQ29sb3JTaG9ydGhhbmQoKSB9OworICAgIFN0cmluZyB1bml2ZXJzYWxWYWx1ZTsKICAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9B
UlJBWV9MRU5HVEgocHJvcGVydGllcyk7ICsraSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBn
ZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzW2ldKTsKQEAgLTQ5NCwxMiArNTQ5LDE4IEBAIFN0cmlu
ZyBTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJQcm9wZXJ0eVZhbHVlKENvbW1vblZhbHVlTW9kZSB2
YWx1ZU1vZGUpIGNvbnN0CiAgICAgICAgICAgICBBU1NFUlQodmFsdWVNb2RlID09IE9taXRVbmNv
bW1vblZhbHVlcyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBp
ZiAoIWkpCisgICAgICAgICAgICB1bml2ZXJzYWxWYWx1ZSA9IHZhbHVlOworICAgICAgICBlbHNl
IGlmICghdW5pdmVyc2FsVmFsdWUuaXNOdWxsKCkgJiYgdW5pdmVyc2FsVmFsdWUgIT0gdmFsdWUp
CisgICAgICAgICAgICB1bml2ZXJzYWxWYWx1ZSA9IFN0cmluZygpOwogICAgICAgICBpZiAodmFs
dWUgPT0gImluaXRpYWwiKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghcmVz
dWx0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAgICAg
cmVzdWx0LmFwcGVuZCh2YWx1ZSk7CiAgICAgfQorICAgIGlmIChpc0luaXRpYWxPckluaGVyaXQo
dW5pdmVyc2FsVmFsdWUpKQorICAgICAgICByZXR1cm4gdW5pdmVyc2FsVmFsdWU7CiAgICAgcmV0
dXJuIHJlc3VsdC5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHJlc3VsdC50b1N0cmluZygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCBjYmU3ZjE4OTdlMWI2MDc4
NDQwYjg3ZjkwNTRhZmQ2YzRhMzU2NTMwLi40NTZmN2VmMmU0OGU2MTZlMGRhZjFmMjM4NTYyMjA0
NjVmOTMxNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTE5Nyw3
ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBTdHJpbmcgYm9yZGVyU3BhY2luZ1ZhbHVlKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBTdHJpbmcgZm9udFZhbHVl
KCkgY29uc3Q7Ci0gICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NT
UHJvcGVydHlJRCwgU3RyaW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdDsKKyAgICBib29sIGFwcGVu
ZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUlELCBTdHJpbmdCdWlsZGVy
JiByZXN1bHQsIFN0cmluZyYgdmFsdWUpIGNvbnN0OwogCiAgICAgYm9vbCByZW1vdmVTaG9ydGhh
bmRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKICAgICBib29sIHByb3BlcnR5TWF0Y2hlcyhjb25z
dCBQcm9wZXJ0eVJlZmVyZW5jZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggZWY3NTRmNTk3
MDRhYTljYzc3M2QxYmY1N2VmMGFkM2ExYWVmY2EyYi4uZmE3MWE0YTgxNTIxZTY4OGIzYmRhMTgx
ZGRiMWM4OTdkZGMxZTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0yMDcwLDggKzIwNzAsMTEgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdG
b250KQogICAgIGlmIChwYXJzZWRTdHlsZS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8Q1NTVmFsdWU+IGZvbnRWYWx1ZSA9IHBhcnNlZFN0eWxlLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udCk7Ci0gICAgaWYgKGZvbnRWYWx1ZSAmJiBmb250VmFs
dWUtPmlzSW5oZXJpdGVkVmFsdWUoKSkKKyAgICBTdHJpbmcgZm9udFZhbHVlID0gcGFyc2VkU3R5
bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250KTsKKworICAgIC8vIEFjY29yZGlu
ZyB0byBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9wdWJsaWMtaHRtbC8yMDA5
SnVsLzA5NDcuaHRtbCwKKyAgICAvLyB0aGUgImluaGVyaXQiIGFuZCAiaW5pdGlhbCIgdmFsdWVz
IG11c3QgYmUgaWdub3JlZC4KKyAgICBpZiAoZm9udFZhbHVlID09ICJpbmhlcml0IiB8fCBmb250
VmFsdWUgPT0gImluaXRpYWwiKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgcGFyc2Ug
c3VjY2VlZGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDFlYmJiZjYxYTU3ZmI5NzJmZjQyMjUwYWJjOTM0OWM5ODljYWFj
ZDUuLjAwNzg4ZDdiMTE4ZTc2OTdhNDkxMWY4MDU1NDY5YzAyY2IxYmFhZmQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxOCBAQAogMjAxMi0xMS0yMSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21p
dW0ub3JnPgogCisgICAgICAgIEluY29ycmVjdCB2YWx1ZSBvZiBDU1NTdHlsZURlY2xhcmF0aW9u
I2xlbmd0aCB3aGVuIGEgc2hvcnRoYW5kIHByb3BlcnR5IGlzIGluaGVyaXQgb3IgaW5pdGlhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBlY3RhdGlv
bnMgZ2V0IGZpeGVkIGluIHNvbWUgY2FzZXMuCisKKyAgICAgICAgKiBjc3MzL2ZsZXhib3gvZmxl
eC1wcm9wZXJ0eS1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9wYXJz
aW5nLXRleHQtZW1waGFzaXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzL3BhcnNp
bmctdGV4dC1lbXBoYXNpcy5odG1sOgorCisyMDEyLTExLTIxICBBbGV4YW5kZXIgUGF2bG92ICA8
YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgVHVybiAtd2Via2l0LXRleHQtZW1waGFz
aXMgaW50byBhIHNob3J0aGFuZCBwcm9wZXJ0eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODc5CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvY3NzMy9mbGV4Ym94L2ZsZXgtcHJvcGVydHktcGFyc2luZy1leHBlY3RlZC50eHQKaW5kZXgg
YWI4Y2JkZjU0NWZjMTllZjQ2YjA4M2ExZjY3MDEzODI0ZWI1MDc1NS4uN2JlZmJlOTk4OWMxYjM2
NzFhY2M1MzQzZDY3ZWYwNDlhZjQ3ZDQ3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9m
bGV4Ym94L2ZsZXgtcHJvcGVydHktcGFyc2luZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy9mbGV4Ym94L2ZsZXgtcHJvcGVydHktcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBQQVNTIGZsZXhpdGVtLnN0eWxlLndlYmtpdEZsZXggaXMgIjAgMCBhdXRv
IgogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGZsZXhpdGVtKS53ZWJraXRGbGV4IGlzICIwIDAgYXV0
byIKIFBBU1MgZmxleGl0ZW0uc3R5bGUud2Via2l0RmxleCBpcyAiaW5pdGlhbCIKIFBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShmbGV4aXRlbSkud2Via2l0RmxleCBpcyAiMCAxIGF1dG8iCi1GQUlMIGZs
ZXhpdGVtLnN0eWxlLndlYmtpdEZsZXggc2hvdWxkIGJlIDAgMCBhdXRvLiBXYXMgaW5pdGlhbC4K
K1BBU1MgZmxleGl0ZW0uc3R5bGUud2Via2l0RmxleCBpcyAiMCAwIGF1dG8iCiBQQVNTIGdldENv
bXB1dGVkU3R5bGUoZmxleGl0ZW0pLndlYmtpdEZsZXggaXMgIjAgMCBhdXRvIgogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wYXJzaW5nLXRleHQtZW1waGFzaXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLWV4cGVjdGVkLnR4dAppbmRleCAxMzA0NzNmMDFlMGNl
Nzk2ZjYwNDM5OWQ4OTllMzc0ZjBmNWZiM2Y2Li4xZjFlOGQ4YTI3YThmMGVlMmZmY2JiODVhYTZl
ZDdjNjQwYTY3ZWQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXRl
eHQtZW1waGFzaXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNp
bmctdGV4dC1lbXBoYXNpcy1leHBlY3RlZC50eHQKQEAgLTM2LDggKzM2LDggQEAgUEFTUzogJy13
ZWJraXQtdGV4dC1lbXBoYXNpcy1zdHlsZTogbm9uZSBub25lOycgcGFyc2VkIGFzIFsnJywgJycs
ICcnLCAnJ10KIFBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXMtc3R5bGU6ICJjaGVlc2UiIG9w
ZW47JyBwYXJzZWQgYXMgWycnLCAnJywgJycsICcnXQogUEFTUzogJy13ZWJraXQtdGV4dC1lbXBo
YXNpcy1zdHlsZTogb3BlbiAiY2hlZXNlIjsnIHBhcnNlZCBhcyBbJycsICcnLCAnJywgJyddCiAK
LVBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXM6IGluaXRpYWwnIHBhcnNlZCBhcyBbJycsICcn
LCAnJywgJ2luaXRpYWwnXQotUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5oZXJpdCcg
cGFyc2VkIGFzIFsnJywgJycsICcnLCAnaW5oZXJpdCddCitQQVNTOiAnLXdlYmtpdC10ZXh0LWVt
cGhhc2lzOiBpbml0aWFsJyBwYXJzZWQgYXMgWydpbml0aWFsJywgJycsICdpbml0aWFsJywgJ2lu
aXRpYWwnXQorUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5oZXJpdCcgcGFyc2VkIGFz
IFsnaW5oZXJpdCcsICcnLCAnaW5oZXJpdCcsICdpbmhlcml0J10KIFBBU1M6ICctd2Via2l0LXRl
eHQtZW1waGFzaXM6IHJlZCcgcGFyc2VkIGFzIFsncmVkJywgJycsICdpbml0aWFsJywgJ3JlZCdd
CiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiAiY2hlZXNlIicgcGFyc2VkIGFzIFsnaW5p
dGlhbCcsICcnLCAnY2hlZXNlJywgJ2NoZWVzZSddCiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhh
c2lzOiByZWQgImNoZWVzZSInIHBhcnNlZCBhcyBbJ3JlZCcsICcnLCAnY2hlZXNlJywgJ2NoZWVz
ZSByZWQnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVt
cGhhc2lzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXRleHQtZW1waGFzaXMu
aHRtbAppbmRleCA5MGI1ZDdjMDM1MDg0YzVkNmM5MjU2N2I4NmEwM2M5MjQxODc1YmUzLi4zMmY4
ZjI0NTAwYmRhMDE3NzU4N2JkNWM4OGE5Mjk2ODhmNDQzZmI1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXRleHQtZW1waGFzaXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wYXJzaW5nLXRleHQtZW1waGFzaXMuaHRtbApAQCAtNjcsOCArNjcsOCBAQAog
ICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpcy1zdHlsZTogb3BlbiAiY2hlZXNlIjsnLCAn
JywgJycsICcnKTsKIAogICAgIGxvZygiIik7Ci0gICAgdGVzdCgnLXdlYmtpdC10ZXh0LWVtcGhh
c2lzOiBpbml0aWFsJywgJycsICcnLCAnJywgJ2luaXRpYWwnKTsKLSAgICB0ZXN0KCctd2Via2l0
LXRleHQtZW1waGFzaXM6IGluaGVyaXQnLCAnJywgJycsICcnLCAnaW5oZXJpdCcpOworICAgIHRl
c3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5pdGlhbCcsICdpbml0aWFsJywgJycsICdpbml0
aWFsJywgJ2luaXRpYWwnKTsKKyAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6IGluaGVy
aXQnLCAnaW5oZXJpdCcsICcnLCAnaW5oZXJpdCcsICdpbmhlcml0Jyk7CiAgICAgdGVzdCgnLXdl
YmtpdC10ZXh0LWVtcGhhc2lzOiByZWQnLCAncmVkJywgJycsICdpbml0aWFsJywgJ3JlZCcpOwog
ICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogImNoZWVzZSInLCAnaW5pdGlhbCcsICcn
LCAnY2hlZXNlJywgJ2NoZWVzZScpOwogICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczog
cmVkICJjaGVlc2UiJywgJ3JlZCcsICcnLCAnY2hlZXNlJywgJ2NoZWVzZSByZWQnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175792</attachid>
            <date>2012-11-23 06:22:08 -0800</date>
            <delta_ts>2012-11-26 06:34:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73002-20121123181951.patch</filename>
            <type>text/plain</type>
            <size>22219</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI4NzRhY2UyNTFlYzMz
ZjM1ZTg2ZTg0MDEyYWMzMjc4NmIwN2E1Ny4uNTYyYWIwODRiN2I4Yjg4NTBiZDQ3YTY5NzBjMjE3
ZGJlZWM0NGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTExLTIzICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5jb3JyZWN0
IHZhbHVlIG9mIENTU1N0eWxlRGVjbGFyYXRpb24jbGVuZ3RoIHdoZW4gYSBzaG9ydGhhbmQgcHJv
cGVydHkgaXMgaW5oZXJpdCBvciBpbml0aWFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsICJpbmhlcml0IiBhbmQgImluaXRp
YWwiIHNob3J0aGFuZHMgd291bGQgZ2V0IGFkZGVkIHRvIHRoZSBTdHlsZVByb3BlcnR5U2V0IGFz
LWlzLCB0aGVpciBsb25naGFuZHMgdW5zcGVjaWZpZWQuCisgICAgICAgIFRoaXMgcGF0Y2ggdGFj
a2xlcyB0d28gYXNwZWN0cyBvZiB0aGUgcHJvYmxlbToKKyAgICAgICAgLSBXaGVuIHBhcnNpbmcg
ImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5kcywgdGhlaXIgbG9uZ2hhbmRzIGFyZSBh
ZGRlZCB0byB0aGUgcHJvcGVydHkgc2V0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzLgor
ICAgICAgICAtIFdoZW4gcXVlcnlpbmcgImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5k
cywgdGhlaXIgdmFsdWVzIGFyZSByZWNvbnN0cnVjdGVkIGZyb20gdGhlIGxvbmdoYW5kcyBhcyB1
c3VhbCwgYnV0IGlmIGFsbCBvZiB0aGUgbG9uZ2hhbmRzCisgICAgICAgICAgYXJlIGZvdW5kIHRv
IGhhdmUgdGhlIHNhbWUgZXhwbGljaXQgImluaXRpYWwiIG9yICJpbmhlcml0IiB2YWx1ZSwgdGhl
IHJlc3BlY3RpdmUgc2luZ2xlIHZhbHVlIGlzIHJldHVybmVkIGFzIHRoZSBzaG9ydGhhbmQgdmFs
dWUuCisKKyAgICAgICAgV2hlbiByZWNvbnN0cnVjdGluZyBzaG9ydGhhbmRzLCBhICJjb21tb24g
dmFsdWUiIGlzIHRyYWNrZWQuIElmIGFsbCBsb25naGFuZHMgaW52b2x2ZWQgaGF2ZSB0aGUgc2Ft
ZSBleHBsaWNpdCB2YWx1ZSwgaXQgYmVjb21lcyB0aGUKKyAgICAgICAgImNvbW1vbiB2YWx1ZSIs
IG90aGVyd2lzZSBpdCBpcyBhIFN0cmluZygpLiBUaGUgImluaGVyaXQiIG9yICJpbml0aWFsIiBj
b21tb24gdmFsdWUgdWx0aW1hdGVseSBiZWNvbWVzIHRoZSBzaG9ydGhhbmQgdmFsdWUKKyAgICAg
ICAgKGV4Y2VwdCBmb3IgdGhlICJiYWNrZ3JvdW5kLXBvc2l0aW9uIiBzaG9ydGhhbmQsIHdoaWNo
IGlzIGEgc3BlY2lhbCBjYXNlKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOiBQYXJzZSBzaG9ydGhhbmRzJyAiaW5p
dGlhbCIgYW5kICJpbmhlcml0IiB2YWx1ZXMgdXNpbmcgdGhlIENTU1BhcnNlci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKTogQWRkIHNp
bXBsZSBwcm9wZXJ0eSBvciBhbGwgc2hhcnRoYW5kJ3MgbG9uZ2hhbmRzIHdpdGggZ2l2ZW4gdmFs
dWUgYW5kIHByaW9yaXR5LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVl
KTogRm9yICJpbml0aWFsIiBhbmQgImluaGVyaXQiIHNob3J0aGFuZHMsIGFkZCB0aGVpciBsb25n
aGFuZHMgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZSwgbm90IHRoZSBzaG9ydGhhbmRzIHByb3Bl
ci4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6IEFkZCBhZGRFeHBhbmRlZFByb3BlcnR5Rm9y
VmFsdWUoKS4KKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc0luaXRpYWxPckluaGVyaXQpOiBDaGVjayBpZiB0aGUgdmFsdWUgaXMgImluaXRp
YWwiIG9yICJpbmhlcml0Ii4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVQcm9wZXJ0eVNldDo6YXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KTogTW9k
aWZpZWQgdG8gdHJhY2sgdGhlIGNvbW1vbiB2YWx1ZSBmb3IgdGhlICJmb250IiBzaG9ydGhhbmQu
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpmb250VmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMpOiBSZXR1cm4g
ImluaGVyaXQiIG9yICJpbml0aWFsIiBpZiBhbGwgNCB2YWx1ZXMgYXJlIGV4cGxpY2l0bHkgImlu
aGVyaXQiIG9yICJpbml0aWFsIi4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6
OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6IFVzZSB0aGUgY29tbW9uIHZhbHVlIGFwcHJvYWNo
IGZvciBsYXllcmVkIHNob3J0aGFuZHMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5
U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZSk6IERpdHRvIGZvciBvcmRpbmFyeSBzaG9ydGhhbmRzLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyUHJvcGVydHlWYWx1ZSk6
IERpdHRvIGZvciB0aGUgImJvcmRlciIgc2hvcnRoYW5kLgorICAgICAgICAqIGNzcy9TdHlsZVBy
b3BlcnR5U2V0Lmg6IE1vZGlmeSB0aGUgYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0
KCkgc2lnbmF0dXJlLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dEZvbnQpOiBOb3cgdGhhdCAiaW5oZXJpdCIgYW5kICJpbml0aWFsIiBzaG9ydGhhbmRzIGFyZSBy
ZXByZXNlbnRlZCBieSB0aGVpciBsb25naGFuZHMsCisgICAgICAgIHdlIG5lZWQgdG8gY2hlY2sg
dGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgImZvbnQiIHNob3J0aGFuZCBmb3IgYmVpbmcgImluaGVy
aXQiIG9yICJpbml0aWFsIiBpbnN0ZWFkOiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgbm8gbG9uZ2Vy
IHdvcmtzLAorICAgICAgICBzaW5jZSB0aGUgc2hvcnRoYW5kIGl0c2VsZiBpcyBubyBsb25nZXIg
YWRkZWQgdG8gdGhlIFN0eWxlUHJvcGVydHlTZXQuCisKIDIwMTItMTEtMjIgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY3Ry
bCtlbmQgaW4gZWRpdG9yIGRvZXMgbm90IHNlbGVjdCB0aGUgbGFzdCBzeW1ib2wuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCmluZGV4IGQ1OGM1N2I3YmYxN2EwN2JhYjg4NjgxYmIyNGFmNDhlYzhk
ZTk0YjIuLjI0OGJlYWVlNTkyYjQ0ODk4ZWNmOTk0OTM5YmU2Yjg1NmY4Mzk0NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMDg2LDggKzEwODYsMTYgQEAgc3RhdGljIGJvb2wgcGFy
c2VLZXl3b3JkVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5
SUQgcHJvcGUKIHsKICAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOwogCi0gICAgaWYgKCFp
c0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFpc0tleXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKSB7CisgICAgICAgIC8vIEFs
bCBwcm9wZXJ0aWVzIGFjY2VwdCB0aGUgdmFsdWVzIG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQi
LgorICAgICAgICBTdHJpbmcgbG93ZXJDYXNlU3RyaW5nID0gc3RyaW5nLmxvd2VyKCk7CisgICAg
ICAgIGlmIChsb3dlckNhc2VTdHJpbmcgIT0gImluaXRpYWwiICYmIGxvd2VyQ2FzZVN0cmluZyAh
PSAiaW5oZXJpdCIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gUGFy
c2UgaW5pdGlhbC9pbmhlcml0IHNob3J0aGFuZHMgdXNpbmcgdGhlIENTU1BhcnNlci4KKyAgICAg
ICAgaWYgKHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SWQpLmxlbmd0aCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIENTU1BhcnNlclN0cmluZyBjc3NTdHJp
bmc7CiAgICAgY3NzU3RyaW5nLmluaXQoc3RyaW5nKTsKQEAgLTE2ODksNiArMTY5NywyMiBAQCBp
bmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbGlk
UHJpbWl0aXZlKGludCBpZGVudGlmaQogICAgIHJldHVybiAwOwogfQogCit2b2lkIENTU1BhcnNl
cjo6YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHko
cHJvcElkKTsKKyAgICB1bnNpZ25lZCBzaG9ydGhhbmRMZW5ndGggPSBzaG9ydGhhbmQubGVuZ3Ro
KCk7CisgICAgaWYgKCFzaG9ydGhhbmRMZW5ndGgpIHsKKyAgICAgICAgYWRkUHJvcGVydHkocHJv
cElkLCBwcnBWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKKyAgICBTaG9ydGhhbmRTY29wZSBz
Y29wZSh0aGlzLCBwcm9wSWQpOworICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9
IHNob3J0aGFuZC5wcm9wZXJ0aWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNo
b3J0aGFuZExlbmd0aDsgKytpKQorICAgICAgICBhZGRQcm9wZXJ0eShsb25naGFuZHNbaV0sIHZh
bHVlLCBpbXBvcnRhbnQpOworfQorCiBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgaWYgKCFtX3ZhbHVlTGlzdCkK
QEAgLTE3MTAsMTMgKzE3MzQsMTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGlmIChpZCA9PSBDU1NWYWx1ZUlu
aGVyaXQpIHsKICAgICAgICAgaWYgKG51bSAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUluaGVy
aXRlZFZhbHVlKCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JW
YWx1ZShwcm9wSWQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUluaGVyaXRlZFZhbHVlKCksIGltcG9y
dGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBlbHNlIGlmIChpZCA9PSBD
U1NWYWx1ZUluaXRpYWwpIHsKICAgICAgICAgaWYgKG51bSAhPSAxKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZEV4cGFu
ZGVkUHJvcGVydHlGb3JWYWx1ZShwcm9wSWQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUV4cGxpY2l0
SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDUxODFmOWVjZDg3MDIxNGFiYzc4NTA0ZjYxMWZj
M2ZmYzYxZjZlYzkuLjM4NmFhYmFmMDRlYTkwYzRiM2MyN2NjOGNkNzMyYjFlZjc4Zjg3NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wgaW1w
b3J0YW50LCBib29sIGltcGxpY2l0ID0gZmFsc2UpOwogICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJv
cGVydGllcyhpbnQgbnVtKTsKICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVy
biAhbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkRXhwYW5kZWRQ
cm9wZXJ0eUZvclZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiwgYm9vbCk7CiAKICAgICBib29sIHBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBv
cnRhbnQpOwogICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYsIGJvb2wgaW1wb3J0YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBjM2Y2ZGM4MGRkMzA3NzZjYTAxZjkwOGYzMjI5NTFi
OGQ4YjFiNjk0Li45ZGY1OWEyOGIyOWUxZTI5NzY1N2E0MTdlNzIzNzQzYjY4NWRjMjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC02MCw2ICs2MCwxMyBAQCBz
dGF0aWMgc2l6ZV90IHNpemVGb3JJbW11dGFibGVTdHlsZVByb3BlcnR5U2V0V2l0aFByb3BlcnR5
Q291bnQodW5zaWduZWQgY291bnQpCiAgICAgcmV0dXJuIHNpemVvZihJbW11dGFibGVTdHlsZVBy
b3BlcnR5U2V0KSAtIHNpemVvZih2b2lkKikgKyBzaXplb2YoQ1NTVmFsdWUqKSAqIGNvdW50ICsg
c2l6ZW9mKFN0eWxlUHJvcGVydHlNZXRhZGF0YSkgKiBjb3VudDsKIH0KIAorc3RhdGljIGJvb2wg
aXNJbml0aWFsT3JJbmhlcml0KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGluaXRpYWwsICgiaW5pdGlhbCIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgaW5oZXJpdCwgKCJpbmhlcml0IikpOworICAgIHJldHVybiB2YWx1
ZS5sZW5ndGgoKSA9PSA3ICYmICh2YWx1ZSA9PSBpbml0aWFsIHx8IHZhbHVlID09IGluaGVyaXQp
OworfQorCiBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IFN0eWxlUHJvcGVydHlTZXQ6OmNy
ZWF0ZUltbXV0YWJsZShjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydGllcywgdW5zaWduZWQgY291
bnQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKIHsKICAgICB2b2lkKiBzbG90ID0gV1RG
OjpmYXN0TWFsbG9jKHNpemVGb3JJbW11dGFibGVTdHlsZVByb3BlcnR5U2V0V2l0aFByb3BlcnR5
Q291bnQoY291bnQpKTsKQEAgLTIxOCwxNCArMjI1LDE2IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5
U2V0Ojpib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hv
cnRoCiAgICAgcmV0dXJuIGhvcml6b250YWxWYWx1ZUNTU1RleHQgKyAnICcgKyB2ZXJ0aWNhbFZh
bHVlQ1NTVGV4dDsKIH0KIAotYm9vbCBTdHlsZVByb3BlcnR5U2V0OjphcHBlbmRGb250TG9uZ2hh
bmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBTdHJpbmdCdWlsZGVy
JiByZXN1bHQpIGNvbnN0Citib29sIFN0eWxlUHJvcGVydHlTZXQ6OmFwcGVuZEZvbnRMb25naGFu
ZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXIm
IHJlc3VsdCwgU3RyaW5nJiBjb21tb25WYWx1ZSkgY29uc3QKIHsKICAgICBpbnQgZm91bmRQcm9w
ZXJ0eUluZGV4ID0gZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHlJRCk7CiAgICAgaWYgKGZvdW5k
UHJvcGVydHlJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBbGwgbG9uZ2hh
bmRzIG11c3QgaGF2ZSBhdCBsZWFzdCBpbXBsaWNpdCB2YWx1ZXMgaWYgImZvbnQiIGlzIHNwZWNp
ZmllZC4KIAotICAgIGlmIChwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkuaXNJbXBsaWNp
dCgpKQorICAgIGlmIChwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkuaXNJbXBsaWNpdCgp
KSB7CisgICAgICAgIGNvbW1vblZhbHVlID0gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KIAogICAgIGNoYXIgcHJlZml4ID0gJ1wwJzsKICAgICBzd2l0Y2ggKHByb3BlcnR5
SUQpIHsKQEAgLTI0NSw3ICsyNTQsMTAgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjphcHBlbmRG
b250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUkKIAogICAg
IGlmIChwcmVmaXggJiYgIXJlc3VsdC5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
cHJlZml4KTsKLSAgICByZXN1bHQuYXBwZW5kKHByb3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4
KS52YWx1ZSgpLT5jc3NUZXh0KCkpOworICAgIFN0cmluZyB2YWx1ZSA9IHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgcmVzdWx0LmFwcGVuZCh2
YWx1ZSk7CisgICAgaWYgKCFjb21tb25WYWx1ZS5pc051bGwoKSAmJiBjb21tb25WYWx1ZSAhPSB2
YWx1ZSkKKyAgICAgICAgY29tbW9uVmFsdWUgPSBTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMjYwLDIyICsyNzIsMjUgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmZvbnRW
YWx1ZSgpIGNvbnN0CiAgICAgaWYgKGZvbnRTaXplUHJvcGVydHkuaXNJbXBsaWNpdCgpKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgIFN0cmluZyBjb21tb25WYWx1ZSA9IGZv
bnRTaXplUHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OwogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgc3VjY2VzcyAmPSBhcHBlbmRGb250
TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlGb250U3R5bGUsIHJlc3VsdCk7Ci0g
ICAgc3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVy
dHlGb250VmFyaWFudCwgcmVzdWx0KTsKLSAgICBzdWNjZXNzICY9IGFwcGVuZEZvbnRMb25naGFu
ZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIHJlc3VsdCk7CisgICAgc3Vj
Y2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlGb250
U3R5bGUsIHJlc3VsdCwgY29tbW9uVmFsdWUpOworICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExv
bmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIHJlc3VsdCwgY29t
bW9uVmFsdWUpOworICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxp
Y2l0KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgcmVzdWx0LCBjb21tb25WYWx1ZSk7CiAgICAgaWYg
KCFyZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgcmVz
dWx0LmFwcGVuZChmb250U2l6ZVByb3BlcnR5LnZhbHVlKCktPmNzc1RleHQoKSk7Ci0gICAgc3Vj
Y2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlMaW5l
SGVpZ2h0LCByZXN1bHQpOwotICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJ
ZkV4cGxpY2l0KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgcmVzdWx0KTsKKyAgICBzdWNjZXNzICY9
IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQs
IHJlc3VsdCwgY29tbW9uVmFsdWUpOworICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5k
VmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgcmVzdWx0LCBjb21tb25WYWx1
ZSk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgIC8vIEFuIGludmFsaWQgImZvbnQiIHZh
bHVlIGhhcyBiZWVuIGJ1aWx0IChzaG91bGQgbmV2ZXIgaGFwcGVuLCBhcyBhdCBsZWFzdCBpbXBs
aWNpdCB2YWx1ZXMKICAgICAgICAgLy8gZm9yIG1hbmRhdG9yeSBsb25naGFuZHMgYXJlIGFsd2F5
cyBmb3VuZCBpbiB0aGUgc3R5bGUpLCByZXBvcnQgZW1wdHkgdmFsdWUgaW5zdGVhZC4KICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
ICAgIH0KKyAgICBpZiAoaXNJbml0aWFsT3JJbmhlcml0KGNvbW1vblZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIGNvbW1vblZhbHVlOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIApA
QCAtMjk4LDggKzMxMywxNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbgogICAgIC8vIEFsbCA0
IHByb3BlcnRpZXMgbXVzdCBiZSBzcGVjaWZpZWQuCiAgICAgaWYgKCF0b3AudmFsdWUoKSB8fCAh
cmlnaHQudmFsdWUoKSB8fCAhYm90dG9tLnZhbHVlKCkgfHwgIWxlZnQudmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIGlmICh0b3AudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUo
KSB8fCByaWdodC52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpIHx8IGJvdHRvbS52YWx1ZSgpLT5p
c0luaXRpYWxWYWx1ZSgpIHx8IGxlZnQudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSkKKworICAg
IGlmICh0b3AuaXNJbmhlcml0ZWQoKSAmJiByaWdodC5pc0luaGVyaXRlZCgpICYmIGJvdHRvbS5p
c0luaGVyaXRlZCgpICYmIGxlZnQuaXNJbmhlcml0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGdldFZh
bHVlTmFtZShDU1NWYWx1ZUluaGVyaXQpOworCisgICAgaWYgKHRvcC52YWx1ZSgpLT5pc0luaXRp
YWxWYWx1ZSgpIHx8IHJpZ2h0LnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwgYm90dG9tLnZh
bHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwgbGVmdC52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgp
KSB7CisgICAgICAgIGlmICh0b3AudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSAmJiByaWdodC52
YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpICYmIGJvdHRvbS52YWx1ZSgpLT5pc0luaXRpYWxWYWx1
ZSgpICYmIGxlZnQudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSAmJiAhdG9wLmlzSW1wbGljaXQo
KSkgeworICAgICAgICAgICAgLy8gQWxsIGNvbXBvbmVudHMgYXJlICJpbml0aWFsIiBhbmQgInRv
cCIgaXMgbm90IGltcGxpY2l0LgorICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlTmFtZShDU1NW
YWx1ZUluaXRpYWwpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9
CiAgICAgaWYgKHRvcC5pc0ltcG9ydGFudCgpICE9IHJpZ2h0LmlzSW1wb3J0YW50KCkgfHwgcmln
aHQuaXNJbXBvcnRhbnQoKSAhPSBib3R0b20uaXNJbXBvcnRhbnQoKSB8fCBib3R0b20uaXNJbXBv
cnRhbnQoKSAhPSBsZWZ0LmlzSW1wb3J0YW50KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IApAQCAtMzQ0LDYgKzM2OCw5IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVk
U2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAgICAgICAgfQog
ICAgIH0KIAorICAgIFN0cmluZyBjb21tb25WYWx1ZTsKKyAgICBib29sIGNvbW1vblZhbHVlSW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKwogICAgIC8vIE5vdyBzdGl0Y2ggdGhlIHByb3BlcnRpZXMgdG9n
ZXRoZXIuICBJbXBsaWNpdCBpbml0aWFsIHZhbHVlcyBhcmUgZmxhZ2dlZCBhcyBzdWNoIGFuZAog
ICAgIC8vIGNhbiBzYWZlbHkgYmUgb21pdHRlZC4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bUxheWVyczsgaSsrKSB7CkBAIC00MDAsNiArNDI3LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVy
dHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kJgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgU3Ry
aW5nIHZhbHVlVGV4dDsKICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiAhdmFsdWUtPmlzSW1wbGlj
aXRJbml0aWFsVmFsdWUoKSkgewogICAgICAgICAgICAgICAgIGlmICghbGF5ZXJSZXN1bHQuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBsYXllclJlc3VsdC5hcHBlbmQoJyAnKTsKQEAg
LTQxNCwxNSArNDQyLDI4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hv
cnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHVzZVJlcGVhdFlTaG9ydGhhbmQpIHsKICAgICAgICAgICAgICAgICAgICAg
dXNlUmVwZWF0WVNob3J0aGFuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBsYXllclJl
c3VsdC5hcHBlbmQoZ2V0VmFsdWVOYW1lKENTU1ZhbHVlUmVwZWF0WSkpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAodXNlU2luZ2xlV29yZFNob3J0aGFuZCkgewotICAgICAgICAgICAgICAg
ICAgICB1c2VTaW5nbGVXb3JkU2hvcnRoYW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IGxheWVyUmVzdWx0LmFwcGVuZCh2YWx1ZS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJSZXN1bHQuYXBwZW5kKHZhbHVlLT5jc3NU
ZXh0KCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh1c2VTaW5nbGVXb3JkU2hvcnRoYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgdXNlU2lu
Z2xlV29yZFNob3J0aGFuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB2YWx1ZVRleHQg
PSB2YWx1ZS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICBsYXllclJlc3VsdC5hcHBl
bmQodmFsdWVUZXh0KTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAo
c2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blkpCisgICAgICAgICAgICAgICAgaWYgKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbal0gPT0gQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvdW5k
QmFja2dyb3VuZFBvc2l0aW9uWUNTU1Byb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAg
ICAgICAvLyBiYWNrZ3JvdW5kLXBvc2l0aW9uIGlzIGEgc3BlY2lhbCBjYXNlOiBpZiBvbmx5IHRo
ZSBmaXJzdCBvZmZzZXQgaXMgc3BlY2lmaWVkLAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUg
c2Vjb25kIG9uZSBkZWZhdWx0cyB0byAiY2VudGVyIiwgbm90IHRoZSBzYW1lIHZhbHVlLgorICAg
ICAgICAgICAgICAgICAgICBpZiAoY29tbW9uVmFsdWVJbml0aWFsaXplZCAmJiBjb21tb25WYWx1
ZSAhPSAiaW5pdGlhbCIgJiYgY29tbW9uVmFsdWUgIT0gImluaGVyaXQiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbW9uVmFsdWUgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghY29tbW9uVmFsdWVJbml0aWFsaXplZCkg
eworICAgICAgICAgICAgICAgIGNvbW1vblZhbHVlID0gdmFsdWVUZXh0OworICAgICAgICAgICAg
ICAgIGNvbW1vblZhbHVlSW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlm
ICghY29tbW9uVmFsdWUuaXNOdWxsKCkgJiYgY29tbW9uVmFsdWUgIT0gdmFsdWVUZXh0KQorICAg
ICAgICAgICAgICAgIGNvbW1vblZhbHVlID0gU3RyaW5nKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIWxheWVyUmVzdWx0LmlzRW1wdHkoKSkgewpAQCAtNDMxLDYgKzQ3MiwxMCBAQCBTdHJp
bmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxheWVyUmVzdWx0
KTsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChpc0luaXRpYWxPckluaGVyaXQoY29tbW9u
VmFsdWUpKQorICAgICAgICByZXR1cm4gY29tbW9uVmFsdWU7CisKICAgICBpZiAocmVzdWx0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiByZXN1bHQudG9T
dHJpbmcoKTsKQEAgLTQzOCwxOSArNDgzLDI4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpn
ZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKIAog
U3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uc3QKIHsKKyAgICBTdHJpbmcgY29tbW9uVmFs
dWU7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNob3J0aGFuZC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmICghaXNQcm9wZXJ0eUlt
cGxpY2l0KHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0pKSB7CiAgICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShzaG9ydGhhbmQucHJvcGVydGll
cygpW2ldKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIHZhbHVlVGV4dCA9IHZhbHVlLT5jc3NUZXh0
KCk7CisgICAgICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICAgICAgY29tbW9uVmFsdWUgPSB2
YWx1ZVRleHQ7CisgICAgICAgICAgICBlbHNlIGlmICghY29tbW9uVmFsdWUuaXNOdWxsKCkgJiYg
Y29tbW9uVmFsdWUgIT0gdmFsdWVUZXh0KQorICAgICAgICAgICAgICAgIGNvbW1vblZhbHVlID0g
U3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh2YWx1ZS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh2YWx1ZVRleHQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbW1vblZh
bHVlID0gU3RyaW5nKCk7CiAgICAgfQorICAgIGlmIChpc0luaXRpYWxPckluaGVyaXQoY29tbW9u
VmFsdWUpKQorICAgICAgICByZXR1cm4gY29tbW9uVmFsdWU7CiAgICAgaWYgKHJlc3VsdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3Ry
aW5nKCk7CkBAIC00ODUsNiArNTM5LDcgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldENv
bW1vblZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKIFN0cmlu
ZyBTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJQcm9wZXJ0eVZhbHVlKENvbW1vblZhbHVlTW9kZSB2
YWx1ZU1vZGUpIGNvbnN0CiB7CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBwcm9w
ZXJ0aWVzWzNdID0geyBib3JkZXJXaWR0aFNob3J0aGFuZCgpLCBib3JkZXJTdHlsZVNob3J0aGFu
ZCgpLCBib3JkZXJDb2xvclNob3J0aGFuZCgpIH07CisgICAgU3RyaW5nIGNvbW1vblZhbHVlOwog
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RG
X0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9
IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0pOwpAQCAtNDk0LDEyICs1NDksMTggQEAgU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclByb3BlcnR5VmFsdWUoQ29tbW9uVmFsdWVNb2Rl
IHZhbHVlTW9kZSkgY29uc3QKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZU1vZGUgPT0gT21pdFVu
Y29tbW9uVmFsdWVzKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisgICAgICAg
IGlmICghaSkKKyAgICAgICAgICAgIGNvbW1vblZhbHVlID0gdmFsdWU7CisgICAgICAgIGVsc2Ug
aWYgKCFjb21tb25WYWx1ZS5pc051bGwoKSAmJiBjb21tb25WYWx1ZSAhPSB2YWx1ZSkKKyAgICAg
ICAgICAgIGNvbW1vblZhbHVlID0gU3RyaW5nKCk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAiaW5p
dGlhbCIpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgICAgICByZXN1bHQuYXBw
ZW5kKHZhbHVlKTsKICAgICB9CisgICAgaWYgKGlzSW5pdGlhbE9ySW5oZXJpdChjb21tb25WYWx1
ZSkpCisgICAgICAgIHJldHVybiBjb21tb25WYWx1ZTsKICAgICByZXR1cm4gcmVzdWx0LmlzRW1w
dHkoKSA/IFN0cmluZygpIDogcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCmluZGV4IGNiZTdmMTg5N2UxYjYwNzg0NDBiODdmOTA1NGFmZDZj
NGEzNTY1MzAuLjQ1NmY3ZWYyZTQ4ZTYxNmUwZGFmMWYyMzg1NjIyMDQ2NWY5MzE0MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtMTk3LDcgKzE5Nyw3IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIGdldDRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYp
IGNvbnN0OwogICAgIFN0cmluZyBib3JkZXJTcGFjaW5nVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYpIGNvbnN0OwogICAgIFN0cmluZyBmb250VmFsdWUoKSBjb25zdDsKLSAgICBi
b29sIGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUlELCBTdHJp
bmdCdWlsZGVyJiByZXN1bHQpIGNvbnN0OworICAgIGJvb2wgYXBwZW5kRm9udExvbmdoYW5kVmFs
dWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgU3RyaW5n
JiB2YWx1ZSkgY29uc3Q7CiAKICAgICBib29sIHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KENTU1By
b3BlcnR5SUQpOwogICAgIGJvb2wgcHJvcGVydHlNYXRjaGVzKGNvbnN0IFByb3BlcnR5UmVmZXJl
bmNlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBlZjc1NGY1OTcwNGFhOWNjNzczZDFiZjU3
ZWYwYWQzYTFhZWZjYTJiLi5mYTcxYTRhODE1MjFlNjg4YjNiZGExODFkZGIxYzg5N2RkYzFlMzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKQEAgLTIwNzAsOCArMjA3MCwxMSBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAgaWYgKHBh
cnNlZFN0eWxlLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxDU1NW
YWx1ZT4gZm9udFZhbHVlID0gcGFyc2VkU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlGb250KTsKLSAgICBpZiAoZm9udFZhbHVlICYmIGZvbnRWYWx1ZS0+aXNJbmhlcml0ZWRW
YWx1ZSgpKQorICAgIFN0cmluZyBmb250VmFsdWUgPSBwYXJzZWRTdHlsZS0+Z2V0UHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUZvbnQpOworCisgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly9saXN0
cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy1odG1sLzIwMDlKdWwvMDk0Ny5odG1sLAor
ICAgIC8vIHRoZSAiaW5oZXJpdCIgYW5kICJpbml0aWFsIiB2YWx1ZXMgbXVzdCBiZSBpZ25vcmVk
LgorICAgIGlmIChmb250VmFsdWUgPT0gImluaGVyaXQiIHx8IGZvbnRWYWx1ZSA9PSAiaW5pdGlh
bCIpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBwYXJzZSBzdWNjZWVkZWQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYWI5MzJkY2QwMjY1YTJjYmQ4NGUxNTFjZjBkYTgyNDA4NmQ4ODY4NC4uMDEyMzA3OTliNTY2
MDFiNmJiOWM2MDk5YmYxMzAxZmJhYjFjNWE4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTExLTIzICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW5jb3JyZWN0IHZhbHVlIG9mIENTU1N0eWxlRGVjbGFyYXRpb24jbGVuZ3RoIHdoZW4gYSBz
aG9ydGhhbmQgcHJvcGVydHkgaXMgaW5oZXJpdCBvciBpbml0aWFsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGVjdGF0aW9ucyBnZXQgZml4ZWQgaW4g
c29tZSBjYXNlcy4KKworICAgICAgICAqIGNzczMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNp
bmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNp
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lz
Lmh0bWw6CisKIDIwMTItMTEtMjIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY3RybCtlbmQgaW4gZWRpdG9yIGRvZXMgbm90
IHNlbGVjdCB0aGUgbGFzdCBzeW1ib2wuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2Zs
ZXhib3gvZmxleC1wcm9wZXJ0eS1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nz
czMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IGFiOGNi
ZGY1NDVmYzE5ZWY0NmIwODNhMWY2NzAxMzgyNGViNTA3NTUuLjdiZWZiZTk5ODljMWIzNjcxYWNj
NTM0M2Q2N2VmMDQ5YWY0N2Q0N2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmxleGJv
eC9mbGV4LXByb3BlcnR5LXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Nz
czMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xMDcsNyAr
MTA3LDcgQEAgUEFTUyBmbGV4aXRlbS5zdHlsZS53ZWJraXRGbGV4IGlzICIwIDAgYXV0byIKIFBB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShmbGV4aXRlbSkud2Via2l0RmxleCBpcyAiMCAwIGF1dG8iCiBQ
QVNTIGZsZXhpdGVtLnN0eWxlLndlYmtpdEZsZXggaXMgImluaXRpYWwiCiBQQVNTIGdldENvbXB1
dGVkU3R5bGUoZmxleGl0ZW0pLndlYmtpdEZsZXggaXMgIjAgMSBhdXRvIgotRkFJTCBmbGV4aXRl
bS5zdHlsZS53ZWJraXRGbGV4IHNob3VsZCBiZSAwIDAgYXV0by4gV2FzIGluaXRpYWwuCitQQVNT
IGZsZXhpdGVtLnN0eWxlLndlYmtpdEZsZXggaXMgIjAgMCBhdXRvIgogUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGZsZXhpdGVtKS53ZWJraXRGbGV4IGlzICIwIDAgYXV0byIKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFy
c2luZy10ZXh0LWVtcGhhc2lzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Bh
cnNpbmctdGV4dC1lbXBoYXNpcy1leHBlY3RlZC50eHQKaW5kZXggMTMwNDczZjAxZTBjZTc5NmY2
MDQzOTlkODk5ZTM3NGYwZjVmYjNmNi4uMWYxZThkOGEyN2E4ZjBlZTJmZmNiYjg1YWE2ZWQ3YzY0
MGE2N2VkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVt
cGhhc2lzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXRl
eHQtZW1waGFzaXMtZXhwZWN0ZWQudHh0CkBAIC0zNiw4ICszNiw4IEBAIFBBU1M6ICctd2Via2l0
LXRleHQtZW1waGFzaXMtc3R5bGU6IG5vbmUgbm9uZTsnIHBhcnNlZCBhcyBbJycsICcnLCAnJywg
JyddCiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzLXN0eWxlOiAiY2hlZXNlIiBvcGVuOycg
cGFyc2VkIGFzIFsnJywgJycsICcnLCAnJ10KIFBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXMt
c3R5bGU6IG9wZW4gImNoZWVzZSI7JyBwYXJzZWQgYXMgWycnLCAnJywgJycsICcnXQogCi1QQVNT
OiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbml0aWFsJyBwYXJzZWQgYXMgWycnLCAnJywgJycs
ICdpbml0aWFsJ10KLVBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXM6IGluaGVyaXQnIHBhcnNl
ZCBhcyBbJycsICcnLCAnJywgJ2luaGVyaXQnXQorUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNp
czogaW5pdGlhbCcgcGFyc2VkIGFzIFsnaW5pdGlhbCcsICcnLCAnaW5pdGlhbCcsICdpbml0aWFs
J10KK1BBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXM6IGluaGVyaXQnIHBhcnNlZCBhcyBbJ2lu
aGVyaXQnLCAnJywgJ2luaGVyaXQnLCAnaW5oZXJpdCddCiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVt
cGhhc2lzOiByZWQnIHBhcnNlZCBhcyBbJ3JlZCcsICcnLCAnaW5pdGlhbCcsICdyZWQnXQogUEFT
UzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogImNoZWVzZSInIHBhcnNlZCBhcyBbJ2luaXRpYWwn
LCAnJywgJ2NoZWVzZScsICdjaGVlc2UnXQogUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczog
cmVkICJjaGVlc2UiJyBwYXJzZWQgYXMgWydyZWQnLCAnJywgJ2NoZWVzZScsICdjaGVlc2UgcmVk
J10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNp
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0bWwK
aW5kZXggOTBiNWQ3YzAzNTA4NGM1ZDZjOTI1NjdiODZhMDNjOTI0MTg3NWJlMy4uMzJmOGYyNDUw
MGJkYTAxNzc1ODdiZDVjODhhOTI5Njg4ZjQ0M2ZiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0bWwKQEAgLTY3LDggKzY3LDggQEAKICAgICB0
ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXMtc3R5bGU6IG9wZW4gImNoZWVzZSI7JywgJycsICcn
LCAnJyk7CiAKICAgICBsb2coIiIpOwotICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczog
aW5pdGlhbCcsICcnLCAnJywgJycsICdpbml0aWFsJyk7Ci0gICAgdGVzdCgnLXdlYmtpdC10ZXh0
LWVtcGhhc2lzOiBpbmhlcml0JywgJycsICcnLCAnJywgJ2luaGVyaXQnKTsKKyAgICB0ZXN0KCct
d2Via2l0LXRleHQtZW1waGFzaXM6IGluaXRpYWwnLCAnaW5pdGlhbCcsICcnLCAnaW5pdGlhbCcs
ICdpbml0aWFsJyk7CisgICAgdGVzdCgnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0Jywg
J2luaGVyaXQnLCAnJywgJ2luaGVyaXQnLCAnaW5oZXJpdCcpOwogICAgIHRlc3QoJy13ZWJraXQt
dGV4dC1lbXBoYXNpczogcmVkJywgJ3JlZCcsICcnLCAnaW5pdGlhbCcsICdyZWQnKTsKICAgICB0
ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6ICJjaGVlc2UiJywgJ2luaXRpYWwnLCAnJywgJ2No
ZWVzZScsICdjaGVlc2UnKTsKICAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6IHJlZCAi
Y2hlZXNlIicsICdyZWQnLCAnJywgJ2NoZWVzZScsICdjaGVlc2UgcmVkJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175995</attachid>
            <date>2012-11-26 06:34:59 -0800</date>
            <delta_ts>2012-11-27 03:58:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73002-20121126183236.patch</filename>
            <type>text/plain</type>
            <size>26749</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVhMWU2MzZiMTNjZWUz
YWMyZDlhOTdiZDBiMGYwNDE5MjRjMmUzNy4uZGQwNzZiMjRmMmY5MjJmZjNlY2M3NzdmNzkxN2Y5
NGNhNTFlMTRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTExLTI2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5jb3JyZWN0
IHZhbHVlIG9mIENTU1N0eWxlRGVjbGFyYXRpb24jbGVuZ3RoIHdoZW4gYSBzaG9ydGhhbmQgcHJv
cGVydHkgaXMgaW5oZXJpdCBvciBpbml0aWFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsICJpbmhlcml0IiBhbmQgImluaXRp
YWwiIHNob3J0aGFuZHMgd291bGQgZ2V0IGFkZGVkIHRvIHRoZSBTdHlsZVByb3BlcnR5U2V0IGFz
LWlzLCB0aGVpciBsb25naGFuZHMgdW5zcGVjaWZpZWQuCisgICAgICAgIFRoaXMgcGF0Y2ggdGFj
a2xlcyB0d28gYXNwZWN0cyBvZiB0aGUgcHJvYmxlbToKKyAgICAgICAgLSBXaGVuIHBhcnNpbmcg
ImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5kcywgdGhlaXIgbG9uZ2hhbmRzIGFyZSBh
ZGRlZCB0byB0aGUgcHJvcGVydHkgc2V0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzLgor
ICAgICAgICAtIFdoZW4gcXVlcnlpbmcgImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5k
cywgdGhlaXIgdmFsdWVzIGFyZSByZWNvbnN0cnVjdGVkIGZyb20gdGhlIGxvbmdoYW5kcyBhcyB1
c3VhbCwgYnV0IGlmIGFsbCBvZiB0aGUgbG9uZ2hhbmRzCisgICAgICAgICAgYXJlIGZvdW5kIHRv
IGhhdmUgdGhlIHNhbWUgZXhwbGljaXQgImluaXRpYWwiIG9yICJpbmhlcml0IiB2YWx1ZSwgdGhl
IHJlc3BlY3RpdmUgc2luZ2xlIHZhbHVlIGlzIHJldHVybmVkIGFzIHRoZSBzaG9ydGhhbmQgdmFs
dWUuCisKKyAgICAgICAgV2hlbiByZWNvbnN0cnVjdGluZyBzaG9ydGhhbmRzLCBhICJjb21tb24g
dmFsdWUiIGlzIHRyYWNrZWQuIElmIGFsbCBsb25naGFuZHMgaW52b2x2ZWQgaGF2ZSB0aGUgc2Ft
ZSBleHBsaWNpdCB2YWx1ZSwgaXQgYmVjb21lcyB0aGUKKyAgICAgICAgImNvbW1vbiB2YWx1ZSIs
IG90aGVyd2lzZSBpdCBpcyBhIFN0cmluZygpLiBUaGUgImluaGVyaXQiIG9yICJpbml0aWFsIiBj
b21tb24gdmFsdWUgdWx0aW1hdGVseSBiZWNvbWVzIHRoZSBzaG9ydGhhbmQgdmFsdWUKKyAgICAg
ICAgKGV4Y2VwdCBmb3IgdGhlICJiYWNrZ3JvdW5kLXBvc2l0aW9uIiBzaG9ydGhhbmQsIHdoaWNo
IGlzIGEgc3BlY2lhbCBjYXNlKS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOiBQYXJzZSBzaG9ydGhhbmRzJyAiaW5p
dGlhbCIgYW5kICJpbmhlcml0IiB2YWx1ZXMgdXNpbmcgdGhlIENTU1BhcnNlci4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKTogQWRkIHNp
bXBsZSBwcm9wZXJ0eSBvciBhbGwgc2hhcnRoYW5kJ3MgbG9uZ2hhbmRzIHdpdGggZ2l2ZW4gdmFs
dWUgYW5kIHByaW9yaXR5LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVl
KTogRm9yICJpbml0aWFsIiBhbmQgImluaGVyaXQiIHNob3J0aGFuZHMsIGFkZCB0aGVpciBsb25n
aGFuZHMgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZSwgbm90IHRoZSBzaG9ydGhhbmRzIHByb3Bl
ci4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6IEFkZCBhZGRFeHBhbmRlZFByb3BlcnR5Rm9y
VmFsdWUoKS4KKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc0luaXRpYWxPckluaGVyaXQpOiBDaGVjayBpZiB0aGUgdmFsdWUgaXMgImluaXRp
YWwiIG9yICJpbmhlcml0Ii4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVQcm9wZXJ0eVNldDo6YXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KTogTW9k
aWZpZWQgdG8gdHJhY2sgdGhlIGNvbW1vbiB2YWx1ZSBmb3IgdGhlICJmb250IiBzaG9ydGhhbmQu
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpmb250VmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMpOiBSZXR1cm4g
ImluaGVyaXQiIG9yICJpbml0aWFsIiBpZiBhbGwgNCB2YWx1ZXMgYXJlIGV4cGxpY2l0bHkgImlu
aGVyaXQiIG9yICJpbml0aWFsIi4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6
OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6IFVzZSB0aGUgY29tbW9uIHZhbHVlIGFwcHJvYWNo
IGZvciBsYXllcmVkIHNob3J0aGFuZHMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5
U2V0OjpnZXRTaG9ydGhhbmRWYWx1ZSk6IERpdHRvIGZvciBvcmRpbmFyeSBzaG9ydGhhbmRzLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyUHJvcGVydHlWYWx1ZSk6
IERpdHRvIGZvciB0aGUgImJvcmRlciIgc2hvcnRoYW5kLgorICAgICAgICAqIGNzcy9TdHlsZVBy
b3BlcnR5U2V0Lmg6IE1vZGlmeSB0aGUgYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0
KCkgc2lnbmF0dXJlLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dEZvbnQpOiBOb3cgdGhhdCAiaW5oZXJpdCIgYW5kICJpbml0aWFsIiBzaG9ydGhhbmRzIGFyZSBy
ZXByZXNlbnRlZCBieSB0aGVpciBsb25naGFuZHMsCisgICAgICAgIHdlIG5lZWQgdG8gY2hlY2sg
dGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgImZvbnQiIHNob3J0aGFuZCBmb3IgYmVpbmcgImluaGVy
aXQiIG9yICJpbml0aWFsIiBpbnN0ZWFkOiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKCkgbm8gbG9uZ2Vy
IHdvcmtzLAorICAgICAgICBzaW5jZSB0aGUgc2hvcnRoYW5kIGl0c2VsZiBpcyBubyBsb25nZXIg
YWRkZWQgdG8gdGhlIFN0eWxlUHJvcGVydHlTZXQuCisKIDIwMTItMTEtMjYgIEtlbnRhcm8gSGFy
YSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gUmVtb3ZlIFdvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA3Y2ExNTVj
NWJhZmExNzNjNGZlN2YyYzk0MDc2OTAzYmJkNmE5M2E2Li4wYTBmMWQ0MTY0NTgzYzU4MTNhZTFk
YzM3ZWMyMDdiOTIzNDU3NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTA4Niw4
ICsxMDg2LDE2IEBAIHN0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlT
ZXQqIGRlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiB7CiAgICAgQVNTRVJUKCFzdHJp
bmcuaXNFbXB0eSgpKTsKIAotICAgIGlmICghaXNLZXl3b3JkUHJvcGVydHlJRChwcm9wZXJ0eUlk
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghaXNLZXl3b3JkUHJvcGVydHlJRChw
cm9wZXJ0eUlkKSkgeworICAgICAgICAvLyBBbGwgcHJvcGVydGllcyBhY2NlcHQgdGhlIHZhbHVl
cyBvZiAiaW5pdGlhbCIgYW5kICJpbmhlcml0Ii4KKyAgICAgICAgU3RyaW5nIGxvd2VyQ2FzZVN0
cmluZyA9IHN0cmluZy5sb3dlcigpOworICAgICAgICBpZiAobG93ZXJDYXNlU3RyaW5nICE9ICJp
bml0aWFsIiAmJiBsb3dlckNhc2VTdHJpbmcgIT0gImluaGVyaXQiKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIC8vIFBhcnNlIGluaXRpYWwvaW5oZXJpdCBzaG9ydGhhbmRz
IHVzaW5nIHRoZSBDU1NQYXJzZXIuCisgICAgICAgIGlmIChzaG9ydGhhbmRGb3JQcm9wZXJ0eShw
cm9wZXJ0eUlkKS5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAK
ICAgICBDU1NQYXJzZXJTdHJpbmcgY3NzU3RyaW5nOwogICAgIGNzc1N0cmluZy5pbml0KHN0cmlu
Zyk7CkBAIC0xNjg5LDYgKzE2OTcsMjIgQEAgaW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWxpZFByaW1pdGl2ZShpbnQgaWRlbnRpZmkKICAgICBy
ZXR1cm4gMDsKIH0KIAordm9pZCBDU1NQYXJzZXI6OmFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJv
b2wgaW1wb3J0YW50KQoreworICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0
aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BJZCk7CisgICAgdW5zaWduZWQgc2hvcnRo
YW5kTGVuZ3RoID0gc2hvcnRoYW5kLmxlbmd0aCgpOworICAgIGlmICghc2hvcnRoYW5kTGVuZ3Ro
KSB7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgcHJwVmFsdWUsIGltcG9ydGFudCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gcHJw
VmFsdWU7CisgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKKyAgICBjb25z
dCBDU1NQcm9wZXJ0eUlEKiBsb25naGFuZHMgPSBzaG9ydGhhbmQucHJvcGVydGllcygpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmRMZW5ndGg7ICsraSkKKyAgICAgICAg
YWRkUHJvcGVydHkobG9uZ2hhbmRzW2ldLCB2YWx1ZSwgaW1wb3J0YW50KTsKK30KKwogYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogewogICAgIGlmICghbV92YWx1ZUxpc3QpCkBAIC0xNzEwLDEzICsxNzM0LDEzIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhlcml0KSB7CiAgICAgICAgIGlmIChudW0gIT0g
MSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYWRkUHJvcGVydHkocHJvcElk
LCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAg
ICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJvcElkLCBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJbmhlcml0ZWRWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVJbml0aWFsKSB7CiAgICAgICAgIGlm
IChudW0gIT0gMSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYWRkUHJvcGVy
dHkocHJvcElkLCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgpLCBp
bXBvcnRhbnQpOworICAgICAgICBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUocHJvcElkLCBj
c3NWYWx1ZVBvb2woKS5jcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCAy
YjBkODU0MTkyZDE3Y2M0NGNmNTE5Y2FmZTBkZGZjZDRiOWM3NjhhLi5kMTJmNzJiYzUyZTZlNGEy
NzY4ZTYzNDg4ZWU1ZTNiNzE1NzRjNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC05Miw2
ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNl
KTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSk7CiAgICAgYm9vbCBo
YXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5
KCk7IH0KKyAgICB2b2lkIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wpOwogCiAgICAgYm9vbCBwYXJzZVZh
bHVlKENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlU2hvcnRo
YW5kKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sIGlt
cG9ydGFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggYzNm
NmRjODBkZDMwNzc2Y2EwMWY5MDhmMzIyOTUxYjhkOGIxYjY5NC4uOWRmNTlhMjhiMjllMWUyOTc2
NTdhNDE3ZTcyMzc0M2I2ODVkYzI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmNwcApAQCAtNjAsNiArNjAsMTMgQEAgc3RhdGljIHNpemVfdCBzaXplRm9ySW1tdXRhYmxl
U3R5bGVQcm9wZXJ0eVNldFdpdGhQcm9wZXJ0eUNvdW50KHVuc2lnbmVkIGNvdW50KQogICAgIHJl
dHVybiBzaXplb2YoSW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCkgLSBzaXplb2Yodm9pZCopICsg
c2l6ZW9mKENTU1ZhbHVlKikgKiBjb3VudCArIHNpemVvZihTdHlsZVByb3BlcnR5TWV0YWRhdGEp
ICogY291bnQ7CiB9CiAKK3N0YXRpYyBib29sIGlzSW5pdGlhbE9ySW5oZXJpdChjb25zdCBTdHJp
bmcmIHZhbHVlKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBpbml0aWFsLCAo
ImluaXRpYWwiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGluaGVyaXQsICgi
aW5oZXJpdCIpKTsKKyAgICByZXR1cm4gdmFsdWUubGVuZ3RoKCkgPT0gNyAmJiAodmFsdWUgPT0g
aW5pdGlhbCB8fCB2YWx1ZSA9PSBpbmhlcml0KTsKK30KKwogUGFzc1JlZlB0cjxTdHlsZVByb3Bl
cnR5U2V0PiBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGVJbW11dGFibGUoY29uc3QgQ1NTUHJvcGVy
dHkqIHByb3BlcnRpZXMsIHVuc2lnbmVkIGNvdW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUpCiB7CiAgICAgdm9pZCogc2xvdCA9IFdURjo6ZmFzdE1hbGxvYyhzaXplRm9ySW1tdXRhYmxl
U3R5bGVQcm9wZXJ0eVNldFdpdGhQcm9wZXJ0eUNvdW50KGNvdW50KSk7CkBAIC0yMTgsMTQgKzIy
NSwxNiBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyU3BhY2luZ1ZhbHVlKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aAogICAgIHJldHVybiBob3Jpem9udGFsVmFs
dWVDU1NUZXh0ICsgJyAnICsgdmVydGljYWxWYWx1ZUNTU1RleHQ7CiB9CiAKLWJvb2wgU3R5bGVQ
cm9wZXJ0eVNldDo6YXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgU3RyaW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdAorYm9vbCBTdHlsZVBy
b3BlcnR5U2V0OjphcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBTdHJpbmdCdWlsZGVyJiByZXN1bHQsIFN0cmluZyYgY29tbW9uVmFsdWUp
IGNvbnN0CiB7CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZpbmRQcm9wZXJ0eUluZGV4
KHByb3BlcnR5SUQpOwogICAgIGlmIChmb3VuZFByb3BlcnR5SW5kZXggPT0gLTEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gQWxsIGxvbmdoYW5kcyBtdXN0IGhhdmUgYXQgbGVhc3QgaW1wbGlj
aXQgdmFsdWVzIGlmICJmb250IiBpcyBzcGVjaWZpZWQuCiAKLSAgICBpZiAocHJvcGVydHlBdChm
b3VuZFByb3BlcnR5SW5kZXgpLmlzSW1wbGljaXQoKSkKKyAgICBpZiAocHJvcGVydHlBdChmb3Vu
ZFByb3BlcnR5SW5kZXgpLmlzSW1wbGljaXQoKSkgeworICAgICAgICBjb21tb25WYWx1ZSA9IFN0
cmluZygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICBjaGFyIHByZWZpeCA9
ICdcMCc7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CkBAIC0yNDUsNyArMjU0LDEwIEBAIGJv
b2wgU3R5bGVQcm9wZXJ0eVNldDo6YXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJCiAKICAgICBpZiAocHJlZml4ICYmICFyZXN1bHQuaXNFbXB0
eSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kKHByZWZpeCk7Ci0gICAgcmVzdWx0LmFwcGVuZChw
cm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKS0+Y3NzVGV4dCgpKTsKKyAgICBT
dHJpbmcgdmFsdWUgPSBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKS0+Y3Nz
VGV4dCgpOworICAgIHJlc3VsdC5hcHBlbmQodmFsdWUpOworICAgIGlmICghY29tbW9uVmFsdWUu
aXNOdWxsKCkgJiYgY29tbW9uVmFsdWUgIT0gdmFsdWUpCisgICAgICAgIGNvbW1vblZhbHVlID0g
U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI2MCwyMiArMjcyLDI1IEBAIFN0
cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpmb250VmFsdWUoKSBjb25zdAogICAgIGlmIChmb250U2l6
ZVByb3BlcnR5LmlzSW1wbGljaXQoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
KyAgICBTdHJpbmcgY29tbW9uVmFsdWUgPSBmb250U2l6ZVByb3BlcnR5LnZhbHVlKCktPmNzc1Rl
eHQoKTsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBib29sIHN1Y2Nlc3MgPSB0cnVl
OwotICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1By
b3BlcnR5Rm9udFN0eWxlLCByZXN1bHQpOwotICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdo
YW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIHJlc3VsdCk7Ci0gICAg
c3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlG
b250V2VpZ2h0LCByZXN1bHQpOworICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFs
dWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5Rm9udFN0eWxlLCByZXN1bHQsIGNvbW1vblZhbHVlKTsK
KyAgICBzdWNjZXNzICY9IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9w
ZXJ0eUZvbnRWYXJpYW50LCByZXN1bHQsIGNvbW1vblZhbHVlKTsKKyAgICBzdWNjZXNzICY9IGFw
cGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIHJl
c3VsdCwgY29tbW9uVmFsdWUpOwogICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICcpOwogICAgIHJlc3VsdC5hcHBlbmQoZm9udFNpemVQcm9wZXJ0eS52
YWx1ZSgpLT5jc3NUZXh0KCkpOwotICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFs
dWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5TGluZUhlaWdodCwgcmVzdWx0KTsKLSAgICBzdWNjZXNz
ICY9IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRGYW1p
bHksIHJlc3VsdCk7CisgICAgc3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhw
bGljaXQoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCByZXN1bHQsIGNvbW1vblZhbHVlKTsKKyAgICBz
dWNjZXNzICY9IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZv
bnRGYW1pbHksIHJlc3VsdCwgY29tbW9uVmFsdWUpOwogICAgIGlmICghc3VjY2VzcykgewogICAg
ICAgICAvLyBBbiBpbnZhbGlkICJmb250IiB2YWx1ZSBoYXMgYmVlbiBidWlsdCAoc2hvdWxkIG5l
dmVyIGhhcHBlbiwgYXMgYXQgbGVhc3QgaW1wbGljaXQgdmFsdWVzCiAgICAgICAgIC8vIGZvciBt
YW5kYXRvcnkgbG9uZ2hhbmRzIGFyZSBhbHdheXMgZm91bmQgaW4gdGhlIHN0eWxlKSwgcmVwb3J0
IGVtcHR5IHZhbHVlIGluc3RlYWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CisgICAgaWYgKGlzSW5pdGlhbE9ySW5o
ZXJpdChjb21tb25WYWx1ZSkpCisgICAgICAgIHJldHVybiBjb21tb25WYWx1ZTsKICAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKQEAgLTI5OCw4ICszMTMsMTcgQEAgU3RyaW5nIFN0
eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYg
c2hvcnRoYW5kKSBjb24KICAgICAvLyBBbGwgNCBwcm9wZXJ0aWVzIG11c3QgYmUgc3BlY2lmaWVk
LgogICAgIGlmICghdG9wLnZhbHVlKCkgfHwgIXJpZ2h0LnZhbHVlKCkgfHwgIWJvdHRvbS52YWx1
ZSgpIHx8ICFsZWZ0LnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBpZiAo
dG9wLnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwgcmlnaHQudmFsdWUoKS0+aXNJbml0aWFs
VmFsdWUoKSB8fCBib3R0b20udmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSB8fCBsZWZ0LnZhbHVl
KCktPmlzSW5pdGlhbFZhbHVlKCkpCisKKyAgICBpZiAodG9wLmlzSW5oZXJpdGVkKCkgJiYgcmln
aHQuaXNJbmhlcml0ZWQoKSAmJiBib3R0b20uaXNJbmhlcml0ZWQoKSAmJiBsZWZ0LmlzSW5oZXJp
dGVkKCkpCisgICAgICAgIHJldHVybiBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVJbmhlcml0KTsKKwor
ICAgIGlmICh0b3AudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSB8fCByaWdodC52YWx1ZSgpLT5p
c0luaXRpYWxWYWx1ZSgpIHx8IGJvdHRvbS52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpIHx8IGxl
ZnQudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBpZiAodG9wLnZhbHVlKCkt
PmlzSW5pdGlhbFZhbHVlKCkgJiYgcmlnaHQudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSAmJiBi
b3R0b20udmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSAmJiBsZWZ0LnZhbHVlKCktPmlzSW5pdGlh
bFZhbHVlKCkgJiYgIXRvcC5pc0ltcGxpY2l0KCkpIHsKKyAgICAgICAgICAgIC8vIEFsbCBjb21w
b25lbnRzIGFyZSAiaW5pdGlhbCIgYW5kICJ0b3AiIGlzIG5vdCBpbXBsaWNpdC4KKyAgICAgICAg
ICAgIHJldHVybiBnZXRWYWx1ZU5hbWUoQ1NTVmFsdWVJbml0aWFsKTsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQogICAgIGlmICh0b3AuaXNJbXBvcnRhbnQoKSAh
PSByaWdodC5pc0ltcG9ydGFudCgpIHx8IHJpZ2h0LmlzSW1wb3J0YW50KCkgIT0gYm90dG9tLmlz
SW1wb3J0YW50KCkgfHwgYm90dG9tLmlzSW1wb3J0YW50KCkgIT0gbGVmdC5pc0ltcG9ydGFudCgp
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTM0NCw2ICszNjgsOSBAQCBTdHJpbmcg
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBTdHJpbmcgY29tbW9uVmFs
dWU7CisgICAgYm9vbCBjb21tb25WYWx1ZUluaXRpYWxpemVkID0gZmFsc2U7CisKICAgICAvLyBO
b3cgc3RpdGNoIHRoZSBwcm9wZXJ0aWVzIHRvZ2V0aGVyLiAgSW1wbGljaXQgaW5pdGlhbCB2YWx1
ZXMgYXJlIGZsYWdnZWQgYXMgc3VjaCBhbmQKICAgICAvLyBjYW4gc2FmZWx5IGJlIG9taXR0ZWQu
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1MYXllcnM7IGkrKykgewpAQCAtNDAwLDYg
KzQyNyw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZVRleHQ7CiAgICAgICAgICAgICBp
ZiAodmFsdWUgJiYgIXZhbHVlLT5pc0ltcGxpY2l0SW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIWxheWVyUmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAg
bGF5ZXJSZXN1bHQuYXBwZW5kKCcgJyk7CkBAIC00MTQsMTUgKzQ0MiwyOCBAQCBTdHJpbmcgU3R5
bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmCiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1c2VSZXBlYXRZU2hvcnRo
YW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHVzZVJlcGVhdFlTaG9ydGhhbmQgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICAgICAgbGF5ZXJSZXN1bHQuYXBwZW5kKGdldFZhbHVlTmFtZShDU1NW
YWx1ZVJlcGVhdFkpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVzZVNpbmdsZVdvcmRT
aG9ydGhhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgdXNlU2luZ2xlV29yZFNob3J0aGFuZCA9
IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBsYXllclJlc3VsdC5hcHBlbmQodmFsdWUtPmNz
c1RleHQoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxh
eWVyUmVzdWx0LmFwcGVuZCh2YWx1ZS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBpZiAodXNlU2luZ2xlV29yZFNob3J0aGFuZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVzZVNpbmdsZVdvcmRTaG9ydGhhbmQgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWVUZXh0ID0gdmFsdWUtPmNzc1RleHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbGF5ZXJSZXN1bHQuYXBwZW5kKHZhbHVlVGV4dCk7CisgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbal0gPT0g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorICAgICAgICAgICAgICAgIGlmIChzaG9y
dGhhbmQucHJvcGVydGllcygpW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSkg
ewogICAgICAgICAgICAgICAgICAgICBmb3VuZEJhY2tncm91bmRQb3NpdGlvbllDU1NQcm9wZXJ0
eSA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZC1wb3NpdGlvbiBp
cyBhIHNwZWNpYWwgY2FzZTogaWYgb25seSB0aGUgZmlyc3Qgb2Zmc2V0IGlzIHNwZWNpZmllZCwK
KyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHNlY29uZCBvbmUgZGVmYXVsdHMgdG8gImNlbnRl
ciIsIG5vdCB0aGUgc2FtZSB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1vblZh
bHVlSW5pdGlhbGl6ZWQgJiYgY29tbW9uVmFsdWUgIT0gImluaXRpYWwiICYmIGNvbW1vblZhbHVl
ICE9ICJpbmhlcml0IikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vblZhbHVlID0gU3Ry
aW5nKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIWNvbW1vblZhbHVlSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICBjb21tb25WYWx1
ZSA9IHZhbHVlVGV4dDsKKyAgICAgICAgICAgICAgICBjb21tb25WYWx1ZUluaXRpYWxpemVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWNvbW1vblZhbHVlLmlzTnVsbCgpICYmIGNv
bW1vblZhbHVlICE9IHZhbHVlVGV4dCkKKyAgICAgICAgICAgICAgICBjb21tb25WYWx1ZSA9IFN0
cmluZygpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFsYXllclJlc3VsdC5pc0VtcHR5KCkp
IHsKQEAgLTQzMSw2ICs0NzIsMTAgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVy
ZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJgogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChsYXllclJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBp
ZiAoaXNJbml0aWFsT3JJbmhlcml0KGNvbW1vblZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGNvbW1v
blZhbHVlOworCiAgICAgaWYgKHJlc3VsdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CkBAIC00MzgsMTkgKzQ4MywyOCBA
QCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmCiAKIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRT
aG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNv
bnN0CiB7CisgICAgU3RyaW5nIGNvbW1vblZhbHVlOwogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaG9ydGhhbmQubGVuZ3RoKCk7ICsraSkg
ewogICAgICAgICBpZiAoIWlzUHJvcGVydHlJbXBsaWNpdChzaG9ydGhhbmQucHJvcGVydGllcygp
W2ldKSkgewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5
Q1NTVmFsdWUoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtpXSk7CiAgICAgICAgICAgICBpZiAoIXZh
bHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgICAgIFN0cmlu
ZyB2YWx1ZVRleHQgPSB2YWx1ZS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgaWYgKCFpKQorICAg
ICAgICAgICAgICAgIGNvbW1vblZhbHVlID0gdmFsdWVUZXh0OworICAgICAgICAgICAgZWxzZSBp
ZiAoIWNvbW1vblZhbHVlLmlzTnVsbCgpICYmIGNvbW1vblZhbHVlICE9IHZhbHVlVGV4dCkKKyAg
ICAgICAgICAgICAgICBjb21tb25WYWx1ZSA9IFN0cmluZygpOwogICAgICAgICAgICAgaWYgKHZh
bHVlLT5pc0luaXRpYWxWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUtPmNzc1RleHQoKSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWVUZXh0KTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBjb21tb25WYWx1ZSA9IFN0cmluZygpOwogICAgIH0KKyAgICBp
ZiAoaXNJbml0aWFsT3JJbmhlcml0KGNvbW1vblZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGNvbW1v
blZhbHVlOwogICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwpAQCAtNDg1LDYgKzUzOSw3IEBAIFN0
cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Ym9yZGVyUHJv
cGVydHlWYWx1ZShDb21tb25WYWx1ZU1vZGUgdmFsdWVNb2RlKSBjb25zdAogewogICAgIGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQgcHJvcGVydGllc1szXSA9IHsgYm9yZGVyV2lkdGhTaG9y
dGhhbmQoKSwgYm9yZGVyU3R5bGVTaG9ydGhhbmQoKSwgYm9yZGVyQ29sb3JTaG9ydGhhbmQoKSB9
OworICAgIFN0cmluZyBjb21tb25WYWx1ZTsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7ICsr
aSkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVzW2ld
KTsKQEAgLTQ5NCwxMiArNTQ5LDE4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJQ
cm9wZXJ0eVZhbHVlKENvbW1vblZhbHVlTW9kZSB2YWx1ZU1vZGUpIGNvbnN0CiAgICAgICAgICAg
ICBBU1NFUlQodmFsdWVNb2RlID09IE9taXRVbmNvbW1vblZhbHVlcyk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQorICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICBjb21tb25W
YWx1ZSA9IHZhbHVlOworICAgICAgICBlbHNlIGlmICghY29tbW9uVmFsdWUuaXNOdWxsKCkgJiYg
Y29tbW9uVmFsdWUgIT0gdmFsdWUpCisgICAgICAgICAgICBjb21tb25WYWx1ZSA9IFN0cmluZygp
OwogICAgICAgICBpZiAodmFsdWUgPT0gImluaXRpYWwiKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7CiAgICAgfQorICAgIGlmIChp
c0luaXRpYWxPckluaGVyaXQoY29tbW9uVmFsdWUpKQorICAgICAgICByZXR1cm4gY29tbW9uVmFs
dWU7CiAgICAgcmV0dXJuIHJlc3VsdC5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHJlc3VsdC50b1N0
cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCBjYmU3
ZjE4OTdlMWI2MDc4NDQwYjg3ZjkwNTRhZmQ2YzRhMzU2NTMwLi40NTZmN2VmMmU0OGU2MTZlMGRh
ZjFmMjM4NTYyMjA0NjVmOTMxNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXQ0VmFsdWVzKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBTdHJpbmcgYm9yZGVyU3Bh
Y2luZ1ZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBTdHJp
bmcgZm9udFZhbHVlKCkgY29uc3Q7Ci0gICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlm
RXhwbGljaXQoQ1NTUHJvcGVydHlJRCwgU3RyaW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdDsKKyAg
ICBib29sIGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUlELCBT
dHJpbmdCdWlsZGVyJiByZXN1bHQsIFN0cmluZyYgdmFsdWUpIGNvbnN0OwogCiAgICAgYm9vbCBy
ZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKICAgICBib29sIHByb3BlcnR5
TWF0Y2hlcyhjb25zdCBQcm9wZXJ0eVJlZmVyZW5jZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggZWY3NTRmNTk3MDRhYTljYzc3M2QxYmY1N2VmMGFkM2ExYWVmY2EyYi4uZmE3MWE0YTgxNTIx
ZTY4OGIzYmRhMTgxZGRiMWM4OTdkZGMxZTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0yMDcwLDgg
KzIwNzAsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3Qg
U3RyaW5nJiBuZXdGb250KQogICAgIGlmIChwYXJzZWRTdHlsZS0+aXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGZvbnRWYWx1ZSA9IHBhcnNlZFN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udCk7Ci0gICAgaWYgKGZvbnRWYWx1
ZSAmJiBmb250VmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKSkKKyAgICBTdHJpbmcgZm9udFZhbHVl
ID0gcGFyc2VkU3R5bGUtPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250KTsKKworICAg
IC8vIEFjY29yZGluZyB0byBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9wdWJs
aWMtaHRtbC8yMDA5SnVsLzA5NDcuaHRtbCwKKyAgICAvLyB0aGUgImluaGVyaXQiIGFuZCAiaW5p
dGlhbCIgdmFsdWVzIG11c3QgYmUgaWdub3JlZC4KKyAgICBpZiAoZm9udFZhbHVlID09ICJpbmhl
cml0IiB8fCBmb250VmFsdWUgPT0gImluaXRpYWwiKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBUaGUgcGFyc2Ugc3VjY2VlZGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1NzZhMTI1ZTkzZGZhOGI0YWMxNmI3Njk3
ZDhkNzViOWI0ODE3YjIuLmVmODRkNzQxMDEzMzRmMWY1NjQyOTQ3N2EyZDczYWE2ZDk0ODNkZjYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMS0yNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFw
YXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluY29ycmVjdCB2YWx1ZSBvZiBDU1NTdHls
ZURlY2xhcmF0aW9uI2xlbmd0aCB3aGVuIGEgc2hvcnRoYW5kIHByb3BlcnR5IGlzIGluaGVyaXQg
b3IgaW5pdGlhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzMwMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBlY3RhdGlvbnMgZ2V0IGZpeGVkIGluIHNvbWUgY2FzZXMuCisKKyAgICAgICAgKiBjc3Mz
L2ZsZXhib3gvZmxleC1wcm9wZXJ0eS1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2Nzcy9pbmhlcml0LWluaXRpYWwtc2hvcnRoYW5kLXZhbHVlcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2luaGVyaXQtaW5pdGlhbC1zaG9ydGhhbmQtdmFsdWVz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0
bWw6CisKIDIwMTItMTEtMjYgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTGF5b3V0IFRlc3QgcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9jYWxlbmRh
ci1waWNrZXIvd2Vlay1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbCBpcyBmYWlsaW5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvZmxleC1wcm9wZXJ0eS1wYXJzaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNp
bmctZXhwZWN0ZWQudHh0CmluZGV4IGFiOGNiZGY1NDVmYzE5ZWY0NmIwODNhMWY2NzAxMzgyNGVi
NTA3NTUuLjdiZWZiZTk5ODljMWIzNjcxYWNjNTM0M2Q2N2VmMDQ5YWY0N2Q0N2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNpbmctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNp
bmctZXhwZWN0ZWQudHh0CkBAIC0xMDcsNyArMTA3LDcgQEAgUEFTUyBmbGV4aXRlbS5zdHlsZS53
ZWJraXRGbGV4IGlzICIwIDAgYXV0byIKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShmbGV4aXRlbSku
d2Via2l0RmxleCBpcyAiMCAwIGF1dG8iCiBQQVNTIGZsZXhpdGVtLnN0eWxlLndlYmtpdEZsZXgg
aXMgImluaXRpYWwiCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZmxleGl0ZW0pLndlYmtpdEZsZXgg
aXMgIjAgMSBhdXRvIgotRkFJTCBmbGV4aXRlbS5zdHlsZS53ZWJraXRGbGV4IHNob3VsZCBiZSAw
IDAgYXV0by4gV2FzIGluaXRpYWwuCitQQVNTIGZsZXhpdGVtLnN0eWxlLndlYmtpdEZsZXggaXMg
IjAgMCBhdXRvIgogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGZsZXhpdGVtKS53ZWJraXRGbGV4IGlz
ICIwIDAgYXV0byIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5oZXJpdC1pbml0aWFsLXNob3J0aGFuZC12YWx1ZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5oZXJpdC1pbml0aWFsLXNob3J0
aGFuZC12YWx1ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1MTRkOTI1NDFjNDA2YmRkOWM4
MjdmZmM0ZmIyZTY2ODlkNmU2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9pbmhlcml0LWluaXRpYWwtc2hvcnRoYW5kLXZhbHVlcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0MCBAQAorUEFTUyB0ZXN0KCdiYWNrZ3JvdW5kJykgaXMgImluaGVyaXQsIGluaXRpYWwi
CitQQVNTIHRlc3QoJ2JhY2tncm91bmQtcG9zaXRpb24nKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIK
K1BBU1MgdGVzdCgnYmFja2dyb3VuZC1yZXBlYXQnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BB
U1MgdGVzdCgnYm9yZGVyJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2JvcmRl
ci1ib3R0b20nKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnYm9yZGVyLWNvbG9y
JykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2JvcmRlci1sZWZ0JykgaXMgImlu
aGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2JvcmRlci1yYWRpdXMnKSBpcyAiaW5oZXJpdCwg
aW5pdGlhbCIKK1BBU1MgdGVzdCgnYm9yZGVyLXJpZ2h0JykgaXMgImluaGVyaXQsIGluaXRpYWwi
CitQQVNTIHRlc3QoJ2JvcmRlci1zcGFjaW5nJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNT
IHRlc3QoJ2JvcmRlci1zdHlsZScpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCdi
b3JkZXItdG9wJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2JvcmRlci13aWR0
aCcpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCdsaXN0LXN0eWxlJykgaXMgImlu
aGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2ZvbnQnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIK
K1BBU1MgdGVzdCgnbWFyZ2luJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ291
dGxpbmUnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnb3ZlcmZsb3cnKSBpcyAi
aW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgncGFkZGluZycpIGlzICJpbmhlcml0LCBpbml0
aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtYW5pbWF0aW9uJykgaXMgImluaGVyaXQsIGluaXRpYWwi
CitQQVNTIHRlc3QoJ3dlYmtpdC1ib3JkZXItYWZ0ZXInKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIK
K1BBU1MgdGVzdCgnd2Via2l0LWJvcmRlci1iZWZvcmUnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIK
K1BBU1MgdGVzdCgnd2Via2l0LWJvcmRlci1lbmQnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BB
U1MgdGVzdCgnd2Via2l0LWJvcmRlci1zdGFydCcpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFT
UyB0ZXN0KCd3ZWJraXQtY29sdW1ucycpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0
KCd3ZWJraXQtY29sdW1uLXJ1bGUnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgn
d2Via2l0LWZsZXgtZmxvdycpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJr
aXQtZmxleCcpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtbWFyZ2lu
Q29sbGFwc2UnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LW1hcnF1
ZWUnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LW1hc2snKSBpcyAi
aW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LW1hc2stcG9zaXRpb24nKSBpcyAi
aW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LW1hc2stcmVwZWF0JykgaXMgImlu
aGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ3dlYmtpdC10ZXh0LWVtcGhhc2lzJykgaXMgImlu
aGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ3dlYmtpdC10ZXh0LXN0cm9rZScpIGlzICJpbmhl
cml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtdHJhbnNpdGlvbicpIGlzICJpbmhlcml0
LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtdHJhbnNmb3JtLW9yaWdpbicpIGlzICJpbmhl
cml0LCBpbml0aWFsIgorVGVzdCB0aGF0IGUgbWF0Y2hlZCBkZWNsYXJhdGlvbiBjYWNoZSBoYW5k
bGVzIGV4cGxpY2l0bHkgaW5oZXJpdGVkIHByb3BlcnRpZXMgY29ycmVjdGx5LgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luaGVyaXQtaW5pdGlhbC1zaG9ydGhhbmQtdmFs
dWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbmhlcml0LWluaXRpYWwtc2hvcnRoYW5k
LXZhbHVlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNGI4MTEyYThlMmZlMjQ3MTkyMmQyZjJmMDMxOTdk
MzUxZGUyY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbmhlcml0
LWluaXRpYWwtc2hvcnRoYW5kLXZhbHVlcy5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPHN0eWxlPgorI3Rlc3QgeworfQorPC9zdHlsZT4KKzxib2R5PgorPC9ib2R5Pgor
PHA+CitUZXN0IHRoYXQgZSBtYXRjaGVkIGRlY2xhcmF0aW9uIGNhY2hlIGhhbmRsZXMgZXhwbGlj
aXRseSBpbmhlcml0ZWQgcHJvcGVydGllcyBjb3JyZWN0bHkuCis8cD4KKzxzY3JpcHQ+Cit2YXIg
c2hvcnRoYW5kTmFtZXMgPSBbCisgICAgImJhY2tncm91bmQiLAorICAgICJiYWNrZ3JvdW5kLXBv
c2l0aW9uIiwKKyAgICAiYmFja2dyb3VuZC1yZXBlYXQiLAorICAgICJib3JkZXIiLAorICAgICJi
b3JkZXItYm90dG9tIiwKKyAgICAiYm9yZGVyLWNvbG9yIiwKKyAgICAvLyBnZXRQcm9wZXJ0eVZh
bHVlKCkgZnVuY3Rpb25hbGl0eSBub3Qgc3VwcG9ydGVkLCBzZWUgaHR0cDovL3dlYmtpdC5vcmcv
Yi8xMDMyNDUuCisgICAgLy8gImJvcmRlci1pbWFnZSIsCisgICAgImJvcmRlci1sZWZ0IiwKKyAg
ICAiYm9yZGVyLXJhZGl1cyIsCisgICAgImJvcmRlci1yaWdodCIsCisgICAgImJvcmRlci1zcGFj
aW5nIiwKKyAgICAiYm9yZGVyLXN0eWxlIiwKKyAgICAiYm9yZGVyLXRvcCIsCisgICAgImJvcmRl
ci13aWR0aCIsCisgICAgImxpc3Qtc3R5bGUiLAorICAgICJmb250IiwKKyAgICAibWFyZ2luIiwK
KyAgICAib3V0bGluZSIsCisgICAgIm92ZXJmbG93IiwKKyAgICAicGFkZGluZyIsCisgICAgIndl
YmtpdC1hbmltYXRpb24iLAorICAgICJ3ZWJraXQtYm9yZGVyLWFmdGVyIiwKKyAgICAid2Via2l0
LWJvcmRlci1iZWZvcmUiLAorICAgICJ3ZWJraXQtYm9yZGVyLWVuZCIsCisgICAgIndlYmtpdC1i
b3JkZXItc3RhcnQiLAorICAgICJ3ZWJraXQtY29sdW1ucyIsCisgICAgIndlYmtpdC1jb2x1bW4t
cnVsZSIsCisgICAgIndlYmtpdC1mbGV4LWZsb3ciLAorICAgICJ3ZWJraXQtZmxleCIsCisgICAg
IndlYmtpdC1tYXJnaW5Db2xsYXBzZSIsCisgICAgIndlYmtpdC1tYXJxdWVlIiwKKyAgICAid2Vi
a2l0LW1hc2siLAorICAgICJ3ZWJraXQtbWFzay1wb3NpdGlvbiIsCisgICAgIndlYmtpdC1tYXNr
LXJlcGVhdCIsCisgICAgIndlYmtpdC10ZXh0LWVtcGhhc2lzIiwKKyAgICAid2Via2l0LXRleHQt
c3Ryb2tlIiwKKyAgICAid2Via2l0LXRyYW5zaXRpb24iLAorICAgICJ3ZWJraXQtdHJhbnNmb3Jt
LW9yaWdpbiIKK107CisKK3ZhciBzdHlsZSA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLnJ1bGVz
WzBdLnN0eWxlOworZnVuY3Rpb24gdGVzdChzaG9ydGhhbmQpIHsKKyAgICB2YXIgcmVzdWx0ID0g
W107CisgICAgc3R5bGVbc2hvcnRoYW5kXSA9ICJpbmhlcml0IjsKKyAgICByZXN1bHQucHVzaChz
dHlsZVtzaG9ydGhhbmRdKTsKKyAgICBzdHlsZVtzaG9ydGhhbmRdID0gImluaXRpYWwiOworICAg
IHJlc3VsdC5wdXNoKHN0eWxlW3Nob3J0aGFuZF0pOworICAgIHJldHVybiByZXN1bHQuam9pbigi
LCAiKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCBzaG9ydGhhbmROYW1lcy5sZW5ndGg7ICsr
aSkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGVzdCgnIiArIHNob3J0aGFuZE5hbWVz
W2ldICsgIicpIiwgImluaGVyaXQsIGluaXRpYWwiKTsKK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy1leHBlY3RlZC50
eHQKaW5kZXggMTMwNDczZjAxZTBjZTc5NmY2MDQzOTlkODk5ZTM3NGYwZjVmYjNmNi4uMWYxZThk
OGEyN2E4ZjBlZTJmZmNiYjg1YWE2ZWQ3YzY0MGE2N2VkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXRleHQtZW1waGFzaXMtZXhwZWN0ZWQudHh0CkBAIC0z
Niw4ICszNiw4IEBAIFBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXMtc3R5bGU6IG5vbmUgbm9u
ZTsnIHBhcnNlZCBhcyBbJycsICcnLCAnJywgJyddCiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhh
c2lzLXN0eWxlOiAiY2hlZXNlIiBvcGVuOycgcGFyc2VkIGFzIFsnJywgJycsICcnLCAnJ10KIFBB
U1M6ICctd2Via2l0LXRleHQtZW1waGFzaXMtc3R5bGU6IG9wZW4gImNoZWVzZSI7JyBwYXJzZWQg
YXMgWycnLCAnJywgJycsICcnXQogCi1QQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbml0
aWFsJyBwYXJzZWQgYXMgWycnLCAnJywgJycsICdpbml0aWFsJ10KLVBBU1M6ICctd2Via2l0LXRl
eHQtZW1waGFzaXM6IGluaGVyaXQnIHBhcnNlZCBhcyBbJycsICcnLCAnJywgJ2luaGVyaXQnXQor
UEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5pdGlhbCcgcGFyc2VkIGFzIFsnaW5pdGlh
bCcsICcnLCAnaW5pdGlhbCcsICdpbml0aWFsJ10KK1BBU1M6ICctd2Via2l0LXRleHQtZW1waGFz
aXM6IGluaGVyaXQnIHBhcnNlZCBhcyBbJ2luaGVyaXQnLCAnJywgJ2luaGVyaXQnLCAnaW5oZXJp
dCddCiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiByZWQnIHBhcnNlZCBhcyBbJ3JlZCcs
ICcnLCAnaW5pdGlhbCcsICdyZWQnXQogUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogImNo
ZWVzZSInIHBhcnNlZCBhcyBbJ2luaXRpYWwnLCAnJywgJ2NoZWVzZScsICdjaGVlc2UnXQogUEFT
UzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogcmVkICJjaGVlc2UiJyBwYXJzZWQgYXMgWydyZWQn
LCAnJywgJ2NoZWVzZScsICdjaGVlc2UgcmVkJ10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
cGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0bWwKaW5kZXggOTBiNWQ3YzAzNTA4NGM1ZDZjOTI1Njdi
ODZhMDNjOTI0MTg3NWJlMy4uMzJmOGYyNDUwMGJkYTAxNzc1ODdiZDVjODhhOTI5Njg4ZjQ0M2Zi
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0
bWwKQEAgLTY3LDggKzY3LDggQEAKICAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXMtc3R5
bGU6IG9wZW4gImNoZWVzZSI7JywgJycsICcnLCAnJyk7CiAKICAgICBsb2coIiIpOwotICAgIHRl
c3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5pdGlhbCcsICcnLCAnJywgJycsICdpbml0aWFs
Jyk7Ci0gICAgdGVzdCgnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0JywgJycsICcnLCAn
JywgJ2luaGVyaXQnKTsKKyAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6IGluaXRpYWwn
LCAnaW5pdGlhbCcsICcnLCAnaW5pdGlhbCcsICdpbml0aWFsJyk7CisgICAgdGVzdCgnLXdlYmtp
dC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0JywgJ2luaGVyaXQnLCAnJywgJ2luaGVyaXQnLCAnaW5o
ZXJpdCcpOwogICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogcmVkJywgJ3JlZCcsICcn
LCAnaW5pdGlhbCcsICdyZWQnKTsKICAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6ICJj
aGVlc2UiJywgJ2luaXRpYWwnLCAnJywgJ2NoZWVzZScsICdjaGVlc2UnKTsKICAgICB0ZXN0KCct
d2Via2l0LXRleHQtZW1waGFzaXM6IHJlZCAiY2hlZXNlIicsICdyZWQnLCAnJywgJ2NoZWVzZScs
ICdjaGVlc2UgcmVkJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176227</attachid>
            <date>2012-11-27 03:58:10 -0800</date>
            <delta_ts>2012-11-27 04:40:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-73002-20121127155547.patch</filename>
            <type>text/plain</type>
            <size>26758</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RlNzlmOGI4MDU3Y2Vm
NTdiY2NkZWU0YjM2ZjQ0Y2NkMWNhN2VlNi4uYjQwMmZhZTZlZGQ0N2U3YmE3ZDExMjBlZjRjODE0
MjYxZmVlZWMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTExLTI2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5jb3JyZWN0
IHZhbHVlIG9mIENTU1N0eWxlRGVjbGFyYXRpb24jbGVuZ3RoIHdoZW4gYSBzaG9ydGhhbmQgcHJv
cGVydHkgaXMgaW5oZXJpdCBvciBpbml0aWFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhpcyBN
ZW5hcmQuCisKKyAgICAgICAgQmVmb3JlIHRoZSBwYXRjaCwgImluaGVyaXQiIGFuZCAiaW5pdGlh
bCIgc2hvcnRoYW5kcyB3b3VsZCBnZXQgYWRkZWQgdG8gdGhlIFN0eWxlUHJvcGVydHlTZXQgYXMt
aXMsIHRoZWlyIGxvbmdoYW5kcyB1bnNwZWNpZmllZC4KKyAgICAgICAgVGhpcyBwYXRjaCB0YWNr
bGVzIHR3byBhc3BlY3RzIG9mIHRoZSBwcm9ibGVtOgorICAgICAgICAtIFdoZW4gcGFyc2luZyAi
aW5pdGlhbCIgYW5kICJpbmhlcml0IiBzaG9ydGhhbmRzLCB0aGVpciBsb25naGFuZHMgYXJlIGFk
ZGVkIHRvIHRoZSBwcm9wZXJ0eSBzZXQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMuCisg
ICAgICAgIC0gV2hlbiBxdWVyeWluZyAiaW5pdGlhbCIgYW5kICJpbmhlcml0IiBzaG9ydGhhbmRz
LCB0aGVpciB2YWx1ZXMgYXJlIHJlY29uc3RydWN0ZWQgZnJvbSB0aGUgbG9uZ2hhbmRzIGFzIHVz
dWFsLCBidXQgaWYgYWxsIG9mIHRoZSBsb25naGFuZHMKKyAgICAgICAgICBhcmUgZm91bmQgdG8g
aGF2ZSB0aGUgc2FtZSBleHBsaWNpdCAiaW5pdGlhbCIgb3IgImluaGVyaXQiIHZhbHVlLCB0aGUg
cmVzcGVjdGl2ZSBzaW5nbGUgdmFsdWUgaXMgcmV0dXJuZWQgYXMgdGhlIHNob3J0aGFuZCB2YWx1
ZS4KKworICAgICAgICBXaGVuIHJlY29uc3RydWN0aW5nIHNob3J0aGFuZHMsIGEgImNvbW1vbiB2
YWx1ZSIgaXMgdHJhY2tlZC4gSWYgYWxsIGxvbmdoYW5kcyBpbnZvbHZlZCBoYXZlIHRoZSBzYW1l
IGV4cGxpY2l0IHZhbHVlLCBpdCBiZWNvbWVzIHRoZQorICAgICAgICAiY29tbW9uIHZhbHVlIiwg
b3RoZXJ3aXNlIGl0IGlzIGEgU3RyaW5nKCkuIFRoZSAiaW5oZXJpdCIgb3IgImluaXRpYWwiIGNv
bW1vbiB2YWx1ZSB1bHRpbWF0ZWx5IGJlY29tZXMgdGhlIHNob3J0aGFuZCB2YWx1ZQorICAgICAg
ICAoZXhjZXB0IGZvciB0aGUgImJhY2tncm91bmQtcG9zaXRpb24iIHNob3J0aGFuZCwgd2hpY2gg
aXMgYSBzcGVjaWFsIGNhc2UpLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZUtleXdvcmRWYWx1ZSk6IFBhcnNlIHNob3J0aGFuZHMnICJpbml0
aWFsIiBhbmQgImluaGVyaXQiIHZhbHVlcyB1c2luZyB0aGUgQ1NTUGFyc2VyLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFsdWUpOiBBZGQgc2lt
cGxlIHByb3BlcnR5IG9yIGFsbCBzaGFydGhhbmQncyBsb25naGFuZHMgd2l0aCBnaXZlbiB2YWx1
ZSBhbmQgcHJpb3JpdHkuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUp
OiBGb3IgImluaXRpYWwiIGFuZCAiaW5oZXJpdCIgc2hvcnRoYW5kcywgYWRkIHRoZWlyIGxvbmdo
YW5kcyB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlLCBub3QgdGhlIHNob3J0aGFuZHMgcHJvcGVy
LgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDogQWRkIGFkZEV4cGFuZGVkUHJvcGVydHlGb3JW
YWx1ZSgpLgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzSW5pdGlhbE9ySW5oZXJpdCk6IENoZWNrIGlmIHRoZSB2YWx1ZSBpcyAiaW5pdGlh
bCIgb3IgImluaGVyaXQiLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnR5U2V0OjphcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQpOiBNb2Rp
ZmllZCB0byB0cmFjayB0aGUgY29tbW9uIHZhbHVlIGZvciB0aGUgImZvbnQiIHNob3J0aGFuZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OmZvbnRWYWx1ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyk6IFJldHVybiAi
aW5oZXJpdCIgb3IgImluaXRpYWwiIGlmIGFsbCA0IHZhbHVlcyBhcmUgZXhwbGljaXRseSAiaW5o
ZXJpdCIgb3IgImluaXRpYWwiLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKTogVXNlIHRoZSBjb21tb24gdmFsdWUgYXBwcm9hY2gg
Zm9yIGxheWVyZWQgc2hvcnRoYW5kcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlT
ZXQ6OmdldFNob3J0aGFuZFZhbHVlKTogRGl0dG8gZm9yIG9yZGluYXJ5IHNob3J0aGFuZHMuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpib3JkZXJQcm9wZXJ0eVZhbHVlKTog
RGl0dG8gZm9yIHRoZSAiYm9yZGVyIiBzaG9ydGhhbmQuCisgICAgICAgICogY3NzL1N0eWxlUHJv
cGVydHlTZXQuaDogTW9kaWZ5IHRoZSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQo
KSBzaWduYXR1cmUuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
Rm9udCk6IE5vdyB0aGF0ICJpbmhlcml0IiBhbmQgImluaXRpYWwiIHNob3J0aGFuZHMgYXJlIHJl
cHJlc2VudGVkIGJ5IHRoZWlyIGxvbmdoYW5kcywKKyAgICAgICAgd2UgbmVlZCB0byBjaGVjayB0
aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSAiZm9udCIgc2hvcnRoYW5kIGZvciBiZWluZyAiaW5oZXJp
dCIgb3IgImluaXRpYWwiIGluc3RlYWQ6IGdldFByb3BlcnR5Q1NTVmFsdWUoKSBubyBsb25nZXIg
d29ya3MsCisgICAgICAgIHNpbmNlIHRoZSBzaG9ydGhhbmQgaXRzZWxmIGlzIG5vIGxvbmdlciBh
ZGRlZCB0byB0aGUgU3R5bGVQcm9wZXJ0eVNldC4KKwogMjAxMi0xMS0yNyAgRGFuIENhcm5leSAg
PGRjYXJuZXlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbVjhdIGFkZCBjb250ZXh0Rm9yV29ybGQg
aGVscGVyIGZ1bmN0aW9uIHRvIFNjcmlwdENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKaW5kZXggN2NhMTU1YzViYWZhMTczYzRmZTdmMmM5NDA3NjkwM2JiZDZhOTNhNi4uMGEwZjFk
NDE2NDU4M2M1ODEzYWUxZGMzN2VjMjA3YjkyMzQ1NzRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKQEAgLTEwODYsOCArMTA4NiwxNiBAQCBzdGF0aWMgYm9vbCBwYXJzZUtleXdvcmRWYWx1
ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZQogewog
ICAgIEFTU0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoIWlzS2V5d29yZFByb3Bl
cnR5SUQocHJvcGVydHlJZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWlzS2V5
d29yZFByb3BlcnR5SUQocHJvcGVydHlJZCkpIHsKKyAgICAgICAgLy8gQWxsIHByb3BlcnRpZXMg
YWNjZXB0IHRoZSB2YWx1ZXMgb2YgImluaXRpYWwiIGFuZCAiaW5oZXJpdCIuCisgICAgICAgIFN0
cmluZyBsb3dlckNhc2VTdHJpbmcgPSBzdHJpbmcubG93ZXIoKTsKKyAgICAgICAgaWYgKGxvd2Vy
Q2FzZVN0cmluZyAhPSAiaW5pdGlhbCIgJiYgbG93ZXJDYXNlU3RyaW5nICE9ICJpbmhlcml0IikK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBQYXJzZSBpbml0aWFsL2lu
aGVyaXQgc2hvcnRoYW5kcyB1c2luZyB0aGUgQ1NTUGFyc2VyLgorICAgICAgICBpZiAoc2hvcnRo
YW5kRm9yUHJvcGVydHkocHJvcGVydHlJZCkubGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogCiAgICAgQ1NTUGFyc2VyU3RyaW5nIGNzc1N0cmluZzsKICAgICBjc3NT
dHJpbmcuaW5pdChzdHJpbmcpOwpAQCAtMTY4OSw2ICsxNjk3LDIyIEBAIGlubGluZSBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsaWRQcmltaXRpdmUoaW50
IGlkZW50aWZpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgQ1NTUGFyc2VyOjphZGRFeHBhbmRl
ZFByb3BlcnR5Rm9yVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKK3sKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wSWQpOworICAg
IHVuc2lnbmVkIHNob3J0aGFuZExlbmd0aCA9IHNob3J0aGFuZC5sZW5ndGgoKTsKKyAgICBpZiAo
IXNob3J0aGFuZExlbmd0aCkgeworICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQsIHBycFZhbHVl
LCBpbXBvcnRhbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IHBycFZhbHVlOworICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHBy
b3BJZCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHlJRCogbG9uZ2hhbmRzID0gc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5kTGVuZ3Ro
OyArK2kpCisgICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kc1tpXSwgdmFsdWUsIGltcG9ydGFu
dCk7Cit9CisKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKIHsKICAgICBpZiAoIW1fdmFsdWVMaXN0KQpAQCAtMTcxMCwxMyAr
MTczNCwxMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCkgewogICAg
ICAgICBpZiAobnVtICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGFk
ZFByb3BlcnR5KHByb3BJZCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSW5oZXJpdGVkVmFsdWUoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZvclZhbHVlKHByb3BJZCwg
Y3NzVmFsdWVQb29sKCkuY3JlYXRlSW5oZXJpdGVkVmFsdWUoKSwgaW1wb3J0YW50KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlSW5pdGlh
bCkgewogICAgICAgICBpZiAobnVtICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlRXhwbGljaXRJ
bml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgYWRkRXhwYW5kZWRQcm9wZXJ0eUZv
clZhbHVlKHByb3BJZCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUo
KSwgaW1wb3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgKaW5kZXggMmIwZDg1NDE5MmQxN2NjNDRjZjUxOWNhZmUwZGRmY2Q0YjljNzY4YS4u
ZDEyZjcyYmM1MmU2ZTRhMjc2OGU2MzQ4OGVlNWUzYjcxNTc0YzUxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaApAQCAtOTIsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wg
aW1wbGljaXQgPSBmYWxzZSk7CiAgICAgdm9pZCByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKGludCBu
dW0pOwogICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX3BhcnNlZFBy
b3BlcnRpZXMuaXNFbXB0eSgpOyB9CisgICAgdm9pZCBhZGRFeHBhbmRlZFByb3BlcnR5Rm9yVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sKTsKIAog
ICAgIGJvb2wgcGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAg
Ym9vbCBwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJiwgYm9vbCBpbXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwCmluZGV4IGMzZjZkYzgwZGQzMDc3NmNhMDFmOTA4ZjMyMjk1MWI4ZDhiMWI2OTQuLjlk
ZjU5YTI4YjI5ZTFlMjk3NjU3YTQxN2U3MjM3NDNiNjg1ZGMyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTYwLDYgKzYwLDEzIEBAIHN0YXRpYyBzaXplX3Qg
c2l6ZUZvckltbXV0YWJsZVN0eWxlUHJvcGVydHlTZXRXaXRoUHJvcGVydHlDb3VudCh1bnNpZ25l
ZCBjb3VudCkKICAgICByZXR1cm4gc2l6ZW9mKEltbXV0YWJsZVN0eWxlUHJvcGVydHlTZXQpIC0g
c2l6ZW9mKHZvaWQqKSArIHNpemVvZihDU1NWYWx1ZSopICogY291bnQgKyBzaXplb2YoU3R5bGVQ
cm9wZXJ0eU1ldGFkYXRhKSAqIGNvdW50OwogfQogCitzdGF0aWMgYm9vbCBpc0luaXRpYWxPcklu
aGVyaXQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgaW5pdGlhbCwgKCJpbml0aWFsIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBpbmhlcml0LCAoImluaGVyaXQiKSk7CisgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCgpID09
IDcgJiYgKHZhbHVlID09IGluaXRpYWwgfHwgdmFsdWUgPT0gaW5oZXJpdCk7Cit9CisKIFBhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlSW1tdXRhYmxl
KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCB1bnNpZ25lZCBjb3VudCwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQogewogICAgIHZvaWQqIHNsb3QgPSBXVEY6OmZhc3RNYWxsb2Mo
c2l6ZUZvckltbXV0YWJsZVN0eWxlUHJvcGVydHlTZXRXaXRoUHJvcGVydHlDb3VudChjb3VudCkp
OwpAQCAtMjE4LDE0ICsyMjUsMTYgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmJvcmRlclNw
YWNpbmdWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGgKICAgICByZXR1
cm4gaG9yaXpvbnRhbFZhbHVlQ1NTVGV4dCArICcgJyArIHZlcnRpY2FsVmFsdWVDU1NUZXh0Owog
fQogCi1ib29sIFN0eWxlUHJvcGVydHlTZXQ6OmFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBs
aWNpdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXImIHJlc3VsdCkgY29u
c3QKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6YXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxp
Y2l0KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBTdHJp
bmcmIGNvbW1vblZhbHVlKSBjb25zdAogewogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBm
aW5kUHJvcGVydHlJbmRleChwcm9wZXJ0eUlEKTsKICAgICBpZiAoZm91bmRQcm9wZXJ0eUluZGV4
ID09IC0xKQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFsbCBsb25naGFuZHMgbXVzdCBoYXZl
IGF0IGxlYXN0IGltcGxpY2l0IHZhbHVlcyBpZiAiZm9udCIgaXMgc3BlY2lmaWVkLgogCi0gICAg
aWYgKHByb3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS5pc0ltcGxpY2l0KCkpCisgICAgaWYg
KHByb3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS5pc0ltcGxpY2l0KCkpIHsKKyAgICAgICAg
Y29tbW9uVmFsdWUgPSBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAg
ICAgY2hhciBwcmVmaXggPSAnXDAnOwogICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewpAQCAtMjQ1
LDcgKzI1NCwxMCBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OmFwcGVuZEZvbnRMb25naGFuZFZh
bHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SQogCiAgICAgaWYgKHByZWZpeCAm
JiAhcmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZChwcmVmaXgpOwotICAg
IHJlc3VsdC5hcHBlbmQocHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLnZhbHVlKCktPmNz
c1RleHQoKSk7CisgICAgU3RyaW5nIHZhbHVlID0gcHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5k
ZXgpLnZhbHVlKCktPmNzc1RleHQoKTsKKyAgICByZXN1bHQuYXBwZW5kKHZhbHVlKTsKKyAgICBp
ZiAoIWNvbW1vblZhbHVlLmlzTnVsbCgpICYmIGNvbW1vblZhbHVlICE9IHZhbHVlKQorICAgICAg
ICBjb21tb25WYWx1ZSA9IFN0cmluZygpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNjAs
MjIgKzI3MiwyNSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Zm9udFZhbHVlKCkgY29uc3QK
ICAgICBpZiAoZm9udFNpemVQcm9wZXJ0eS5pc0ltcGxpY2l0KCkpCiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogCisgICAgU3RyaW5nIGNvbW1vblZhbHVlID0gZm9udFNpemVQcm9wZXJ0
eS52YWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgYm9v
bCBzdWNjZXNzID0gdHJ1ZTsKLSAgICBzdWNjZXNzICY9IGFwcGVuZEZvbnRMb25naGFuZFZhbHVl
SWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgcmVzdWx0KTsKLSAgICBzdWNjZXNzICY9
IGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50
LCByZXN1bHQpOwotICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExvbmdoYW5kVmFsdWVJZkV4cGxp
Y2l0KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgcmVzdWx0KTsKKyAgICBzdWNjZXNzICY9IGFwcGVu
ZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgcmVzdWx0
LCBjb21tb25WYWx1ZSk7CisgICAgc3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlm
RXhwbGljaXQoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgcmVzdWx0LCBjb21tb25WYWx1ZSk7Cisg
ICAgc3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVy
dHlGb250V2VpZ2h0LCByZXN1bHQsIGNvbW1vblZhbHVlKTsKICAgICBpZiAoIXJlc3VsdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICByZXN1bHQuYXBwZW5kKGZv
bnRTaXplUHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpKTsKLSAgICBzdWNjZXNzICY9IGFwcGVu
ZEZvbnRMb25naGFuZFZhbHVlSWZFeHBsaWNpdChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIHJlc3Vs
dCk7Ci0gICAgc3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NT
UHJvcGVydHlGb250RmFtaWx5LCByZXN1bHQpOworICAgIHN1Y2Nlc3MgJj0gYXBwZW5kRm9udExv
bmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5TGluZUhlaWdodCwgcmVzdWx0LCBjb21t
b25WYWx1ZSk7CisgICAgc3VjY2VzcyAmPSBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGlj
aXQoQ1NTUHJvcGVydHlGb250RmFtaWx5LCByZXN1bHQsIGNvbW1vblZhbHVlKTsKICAgICBpZiAo
IXN1Y2Nlc3MpIHsKICAgICAgICAgLy8gQW4gaW52YWxpZCAiZm9udCIgdmFsdWUgaGFzIGJlZW4g
YnVpbHQgKHNob3VsZCBuZXZlciBoYXBwZW4sIGFzIGF0IGxlYXN0IGltcGxpY2l0IHZhbHVlcwog
ICAgICAgICAvLyBmb3IgbWFuZGF0b3J5IGxvbmdoYW5kcyBhcmUgYWx3YXlzIGZvdW5kIGluIHRo
ZSBzdHlsZSksIHJlcG9ydCBlbXB0eSB2YWx1ZSBpbnN0ZWFkLgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQorICAgIGlm
IChpc0luaXRpYWxPckluaGVyaXQoY29tbW9uVmFsdWUpKQorICAgICAgICByZXR1cm4gY29tbW9u
VmFsdWU7CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCkBAIC0yOTgsOCArMzEz
LDE3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkgY29uCiAgICAgLy8gQWxsIDQgcHJvcGVydGllcyBt
dXN0IGJlIHNwZWNpZmllZC4KICAgICBpZiAoIXRvcC52YWx1ZSgpIHx8ICFyaWdodC52YWx1ZSgp
IHx8ICFib3R0b20udmFsdWUoKSB8fCAhbGVmdC52YWx1ZSgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgaWYgKHRvcC52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpIHx8IHJpZ2h0LnZh
bHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwgYm90dG9tLnZhbHVlKCktPmlzSW5pdGlhbFZhbHVl
KCkgfHwgbGVmdC52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpKQorCisgICAgaWYgKHRvcC5pc0lu
aGVyaXRlZCgpICYmIHJpZ2h0LmlzSW5oZXJpdGVkKCkgJiYgYm90dG9tLmlzSW5oZXJpdGVkKCkg
JiYgbGVmdC5pc0luaGVyaXRlZCgpKQorICAgICAgICByZXR1cm4gZ2V0VmFsdWVOYW1lKENTU1Zh
bHVlSW5oZXJpdCk7CisKKyAgICBpZiAodG9wLnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgfHwg
cmlnaHQudmFsdWUoKS0+aXNJbml0aWFsVmFsdWUoKSB8fCBib3R0b20udmFsdWUoKS0+aXNJbml0
aWFsVmFsdWUoKSB8fCBsZWZ0LnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAg
aWYgKHRvcC52YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpICYmIHJpZ2h0LnZhbHVlKCktPmlzSW5p
dGlhbFZhbHVlKCkgJiYgYm90dG9tLnZhbHVlKCktPmlzSW5pdGlhbFZhbHVlKCkgJiYgbGVmdC52
YWx1ZSgpLT5pc0luaXRpYWxWYWx1ZSgpICYmICF0b3AuaXNJbXBsaWNpdCgpKSB7CisgICAgICAg
ICAgICAvLyBBbGwgY29tcG9uZW50cyBhcmUgImluaXRpYWwiIGFuZCAidG9wIiBpcyBub3QgaW1w
bGljaXQuCisgICAgICAgICAgICByZXR1cm4gZ2V0VmFsdWVOYW1lKENTU1ZhbHVlSW5pdGlhbCk7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KICAgICBpZiAodG9w
LmlzSW1wb3J0YW50KCkgIT0gcmlnaHQuaXNJbXBvcnRhbnQoKSB8fCByaWdodC5pc0ltcG9ydGFu
dCgpICE9IGJvdHRvbS5pc0ltcG9ydGFudCgpIHx8IGJvdHRvbS5pc0ltcG9ydGFudCgpICE9IGxl
ZnQuaXNJbXBvcnRhbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0zNDQsNiAr
MzY4LDkgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1
ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJgogICAgICAgICB9CiAgICAgfQogCisgICAg
U3RyaW5nIGNvbW1vblZhbHVlOworICAgIGJvb2wgY29tbW9uVmFsdWVJbml0aWFsaXplZCA9IGZh
bHNlOworCiAgICAgLy8gTm93IHN0aXRjaCB0aGUgcHJvcGVydGllcyB0b2dldGhlci4gIEltcGxp
Y2l0IGluaXRpYWwgdmFsdWVzIGFyZSBmbGFnZ2VkIGFzIHN1Y2ggYW5kCiAgICAgLy8gY2FuIHNh
ZmVseSBiZSBvbWl0dGVkLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtTGF5ZXJzOyBp
KyspIHsKQEAgLTQwMCw2ICs0MjcsNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5
ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBTdHJpbmcgdmFsdWVUZXh0
OwogICAgICAgICAgICAgaWYgKHZhbHVlICYmICF2YWx1ZS0+aXNJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFsYXllclJlc3VsdC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgICAgIGxheWVyUmVzdWx0LmFwcGVuZCgnICcpOwpAQCAtNDE0LDE1ICs0NDIs
MjggQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJgogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
dXNlUmVwZWF0WVNob3J0aGFuZCkgewogICAgICAgICAgICAgICAgICAgICB1c2VSZXBlYXRZU2hv
cnRoYW5kID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGxheWVyUmVzdWx0LmFwcGVuZChn
ZXRWYWx1ZU5hbWUoQ1NTVmFsdWVSZXBlYXRZKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICh1c2VTaW5nbGVXb3JkU2hvcnRoYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVzZVNpbmds
ZVdvcmRTaG9ydGhhbmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJSZXN1bHQu
YXBwZW5kKHZhbHVlLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICBsYXllclJlc3VsdC5hcHBlbmQodmFsdWUtPmNzc1RleHQoKSk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVzZVNpbmdsZVdv
cmRTaG9ydGhhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VTaW5nbGVXb3JkU2hvcnRo
YW5kID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlVGV4dCA9IHZhbHVlLT5jc3NU
ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGxheWVyUmVzdWx0LmFwcGVuZCh2YWx1ZVRleHQp
OworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChzaG9ydGhhbmQucHJv
cGVydGllcygpW2pdID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSkKKyAgICAgICAg
ICAgICAgICBpZiAoc2hvcnRoYW5kLnByb3BlcnRpZXMoKVtqXSA9PSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblkpIHsKICAgICAgICAgICAgICAgICAgICAgZm91bmRCYWNrZ3JvdW5kUG9z
aXRpb25ZQ1NTUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tn
cm91bmQtcG9zaXRpb24gaXMgYSBzcGVjaWFsIGNhc2U6IGlmIG9ubHkgdGhlIGZpcnN0IG9mZnNl
dCBpcyBzcGVjaWZpZWQsCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzZWNvbmQgb25lIGRl
ZmF1bHRzIHRvICJjZW50ZXIiLCBub3QgdGhlIHNhbWUgdmFsdWUuCisgICAgICAgICAgICAgICAg
ICAgIGlmIChjb21tb25WYWx1ZUluaXRpYWxpemVkICYmIGNvbW1vblZhbHVlICE9ICJpbml0aWFs
IiAmJiBjb21tb25WYWx1ZSAhPSAiaW5oZXJpdCIpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b21tb25WYWx1ZSA9IFN0cmluZygpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFjb21tb25WYWx1ZUluaXRpYWxpemVkKSB7CisgICAgICAgICAg
ICAgICAgY29tbW9uVmFsdWUgPSB2YWx1ZVRleHQ7CisgICAgICAgICAgICAgICAgY29tbW9uVmFs
dWVJbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFjb21tb25WYWx1
ZS5pc051bGwoKSAmJiBjb21tb25WYWx1ZSAhPSB2YWx1ZVRleHQpCisgICAgICAgICAgICAgICAg
Y29tbW9uVmFsdWUgPSBTdHJpbmcoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbGF5ZXJS
ZXN1bHQuaXNFbXB0eSgpKSB7CkBAIC00MzEsNiArNDcyLDEwIEBAIFN0cmluZyBTdHlsZVByb3Bl
cnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobGF5ZXJSZXN1bHQpOwogICAgICAgICB9
CiAgICAgfQorCisgICAgaWYgKGlzSW5pdGlhbE9ySW5oZXJpdChjb21tb25WYWx1ZSkpCisgICAg
ICAgIHJldHVybiBjb21tb25WYWx1ZTsKKwogICAgIGlmIChyZXN1bHQuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwpAQCAt
NDM4LDE5ICs0ODMsMjggQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9y
dGhhbmRWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJgogCiBTdHJpbmcgU3R5bGVQ
cm9wZXJ0eVNldDo6Z2V0U2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYgc2hvcnRoYW5kKSBjb25zdAogeworICAgIFN0cmluZyBjb21tb25WYWx1ZTsKICAgICBTdHJp
bmdCdWlsZGVyIHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hvcnRoYW5k
Lmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKCFpc1Byb3BlcnR5SW1wbGljaXQoc2hvcnRo
YW5kLnByb3BlcnRpZXMoKVtpXSkpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
dWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHNob3J0aGFuZC5wcm9wZXJ0aWVzKClbaV0pOwogICAg
ICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Cisg
ICAgICAgICAgICBTdHJpbmcgdmFsdWVUZXh0ID0gdmFsdWUtPmNzc1RleHQoKTsKKyAgICAgICAg
ICAgIGlmICghaSkKKyAgICAgICAgICAgICAgICBjb21tb25WYWx1ZSA9IHZhbHVlVGV4dDsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKCFjb21tb25WYWx1ZS5pc051bGwoKSAmJiBjb21tb25WYWx1ZSAh
PSB2YWx1ZVRleHQpCisgICAgICAgICAgICAgICAgY29tbW9uVmFsdWUgPSBTdHJpbmcoKTsKICAg
ICAgICAgICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVl
LT5jc3NUZXh0KCkpOwotICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVl
VGV4dCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY29tbW9uVmFsdWUgPSBTdHJpbmco
KTsKICAgICB9CisgICAgaWYgKGlzSW5pdGlhbE9ySW5oZXJpdChjb21tb25WYWx1ZSkpCisgICAg
ICAgIHJldHVybiBjb21tb25WYWx1ZTsKICAgICBpZiAocmVzdWx0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKQEAgLTQ4
NSw2ICs1MzksNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29tbW9uVmFsdWUoY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogU3RyaW5nIFN0eWxlUHJvcGVy
dHlTZXQ6OmJvcmRlclByb3BlcnR5VmFsdWUoQ29tbW9uVmFsdWVNb2RlIHZhbHVlTW9kZSkgY29u
c3QKIHsKICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHByb3BlcnRpZXNbM10gPSB7
IGJvcmRlcldpZHRoU2hvcnRoYW5kKCksIGJvcmRlclN0eWxlU2hvcnRoYW5kKCksIGJvcmRlckNv
bG9yU2hvcnRoYW5kKCkgfTsKKyAgICBTdHJpbmcgY29tbW9uVmFsdWU7CiAgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gZ2V0Q29tbW9uVmFs
dWUocHJvcGVydGllc1tpXSk7CkBAIC00OTQsMTIgKzU0OSwxOCBAQCBTdHJpbmcgU3R5bGVQcm9w
ZXJ0eVNldDo6Ym9yZGVyUHJvcGVydHlWYWx1ZShDb21tb25WYWx1ZU1vZGUgdmFsdWVNb2RlKSBj
b25zdAogICAgICAgICAgICAgQVNTRVJUKHZhbHVlTW9kZSA9PSBPbWl0VW5jb21tb25WYWx1ZXMp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFpKQorICAg
ICAgICAgICAgY29tbW9uVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgZWxzZSBpZiAoIWNvbW1vblZh
bHVlLmlzTnVsbCgpICYmIGNvbW1vblZhbHVlICE9IHZhbHVlKQorICAgICAgICAgICAgY29tbW9u
VmFsdWUgPSBTdHJpbmcoKTsKICAgICAgICAgaWYgKHZhbHVlID09ICJpbml0aWFsIikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIXJlc3VsdC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUpOwog
ICAgIH0KKyAgICBpZiAoaXNJbml0aWFsT3JJbmhlcml0KGNvbW1vblZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIGNvbW1vblZhbHVlOwogICAgIHJldHVybiByZXN1bHQuaXNFbXB0eSgpID8gU3RyaW5n
KCkgOiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmgKaW5kZXggY2JlN2YxODk3ZTFiNjA3ODQ0MGI4N2Y5MDU0YWZkNmM0YTM1NjUzMC4uNDU2
ZjdlZjJlNDhlNjE2ZTBkYWYxZjIzODU2MjIwNDY1ZjkzMTQyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCkBAIC0xOTcsNyArMTk3LDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgZ2V0NFZhbHVlcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7CiAgICAg
U3RyaW5nIGJvcmRlclNwYWNpbmdWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikg
Y29uc3Q7CiAgICAgU3RyaW5nIGZvbnRWYWx1ZSgpIGNvbnN0OwotICAgIGJvb2wgYXBwZW5kRm9u
dExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXImIHJl
c3VsdCkgY29uc3Q7CisgICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQo
Q1NTUHJvcGVydHlJRCwgU3RyaW5nQnVpbGRlciYgcmVzdWx0LCBTdHJpbmcmIHZhbHVlKSBjb25z
dDsKIAogICAgIGJvb2wgcmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAg
ICAgYm9vbCBwcm9wZXJ0eU1hdGNoZXMoY29uc3QgUHJvcGVydHlSZWZlcmVuY2UmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCmluZGV4IGVmNzU0ZjU5NzA0YWE5Y2M3NzNkMWJmNTdlZjBhZDNhMWFlZmNh
MmIuLmZhNzFhNGE4MTUyMWU2ODhiM2JkYTE4MWRkYjFjODk3ZGRjMWUzMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcApAQCAtMjA3MCw4ICsyMDcwLDExIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGb250KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICBpZiAocGFyc2VkU3R5bGUtPmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBmb250VmFs
dWUgPSBwYXJzZWRTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnQpOwot
ICAgIGlmIChmb250VmFsdWUgJiYgZm9udFZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCkpCisgICAg
U3RyaW5nIGZvbnRWYWx1ZSA9IHBhcnNlZFN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3Bl
cnR5Rm9udCk7CisKKyAgICAvLyBBY2NvcmRpbmcgdG8gaHR0cDovL2xpc3RzLnczLm9yZy9BcmNo
aXZlcy9QdWJsaWMvcHVibGljLWh0bWwvMjAwOUp1bC8wOTQ3Lmh0bWwsCisgICAgLy8gdGhlICJp
bmhlcml0IiBhbmQgImluaXRpYWwiIHZhbHVlcyBtdXN0IGJlIGlnbm9yZWQuCisgICAgaWYgKGZv
bnRWYWx1ZSA9PSAiaW5oZXJpdCIgfHwgZm9udFZhbHVlID09ICJpbml0aWFsIikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gVGhlIHBhcnNlIHN1Y2NlZWRlZC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZTE1NTI3MjU5
ZmE2NjRkZTIzMTUzZjIwYmYwNGJkN2NlOTQxODgxLi4wOWI0NmQyZTViYzIyZjVmMTEwOGQxNGM0
MmRlYjViZmE5N2RlZThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMjYgIEFsZXhh
bmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmNvcnJlY3Qg
dmFsdWUgb2YgQ1NTU3R5bGVEZWNsYXJhdGlvbiNsZW5ndGggd2hlbiBhIHNob3J0aGFuZCBwcm9w
ZXJ0eSBpcyBpbmhlcml0IG9yIGluaXRpYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczMDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGlzIE1l
bmFyZC4KKworICAgICAgICBFeHBlY3RhdGlvbnMgZ2V0IGZpeGVkIGluIHNvbWUgY2FzZXMuCisK
KyAgICAgICAgKiBjc3MzL2ZsZXhib3gvZmxleC1wcm9wZXJ0eS1wYXJzaW5nLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9pbmhlcml0LWluaXRpYWwtc2hvcnRoYW5kLXZhbHVlcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2luaGVyaXQtaW5pdGlhbC1z
aG9ydGhhbmQtdmFsdWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BhcnNpbmct
dGV4dC1lbXBoYXNpcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy10
ZXh0LWVtcGhhc2lzLmh0bWw6CisKIDIwMTItMDktMTcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IHJlY3QtYmFzZWQg
aGl0LXRlc3QgcmVzdWx0IHdoZW4gaGl0LXRlc3QgcmVnaW9uIGluY2x1ZGVzIGN1bGxlZCBpbmxp
bmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvZmxleC1wcm9wZXJ0eS1w
YXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LXByb3Bl
cnR5LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IGFiOGNiZGY1NDVmYzE5ZWY0NmIwODNhMWY2
NzAxMzgyNGViNTA3NTUuLjdiZWZiZTk5ODljMWIzNjcxYWNjNTM0M2Q2N2VmMDQ5YWY0N2Q0N2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LXByb3BlcnR5LXBhcnNp
bmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LXByb3Bl
cnR5LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xMDcsNyArMTA3LDcgQEAgUEFTUyBmbGV4aXRl
bS5zdHlsZS53ZWJraXRGbGV4IGlzICIwIDAgYXV0byIKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShm
bGV4aXRlbSkud2Via2l0RmxleCBpcyAiMCAwIGF1dG8iCiBQQVNTIGZsZXhpdGVtLnN0eWxlLndl
YmtpdEZsZXggaXMgImluaXRpYWwiCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZmxleGl0ZW0pLndl
YmtpdEZsZXggaXMgIjAgMSBhdXRvIgotRkFJTCBmbGV4aXRlbS5zdHlsZS53ZWJraXRGbGV4IHNo
b3VsZCBiZSAwIDAgYXV0by4gV2FzIGluaXRpYWwuCitQQVNTIGZsZXhpdGVtLnN0eWxlLndlYmtp
dEZsZXggaXMgIjAgMCBhdXRvIgogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGZsZXhpdGVtKS53ZWJr
aXRGbGV4IGlzICIwIDAgYXV0byIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5oZXJpdC1pbml0aWFsLXNob3J0aGFu
ZC12YWx1ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvaW5oZXJpdC1pbml0
aWFsLXNob3J0aGFuZC12YWx1ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1MTRkOTI1NDFj
NDA2YmRkOWM4MjdmZmM0ZmIyZTY2ODlkNmU2OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9pbmhlcml0LWluaXRpYWwtc2hvcnRoYW5kLXZhbHVlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw0MCBAQAorUEFTUyB0ZXN0KCdiYWNrZ3JvdW5kJykgaXMgImluaGVyaXQs
IGluaXRpYWwiCitQQVNTIHRlc3QoJ2JhY2tncm91bmQtcG9zaXRpb24nKSBpcyAiaW5oZXJpdCwg
aW5pdGlhbCIKK1BBU1MgdGVzdCgnYmFja2dyb3VuZC1yZXBlYXQnKSBpcyAiaW5oZXJpdCwgaW5p
dGlhbCIKK1BBU1MgdGVzdCgnYm9yZGVyJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRl
c3QoJ2JvcmRlci1ib3R0b20nKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnYm9y
ZGVyLWNvbG9yJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2JvcmRlci1sZWZ0
JykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2JvcmRlci1yYWRpdXMnKSBpcyAi
aW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnYm9yZGVyLXJpZ2h0JykgaXMgImluaGVyaXQs
IGluaXRpYWwiCitQQVNTIHRlc3QoJ2JvcmRlci1zcGFjaW5nJykgaXMgImluaGVyaXQsIGluaXRp
YWwiCitQQVNTIHRlc3QoJ2JvcmRlci1zdHlsZScpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFT
UyB0ZXN0KCdib3JkZXItdG9wJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2Jv
cmRlci13aWR0aCcpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCdsaXN0LXN0eWxl
JykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ2ZvbnQnKSBpcyAiaW5oZXJpdCwg
aW5pdGlhbCIKK1BBU1MgdGVzdCgnbWFyZ2luJykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNT
IHRlc3QoJ291dGxpbmUnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnb3ZlcmZs
b3cnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgncGFkZGluZycpIGlzICJpbmhl
cml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtYW5pbWF0aW9uJykgaXMgImluaGVyaXQs
IGluaXRpYWwiCitQQVNTIHRlc3QoJ3dlYmtpdC1ib3JkZXItYWZ0ZXInKSBpcyAiaW5oZXJpdCwg
aW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LWJvcmRlci1iZWZvcmUnKSBpcyAiaW5oZXJpdCwg
aW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LWJvcmRlci1lbmQnKSBpcyAiaW5oZXJpdCwgaW5p
dGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LWJvcmRlci1zdGFydCcpIGlzICJpbmhlcml0LCBpbml0
aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtY29sdW1ucycpIGlzICJpbmhlcml0LCBpbml0aWFsIgor
UEFTUyB0ZXN0KCd3ZWJraXQtY29sdW1uLXJ1bGUnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BB
U1MgdGVzdCgnd2Via2l0LWZsZXgtZmxvdycpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0
ZXN0KCd3ZWJraXQtZmxleCcpIGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJr
aXQtbWFyZ2luQ29sbGFwc2UnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Vi
a2l0LW1hcnF1ZWUnKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LW1h
c2snKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LW1hc2stcG9zaXRp
b24nKSBpcyAiaW5oZXJpdCwgaW5pdGlhbCIKK1BBU1MgdGVzdCgnd2Via2l0LW1hc2stcmVwZWF0
JykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ3dlYmtpdC10ZXh0LWVtcGhhc2lz
JykgaXMgImluaGVyaXQsIGluaXRpYWwiCitQQVNTIHRlc3QoJ3dlYmtpdC10ZXh0LXN0cm9rZScp
IGlzICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtdHJhbnNpdGlvbicpIGlz
ICJpbmhlcml0LCBpbml0aWFsIgorUEFTUyB0ZXN0KCd3ZWJraXQtdHJhbnNmb3JtLW9yaWdpbicp
IGlzICJpbmhlcml0LCBpbml0aWFsIgorVGVzdCB0aGF0IGUgbWF0Y2hlZCBkZWNsYXJhdGlvbiBj
YWNoZSBoYW5kbGVzIGV4cGxpY2l0bHkgaW5oZXJpdGVkIHByb3BlcnRpZXMgY29ycmVjdGx5Lgor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2luaGVyaXQtaW5pdGlhbC1zaG9y
dGhhbmQtdmFsdWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9pbmhlcml0LWluaXRpYWwt
c2hvcnRoYW5kLXZhbHVlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNGI4MTEyYThlMmZlMjQ3MTkyMmQy
ZjJmMDMxOTdkMzUxZGUyY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9pbmhlcml0LWluaXRpYWwtc2hvcnRoYW5kLXZhbHVlcy5odG1sCkBAIC0wLDAgKzEsNzEgQEAK
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorI3Rlc3QgeworfQorPC9zdHlsZT4KKzxib2R5Pgor
PC9ib2R5PgorPHA+CitUZXN0IHRoYXQgZSBtYXRjaGVkIGRlY2xhcmF0aW9uIGNhY2hlIGhhbmRs
ZXMgZXhwbGljaXRseSBpbmhlcml0ZWQgcHJvcGVydGllcyBjb3JyZWN0bHkuCis8cD4KKzxzY3Jp
cHQ+Cit2YXIgc2hvcnRoYW5kTmFtZXMgPSBbCisgICAgImJhY2tncm91bmQiLAorICAgICJiYWNr
Z3JvdW5kLXBvc2l0aW9uIiwKKyAgICAiYmFja2dyb3VuZC1yZXBlYXQiLAorICAgICJib3JkZXIi
LAorICAgICJib3JkZXItYm90dG9tIiwKKyAgICAiYm9yZGVyLWNvbG9yIiwKKyAgICAvLyBnZXRQ
cm9wZXJ0eVZhbHVlKCkgZnVuY3Rpb25hbGl0eSBub3Qgc3VwcG9ydGVkLCBzZWUgaHR0cDovL3dl
YmtpdC5vcmcvYi8xMDMyNDUuCisgICAgLy8gImJvcmRlci1pbWFnZSIsCisgICAgImJvcmRlci1s
ZWZ0IiwKKyAgICAiYm9yZGVyLXJhZGl1cyIsCisgICAgImJvcmRlci1yaWdodCIsCisgICAgImJv
cmRlci1zcGFjaW5nIiwKKyAgICAiYm9yZGVyLXN0eWxlIiwKKyAgICAiYm9yZGVyLXRvcCIsCisg
ICAgImJvcmRlci13aWR0aCIsCisgICAgImxpc3Qtc3R5bGUiLAorICAgICJmb250IiwKKyAgICAi
bWFyZ2luIiwKKyAgICAib3V0bGluZSIsCisgICAgIm92ZXJmbG93IiwKKyAgICAicGFkZGluZyIs
CisgICAgIndlYmtpdC1hbmltYXRpb24iLAorICAgICJ3ZWJraXQtYm9yZGVyLWFmdGVyIiwKKyAg
ICAid2Via2l0LWJvcmRlci1iZWZvcmUiLAorICAgICJ3ZWJraXQtYm9yZGVyLWVuZCIsCisgICAg
IndlYmtpdC1ib3JkZXItc3RhcnQiLAorICAgICJ3ZWJraXQtY29sdW1ucyIsCisgICAgIndlYmtp
dC1jb2x1bW4tcnVsZSIsCisgICAgIndlYmtpdC1mbGV4LWZsb3ciLAorICAgICJ3ZWJraXQtZmxl
eCIsCisgICAgIndlYmtpdC1tYXJnaW5Db2xsYXBzZSIsCisgICAgIndlYmtpdC1tYXJxdWVlIiwK
KyAgICAid2Via2l0LW1hc2siLAorICAgICJ3ZWJraXQtbWFzay1wb3NpdGlvbiIsCisgICAgIndl
YmtpdC1tYXNrLXJlcGVhdCIsCisgICAgIndlYmtpdC10ZXh0LWVtcGhhc2lzIiwKKyAgICAid2Vi
a2l0LXRleHQtc3Ryb2tlIiwKKyAgICAid2Via2l0LXRyYW5zaXRpb24iLAorICAgICJ3ZWJraXQt
dHJhbnNmb3JtLW9yaWdpbiIKK107CisKK3ZhciBzdHlsZSA9IGRvY3VtZW50LnN0eWxlU2hlZXRz
WzBdLnJ1bGVzWzBdLnN0eWxlOworZnVuY3Rpb24gdGVzdChzaG9ydGhhbmQpIHsKKyAgICB2YXIg
cmVzdWx0ID0gW107CisgICAgc3R5bGVbc2hvcnRoYW5kXSA9ICJpbmhlcml0IjsKKyAgICByZXN1
bHQucHVzaChzdHlsZVtzaG9ydGhhbmRdKTsKKyAgICBzdHlsZVtzaG9ydGhhbmRdID0gImluaXRp
YWwiOworICAgIHJlc3VsdC5wdXNoKHN0eWxlW3Nob3J0aGFuZF0pOworICAgIHJldHVybiByZXN1
bHQuam9pbigiLCAiKTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCBzaG9ydGhhbmROYW1lcy5s
ZW5ndGg7ICsraSkgeworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidGVzdCgnIiArIHNob3J0
aGFuZE5hbWVzW2ldICsgIicpIiwgImluaGVyaXQsIGluaXRpYWwiKTsKK30KKzwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy1l
eHBlY3RlZC50eHQKaW5kZXggMTMwNDczZjAxZTBjZTc5NmY2MDQzOTlkODk5ZTM3NGYwZjVmYjNm
Ni4uMWYxZThkOGEyN2E4ZjBlZTJmZmNiYjg1YWE2ZWQ3YzY0MGE2N2VkMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXRleHQtZW1waGFzaXMtZXhwZWN0ZWQu
dHh0CkBAIC0zNiw4ICszNiw4IEBAIFBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXMtc3R5bGU6
IG5vbmUgbm9uZTsnIHBhcnNlZCBhcyBbJycsICcnLCAnJywgJyddCiBQQVNTOiAnLXdlYmtpdC10
ZXh0LWVtcGhhc2lzLXN0eWxlOiAiY2hlZXNlIiBvcGVuOycgcGFyc2VkIGFzIFsnJywgJycsICcn
LCAnJ10KIFBBU1M6ICctd2Via2l0LXRleHQtZW1waGFzaXMtc3R5bGU6IG9wZW4gImNoZWVzZSI7
JyBwYXJzZWQgYXMgWycnLCAnJywgJycsICcnXQogCi1QQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhh
c2lzOiBpbml0aWFsJyBwYXJzZWQgYXMgWycnLCAnJywgJycsICdpbml0aWFsJ10KLVBBU1M6ICct
d2Via2l0LXRleHQtZW1waGFzaXM6IGluaGVyaXQnIHBhcnNlZCBhcyBbJycsICcnLCAnJywgJ2lu
aGVyaXQnXQorUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5pdGlhbCcgcGFyc2VkIGFz
IFsnaW5pdGlhbCcsICcnLCAnaW5pdGlhbCcsICdpbml0aWFsJ10KK1BBU1M6ICctd2Via2l0LXRl
eHQtZW1waGFzaXM6IGluaGVyaXQnIHBhcnNlZCBhcyBbJ2luaGVyaXQnLCAnJywgJ2luaGVyaXQn
LCAnaW5oZXJpdCddCiBQQVNTOiAnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiByZWQnIHBhcnNlZCBh
cyBbJ3JlZCcsICcnLCAnaW5pdGlhbCcsICdyZWQnXQogUEFTUzogJy13ZWJraXQtdGV4dC1lbXBo
YXNpczogImNoZWVzZSInIHBhcnNlZCBhcyBbJ2luaXRpYWwnLCAnJywgJ2NoZWVzZScsICdjaGVl
c2UnXQogUEFTUzogJy13ZWJraXQtdGV4dC1lbXBoYXNpczogcmVkICJjaGVlc2UiJyBwYXJzZWQg
YXMgWydyZWQnLCAnJywgJ2NoZWVzZScsICdjaGVlc2UgcmVkJ10KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctdGV4dC1lbXBoYXNpcy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVtcGhhc2lzLmh0bWwKaW5kZXggOTBiNWQ3YzAzNTA4NGM1
ZDZjOTI1NjdiODZhMDNjOTI0MTg3NWJlMy4uMzJmOGYyNDUwMGJkYTAxNzc1ODdiZDVjODhhOTI5
Njg4ZjQ0M2ZiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0
LWVtcGhhc2lzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy10ZXh0LWVt
cGhhc2lzLmh0bWwKQEAgLTY3LDggKzY3LDggQEAKICAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1w
aGFzaXMtc3R5bGU6IG9wZW4gImNoZWVzZSI7JywgJycsICcnLCAnJyk7CiAKICAgICBsb2coIiIp
OwotICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogaW5pdGlhbCcsICcnLCAnJywgJycs
ICdpbml0aWFsJyk7Ci0gICAgdGVzdCgnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0Jywg
JycsICcnLCAnJywgJ2luaGVyaXQnKTsKKyAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6
IGluaXRpYWwnLCAnaW5pdGlhbCcsICcnLCAnaW5pdGlhbCcsICdpbml0aWFsJyk7CisgICAgdGVz
dCgnLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBpbmhlcml0JywgJ2luaGVyaXQnLCAnJywgJ2luaGVy
aXQnLCAnaW5oZXJpdCcpOwogICAgIHRlc3QoJy13ZWJraXQtdGV4dC1lbXBoYXNpczogcmVkJywg
J3JlZCcsICcnLCAnaW5pdGlhbCcsICdyZWQnKTsKICAgICB0ZXN0KCctd2Via2l0LXRleHQtZW1w
aGFzaXM6ICJjaGVlc2UiJywgJ2luaXRpYWwnLCAnJywgJ2NoZWVzZScsICdjaGVlc2UnKTsKICAg
ICB0ZXN0KCctd2Via2l0LXRleHQtZW1waGFzaXM6IHJlZCAiY2hlZXNlIicsICdyZWQnLCAnJywg
J2NoZWVzZScsICdjaGVlc2UgcmVkJyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>