<?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>87077</bug_id>
          
          <creation_ts>2012-05-21 20:53:14 -0700</creation_ts>
          <short_desc>[Forms][Meter][Progress] Change function signature of parseToDoubleForNumberType</short_desc>
          <delta_ts>2012-05-22 00:52:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80009</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>morrita</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>629911</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-05-21 20:53:14 -0700</bug_when>
    <thetext>This proposal is for 
* reducing number of lines in call sites for ease of maintenance, 
* be functional style (no side effect and increasing chance to use floating pointer register)

== Current Pattern 1 ==
double numberValue;
if (!parseToDoubleForNumberType(string, &amp;numberValue))
  return defaultValue;
ASSERT(isfinite(numberValue));
return numberValue;

== New Pattern 1 ==
return parseToDoubleForNumberType(string, defaultValue)

== Current Pattern  2 ==
double max;
bool ok = parseToDoubleForNumberType(string, &amp;max);
if (!ok || max &lt;= 0)
  return 1;
return max;

== New Pattern 2 ==
return max(parseToDoubleForNumberType(string), 1);

== Current Pattern 3 ==
return !value.isEmpty() &amp;&amp; !parseToDoubleForNumberType(value, 0);

== New Pattern 3 ==
return !value.isEmpty() &amp;&amp; isfinite(parseToDubleForNumberType(value));

== Current Pattern 4 ==
double min = 0;
parseToDoubleForNumberType(string, &amp;min);
return min;

== New Pattern 4 ==
return parseToDoubleForNumberType(string, 0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629939</commentid>
    <comment_count>1</comment_count>
      <attachid>143191</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-21 22:41:50 -0700</bug_when>
    <thetext>Created attachment 143191
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629971</commentid>
    <comment_count>2</comment_count>
      <attachid>143191</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-21 23:25:01 -0700</bug_when>
    <thetext>Comment on attachment 143191
Patch 1

Could you review changes?

This change helps introducing decimal arithmetic for allowing us to use const reference of Decimal object.

Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630013</commentid>
    <comment_count>3</comment_count>
      <attachid>143191</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-05-22 00:06:52 -0700</bug_when>
    <thetext>Comment on attachment 143191
Patch 1

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

&gt; Source/WebCore/html/parser/HTMLParserIdioms.h:48
&gt; +double parseToDoubleForNumberType(const String&amp;, double);

It&apos;s worth giving a parameter name since the intention isn&apos;t clear for this case.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.h:50
&gt; +double parseToDoubleForNumberTypeWithDecimalPlaces(const String&amp;, unsigned*, double);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630020</commentid>
    <comment_count>4</comment_count>
      <attachid>143207</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-22 00:10:34 -0700</bug_when>
    <thetext>Created attachment 143207
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630021</commentid>
    <comment_count>5</comment_count>
      <attachid>143207</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-22 00:11:14 -0700</bug_when>
    <thetext>Comment on attachment 143207
Patch 2

Thanks for quick response.
I updated as you suggested.
Could you review again?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630055</commentid>
    <comment_count>6</comment_count>
      <attachid>143207</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 00:52:39 -0700</bug_when>
    <thetext>Comment on attachment 143207
Patch 2

Clearing flags on attachment: 143207

Committed r117929: &lt;http://trac.webkit.org/changeset/117929&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630056</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-22 00:52:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143191</attachid>
            <date>2012-05-21 22:41:50 -0700</date>
            <delta_ts>2012-05-22 00:10:25 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-87077-20120522144148.patch</filename>
            <type>text/plain</type>
            <size>19618</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI2YTg4NDQ3ZGFlY2Nm
NTAyN2RmNGVkOTI0YzExNjUxOTc4MGVjNS4uNTU2ZmI1ZGUxM2MyNWYxMWFhNzA1OWMzYzJmOWU2
MTgwYzA5MGI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA1LTIxICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXVtNZXRl
cl1bUHJvZ3Jlc3NdIENoYW5nZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg3MDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZSBhbmQKKyAgICAgICAgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRo
RGVjaW1hbFBsYWNlcyB0byByZXR1cm4gZG91YmxlIHZhbHVlIGluc3RlYWQKKyAgICAgICAgb2Yg
Ym9vbCBmb3IgcmVkdWNpbmcgY29kZSBpbiBjYWxsIHNpdGVzIGZvciBlYXNlIG9mIG1haW50ZW5h
bmNlLiBUaGlzIHBhdGNoCisgICAgICAgIGFsc28gYWxsb3dzIHRvIHVzZSBmdW5jdGlvbmFsIHN0
eWxlIG9mIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRo
aXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6bWlu
KTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZXRlckVsZW1lbnQ6Om1heCk6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1
cm4gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50Ojp2YWx1ZSk6IENo
YW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWV0ZXJFbGVtZW50Ojpsb3cpOiBDaGFuZ2VkIGZvciB1c2luZyBkb3VibGUgcmV0dXJuIHZh
bHVlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6aGlnaCk6IENoYW5nZWQg
Zm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0
ZXJFbGVtZW50OjpvcHRpbXVtKTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1
ZS4KKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6dmFsdWUpOiBDaGFuZ2VkIGZvciB1c2luZyBkb3Vi
bGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6
bWF4KTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBo
dG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5
cGU6OnR5cGVNaXNtYXRjaEZvcik6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFs
dWUuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRl
RGVjb3JhdGlvbik6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAg
ICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUpOiBDaGFuZ2VkIGZv
ciB1c2luZyBkb3VibGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5w
dXRUeXBlOjpwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBkb3VibGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBl
Ojp2aXNpYmxlVmFsdWUpOiBDaGFuZ2VkIGZvciB1c2luZyBkb3VibGUgcmV0dXJuIHZhbHVlLgor
ICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKTogQ2hhbmdl
ZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBodG1sL1JhbmdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvRG91
YmxlKTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBo
dG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnBhcnNlU3Rl
cCk6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAgICAgICogaHRt
bC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZGVmYXVsdFZhbHVl
KTogQWRkZWQgImNvbnN0IiBhdHRyaWJ1dGUKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6
cHJvcG9ydGlvbkZyb21WYWx1ZSk6IEFkZGVkICJjb25zdCIgYXR0cmlidXRlCisgICAgICAgIChX
ZWJDb3JlOjpTdGVwUmFuZ2U6OnZhbHVlRnJvbVByb3BvcnRpb24pOiBBZGRlZCAiY29uc3QiIGF0
dHJpYnV0ZQorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUpOiBDaGFuZ2VkIGZvciB1
c2luZyBkb3VibGUgcmV0dXJuIHZhbHVlLiBBZGRlZCBvbmUgcGFyYW1ldGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBs
YWNlcyk6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuIEFkZGVkIGZ1bmN0
aW9uIGZvciBwcm92aWRpbmcgZGVmYXVsdCBmYWxsYmFjayB2YWx1ZS4KKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmg6IENoYW5nZWQgZnVuY3Rpb24gcHJvdG90eXBlIGFu
ZCBhZGRlZCBvbmUgcGFyYW1ldGVyIHByb3RvdHlwZXMuCisgICAgICAgICogaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclBvc2l0aW9u
KTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKwogMjAxMi0wNS0yMSAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxd
IEFkZCBpbml0YWwgbWVkaWFDb250cm9sc0VmbGZ1bGxzY3JlZW4uY3NzIGZvciBmdWxsc2NyZWVu
IGNvbnRyb2wgVUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4
IDRmNDgyMjlhZmRhOTI1ODUwOWZkM2NlN2IxMjJkMGNhNGE4NDYzMjEuLjA3ZjRkNzc3ZTcxZTc2
M2RhY2JiNDU3MDVlY2U2MzVlZGRkYjk1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmNwcApAQCAtODEsOSArODEsNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogCiBkb3VibGUgSFRNTE1l
dGVyRWxlbWVudDo6bWluKCkgY29uc3QKIHsKLSAgICBkb3VibGUgbWluID0gMDsKLSAgICBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZShnZXRBdHRyaWJ1dGUobWluQXR0ciksICZtaW4pOwotICAg
IHJldHVybiBtaW47CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgMCk7CiB9CiAKIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0TWlu
KGRvdWJsZSBtaW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtOTcsOSArOTUsNyBAQCB2b2lkIEhU
TUxNZXRlckVsZW1lbnQ6OnNldE1pbihkb3VibGUgbWluLCBFeGNlcHRpb25Db2RlJiBlYykKIAog
ZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Om1heCgpIGNvbnN0CiB7Ci0gICAgZG91YmxlIG1heCA9
IHN0ZDo6bWF4KDEuMCwgbWluKCkpOwotICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdl
dEF0dHJpYnV0ZShtYXhBdHRyKSwgJm1heCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KG1heCwgbWlu
KCkpOworICAgIHJldHVybiBzdGQ6Om1heChwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShnZXRB
dHRyaWJ1dGUobWF4QXR0ciksIHN0ZDo6bWF4KDEuMCwgbWluKCkpKSwgbWluKCkpOwogfQogCiB2
b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTExMyw4ICsxMDksNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldE1heChkb3Vi
bGUgbWF4LCBFeGNlcHRpb25Db2RlJiBlYykKIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6OnZh
bHVlKCkgY29uc3QKIHsKLSAgICBkb3VibGUgdmFsdWUgPSAwOwotICAgIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpLCAmdmFsdWUpOworICAgIGRvdWJs
ZSB2YWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZSh2YWx1ZUF0
dHIpLCAwKTsKICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgodmFsdWUsIG1pbigpKSwgbWF4
KCkpOwogfQogCkBAIC0xMjksOCArMTI0LDcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRW
YWx1ZShkb3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBkb3VibGUgSFRNTE1ldGVy
RWxlbWVudDo6bG93KCkgY29uc3QKIHsKLSAgICBkb3VibGUgbG93ID0gbWluKCk7Ci0gICAgcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGxvd0F0dHIpLCAmbG93KTsKKyAg
ICBkb3VibGUgbG93ID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGxv
d0F0dHIpLCBtaW4oKSk7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGxvdywgbWluKCkp
LCBtYXgoKSk7CiB9CiAKQEAgLTE0NSw4ICsxMzksNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6
OnNldExvdyhkb3VibGUgbG93LCBFeGNlcHRpb25Db2RlJiBlYykKIAogZG91YmxlIEhUTUxNZXRl
ckVsZW1lbnQ6OmhpZ2goKSBjb25zdAogewotICAgIGRvdWJsZSBoaWdoID0gbWF4KCk7Ci0gICAg
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGhpZ2hBdHRyKSwgJmhpZ2gp
OworICAgIGRvdWJsZSBoaWdoID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmli
dXRlKGhpZ2hBdHRyKSwgbWF4KCkpOwogICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChoaWdo
LCBsb3coKSksIG1heCgpKTsKIH0KIApAQCAtMTYxLDggKzE1NCw3IEBAIHZvaWQgSFRNTE1ldGVy
RWxlbWVudDo6c2V0SGlnaChkb3VibGUgaGlnaCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIGRvdWJs
ZSBIVE1MTWV0ZXJFbGVtZW50OjpvcHRpbXVtKCkgY29uc3QKIHsKLSAgICBkb3VibGUgb3B0aW11
bSA9IChtYXgoKSArIG1pbigpKSAvIDI7Ci0gICAgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
Z2V0QXR0cmlidXRlKG9wdGltdW1BdHRyKSwgJm9wdGltdW0pOworICAgIGRvdWJsZSBvcHRpbXVt
ID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKG9wdGltdW1BdHRyKSwg
KG1heCgpICsgbWluKCkpIC8gMik7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KG9wdGlt
dW0sIG1pbigpKSwgbWF4KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jl
c3NFbGVtZW50LmNwcAppbmRleCAyZDQ3ZDgyMGUxNDBmODdkMDc2NGY4NTg5ZjkzYmNkYjRiZWFh
ZWVmLi5jNTcxYTc0NDEwNWMwYzk1MzFiZWI1NzUxY2FjZGZkZGJlNjYzYTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTkxLDExICs5MSw4IEBA
IHZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6YXR0YWNoKCkKIAogZG91YmxlIEhUTUxQcm9ncmVz
c0VsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIHsKLSAgICBkb3VibGUgdmFsdWU7Ci0gICAgYm9vbCBv
ayA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGZhc3RHZXRBdHRyaWJ1dGUodmFsdWVBdHRy
KSwgJnZhbHVlKTsKLSAgICBpZiAoIW9rIHx8IHZhbHVlIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuICh2YWx1ZSA+IG1heCgpKSA/IG1heCgpIDogdmFsdWU7CisgICAgZG91Ymxl
IHZhbHVlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZmFzdEdldEF0dHJpYnV0ZSh2YWx1
ZUF0dHIpKTsKKyAgICByZXR1cm4gIWlzZmluaXRlKHZhbHVlKSB8fCB2YWx1ZSA8IDAgPyAwIDog
c3RkOjptaW4odmFsdWUsIG1heCgpKTsKIH0KIAogdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50Ojpz
ZXRWYWx1ZShkb3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTA5LDExICsxMDYs
OCBAQCB2b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnNldFZhbHVlKGRvdWJsZSB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAKIGRvdWJsZSBIVE1MUHJvZ3Jlc3NFbGVtZW50OjptYXgoKSBjb25z
dAogewotICAgIGRvdWJsZSBtYXg7Ci0gICAgYm9vbCBvayA9IHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlKGdldEF0dHJpYnV0ZShtYXhBdHRyKSwgJm1heCk7Ci0gICAgaWYgKCFvayB8fCBtYXgg
PD0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJuIG1heDsKKyAgICBkb3VibGUgbWF4
ID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKG1heEF0dHIpKTsKKyAg
ICByZXR1cm4gIWlzZmluaXRlKG1heCkgfHwgbWF4IDw9IDAgPyAxIDogbWF4OwogfQogCiB2b2lk
IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCBhMWM5NjEyNGVj
NjIwYzZhOTIwZjA3ZmM1MGY2MWZjMWYzNjZkNjg3Li45NDFkMjUyZDRjMmRhMjBlMmZiMDBiNWQ4
YThhNjliZjI5OWY1YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3Bw
CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVy
KGRvdWJsZSBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBlCiAKIGJvb2wgTnVtYmVy
SW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gIXZhbHVlLmlzRW1wdHkoKSAmJiAhcGFyc2VUb0RvdWJsZUZvck51bWJlclR5
cGUodmFsdWUsIDApOworICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmICFpc2Zpbml0ZShw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSh2YWx1ZSkpOwogfQogCiBib29sIE51bWJlcklucHV0
VHlwZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKQEAgLTEyNywxNSArMTI3LDE1IEBAIGJvb2wgTnVt
YmVySW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXpl
LCBpbnQmIHByZWZlcnJlCiAgICAgcHJlZmVycmVkU2l6ZSA9IGRlZmF1bHRTaXplOwogCiAgICAg
dW5zaWduZWQgbWluVmFsdWVEZWNpbWFsUGxhY2VzOwotICAgIGRvdWJsZSBtaW5WYWx1ZURvdWJs
ZTsKICAgICBTdHJpbmcgbWluVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWlu
QXR0cik7Ci0gICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxh
Y2VzKG1pblZhbHVlLCAmbWluVmFsdWVEb3VibGUsICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMpKQor
ICAgIGRvdWJsZSBtaW5WYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0
aERlY2ltYWxQbGFjZXMobWluVmFsdWUsICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMpOworICAgIGlm
ICghaXNmaW5pdGUobWluVmFsdWVEb3VibGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICB1bnNpZ25lZCBtYXhWYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgZG91YmxlIG1heFZhbHVlRG91
YmxlOwogICAgIFN0cmluZyBtYXhWYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZSht
YXhBdHRyKTsKLSAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQ
bGFjZXMobWF4VmFsdWUsICZtYXhWYWx1ZURvdWJsZSwgJm1heFZhbHVlRGVjaW1hbFBsYWNlcykp
CisgICAgZG91YmxlIG1heFZhbHVlRG91YmxlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVX
aXRoRGVjaW1hbFBsYWNlcyhtYXhWYWx1ZSwgJm1heFZhbHVlRGVjaW1hbFBsYWNlcyk7CisgICAg
aWYgKCFpc2Zpbml0ZShtYXhWYWx1ZURvdWJsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChtYXhWYWx1ZURvdWJsZSA8IG1pblZhbHVlRG91YmxlKSB7CkBAIC0xNDMsMTIgKzE0
MywxMiBAQCBib29sIE51bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9u
KGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZQogICAgICAgICBtYXhWYWx1ZURlY2ltYWxQ
bGFjZXMgPSBtaW5WYWx1ZURlY2ltYWxQbGFjZXM7CiAgICAgfQogCi0gICAgdW5zaWduZWQgc3Rl
cFZhbHVlRGVjaW1hbFBsYWNlczsKLSAgICBkb3VibGUgc3RlcFZhbHVlRG91YmxlOwogICAgIFN0
cmluZyBzdGVwVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwog
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwVmFsdWUsICJhbnkiKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1h
bFBsYWNlcyhzdGVwVmFsdWUsICZzdGVwVmFsdWVEb3VibGUsICZzdGVwVmFsdWVEZWNpbWFsUGxh
Y2VzKSkgeworICAgIHVuc2lnbmVkIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgZG91Ymxl
IHN0ZXBWYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQ
bGFjZXMoc3RlcFZhbHVlLCAmc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7CisgICAgaWYgKCFpc2Zp
bml0ZShzdGVwVmFsdWVEb3VibGUpKSB7CiAgICAgICAgIHN0ZXBWYWx1ZURvdWJsZSA9IDE7CiAg
ICAgICAgIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXMgPSAwOwogICAgIH0KQEAgLTE4OCwyMCArMTg4
LDEyIEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQq
IGV2ZW50KQogCiBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0
cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAogewotICAgIGRvdWJsZSBudW1i
ZXJWYWx1ZTsKLSAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNyYywgJm51bWJl
clZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSAgICBBU1NFUlQoaXNmaW5p
dGUobnVtYmVyVmFsdWUpKTsKLSAgICByZXR1cm4gbnVtYmVyVmFsdWU7CisgICAgcmV0dXJuIHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNyYywgZGVmYXVsdFZhbHVlKTsKIH0KIAogZG91Ymxl
IE51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0
cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykg
Y29uc3QKIHsKLSAgICBkb3VibGUgbnVtYmVyVmFsdWU7Ci0gICAgaWYgKCFwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHNyYywgJm51bWJlclZhbHVlLCBkZWNpbWFs
UGxhY2VzKSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSAgICBBU1NFUlQoaXNmaW5p
dGUobnVtYmVyVmFsdWUpKTsKLSAgICByZXR1cm4gbnVtYmVyVmFsdWU7CisgICAgcmV0dXJuIHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3JjLCBkZWNpbWFsUGxh
Y2VzLCBkZWZhdWx0VmFsdWUpOwogfQogCiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzZXJpYWxp
emUoZG91YmxlIHZhbHVlKSBjb25zdApAQCAtMjM2LDkgKzIyOCwxMCBAQCBTdHJpbmcgTnVtYmVy
SW5wdXRUeXBlOjp2aXNpYmxlVmFsdWUoKSBjb25zdAogICAgICAgICByZXR1cm4gY3VycmVudFZh
bHVlOwogICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIHRocmVlIGxpbmVzIHNob3VsZCBiZSBy
ZW1vdmVkIHdoZW4gd2UKICAgICAvLyByZW1vdmUgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBjb252
ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoKS4KLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBudW1lcmlj
X2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAgICAvLyBOb3RlOiBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzIHNldCB6ZXJvIHRvIGRlY2ltYWxQbGFjZXMK
KyAgICAvLyBpZiBjdXJyZW50VmFsdWUgaXNuJ3QgdmFsaWQgZmxvYXRpbmcgcG9pbnRlciBudW1i
ZXIuCiAgICAgdW5zaWduZWQgZGVjaW1hbFBsYWNlOwotICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY3VycmVudFZhbHVlLCAmZG91YmxlVmFsdWUsICZkZWNp
bWFsUGxhY2UpOworICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMoY3VycmVudFZhbHVlLCAmZGVjaW1hbFBsYWNlKTsKICAgICByZXR1cm4gY29udmVydFRvTG9j
YWxpemVkTnVtYmVyKGN1cnJlbnRWYWx1ZSwgZGVjaW1hbFBsYWNlKTsKIH0KIApAQCAtMjYyLDcg
KzI1NSw3IEBAIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogewogICAgIGlmIChwcm9wb3NlZFZhbHVlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHByb3Bvc2VkVmFsdWU7Ci0gICAgcmV0dXJuIHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlKHByb3Bvc2VkVmFsdWUsIDApID8gcHJvcG9zZWRWYWx1ZSA6IGVt
cHR5QXRvbS5zdHJpbmcoKTsKKyAgICByZXR1cm4gaXNmaW5pdGUocGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUocHJvcG9zZWRWYWx1ZSkpID8gcHJvcG9zZWRWYWx1ZSA6IGVtcHR5U3RyaW5nKCk7
CiB9CiAKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjpoYXNVbmFjY2VwdGFibGVWYWx1ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDZmNTkwZTQ4YTNiNmQ2OTVjNDYy
YzdkNmI5YzQ5MzUyZjg0YWEyNTQuLmI0MTdkYzMyMDNiODQ3YWQ1YzZjYTI1ZGE1MWZkOWM3ZDQ2
MDVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0yMjEsMTEg
KzIyMSw3IEBAIFJlbmRlck9iamVjdCogUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjCiAKIGRvdWJsZSBSYW5nZUlucHV0VHlw
ZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSkg
Y29uc3QKIHsKLSAgICBkb3VibGUgbnVtYmVyVmFsdWU7Ci0gICAgaWYgKCFwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShzcmMsICZudW1iZXJWYWx1ZSkpCi0gICAgICAgIHJldHVybiBkZWZhdWx0
VmFsdWU7Ci0gICAgQVNTRVJUKGlzZmluaXRlKG51bWJlclZhbHVlKSk7Ci0gICAgcmV0dXJuIG51
bWJlclZhbHVlOworICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzcmMsIGRl
ZmF1bHRWYWx1ZSk7CiB9CiAKIFN0cmluZyBSYW5nZUlucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJs
ZSB2YWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBlOTczYWZlM2Mx
NGE5MzQzZDA4NzFiZGI4MTFhN2Y2NmJlN2E5NDFiLi45YjliN2RjYzk0OWNjNzVkNTUwYjA4MDdh
OTNiNzYwNDU3ODg3YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5n
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0xMjIsNyAr
MTIyLDggQEAgU3RlcFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBTdGVw
UmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcKICAgICB9CiAKICAgICBEb3VibGVXaXRo
RGVjaW1hbFBsYWNlc09yTWlzc2luZyBzdGVwKDApOwotICAgIGlmICghcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdGVwU3RyaW5nLCAmc3RlcC52YWx1ZS52YWx1
ZSwgJnN0ZXAudmFsdWUuZGVjaW1hbFBsYWNlcykgfHwgc3RlcC52YWx1ZS52YWx1ZSA8PSAwLjAp
CisgICAgc3RlcC52YWx1ZS52YWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERl
Y2ltYWxQbGFjZXMoc3RlcFN0cmluZywgJnN0ZXAudmFsdWUuZGVjaW1hbFBsYWNlcyk7CisgICAg
aWYgKCFpc2Zpbml0ZShzdGVwLnZhbHVlLnZhbHVlKSB8fCBzdGVwLnZhbHVlLnZhbHVlIDw9IDAu
MCkKICAgICAgICAgcmV0dXJuIERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBE
ZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKSk7CiAKICAgICBzd2l0Y2ggKHN0ZXBEZXNjcmlwdGlv
bi5zdGVwVmFsdWVTaG91bGRCZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9T
dGVwUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggMWExMTAx
OTU5ODJhODFjY2Q3ZjM4OTJkZDAzZjNmMTYyOTNiMWQyYS4uMGFkYmZkODU3YTUwNjk5OTMxY2Jk
MzkxMDZmNmIwNGE2ZTc0MmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC0xMDYsMTMg
KzEwNiwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGVwTWlzbWF0Y2goZG91YmxlKSBjb25zdDsK
IAogICAgIC8vIENsYW1wIHRoZSBtaWRkbGUgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBzdGVwCi0g
ICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpCisgICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gY2xhbXBWYWx1ZSgobV9taW5pbXVtICsgbV9tYXhpbXVt
KSAvIDIpOwogICAgIH0KIAogICAgIC8vIE1hcCB2YWx1ZSBpbnRvIDAtMSByYW5nZQotICAgIGRv
dWJsZSBwcm9wb3J0aW9uRnJvbVZhbHVlKGRvdWJsZSB2YWx1ZSkKKyAgICBkb3VibGUgcHJvcG9y
dGlvbkZyb21WYWx1ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9t
aW5pbXVtID09IG1fbWF4aW11bSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTIxLDcgKzEy
MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBNYXAgZnJvbSAwLTEgcmFuZ2UgdG8gdmFs
dWUKLSAgICBkb3VibGUgdmFsdWVGcm9tUHJvcG9ydGlvbihkb3VibGUgcHJvcG9ydGlvbikKKyAg
ICBkb3VibGUgdmFsdWVGcm9tUHJvcG9ydGlvbihkb3VibGUgcHJvcG9ydGlvbikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX21pbmltdW0gKyBwcm9wb3J0aW9uICogKG1fbWF4aW11bSAt
IG1fbWluaW11bSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCBiODYwMjAyNWU4YTJkMzgyMjU4MWRkZTAzZmU1ODFkNjVj
YzY5MGM5Li5hOTlhMjFhMDhlNWJkZDA4NjVmYTMzYzczOTU1MDQwMTcyYzM4YjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtNjYs
NDcgKzY2LDQ5IEBAIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIp
CiAgICAgcmV0dXJuIFN0cmluZyhudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1ZmZlcikpOwogfQog
Ci1ib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBk
b3VibGUqIHJlc3VsdCkKK2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBT
dHJpbmcmIHN0cmluZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCiB7CiAgICAgLy8gU2VlIEhUTUw1
IDIuNS40LjMgYFJlYWwgbnVtYmVycy4nCiAKICAgICAvLyBTdHJpbmc6OnRvRG91YmxlKCkgYWNj
ZXB0cyBsZWFkaW5nICsgYW5kIHdoaXRlc3BhY2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIG5vdCB2
YWxpZCBoZXJlLgogICAgIFVDaGFyIGZpcnN0Q2hhcmFjdGVyID0gc3RyaW5nWzBdOwogICAgIGlm
IChmaXJzdENoYXJhY3RlciAhPSAnLScgJiYgZmlyc3RDaGFyYWN0ZXIgIT0gJy4nICYmICFpc0FT
Q0lJRGlnaXQoZmlyc3RDaGFyYWN0ZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiBmYWxsYmFja1ZhbHVlOwogCiAgICAgYm9vbCB2YWxpZCA9IGZhbHNlOwogICAgIGRv
dWJsZSB2YWx1ZSA9IHN0cmluZy50b0RvdWJsZSgmdmFsaWQpOwogICAgIGlmICghdmFsaWQpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKICAg
ICAvLyBOYU4gYW5kIGluZmluaXR5IGFyZSBjb25zaWRlcmVkIHZhbGlkIGJ5IFN0cmluZzo6dG9E
b3VibGUsIGJ1dCBub3QgdmFsaWQgaGVyZS4KICAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAg
IC8vIE51bWJlcnMgYXJlIGNvbnNpZGVyZWQgZmluaXRlIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNp
b24gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLgogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFs
IG51bWJlcnMuJwogICAgIGlmICgtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpID4g
dmFsdWUgfHwgdmFsdWUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKLSAgICBp
ZiAocmVzdWx0KSB7Ci0gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjb252ZXJ0
cyAtMCB0byArMC4KLSAgICAgICAgKnJlc3VsdCA9IHZhbHVlID8gdmFsdWUgOiAwOwotICAgIH0K
KyAgICAvLyBUaGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY29udmVydHMgLTAgdG8gKzAuCisgICAg
cmV0dXJuIHZhbHVlID8gdmFsdWUgOiAwOworfQogCi0gICAgcmV0dXJuIHRydWU7Citkb3VibGUg
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAg
cmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0cmluZywgc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7CiB9CiAKLWJvb2wgcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlICpy
ZXN1bHQsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKQorZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVk
ICpkZWNpbWFsUGxhY2VzLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSkKIHsKICAgICBpZiAoZGVjaW1h
bFBsYWNlcykKICAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOwogCi0gICAgaWYgKCFwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmcsIHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBkb3VibGUgdmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmcs
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOworICAgIGlmICghaXNm
aW5pdGUodmFsdWUpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIGlmICgh
ZGVjaW1hbFBsYWNlcykKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiB2YWx1
ZTsKIAogICAgIHNpemVfdCBkb3RJbmRleCA9IHN0cmluZy5maW5kKCcuJyk7CiAgICAgc2l6ZV90
IGVJbmRleCA9IHN0cmluZy5maW5kKCdlJyk7CkBAIC0xNjYsNyArMTY4LDEyIEBAIGJvb2wgcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHN0
cmluZywgZG91YmxlICpyCiAgICAgZWxzZQogICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbnREZWNpbWFsUGxhY2VzKTsKIAotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiB2YWx1ZTsKK30KKworZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
V2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkICpkZWNpbWFs
UGxhY2VzKQoreworICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNp
bWFsUGxhY2VzKHN0cmluZywgZGVjaW1hbFBsYWNlcywgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKSk7CiB9CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggMTljZDI3Njkz
OWVjYTYzYjlkZDM3MTU5ZTM1NTc3YWU3ZGQxYmFmOS4uMTcxNDIyNjEzOWE2ZTk3OWUyNThkNjQ5
OTc5ZWEwMWQzMDY0ZjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuaApAQCAtNDQsOCArNDQsMTAgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJl
clR5cGUoZG91YmxlKTsKIC8vIENvbnZlcnQgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBkb3Vi
bGUuIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZhbHNlLgog
Ly8gTGVhZGluZyBvciB0cmFpbGluZyBpbGxlZ2FsIGNoYXJhY3RlcnMgY2F1c2UgZmFpbHVyZSwg
YXMgZG9lcyBwYXNzaW5nIGFuIGVtcHR5IHN0cmluZy4KIC8vIFRoZSBkb3VibGUqIHBhcmFtZXRl
ciBtYXkgYmUgMCB0byBjaGVjayBpZiB0aGUgc3RyaW5nIGNhbiBiZSBwYXJzZWQgd2l0aG91dCBn
ZXR0aW5nIHRoZSByZXN1bHQuCi1ib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSopOwotYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhE
ZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIGRvdWJsZSosIHVuc2lnbmVkKik7Citkb3VibGUg
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7Citkb3VibGUgcGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKTsKK2RvdWJsZSBwYXJz
ZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkKik7Citkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBs
YWNlcyhjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCosIGRvdWJsZSk7CiAKIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5n
LWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiwgaW50Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApp
bmRleCAxY2U3ZTliMDVmYmJmZmZlOWJhNzhmMWNlZTY2M2E1MWE5YWE2MGJmLi44NDIyYTMwMTk5
MDIyOTkxMWI1OGI2MDA3OGRkMTgwOTY0NWQ5ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTUzLDE0ICs1Myw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIHN0YXRpYyBkb3VibGUgc2xpZGVyUG9zaXRpb24o
SFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGVs
ZW1lbnQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLQotICAgIGRvdWJsZSBvbGRWYWx1
ZTsKLSAgICBib29sIHBhcnNlU3VjY2VzcyA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVs
ZW1lbnQtPnZhbHVlKCksICZvbGRWYWx1ZSk7Ci0gICAgaWYgKCFwYXJzZVN1Y2Nlc3MpCi0gICAg
ICAgIG9sZFZhbHVlID0gc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpOwotICAgIGRvdWJsZSBuZXdW
YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKG9sZFZhbHVlKTsKLSAgICByZXR1cm4gc3RlcFJh
bmdlLnByb3BvcnRpb25Gcm9tVmFsdWUobmV3VmFsdWUpOworICAgIGNvbnN0IFN0ZXBSYW5nZSBz
dGVwUmFuZ2UoZWxlbWVudC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOworICAgIGNvbnN0
IGRvdWJsZSBvbGRWYWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQtPnZh
bHVlKCksIHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CisgICAgcmV0dXJuIHN0ZXBSYW5nZS5w
cm9wb3J0aW9uRnJvbVZhbHVlKHN0ZXBSYW5nZS5jbGFtcFZhbHVlKG9sZFZhbHVlKSk7CiB9CiAK
IGlubGluZSBzdGF0aWMgYm9vbCBoYXNWZXJ0aWNhbEFwcGVhcmFuY2UoSFRNTElucHV0RWxlbWVu
dCogaW5wdXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143207</attachid>
            <date>2012-05-22 00:10:34 -0700</date>
            <delta_ts>2012-05-22 00:52:39 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-87077-20120522161032.patch</filename>
            <type>text/plain</type>
            <size>19634</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3OTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZkYjU2NTY2MjAyMTQ0
ZjVjYjhlYTc4MzJjNjhkYzgzOTVhMzFiMy4uM2FhZjZmN2RjZGU0ZDA4MTZlMjRjMmYwMDI1Zjlk
NGFjODMzMTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA1LTIxICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXVtNZXRl
cl1bUHJvZ3Jlc3NdIENoYW5nZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg3MDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZSBhbmQKKyAgICAgICAgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRo
RGVjaW1hbFBsYWNlcyB0byByZXR1cm4gZG91YmxlIHZhbHVlIGluc3RlYWQKKyAgICAgICAgb2Yg
Ym9vbCBmb3IgcmVkdWNpbmcgY29kZSBpbiBjYWxsIHNpdGVzIGZvciBlYXNlIG9mIG1haW50ZW5h
bmNlLiBUaGlzIHBhdGNoCisgICAgICAgIGFsc28gYWxsb3dzIHRvIHVzZSBmdW5jdGlvbmFsIHN0
eWxlIG9mIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRo
aXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxN
ZXRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6bWlu
KTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZXRlckVsZW1lbnQ6Om1heCk6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1
cm4gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50Ojp2YWx1ZSk6IENo
YW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWV0ZXJFbGVtZW50Ojpsb3cpOiBDaGFuZ2VkIGZvciB1c2luZyBkb3VibGUgcmV0dXJuIHZh
bHVlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6aGlnaCk6IENoYW5nZWQg
Zm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0
ZXJFbGVtZW50OjpvcHRpbXVtKTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1
ZS4KKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6dmFsdWUpOiBDaGFuZ2VkIGZvciB1c2luZyBkb3Vi
bGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6
bWF4KTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBo
dG1sL051bWJlcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5
cGU6OnR5cGVNaXNtYXRjaEZvcik6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFs
dWUuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRl
RGVjb3JhdGlvbik6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAg
ICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUpOiBDaGFuZ2VkIGZv
ciB1c2luZyBkb3VibGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5w
dXRUeXBlOjpwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMpOiBDaGFuZ2VkIGZvciB1c2lu
ZyBkb3VibGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBl
Ojp2aXNpYmxlVmFsdWUpOiBDaGFuZ2VkIGZvciB1c2luZyBkb3VibGUgcmV0dXJuIHZhbHVlLgor
ICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKTogQ2hhbmdl
ZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBodG1sL1JhbmdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvRG91
YmxlKTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBo
dG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnBhcnNlU3Rl
cCk6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuCisgICAgICAgICogaHRt
bC9TdGVwUmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6ZGVmYXVsdFZhbHVl
KTogQWRkZWQgImNvbnN0IiBhdHRyaWJ1dGUKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6
cHJvcG9ydGlvbkZyb21WYWx1ZSk6IEFkZGVkICJjb25zdCIgYXR0cmlidXRlCisgICAgICAgIChX
ZWJDb3JlOjpTdGVwUmFuZ2U6OnZhbHVlRnJvbVByb3BvcnRpb24pOiBBZGRlZCAiY29uc3QiIGF0
dHJpYnV0ZQorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUpOiBDaGFuZ2VkIGZvciB1
c2luZyBkb3VibGUgcmV0dXJuIHZhbHVlLiBBZGRlZCBvbmUgcGFyYW1ldGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBs
YWNlcyk6IENoYW5nZWQgZm9yIHVzaW5nIGRvdWJsZSByZXR1cm4gdmFsdWUuIEFkZGVkIGZ1bmN0
aW9uIGZvciBwcm92aWRpbmcgZGVmYXVsdCBmYWxsYmFjayB2YWx1ZS4KKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmg6IENoYW5nZWQgZnVuY3Rpb24gcHJvdG90eXBlIGFu
ZCBhZGRlZCBvbmUgcGFyYW1ldGVyIHByb3RvdHlwZXMuCisgICAgICAgICogaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclBvc2l0aW9u
KTogQ2hhbmdlZCBmb3IgdXNpbmcgZG91YmxlIHJldHVybiB2YWx1ZS4KKwogMjAxMi0wNS0yMSAg
QWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBSZW1vdmUgc29tZSBkZWFkIGNvZGUgaW4gQ1NTU3R5bGVNb2RlbC5qcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4IDRmNDgyMjlhZmRh
OTI1ODUwOWZkM2NlN2IxMjJkMGNhNGE4NDYzMjEuLjA3ZjRkNzc3ZTcxZTc2M2RhY2JiNDU3MDVl
Y2U2MzVlZGRkYjk1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cApAQCAtODEsOSArODEsNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogCiBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6
bWluKCkgY29uc3QKIHsKLSAgICBkb3VibGUgbWluID0gMDsKLSAgICBwYXJzZVRvRG91YmxlRm9y
TnVtYmVyVHlwZShnZXRBdHRyaWJ1dGUobWluQXR0ciksICZtaW4pOwotICAgIHJldHVybiBtaW47
CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZShtaW5B
dHRyKSwgMCk7CiB9CiAKIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0TWluKGRvdWJsZSBtaW4s
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtOTcsOSArOTUsNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1l
bnQ6OnNldE1pbihkb3VibGUgbWluLCBFeGNlcHRpb25Db2RlJiBlYykKIAogZG91YmxlIEhUTUxN
ZXRlckVsZW1lbnQ6Om1heCgpIGNvbnN0CiB7Ci0gICAgZG91YmxlIG1heCA9IHN0ZDo6bWF4KDEu
MCwgbWluKCkpOwotICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZSht
YXhBdHRyKSwgJm1heCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KG1heCwgbWluKCkpOworICAgIHJl
dHVybiBzdGQ6Om1heChwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShnZXRBdHRyaWJ1dGUobWF4
QXR0ciksIHN0ZDo6bWF4KDEuMCwgbWluKCkpKSwgbWluKCkpOwogfQogCiB2b2lkIEhUTUxNZXRl
ckVsZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTExMyw4
ICsxMDksNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBFeGNl
cHRpb25Db2RlJiBlYykKIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6OnZhbHVlKCkgY29uc3QK
IHsKLSAgICBkb3VibGUgdmFsdWUgPSAwOwotICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
KGdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpLCAmdmFsdWUpOworICAgIGRvdWJsZSB2YWx1ZSA9IHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpLCAwKTsKICAg
ICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgodmFsdWUsIG1pbigpKSwgbWF4KCkpOwogfQogCkBA
IC0xMjksOCArMTI0LDcgQEAgdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpzZXRWYWx1ZShkb3VibGUg
dmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBkb3VibGUgSFRNTE1ldGVyRWxlbWVudDo6bG93
KCkgY29uc3QKIHsKLSAgICBkb3VibGUgbG93ID0gbWluKCk7Ci0gICAgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGxvd0F0dHIpLCAmbG93KTsKKyAgICBkb3VibGUgbG93
ID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGxvd0F0dHIpLCBtaW4o
KSk7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KGxvdywgbWluKCkpLCBtYXgoKSk7CiB9
CiAKQEAgLTE0NSw4ICsxMzksNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OnNldExvdyhkb3Vi
bGUgbG93LCBFeGNlcHRpb25Db2RlJiBlYykKIAogZG91YmxlIEhUTUxNZXRlckVsZW1lbnQ6Omhp
Z2goKSBjb25zdAogewotICAgIGRvdWJsZSBoaWdoID0gbWF4KCk7Ci0gICAgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGhpZ2hBdHRyKSwgJmhpZ2gpOworICAgIGRvdWJs
ZSBoaWdoID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKGhpZ2hBdHRy
KSwgbWF4KCkpOwogICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChoaWdoLCBsb3coKSksIG1h
eCgpKTsKIH0KIApAQCAtMTYxLDggKzE1NCw3IEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6c2V0
SGlnaChkb3VibGUgaGlnaCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIGRvdWJsZSBIVE1MTWV0ZXJF
bGVtZW50OjpvcHRpbXVtKCkgY29uc3QKIHsKLSAgICBkb3VibGUgb3B0aW11bSA9IChtYXgoKSAr
IG1pbigpKSAvIDI7Ci0gICAgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRl
KG9wdGltdW1BdHRyKSwgJm9wdGltdW0pOworICAgIGRvdWJsZSBvcHRpbXVtID0gcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKG9wdGltdW1BdHRyKSwgKG1heCgpICsgbWlu
KCkpIC8gMik7CiAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KG9wdGltdW0sIG1pbigpKSwg
bWF4KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNw
cAppbmRleCAyZDQ3ZDgyMGUxNDBmODdkMDc2NGY4NTg5ZjkzYmNkYjRiZWFhZWVmLi5jNTcxYTc0
NDEwNWMwYzk1MzFiZWI1NzUxY2FjZGZkZGJlNjYzYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTkxLDExICs5MSw4IEBAIHZvaWQgSFRNTFBy
b2dyZXNzRWxlbWVudDo6YXR0YWNoKCkKIAogZG91YmxlIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnZh
bHVlKCkgY29uc3QKIHsKLSAgICBkb3VibGUgdmFsdWU7Ci0gICAgYm9vbCBvayA9IHBhcnNlVG9E
b3VibGVGb3JOdW1iZXJUeXBlKGZhc3RHZXRBdHRyaWJ1dGUodmFsdWVBdHRyKSwgJnZhbHVlKTsK
LSAgICBpZiAoIW9rIHx8IHZhbHVlIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
ICh2YWx1ZSA+IG1heCgpKSA/IG1heCgpIDogdmFsdWU7CisgICAgZG91YmxlIHZhbHVlID0gcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGUoZmFzdEdldEF0dHJpYnV0ZSh2YWx1ZUF0dHIpKTsKKyAg
ICByZXR1cm4gIWlzZmluaXRlKHZhbHVlKSB8fCB2YWx1ZSA8IDAgPyAwIDogc3RkOjptaW4odmFs
dWUsIG1heCgpKTsKIH0KIAogdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpzZXRWYWx1ZShkb3Vi
bGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTA5LDExICsxMDYsOCBAQCB2b2lkIEhU
TUxQcm9ncmVzc0VsZW1lbnQ6OnNldFZhbHVlKGRvdWJsZSB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAKIGRvdWJsZSBIVE1MUHJvZ3Jlc3NFbGVtZW50OjptYXgoKSBjb25zdAogewotICAgIGRv
dWJsZSBtYXg7Ci0gICAgYm9vbCBvayA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGdldEF0
dHJpYnV0ZShtYXhBdHRyKSwgJm1heCk7Ci0gICAgaWYgKCFvayB8fCBtYXggPD0gMCkKLSAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJuIG1heDsKKyAgICBkb3VibGUgbWF4ID0gcGFyc2VUb0Rv
dWJsZUZvck51bWJlclR5cGUoZ2V0QXR0cmlidXRlKG1heEF0dHIpKTsKKyAgICByZXR1cm4gIWlz
ZmluaXRlKG1heCkgfHwgbWF4IDw9IDAgPyAxIDogbWF4OwogfQogCiB2b2lkIEhUTUxQcm9ncmVz
c0VsZW1lbnQ6OnNldE1heChkb3VibGUgbWF4LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCBhMWM5NjEyNGVjNjIwYzZhOTIwZjA3
ZmM1MGY2MWZjMWYzNjZkNjg3Li45NDFkMjUyZDRjMmRhMjBlMmZiMDBiNWQ4YThhNjliZjI5OWY1
YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC05OSw3ICs5
OSw3IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSBuZXdW
YWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBlCiAKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjp0
eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
IXZhbHVlLmlzRW1wdHkoKSAmJiAhcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUodmFsdWUsIDAp
OworICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmICFpc2Zpbml0ZShwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZSh2YWx1ZSkpOwogfQogCiBib29sIE51bWJlcklucHV0VHlwZTo6dHlwZU1p
c21hdGNoKCkgY29uc3QKQEAgLTEyNywxNSArMTI3LDE1IEBAIGJvb2wgTnVtYmVySW5wdXRUeXBl
OjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZl
cnJlCiAgICAgcHJlZmVycmVkU2l6ZSA9IGRlZmF1bHRTaXplOwogCiAgICAgdW5zaWduZWQgbWlu
VmFsdWVEZWNpbWFsUGxhY2VzOwotICAgIGRvdWJsZSBtaW5WYWx1ZURvdWJsZTsKICAgICBTdHJp
bmcgbWluVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0cik7Ci0gICAg
aWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKG1pblZhbHVl
LCAmbWluVmFsdWVEb3VibGUsICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMpKQorICAgIGRvdWJsZSBt
aW5WYWx1ZURvdWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMobWluVmFsdWUsICZtaW5WYWx1ZURlY2ltYWxQbGFjZXMpOworICAgIGlmICghaXNmaW5pdGUo
bWluVmFsdWVEb3VibGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1bnNpZ25lZCBt
YXhWYWx1ZURlY2ltYWxQbGFjZXM7Ci0gICAgZG91YmxlIG1heFZhbHVlRG91YmxlOwogICAgIFN0
cmluZyBtYXhWYWx1ZSA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKTsKLSAg
ICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMobWF4VmFs
dWUsICZtYXhWYWx1ZURvdWJsZSwgJm1heFZhbHVlRGVjaW1hbFBsYWNlcykpCisgICAgZG91Ymxl
IG1heFZhbHVlRG91YmxlID0gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBs
YWNlcyhtYXhWYWx1ZSwgJm1heFZhbHVlRGVjaW1hbFBsYWNlcyk7CisgICAgaWYgKCFpc2Zpbml0
ZShtYXhWYWx1ZURvdWJsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtYXhW
YWx1ZURvdWJsZSA8IG1pblZhbHVlRG91YmxlKSB7CkBAIC0xNDMsMTIgKzE0MywxMiBAQCBib29s
IE51bWJlcklucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0
U2l6ZSwgaW50JiBwcmVmZXJyZQogICAgICAgICBtYXhWYWx1ZURlY2ltYWxQbGFjZXMgPSBtaW5W
YWx1ZURlY2ltYWxQbGFjZXM7CiAgICAgfQogCi0gICAgdW5zaWduZWQgc3RlcFZhbHVlRGVjaW1h
bFBsYWNlczsKLSAgICBkb3VibGUgc3RlcFZhbHVlRG91YmxlOwogICAgIFN0cmluZyBzdGVwVmFs
dWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwogICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShzdGVwVmFsdWUsICJhbnkiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdGVw
VmFsdWUsICZzdGVwVmFsdWVEb3VibGUsICZzdGVwVmFsdWVEZWNpbWFsUGxhY2VzKSkgeworICAg
IHVuc2lnbmVkIHN0ZXBWYWx1ZURlY2ltYWxQbGFjZXM7CisgICAgZG91YmxlIHN0ZXBWYWx1ZURv
dWJsZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3RlcFZh
bHVlLCAmc3RlcFZhbHVlRGVjaW1hbFBsYWNlcyk7CisgICAgaWYgKCFpc2Zpbml0ZShzdGVwVmFs
dWVEb3VibGUpKSB7CiAgICAgICAgIHN0ZXBWYWx1ZURvdWJsZSA9IDE7CiAgICAgICAgIHN0ZXBW
YWx1ZURlY2ltYWxQbGFjZXMgPSAwOwogICAgIH0KQEAgLTE4OCwyMCArMTg4LDEyIEBAIHZvaWQg
TnVtYmVySW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqIGV2ZW50KQogCiBk
b3VibGUgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBk
b3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAogewotICAgIGRvdWJsZSBudW1iZXJWYWx1ZTsKLSAg
ICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNyYywgJm51bWJlclZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSAgICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyVmFs
dWUpKTsKLSAgICByZXR1cm4gbnVtYmVyVmFsdWU7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlKHNyYywgZGVmYXVsdFZhbHVlKTsKIH0KIAogZG91YmxlIE51bWJlcklucHV0
VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3JjLCBk
b3VibGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykgY29uc3QKIHsKLSAg
ICBkb3VibGUgbnVtYmVyVmFsdWU7Ci0gICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlw
ZVdpdGhEZWNpbWFsUGxhY2VzKHNyYywgJm51bWJlclZhbHVlLCBkZWNpbWFsUGxhY2VzKSkKLSAg
ICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSAgICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyVmFs
dWUpKTsKLSAgICByZXR1cm4gbnVtYmVyVmFsdWU7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3JjLCBkZWNpbWFsUGxhY2VzLCBkZWZhdWx0
VmFsdWUpOwogfQogCiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZh
bHVlKSBjb25zdApAQCAtMjM2LDkgKzIyOCwxMCBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjp2
aXNpYmxlVmFsdWUoKSBjb25zdAogICAgICAgICByZXR1cm4gY3VycmVudFZhbHVlOwogICAgIC8v
IEZJWE1FOiBUaGUgZm9sbG93aW5nIHRocmVlIGxpbmVzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4g
d2UKICAgICAvLyByZW1vdmUgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBjb252ZXJ0VG9Mb2NhbGl6
ZWROdW1iZXIoKS4KLSAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjpxdWlldF9OYU4oKTsKKyAgICAvLyBOb3RlOiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlw
ZVdpdGhEZWNpbWFsUGxhY2VzIHNldCB6ZXJvIHRvIGRlY2ltYWxQbGFjZXMKKyAgICAvLyBpZiBj
dXJyZW50VmFsdWUgaXNuJ3QgdmFsaWQgZmxvYXRpbmcgcG9pbnRlciBudW1iZXIuCiAgICAgdW5z
aWduZWQgZGVjaW1hbFBsYWNlOwotICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERl
Y2ltYWxQbGFjZXMoY3VycmVudFZhbHVlLCAmZG91YmxlVmFsdWUsICZkZWNpbWFsUGxhY2UpOwor
ICAgIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY3VycmVudFZh
bHVlLCAmZGVjaW1hbFBsYWNlKTsKICAgICByZXR1cm4gY29udmVydFRvTG9jYWxpemVkTnVtYmVy
KGN1cnJlbnRWYWx1ZSwgZGVjaW1hbFBsYWNlKTsKIH0KIApAQCAtMjYyLDcgKzI1NSw3IEBAIFN0
cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3Nl
ZFZhbHVlKSBjb25zdAogewogICAgIGlmIChwcm9wb3NlZFZhbHVlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHByb3Bvc2VkVmFsdWU7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1i
ZXJUeXBlKHByb3Bvc2VkVmFsdWUsIDApID8gcHJvcG9zZWRWYWx1ZSA6IGVtcHR5QXRvbS5zdHJp
bmcoKTsKKyAgICByZXR1cm4gaXNmaW5pdGUocGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUocHJv
cG9zZWRWYWx1ZSkpID8gcHJvcG9zZWRWYWx1ZSA6IGVtcHR5U3RyaW5nKCk7CiB9CiAKIGJvb2wg
TnVtYmVySW5wdXRUeXBlOjpoYXNVbmFjY2VwdGFibGVWYWx1ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDZmNTkwZTQ4YTNiNmQ2OTVjNDYyYzdkNmI5YzQ5MzUy
Zjg0YWEyNTQuLmI0MTdkYzMyMDNiODQ3YWQ1YzZjYTI1ZGE1MWZkOWM3ZDQ2MDVjY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0yMjEsMTEgKzIyMSw3IEBAIFJl
bmRlck9iamVjdCogUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKSBjCiAKIGRvdWJsZSBSYW5nZUlucHV0VHlwZTo6cGFyc2VUb0Rv
dWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAg
ICBkb3VibGUgbnVtYmVyVmFsdWU7Ci0gICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlw
ZShzcmMsICZudW1iZXJWYWx1ZSkpCi0gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci0gICAg
QVNTRVJUKGlzZmluaXRlKG51bWJlclZhbHVlKSk7Ci0gICAgcmV0dXJuIG51bWJlclZhbHVlOwor
ICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzcmMsIGRlZmF1bHRWYWx1ZSk7
CiB9CiAKIFN0cmluZyBSYW5nZUlucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcAppbmRleCBlOTczYWZlM2MxNGE5MzQzZDA4NzFi
ZGI4MTFhN2Y2NmJlN2E5NDFiLi45YjliN2RjYzk0OWNjNzVkNTUwYjA4MDdhOTNiNzYwNDU3ODg3
YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCkBAIC0xMjIsNyArMTIyLDggQEAgU3Rl
cFJhbmdlOjpEb3VibGVXaXRoRGVjaW1hbFBsYWNlc09yTWlzc2luZyBTdGVwUmFuZ2U6OnBhcnNl
U3RlcChBbnlTdGVwSGFuZGxpbmcKICAgICB9CiAKICAgICBEb3VibGVXaXRoRGVjaW1hbFBsYWNl
c09yTWlzc2luZyBzdGVwKDApOwotICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVX
aXRoRGVjaW1hbFBsYWNlcyhzdGVwU3RyaW5nLCAmc3RlcC52YWx1ZS52YWx1ZSwgJnN0ZXAudmFs
dWUuZGVjaW1hbFBsYWNlcykgfHwgc3RlcC52YWx1ZS52YWx1ZSA8PSAwLjApCisgICAgc3RlcC52
YWx1ZS52YWx1ZSA9IHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMo
c3RlcFN0cmluZywgJnN0ZXAudmFsdWUuZGVjaW1hbFBsYWNlcyk7CisgICAgaWYgKCFpc2Zpbml0
ZShzdGVwLnZhbHVlLnZhbHVlKSB8fCBzdGVwLnZhbHVlLnZhbHVlIDw9IDAuMCkKICAgICAgICAg
cmV0dXJuIERvdWJsZVdpdGhEZWNpbWFsUGxhY2VzT3JNaXNzaW5nKHN0ZXBEZXNjcmlwdGlvbi5k
ZWZhdWx0VmFsdWUoKSk7CiAKICAgICBzd2l0Y2ggKHN0ZXBEZXNjcmlwdGlvbi5zdGVwVmFsdWVT
aG91bGRCZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggMWExMTAxOTU5ODJhODFjY2Q3
ZjM4OTJkZDAzZjNmMTYyOTNiMWQyYS4uMGFkYmZkODU3YTUwNjk5OTMxY2JkMzkxMDZmNmIwNGE2
ZTc0MmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC0xMDYsMTMgKzEwNiwxMyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzdGVwTWlzbWF0Y2goZG91YmxlKSBjb25zdDsKIAogICAgIC8vIENs
YW1wIHRoZSBtaWRkbGUgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBzdGVwCi0gICAgZG91YmxlIGRl
ZmF1bHRWYWx1ZSgpCisgICAgZG91YmxlIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gY2xhbXBWYWx1ZSgobV9taW5pbXVtICsgbV9tYXhpbXVtKSAvIDIpOwogICAg
IH0KIAogICAgIC8vIE1hcCB2YWx1ZSBpbnRvIDAtMSByYW5nZQotICAgIGRvdWJsZSBwcm9wb3J0
aW9uRnJvbVZhbHVlKGRvdWJsZSB2YWx1ZSkKKyAgICBkb3VibGUgcHJvcG9ydGlvbkZyb21WYWx1
ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9taW5pbXVtID09IG1f
bWF4aW11bSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICAvLyBNYXAgZnJvbSAwLTEgcmFuZ2UgdG8gdmFsdWUKLSAgICBkb3Vi
bGUgdmFsdWVGcm9tUHJvcG9ydGlvbihkb3VibGUgcHJvcG9ydGlvbikKKyAgICBkb3VibGUgdmFs
dWVGcm9tUHJvcG9ydGlvbihkb3VibGUgcHJvcG9ydGlvbikgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX21pbmltdW0gKyBwcm9wb3J0aW9uICogKG1fbWF4aW11bSAtIG1fbWluaW11bSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcAppbmRleCBiODYwMjAyNWU4YTJkMzgyMjU4MWRkZTAzZmU1ODFkNjVjYzY5MGM5Li5hOTlh
MjFhMDhlNWJkZDA4NjVmYTMzYzczOTU1MDQwMTcyYzM4YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtNjYsNDcgKzY2LDQ5IEBA
IFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiAgICAgcmV0dXJu
IFN0cmluZyhudW1iZXJUb1N0cmluZyhudW1iZXIsIGJ1ZmZlcikpOwogfQogCi1ib29sIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3VibGUqIHJlc3Vs
dCkKK2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmlu
ZywgZG91YmxlIGZhbGxiYWNrVmFsdWUpCiB7CiAgICAgLy8gU2VlIEhUTUw1IDIuNS40LjMgYFJl
YWwgbnVtYmVycy4nCiAKICAgICAvLyBTdHJpbmc6OnRvRG91YmxlKCkgYWNjZXB0cyBsZWFkaW5n
ICsgYW5kIHdoaXRlc3BhY2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIG5vdCB2YWxpZCBoZXJlLgog
ICAgIFVDaGFyIGZpcnN0Q2hhcmFjdGVyID0gc3RyaW5nWzBdOwogICAgIGlmIChmaXJzdENoYXJh
Y3RlciAhPSAnLScgJiYgZmlyc3RDaGFyYWN0ZXIgIT0gJy4nICYmICFpc0FTQ0lJRGlnaXQoZmly
c3RDaGFyYWN0ZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBmYWxs
YmFja1ZhbHVlOwogCiAgICAgYm9vbCB2YWxpZCA9IGZhbHNlOwogICAgIGRvdWJsZSB2YWx1ZSA9
IHN0cmluZy50b0RvdWJsZSgmdmFsaWQpOwogICAgIGlmICghdmFsaWQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKICAgICAvLyBOYU4gYW5k
IGluZmluaXR5IGFyZSBjb25zaWRlcmVkIHZhbGlkIGJ5IFN0cmluZzo6dG9Eb3VibGUsIGJ1dCBu
b3QgdmFsaWQgaGVyZS4KICAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIC8vIE51bWJlcnMg
YXJlIGNvbnNpZGVyZWQgZmluaXRlIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcg
cG9pbnQgdmFsdWVzLgogICAgIC8vIFNlZSBIVE1MNSAyLjUuNC4zIGBSZWFsIG51bWJlcnMuJwog
ICAgIGlmICgtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpID4gdmFsdWUgfHwgdmFs
dWUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrVmFsdWU7CiAKLSAgICBpZiAocmVzdWx0KSB7
Ci0gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjb252ZXJ0cyAtMCB0byArMC4K
LSAgICAgICAgKnJlc3VsdCA9IHZhbHVlID8gdmFsdWUgOiAwOwotICAgIH0KKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGV4cHJlc3Npb24gY29udmVydHMgLTAgdG8gKzAuCisgICAgcmV0dXJuIHZhbHVl
ID8gdmFsdWUgOiAwOworfQogCi0gICAgcmV0dXJuIHRydWU7Citkb3VibGUgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0cmluZywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSk7CiB9CiAKLWJvb2wgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRo
RGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlICpyZXN1bHQsIHVuc2ln
bmVkICpkZWNpbWFsUGxhY2VzKQorZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0
aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkICpkZWNpbWFsUGxh
Y2VzLCBkb3VibGUgZmFsbGJhY2tWYWx1ZSkKIHsKICAgICBpZiAoZGVjaW1hbFBsYWNlcykKICAg
ICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOwogCi0gICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVt
YmVyVHlwZShzdHJpbmcsIHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkb3Vi
bGUgdmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmcsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpOworICAgIGlmICghaXNmaW5pdGUodmFsdWUp
KQorICAgICAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTsKIAogICAgIGlmICghZGVjaW1hbFBsYWNl
cykKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIHNp
emVfdCBkb3RJbmRleCA9IHN0cmluZy5maW5kKCcuJyk7CiAgICAgc2l6ZV90IGVJbmRleCA9IHN0
cmluZy5maW5kKCdlJyk7CkBAIC0xNjYsNyArMTY4LDEyIEBAIGJvb2wgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91Ymxl
ICpyCiAgICAgZWxzZQogICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbnREZWNpbWFsUGxhY2VzKTsKIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiB2
YWx1ZTsKK30KKworZG91YmxlIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQ
bGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKQorewor
ICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHN0
cmluZywgZGVjaW1hbFBsYWNlcywgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKSk7CiB9CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggMTljZDI3NjkzOWVjYTYzYjlkZDM3
MTU5ZTM1NTc3YWU3ZGQxYmFmOS4uOGE3NzRmOWVlNDMyNWY3OTk2ZGNlZTgwMmU3ODU5MjFmMTIw
MDcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
aApAQCAtNDQsOCArNDQsMTAgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91Ymxl
KTsKIC8vIENvbnZlcnQgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBkb3VibGUuIElmIHRoZSBj
b252ZXJzaW9uIGZhaWxzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZhbHNlLgogLy8gTGVhZGluZyBv
ciB0cmFpbGluZyBpbGxlZ2FsIGNoYXJhY3RlcnMgY2F1c2UgZmFpbHVyZSwgYXMgZG9lcyBwYXNz
aW5nIGFuIGVtcHR5IHN0cmluZy4KIC8vIFRoZSBkb3VibGUqIHBhcmFtZXRlciBtYXkgYmUgMCB0
byBjaGVjayBpZiB0aGUgc3RyaW5nIGNhbiBiZSBwYXJzZWQgd2l0aG91dCBnZXR0aW5nIHRoZSBy
ZXN1bHQuCi1ib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRv
dWJsZSopOwotYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2Vz
KGNvbnN0IFN0cmluZyYsIGRvdWJsZSosIHVuc2lnbmVkKik7Citkb3VibGUgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJik7Citkb3VibGUgcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGZhbGxiYWNrVmFsdWUpOworZG91YmxlIHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwg
dW5zaWduZWQqKTsKK2RvdWJsZSBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFs
UGxhY2VzKGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkKiwgZG91YmxlIGZhbGxiYWNrVmFsdWUpOwog
CiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNy
dWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwogYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0
cmluZyYsIGludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHAKaW5kZXggMWNlN2U5YjA1ZmJiZmZmZTliYTc4ZjFjZWU2NjNhNTFhOWFh
NjBiZi4uODQyMmEzMDE5OTAyMjk5MTFiNThiNjAwNzhkZDE4MDk2NDVkOWQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC01
MywxNCArNTMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBzdGF0aWMgZG91Ymxl
IHNsaWRlclBvc2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgU3RlcFJh
bmdlIHN0ZXBSYW5nZShlbGVtZW50LT5jcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7Ci0KLSAg
ICBkb3VibGUgb2xkVmFsdWU7Ci0gICAgYm9vbCBwYXJzZVN1Y2Nlc3MgPSBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCAmb2xkVmFsdWUpOwotICAgIGlmICghcGFy
c2VTdWNjZXNzKQotICAgICAgICBvbGRWYWx1ZSA9IHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKTsK
LSAgICBkb3VibGUgbmV3VmFsdWUgPSBzdGVwUmFuZ2UuY2xhbXBWYWx1ZShvbGRWYWx1ZSk7Ci0g
ICAgcmV0dXJuIHN0ZXBSYW5nZS5wcm9wb3J0aW9uRnJvbVZhbHVlKG5ld1ZhbHVlKTsKKyAgICBj
b25zdCBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGVsZW1lbnQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RB
bnkpKTsKKyAgICBjb25zdCBkb3VibGUgb2xkVmFsdWUgPSBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShlbGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOworICAgIHJl
dHVybiBzdGVwUmFuZ2UucHJvcG9ydGlvbkZyb21WYWx1ZShzdGVwUmFuZ2UuY2xhbXBWYWx1ZShv
bGRWYWx1ZSkpOwogfQogCiBpbmxpbmUgc3RhdGljIGJvb2wgaGFzVmVydGljYWxBcHBlYXJhbmNl
KEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>