<?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>10820</bug_id>
          
          <creation_ts>2006-09-11 23:28:21 -0700</creation_ts>
          <short_desc>Add StringImpl::toDouble() and remove uses of .deprecatedString().toDouble()</short_desc>
          <delta_ts>2006-09-26 04:13:17 -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>New Bugs</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>55290</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-11 23:28:21 -0700</bug_when>
    <thetext>Attached is my (broken) patch to do this.  Don&apos;t know why it fails, but it does.  I&apos;ll come back to it eventually.  Posting now for posterity (in case I forget, or someone else wishes to give it a go).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55291</commentid>
    <comment_count>1</comment_count>
      <attachid>10509</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-09-11 23:29:08 -0700</bug_when>
    <thetext>Created attachment 10509
Broken patch (breaks layout tests for svg gradients)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55304</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-09-12 02:29:51 -0700</bug_when>
    <thetext>Perhaps String/StringImpl need a clear division between locale-sensitive and insensitive routines (number parsing can obviously be either). Not something for this bug, although a little comment in the header could be useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56512</commentid>
    <comment_count>3</comment_count>
      <attachid>10778</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-09-26 00:25:56 -0700</bug_when>
    <thetext>Created attachment 10778
Non-broken patch

I found two problems with the toDouble implementation:

+double StringImpl::toDouble(bool* ok) const
+{
+    if (empty()) {

this should be isEmpty(). empty() returns the special empty string singleton so this is always true.

+        if (ok)
+            *ok = false;
+        return 0;
+    }
+    char *end;
+    double val = kjs_strtod(Latin1Encoding().encode(characters(), length()).data(), &amp;end);
+    if (ok)
+        *ok = end == 0 || *end == &apos;\0&apos;;
TextEncoding::encode returns a CString which is destroyed after calling kjs_strtod. This makes the end pointer dangling so *end could potentially crash.

+    return val;
+}

I&apos;ve uploaded a patch that doesn&apos;t break any layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56513</commentid>
    <comment_count>4</comment_count>
      <attachid>10778</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-09-26 00:28:02 -0700</bug_when>
    <thetext>Comment on attachment 10778
Non-broken patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56514</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-09-26 00:43:50 -0700</bug_when>
    <thetext>Committed revision 16568.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56520</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-09-26 04:13:17 -0700</bug_when>
    <thetext>Please remember in the future that this kind of header include:

#include &lt;JavaScriptCore/dtoa.h&gt;

is Mac-specific.  I fixed it to be

#include &lt;kjs/dtoa.h&gt;

instead to fix Win32.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10509</attachid>
            <date>2006-09-11 23:29:08 -0700</date>
            <delta_ts>2006-09-26 00:25:56 -0700</delta_ts>
            <desc>Broken patch (breaks layout tests for svg gradients)</desc>
            <filename>broken-removal.patch</filename>
            <type>text/plain</type>
            <size>19275</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE2MzE3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMDYtMDkt
MTEgIEVyaWMgU2VpZGVsICA8ZXJpY0Blc2VpZGVsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBTdHJpbmc6OiwgQXRvbWlj
U3RyaW5nOjogYW5kIFN0cmluZ0ltcGw6OnRvRG91YmxlIHRvIHJlcGxhY2UgbW9zdCB1c2VzZSBv
ZiBEZXByZWNhdGVkU3RyaW5nOjp0b0RvdWJsZQorCisgICAgICAgIE5vIHRlc3QgY2FzZXMgd2Vy
ZSBoYXJtZWQgaW4gdGhlIGNvZGluZyBvZiB0aGlzIHBhdGNoLgorCisgICAgICAgICogYmluZGlu
Z3MvanMva2pzX3dpbmRvdy5jcHA6CisgICAgICAgIChLSlM6OmZsb2F0RmVhdHVyZSk6CisgICAg
ICAgICoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQuaDogUmVtb3ZlZCB1bi11
c2VkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQW5nbGUu
Y3BwOgorICAgICAgICAoU1ZHQW5nbGU6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAqIGtz
dmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZFQ29t
cG9zaXRlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoU1ZHRkVMaWdo
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZFT2Zmc2V0RWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHA6CisgICAgICAgIChTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFNWR1N0b3BFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vQXRvbWljU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmc6
OnRvRG91YmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmluZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OnRvRG91
YmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0cmluZ0ltcGw6OnRvRG91YmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdHJpbmdJbXBs
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0RlcHJlY2F0ZWRTbGlkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFNsaWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAq
IHhtbC9YUGF0aEdyYW1tYXIueToKKwogMjAwNi0wOS0xMSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBidWcgODEyNiwgY29sdW1uIHdpZHRocyBhcHBs
eSB0byB0aGUgYm9yZGVyIGJveGVzIG9mIGNlbGxzLgpJbmRleDogYmluZGluZ3MvanMva2pzX3dp
bmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHJldmlz
aW9uIDE2MzEyKQorKysgYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyMiwxMiArNTIyLDExIEBAIHN0YXRpYyBmbG9hdCBmbG9hdEZlYXR1cmUoY29uc3QgSGFz
aE1hcDwKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBm
ZWF0dXJlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQogICAgICAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlOwotICAgIERlcHJlY2F0ZWRTdHJpbmcgdmFsdWUgPSBpdC0+
c2Vjb25kLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICAvLyBGSVhNRTogQ2FuJ3QgZGlzdGluZ3Vp
c2ggIjBxIiBmcm9tIHN0cmluZyB3aXRoIG5vIGRpZ2l0cyBpbiBpdCAtLSBib3RoIHJldHVybiBk
ID09IDAgYW5kIG9rID09IGZhbHNlLgogICAgIC8vIFdvdWxkIGJlIGdvb2QgdG8gdGVsbCB0aGVt
IGFwYXJ0IHNvbWVob3cgc2luY2Ugc3RyaW5nIHdpdGggbm8gZGlnaXRzIHNob3VsZCBiZSBkZWZh
dWx0IHZhbHVlIGFuZAogICAgIC8vICIwcSIgc2hvdWxkIGJlIG1pbmltdW0gdmFsdWUuCiAgICAg
Ym9vbCBvazsKLSAgICBkb3VibGUgZCA9IHZhbHVlLnRvRG91YmxlKCZvayk7CisgICAgZG91Ymxl
IGQgPSBpdC0+c2Vjb25kLnRvRG91YmxlKCZvayk7CiAgICAgaWYgKChkID09IDAgJiYgIW9rKSB8
fCBpc25hbihkKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBpZiAoZCA8IG1p
biB8fCBtYXggPD0gbWluKQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBv
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5o
CShyZXZpc2lvbiAxNjMxMikKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSw2IEBAIGNsYXNzIFJlbmRlclN0eWxlOwog
Y2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXI7CiAKLSNp
Zm5kZWYgTkRFQlVHCi12b2lkIGRlYnVnRHVtcENHSW1hZ2VUb0ZpbGUoTlNTdHJpbmcgKmZpbGVu
YW1lLCBDR0ltYWdlUmVmIGltYWdlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotdm9pZCBkZWJ1
Z0R1bXBDR0xheWVyVG9GaWxlKE5TU3RyaW5nICpmaWxlbmFtZSwgQ0dMYXllclJlZiBsYXllciwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLXZvaWQgZGVidWdEdW1wQ0lJbWFnZVRvRmlsZShOU1N0
cmluZyAqZmlsZW5hbWUsIENJSW1hZ2UgKmNpSW1hZ2UsIGludCB3aWR0aCwgaW50IGhlaWdodCk7
Ci0jZW5kaWYKLQogQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdGcm9tQ0dQYXRoKENHUGF0aFJlZiBwYXRo
KTsKIENGU3RyaW5nUmVmIENGU3RyaW5nRnJvbUNHQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJh
bnNmb3JtIHQpOwogQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlTWFwQmV0
d2VlblJlY3RzKENHUmVjdCBzb3VyY2UsIENHUmVjdCBkZXN0KTsKSW5kZXg6IGtzdmcyL3N2Zy9T
VkdBbmdsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0FuZ2xlLmNwcAkocmV2aXNp
b24gMTYzMTIpCisrKyBrc3ZnMi9zdmcvU1ZHQW5nbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgU1ZHQW5nbGU6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3QKICAg
ICBtX3ZhbHVlQXNTdHJpbmcgPSBzOwogCiAgICAgYm9vbCBiT0s7Ci0gICAgbV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMgPSBtX3ZhbHVlQXNTdHJpbmcuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91Ymxl
KCZiT0spOworICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZUFzU3RyaW5nLnRv
RG91YmxlKCZiT0spOwogICAgIG1fdW5pdFR5cGUgPSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVE
OwogCiAgICAgaWYgKCFiT0spIHsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE2MzEyKQorKysga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dAogICAgICAgICBpZiAodmFsdWUgPT0gImluZGVmaW5pdGUiKQogICAgICAg
ICAgICAgbV9yZXBlYXRDb3VudCA9IERCTF9NQVg7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fcmVwZWF0Q291bnQgPSB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKTsKKyAg
ICAgICAgICAgIG1fcmVwZWF0Q291bnQgPSB2YWx1ZS50b0RvdWJsZSgpOwogICAgIH0KICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlcGVhdER1ckF0dHIpCiAgICAgICAg
IG1fcmVwZWF0RHVyID0gdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpOwpJbmRleDoga3N2ZzIvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
c3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNjMxMikKKysrIGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDE1ICs3OCwxNSBAQCB2b2lkIFNWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp0YWJsZVZhbHVlc0F0dHIpCiAgICAgICAgIHRhYmxlVmFsdWVzQmFzZVZhbHVlKCkt
PnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjpzbG9wZUF0dHIpCi0gICAgICAgIHNldFNsb3BlQmFzZVZhbHVlKHZh
bHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0U2xvcGVCYXNl
VmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjppbnRlcmNlcHRBdHRyKQotICAgICAgICBzZXRJbnRlcmNlcHRCYXNlVmFsdWUodmFs
dWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBzZXRJbnRlcmNlcHRC
YXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyKQotICAgICAgICBzZXRBbXBsaXR1ZGVCYXNlVmFsdWUo
dmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBzZXRBbXBsaXR1
ZGVCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpleHBvbmVudEF0dHIpCi0gICAgICAgIHNldEV4cG9uZW50QmFzZVZhbHVl
KHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0RXhwb25l
bnRCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKQotICAgICAgICBzZXRPZmZzZXRCYXNlVmFsdWUodmFs
dWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBzZXRPZmZzZXRCYXNl
VmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZQogICAgICAgICBTVkdFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNjMxMikKKysrIGtzdmcyL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMyArODQsMTMgQEAgdm9pZCBTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6aW4yQXR0cikKICAgICAgICAgc2V0SW4yQmFzZVZhbHVlKHZhbHVlKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmsxQXR0cikKLSAgICAgICAgc2V0
SzFCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAg
ICBzZXRLMUJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OmsyQXR0cikKLSAgICAgICAgc2V0SzJCYXNlVmFsdWUodmFsdWUu
ZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBzZXRLMkJhc2VWYWx1ZSh2
YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OmszQXR0cikKLSAgICAgICAgc2V0SzNCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygp
LnRvRG91YmxlKCkpOworICAgICAgICBzZXRLM0Jhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Oms0QXR0cikKLSAgICAgICAg
c2V0SzRCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAg
ICAgICBzZXRLNEJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlCiAgICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcAkocmV2aXNpb24gMTYzMTIpCisrKyBrc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VNCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6aW5BdHRyKQogICAgICAgICBzZXRJbkJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKQotICAgICAgICBz
ZXRTdXJmYWNlU2NhbGVCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91Ymxl
KCkpOworICAgICAgICBzZXRTdXJmYWNlU2NhbGVCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRB
dHRyKQogICAgICAgICBzZXREaWZmdXNlQ29uc3RhbnRCYXNlVmFsdWUodmFsdWUudG9JbnQoKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3Ro
QXR0cikgewpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE2MzEyKQorKysga3N2ZzIvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OnBhcnNlTQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6aW4yQXR0cikKICAgICAgICAgc2V0SW4yQmFzZVZhbHVlKHZhbHVlKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNjYWxlQXR0cikKLSAgICAgICAgc2V0U2Nh
bGVCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAg
ICBzZXRTY2FsZUJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlCiAgICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MzEy
KQorKysga3N2ZzIvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksMjUgKzY5LDI1IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkK
IHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjphemltdXRoQXR0cikKLSAgICAgICAgc2V0QXppbXV0aEJh
c2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNl
dEF6aW11dGhCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyKQotICAgICAgICBzZXRFbGV2YXRpb25C
YXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBz
ZXRFbGV2YXRpb25CYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgc2V0WEJhc2VWYWx1ZSh2YWx1
ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUo
dmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp5QXR0cikKLSAgICAgICAgc2V0WUJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCku
dG9Eb3VibGUoKSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp6QXR0cikKLSAgICAgICAgc2V0
WkJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAg
IHNldFpCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKQotICAgICAgICBzZXRQb2ludHNBdFhCYXNl
VmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBzZXRQ
b2ludHNBdFhCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKQotICAgICAgICBzZXRQb2ludHNBdFlC
YXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBz
ZXRQb2ludHNBdFlCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyKQotICAgICAgICBzZXRQb2ludHNB
dFpCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAg
ICBzZXRQb2ludHNBdFpCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0cikKLSAgICAgICAg
c2V0U3BlY3VsYXJFeHBvbmVudEJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9E
b3VibGUoKSk7CisgICAgICAgIHNldFNwZWN1bGFyRXhwb25lbnRCYXNlVmFsdWUodmFsdWUudG9E
b3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpsaW1pdGlu
Z0NvbmVBbmdsZUF0dHIpCi0gICAgICAgIHNldExpbWl0aW5nQ29uZUFuZ2xlQmFzZVZhbHVlKHZh
bHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0TGltaXRpbmdD
b25lQW5nbGVCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZQogICAgICAgICBT
VkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IGtzdmcyL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjMxMikKKysrIGtzdmcyL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw5ICs1OCw5IEBAIHZvaWQgU1ZHRkVP
ZmZzZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHIKIHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVl
ID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpkeEF0
dHIpCi0gICAgICAgIHNldER4QmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0Rv
dWJsZSgpKTsKKyAgICAgICAgc2V0RHhCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpkeUF0dHIpCi0gICAgICAgIHNldER5
QmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAg
c2V0RHlCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjppbkF0dHIpCiAgICAgICAgIHNldEluQmFzZVZhbHVlKHZhbHVlKTsK
ICAgICBlbHNlCkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNjMxMikKKysrIGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksMTEgKzY5LDExIEBAIHZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2UKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjppbkF0dHIpCiAgICAgICAgIHNldEluQmFzZVZhbHVlKHZhbHVlKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpCi0gICAgICAg
IHNldFN1cmZhY2VTY2FsZUJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3Vi
bGUoKSk7CisgICAgICAgIHNldFN1cmZhY2VTY2FsZUJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgp
KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3Rh
bnRBdHRyKQotICAgICAgICBzZXRTcGVjdWxhckNvbnN0YW50QmFzZVZhbHVlKHZhbHVlLmRlcHJl
Y2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0U3BlY3VsYXJDb25zdGFudEJh
c2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAgICAgICBzZXRTcGVjdWxhckV4cG9u
ZW50QmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAg
ICAgc2V0U3BlY3VsYXJFeHBvbmVudEJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7
CiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmdMaXN0IG51bWJlcnMgPSBEZXByZWNhdGVkU3RyaW5n
TGlzdDo6c3BsaXQoJyAnLCB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpOwogICAgICAgICBzZXRL
ZXJuZWxVbml0TGVuZ3RoWEJhc2VWYWx1ZShudW1iZXJzWzBdLnRvRG91YmxlKCkpOwpJbmRleDog
a3N2ZzIvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcy
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTYzMTIpCisrKyBrc3Zn
Mi9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZU1hcHBlZAogICAgICAg
ICAgICAgc2V0QmFzZUZyZXF1ZW5jeVlCYXNlVmFsdWUobnVtYmVyc1sxXS50b0RvdWJsZSgpKTsK
ICAgICB9CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzZWVkQXR0cikK
LSAgICAgICAgc2V0U2VlZEJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3Vi
bGUoKSk7CisgICAgICAgIHNldFNlZWRCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpudW1PY3RhdmVzQXR0cikKICAgICAg
ICAgc2V0TnVtT2N0YXZlc0Jhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9VSW50
KCkpOwogICAgIGVsc2UKSW5kZXg6IGtzdmcyL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga3N2ZzIvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMTYzMTIpCisr
KyBrc3ZnMi9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICAgICAg
aWYodmFsdWUuZW5kc1dpdGgoIiUiKSkKICAgICAgICAgICAgIHNldE9mZnNldEJhc2VWYWx1ZSh2
YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkubGVmdCh2YWx1ZS5sZW5ndGgoKSAtIDEpLnRvRG91Ymxl
KCkgLyAxMDAuKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0T2Zmc2V0QmFzZVZhbHVl
KHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgICAgIHNldE9m
ZnNldEJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICB9IGVsc2UKICAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAKSW5kZXg6IHBsYXRm
b3JtL0F0b21pY1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL0F0b21pY1N0cmluZy5o
CShyZXZpc2lvbiAxNjMxMikKKysrIHBsYXRmb3JtL0F0b21pY1N0cmluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgeyByZXR1cm4gbV9zdHJpbmcu
ZW5kc1dpdGgocy5kb21TdHJpbmcoKSwgY2FzZVNlbnNpdGl2ZSk7IH0KICAgICAKICAgICBpbnQg
dG9JbnQoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0ludChvayk7IH0K
KyAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
Zy50b0RvdWJsZShvayk7IH0KICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5wZXJjZW50YWdlKHApOyB9CiAgICAgTGVuZ3RoKiB0b0xlbmd0aEFycmF5
KGludCYgbGVuKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0xlbmd0aEFycmF5KGxlbik7IH0K
ICAgICBMZW5ndGgqIHRvQ29vcmRzQXJyYXkoaW50JiBsZW4pIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLnRvQ29vcmRzQXJyYXkobGVuKTsgfQpJbmRleDogcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9QbGF0Zm9ybVN0cmluZy5oCShyZXZpc2lvbiAxNjMx
MikKKysrIHBsYXRmb3JtL1BsYXRmb3JtU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2
ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIDsKIAogICAgIGludCB0b0ludChib29sKiBvayA9
IDApIGNvbnN0OworICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0OwogICAg
IExlbmd0aCogdG9MZW5ndGhBcnJheShpbnQmIGxlbikgY29uc3Q7CiAgICAgTGVuZ3RoKiB0b0Nv
b3Jkc0FycmF5KGludCYgbGVuKSBjb25zdDsKICAgICBib29sIHBlcmNlbnRhZ2UoaW50ICZfcGVy
Y2VudGFnZSkgY29uc3Q7CkluZGV4OiBwbGF0Zm9ybS9TdHJpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL1N0cmluZy5jcHAJKHJldmlzaW9uIDE2MzEyKQorKysgcGxhdGZvcm0vU3RyaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCwxNiBAQCBpbnQgU3RyaW5nOjp0b0lu
dChib29sKiBvaykgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT50b0ludChvayk7CiB9CiAKK2Rv
dWJsZSBTdHJpbmc6OnRvRG91YmxlKGJvb2wqIG9rKSBjb25zdAoreworICAgIGlmICghbV9pbXBs
KSB7CisgICAgICAgIGlmIChvaykKKyAgICAgICAgICAgICpvayA9IGZhbHNlOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIG1faW1wbC0+dG9Eb3VibGUob2spOworfQorCiBT
dHJpbmcgU3RyaW5nOjpjb3B5KCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkKSW5kZXg6IHBs
YXRmb3JtL1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1N0cmluZ0ltcGwu
Y3BwCShyZXZpc2lvbiAxNjMxMikKKysrIHBsYXRmb3JtL1N0cmluZ0ltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxNCArMjgsMTcgQEAKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAKICNp
bmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAi
RGVwcmVjYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlN0cmlu
Z0hhc2guaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDxranMvaWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91
YnJrLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91c3RyaW5nLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvZHRvYS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCkBAIC01NzIsNiArNTc1LDIwIEBAIGludCBTdHJpbmdJbXBsOjp0b0ludChib29sKiBvaykg
Y29uc3QKICAgICByZXR1cm4gRGVwcmVjYXRlZENvbnN0U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgRGVwcmVjYXRlZENoYXIqPihtX2RhdGEpLCBpKS5zdHJpbmcoKS50b0ludChvayk7CiB9
CiAKK2RvdWJsZSBTdHJpbmdJbXBsOjp0b0RvdWJsZShib29sKiBvaykgY29uc3QKK3sKKyAgICBp
ZiAoZW1wdHkoKSkgeworICAgICAgICBpZiAob2spCisgICAgICAgICAgICAqb2sgPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNoYXIgKmVuZDsKKyAgICBkb3VibGUgdmFs
ID0ga2pzX3N0cnRvZChMYXRpbjFFbmNvZGluZygpLmVuY29kZShjaGFyYWN0ZXJzKCksIGxlbmd0
aCgpKS5kYXRhKCksICZlbmQpOworICAgIGlmIChvaykKKyAgICAgICAgKm9rID0gZW5kID09IDAg
fHwgKmVuZCA9PSAnXDAnOworICAgIHJldHVybiB2YWw7Cit9CisKIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCBpbnQgbGVuZ3RoKQogewogICAgIEFTU0VS
VChsZW5ndGggPj0gMCk7CkluZGV4OiBwbGF0Zm9ybS9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxNjMxMikKKysrIHBsYXRmb3JtL1N0
cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjb250YWluc09ubHlXaGl0ZXNwYWNlKCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc09u
bHlXaGl0ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgY29uc3Q7CiAKLSAgICAv
LyBpZ25vcmVzIHRyYWlsaW5nIGdhcmJhZ2UsIHVubGlrZSBEZXByZWNhdGVkU3RyaW5nCi0gICAg
aW50IHRvSW50KGJvb2wqIG9rID0gMCkgY29uc3Q7CisgICAgaW50IHRvSW50KGJvb2wqIG9rID0g
MCkgY29uc3Q7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZSwgdW5saWtlIERlcHJlY2F0ZWRT
dHJpbmcKKyAgICBkb3VibGUgdG9Eb3VibGUoYm9vbCogb2sgPSAwKSBjb25zdDsKIAogICAgIExl
bmd0aCogdG9Db29yZHNBcnJheShpbnQmIGxlbikgY29uc3Q7CiAgICAgTGVuZ3RoKiB0b0xlbmd0
aEFycmF5KGludCYgbGVuKSBjb25zdDsKSW5kZXg6IHJlbmRlcmluZy9EZXByZWNhdGVkU2xpZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5jcHAJKHJldmlz
aW9uIDE2MzEyKQorKysgcmVuZGVyaW5nL0RlcHJlY2F0ZWRTbGlkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCwxMSArNzAsMTEgQEAgdm9pZCBEZXByZWNhdGVkU2xpZGVyOjp1cGRhdGVGcm9t
RWxlbWVudAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbWF4U3RyID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShtYXhBdHRyKTsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHByZWNpc2lvbiA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
Pihub2RlKCkpLT5nZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cik7CiAgICAgCi0gICAgZG91Ymxl
IG1pblZhbCA9IG1pblN0ci5pc051bGwoKSA/IDAuMCA6IG1pblN0ci5kZXByZWNhdGVkU3RyaW5n
KCkudG9Eb3VibGUoKTsKLSAgICBkb3VibGUgbWF4VmFsID0gbWF4U3RyLmlzTnVsbCgpID8gMTAw
LjAgOiBtYXhTdHIuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCk7CisgICAgZG91YmxlIG1p
blZhbCA9IG1pblN0ci5pc051bGwoKSA/IDAuMCA6IG1pblN0ci50b0RvdWJsZSgpOworICAgIGRv
dWJsZSBtYXhWYWwgPSBtYXhTdHIuaXNOdWxsKCkgPyAxMDAuMCA6IG1heFN0ci50b0RvdWJsZSgp
OwogICAgIG1pblZhbCA9IG1pbihtaW5WYWwsIG1heFZhbCk7IC8vIE1ha2Ugc3VyZSB0aGUgcmFu
Z2UgaXMgc2FuZS4KICAgICAKLSAgICBkb3VibGUgdmFsID0gdmFsdWUuaXNOdWxsKCkgPyAobWF4
VmFsICsgbWluVmFsKS8yLjAgOiB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKTsK
KyAgICBkb3VibGUgdmFsID0gdmFsdWUuaXNOdWxsKCkgPyAobWF4VmFsICsgbWluVmFsKS8yLjAg
OiB2YWx1ZS50b0RvdWJsZSgpOwogICAgIHZhbCA9IG1heChtaW5WYWwsIG1pbih2YWwsIG1heFZh
bCkpOyAvLyBNYWtlIHN1cmUgdmFsIGlzIHdpdGhpbiBtaW4vbWF4LgogICAgIAogICAgIC8vIEZv
cmNlIGludGVnZXIgdmFsdWUgaWYgbm90IGZsb2F0LgpJbmRleDogeG1sL1hQYXRoR3JhbW1hci55
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHhtbC9YUGF0aEdyYW1tYXIueQkocmV2aXNpb24gMTYzMTIpCisrKyB4
bWwvWFBhdGhHcmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTMxNywxMyArMzE3LDEzIEBAIFBy
aW1hcnlFeHByOgogICAgIExJVEVSQUwKICAgICB7CiAgICAgICAgICQkID0gbmV3IFN0cmluZ0V4
cHJlc3Npb24oKiQxKTsKLSAgICAgICAgUEFSU0VSLT5kZWxldGVTdHJpbmcoJDEpOyAgICAgICAg
CisgICAgICAgIFBBUlNFUi0+ZGVsZXRlU3RyaW5nKCQxKTsKICAgICAgICAgUEFSU0VSLT5yZWdp
c3RlclBhcnNlTm9kZSgkJCk7CiAgICAgfQogICAgIHwKICAgICBOVU1CRVIKICAgICB7Ci0gICAg
ICAgICQkID0gbmV3IE51bWJlcigkMS0+ZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOwor
ICAgICAgICAkJCA9IG5ldyBOdW1iZXIoJDEtPnRvRG91YmxlKCkpOwogICAgICAgICBQQVJTRVIt
PmRlbGV0ZVN0cmluZygkMSk7CiAgICAgICAgIFBBUlNFUi0+cmVnaXN0ZXJQYXJzZU5vZGUoJCQp
OwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>10778</attachid>
            <date>2006-09-26 00:25:56 -0700</date>
            <delta_ts>2006-09-26 00:28:02 -0700</delta_ts>
            <desc>Non-broken patch</desc>
            <filename>platform-string-todouble.txt</filename>
            <type>text/plain</type>
            <size>18514</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMDYtMDkt
MjYgIEFuZGVycyBDYXJsc3NvbiAgPGFjYXJsc3NvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgyMAorICAgICAgICBBZGQgU3RyaW5nSW1wbDo6
dG9Eb3VibGUoKSBhbmQgcmVtb3ZlIHVzZXMgb2YgLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJs
ZSgpCisgICAgICAgIAorICAgICAgICAoT3JpZ2luYWxseSB3cml0dGVuIGJ5IEVyaWMgU2VpZGVs
KS4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHA6CisgICAg
ICAgIChLSlM6OmZsb2F0RmVhdHVyZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0FuZ2xlLmNw
cDoKKyAgICAgICAgKFNWR0FuZ2xlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChTVkdBbmltYXRpb25FbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICog
a3N2ZzIvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAg
ICAgICAoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFNW
R0ZFTGlnaHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNl
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChTVkdTdG9wRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIHBsYXRmb3JtL0F0b21pY1N0cmluZy5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nOjp0b0RvdWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1TdHJpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdHJpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3RyaW5nOjp0b0RvdWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vU3RyaW5n
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdJbXBsOjp0b0RvdWJsZSk6CisgICAg
ICAgICogcGxhdGZvcm0vU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9EZXByZWNh
dGVkU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTbGlkZXI6OnVwZGF0
ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiB4bWwvWFBhdGhHcmFtbWFyLnk6CisKIDIwMDYtMDkt
MjUgIERhdmlkIEhhcnJpc29uICA8aGFycmlzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBPbWVybmljayBhbmQgVGltIEhhdGNoZXIuCkluZGV4OiBiaW5kaW5ncy9qcy9r
anNfd2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAko
cmV2aXNpb24gMTY1NjcpCisrKyBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIzLDEyICs1MjMsMTEgQEAgc3RhdGljIGZsb2F0IGZsb2F0RmVhdHVyZShjb25z
dCBIYXNoTWFwPAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyB2YWx1ZSA9
IGl0LT5zZWNvbmQuZGVwcmVjYXRlZFN0cmluZygpOwogICAgIC8vIEZJWE1FOiBDYW4ndCBkaXN0
aW5ndWlzaCAiMHEiIGZyb20gc3RyaW5nIHdpdGggbm8gZGlnaXRzIGluIGl0IC0tIGJvdGggcmV0
dXJuIGQgPT0gMCBhbmQgb2sgPT0gZmFsc2UuCiAgICAgLy8gV291bGQgYmUgZ29vZCB0byB0ZWxs
IHRoZW0gYXBhcnQgc29tZWhvdyBzaW5jZSBzdHJpbmcgd2l0aCBubyBkaWdpdHMgc2hvdWxkIGJl
IGRlZmF1bHQgdmFsdWUgYW5kCiAgICAgLy8gIjBxIiBzaG91bGQgYmUgbWluaW11bSB2YWx1ZS4K
ICAgICBib29sIG9rOwotICAgIGRvdWJsZSBkID0gdmFsdWUudG9Eb3VibGUoJm9rKTsKKyAgICBk
b3VibGUgZCA9IGl0LT5zZWNvbmQudG9Eb3VibGUoJm9rKTsKICAgICBpZiAoKGQgPT0gMCAmJiAh
b2spIHx8IGlzbmFuKGQpKQogICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogICAgIGlmIChk
IDwgbWluIHx8IG1heCA8PSBtaW4pCkluZGV4OiBrc3ZnMi9zdmcvU1ZHQW5nbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdBbmdsZS5jcHAJKHJldmlzaW9uIDE2NTY3KQorKysga3N2
ZzIvc3ZnL1NWR0FuZ2xlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lk
IFNWR0FuZ2xlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0CiAgICAgbV92YWx1ZUFzU3RyaW5n
ID0gczsKIAogICAgIGJvb2wgYk9LOwotICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92
YWx1ZUFzU3RyaW5nLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgmYk9LKTsKKyAgICBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWVBc1N0cmluZy50b0RvdWJsZSgmYk9LKTsKICAg
ICBtX3VuaXRUeXBlID0gU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDsKIAogICAgIGlmICghYk9L
KSB7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjU2NykKKysr
IGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3
LDcgKzIyNyw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VNYXBwZWRBdHQKICAg
ICAgICAgaWYgKHZhbHVlID09ICJpbmRlZmluaXRlIikKICAgICAgICAgICAgIG1fcmVwZWF0Q291
bnQgPSBEQkxfTUFYOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3JlcGVhdENvdW50ID0g
dmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCk7CisgICAgICAgICAgICBtX3JlcGVh
dENvdW50ID0gdmFsdWUudG9Eb3VibGUoKTsKICAgICB9CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjpyZXBlYXREdXJBdHRyKQogICAgICAgICBtX3JlcGVhdER1ciA9IHZh
bHVlLmRlcHJlY2F0ZWRTdHJpbmcoKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTY1NjcpCisrKyBrc3Zn
Mi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03OCwxNSArNzgsMTUgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudAogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6dGFibGVWYWx1
ZXNBdHRyKQogICAgICAgICB0YWJsZVZhbHVlc0Jhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXBy
ZWNhdGVkU3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
c2xvcGVBdHRyKQotICAgICAgICBzZXRTbG9wZUJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3Ry
aW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldFNsb3BlQmFzZVZhbHVlKHZhbHVlLnRvRG91
YmxlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aW50ZXJjZXB0
QXR0cikKLSAgICAgICAgc2V0SW50ZXJjZXB0QmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJp
bmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0SW50ZXJjZXB0QmFzZVZhbHVlKHZhbHVlLnRv
RG91YmxlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6YW1wbGl0
dWRlQXR0cikKLSAgICAgICAgc2V0QW1wbGl0dWRlQmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRT
dHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0QW1wbGl0dWRlQmFzZVZhbHVlKHZhbHVl
LnRvRG91YmxlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZXhw
b25lbnRBdHRyKQotICAgICAgICBzZXRFeHBvbmVudEJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVk
U3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldEV4cG9uZW50QmFzZVZhbHVlKHZhbHVl
LnRvRG91YmxlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b2Zm
c2V0QXR0cikKLSAgICAgICAgc2V0T2Zmc2V0QmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJp
bmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0T2Zmc2V0QmFzZVZhbHVlKHZhbHVlLnRvRG91
YmxlKCkpOwogICAgIGVsc2UKICAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CkluZGV4OiBrc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2aXNp
b24gMTY1NjcpCisrKyBrc3ZnMi9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsMTMgKzgzLDEzIEBAIHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpw
YXJzZU1hcHBlZEEKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluMkF0
dHIpCiAgICAgICAgIHNldEluMkJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjprMUF0dHIpCi0gICAgICAgIHNldEsxQmFzZVZhbHVlKHZhbHVl
LmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0SzFCYXNlVmFsdWUo
dmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjprMkF0dHIpCi0gICAgICAgIHNldEsyQmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmco
KS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0SzJCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjprM0F0dHIpCi0gICAgICAg
IHNldEszQmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAg
ICAgICAgc2V0SzNCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjprNEF0dHIpCi0gICAgICAgIHNldEs0QmFzZVZhbHVlKHZh
bHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0SzRCYXNlVmFs
dWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZQogICAgICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpJbmRl
eDoga3N2ZzIvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga3N2ZzIvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2
NTY3KQorKysga3N2ZzIvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OnBhcnNlTQogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0cikKICAg
ICAgICAgc2V0SW4xQmFzZVZhbHVlKHZhbHVlKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpCi0gICAgICAgIHNldFN1cmZhY2VTY2FsZUJh
c2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNl
dFN1cmZhY2VTY2FsZUJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIpCiAgICAgICAgIHNl
dERpZmZ1c2VDb25zdGFudEJhc2VWYWx1ZSh2YWx1ZS50b0ludCgpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKSB7CkluZGV4OiBr
c3ZnMi9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
c3ZnMi9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNpb24gMTY1Njcp
CisrKyBrc3ZnMi9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
cGFyc2VNCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjppbjJBdHRyKQog
ICAgICAgICBzZXRJbjJCYXNlVmFsdWUodmFsdWUpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKQotICAgICAgICBzZXRTY2FsZUJhc2VWYWx1ZSh2YWx1
ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldFNjYWxlQmFzZVZh
bHVlKHZhbHVlLnRvRG91YmxlKCkpOwogICAgIGVsc2UKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5k
ZXg6IGtzdmcyL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIv
c3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTY1NjcpCisrKyBrc3ZnMi9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwyNSArNjgsMjUgQEAg
dm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogewogICAgIGNvbnN0IFN0
cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OmF6aW11dGhBdHRyKQotICAgICAgICBzZXRBemltdXRoQmFzZVZhbHVlKHZhbHVlLmRl
cHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0QXppbXV0aEJhc2VWYWx1
ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OmVsZXZhdGlvbkF0dHIpCi0gICAgICAgIHNldEVsZXZhdGlvbkJhc2VWYWx1ZSh2YWx1ZS5k
ZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldEVsZXZhdGlvbkJhc2VW
YWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnhBdHRyKQotICAgICAgICBzZXRYQmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJp
bmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgp
KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAg
ICBzZXRZQmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAg
ICAgICAgc2V0WUJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnpBdHRyKQotICAgICAgICBzZXRaQmFzZVZhbHVlKHZhbHVl
LmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgc2V0WkJhc2VWYWx1ZSh2
YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OnBvaW50c0F0WEF0dHIpCi0gICAgICAgIHNldFBvaW50c0F0WEJhc2VWYWx1ZSh2YWx1ZS5kZXBy
ZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldFBvaW50c0F0WEJhc2VWYWx1
ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnBvaW50c0F0WUF0dHIpCi0gICAgICAgIHNldFBvaW50c0F0WUJhc2VWYWx1ZSh2YWx1ZS5k
ZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldFBvaW50c0F0WUJhc2VW
YWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnBvaW50c0F0WkF0dHIpCi0gICAgICAgIHNldFBvaW50c0F0WkJhc2VWYWx1ZSh2YWx1
ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldFBvaW50c0F0WkJh
c2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKQotICAgICAgICBzZXRTcGVjdWxhckV4cG9u
ZW50QmFzZVZhbHVlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAg
ICAgc2V0U3BlY3VsYXJFeHBvbmVudEJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikK
LSAgICAgICAgc2V0TGltaXRpbmdDb25lQW5nbGVCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0
cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBzZXRMaW1pdGluZ0NvbmVBbmdsZUJhc2VWYWx1
ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlCiAgICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE2NTY3KQorKysga3N2ZzIvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDkgKzU1LDkgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cgogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmR4QXR0cikKLSAgICAgICAgc2V0
RHhCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAg
ICBzZXREeEJhc2VWYWx1ZSh2YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OmR5QXR0cikKLSAgICAgICAgc2V0RHlCYXNlVmFsdWUodmFsdWUu
ZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAgICBzZXREeUJhc2VWYWx1ZSh2
YWx1ZS50b0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OmluQXR0cikKICAgICAgICAgc2V0SW4xQmFzZVZhbHVlKHZhbHVlKTsKICAgICBlbHNlCkluZGV4
OiBrc3ZnMi9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga3N2ZzIvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NjU2NykKKysrIGtzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjksMTEgKzY5LDExIEBAIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6cGFyc2UKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjppbkF0dHIp
CiAgICAgICAgIHNldEluMUJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKQotICAgICAgICBzZXRTdXJmYWNlU2Nh
bGVCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAg
ICBzZXRTdXJmYWNlU2NhbGVCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0cikKLSAgICAg
ICAgc2V0U3BlY3VsYXJDb25zdGFudEJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCku
dG9Eb3VibGUoKSk7CisgICAgICAgIHNldFNwZWN1bGFyQ29uc3RhbnRCYXNlVmFsdWUodmFsdWUu
dG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0cikKLSAgICAgICAgc2V0U3BlY3VsYXJFeHBvbmVudEJhc2VWYWx1ZSh2
YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgIHNldFNwZWN1bGFy
RXhwb25lbnRCYXNlVmFsdWUodmFsdWUudG9Eb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewogICAgICAgICBEZXBy
ZWNhdGVkU3RyaW5nTGlzdCBudW1iZXJzID0gRGVwcmVjYXRlZFN0cmluZ0xpc3Q6OnNwbGl0KCcg
JywgdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpKTsKICAgICAgICAgc2V0S2VybmVsVW5pdExlbmd0
aFhCYXNlVmFsdWUobnVtYmVyc1swXS50b0RvdWJsZSgpKTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTY3KQorKysga3N2ZzIvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQg
U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VNYXBwZWQKICAgICAgICAgICAgIHNldEJhc2VG
cmVxdWVuY3lZQmFzZVZhbHVlKG51bWJlcnNbMV0udG9Eb3VibGUoKSk7CiAgICAgfQogICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6c2VlZEF0dHIpCi0gICAgICAgIHNldFNl
ZWRCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCkpOworICAgICAg
ICBzZXRTZWVkQmFzZVZhbHVlKHZhbHVlLnRvRG91YmxlKCkpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHIpCiAgICAgICAgIHNldE51bU9jdGF2
ZXNCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvVUludCgpKTsKICAgICBlbHNl
CkluZGV4OiBrc3ZnMi9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcy
L3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2NTY3KQorKysga3N2ZzIvc3ZnL1NW
R1N0b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFNW
R1N0b3BFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgICAgIGlmKHZhbHVlLmVuZHNX
aXRoKCIlIikpCiAgICAgICAgICAgICBzZXRPZmZzZXRCYXNlVmFsdWUodmFsdWUuZGVwcmVjYXRl
ZFN0cmluZygpLmxlZnQodmFsdWUubGVuZ3RoKCkgLSAxKS50b0RvdWJsZSgpIC8gMTAwLik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNldE9mZnNldEJhc2VWYWx1ZSh2YWx1ZS5kZXByZWNh
dGVkU3RyaW5nKCkudG9Eb3VibGUoKSk7CisgICAgICAgICAgICBzZXRPZmZzZXRCYXNlVmFsdWUo
dmFsdWUudG9Eb3VibGUoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogCkluZGV4OiBwbGF0Zm9ybS9BdG9taWNTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAkocmV2aXNpb24gMTY1
NjcpCisrKyBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiAr
NjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHMuZG9t
U3RyaW5nKCksIGNhc2VTZW5zaXRpdmUpOyB9CiAgICAgCiAgICAgaW50IHRvSW50KGJvb2wqIG9r
ID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9JbnQob2spOyB9CisgICAgZG91YmxlIHRv
RG91YmxlKGJvb2wqIG9rID0gMCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcudG9Eb3VibGUob2sp
OyB9CiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYgcCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
cGVyY2VudGFnZShwKTsgfQogICAgIExlbmd0aCogdG9MZW5ndGhBcnJheShpbnQmIGxlbikgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcudG9MZW5ndGhBcnJheShsZW4pOyB9CiAgICAgTGVuZ3RoKiB0
b0Nvb3Jkc0FycmF5KGludCYgbGVuKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy50b0Nvb3Jkc0Fy
cmF5KGxlbik7IH0KSW5kZXg6IHBsYXRmb3JtL1BsYXRmb3JtU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaAkocmV2aXNpb24gMTY1NjcpCisrKyBwbGF0Zm9y
bS9QbGF0Zm9ybVN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcgQEAgcHVi
bGljOgogICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxv
d0VtcHR5RW50cmllcyA9IGZhbHNlKSBjb25zdDsKIAogICAgIGludCB0b0ludChib29sKiBvayA9
IDApIGNvbnN0OworICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDApIGNvbnN0OwogICAg
IExlbmd0aCogdG9MZW5ndGhBcnJheShpbnQmIGxlbikgY29uc3Q7CiAgICAgTGVuZ3RoKiB0b0Nv
b3Jkc0FycmF5KGludCYgbGVuKSBjb25zdDsKICAgICBib29sIHBlcmNlbnRhZ2UoaW50ICZfcGVy
Y2VudGFnZSkgY29uc3Q7CkluZGV4OiBwbGF0Zm9ybS9TdHJpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL1N0cmluZy5jcHAJKHJldmlzaW9uIDE2NTY3KQorKysgcGxhdGZvcm0vU3RyaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDYgKzM1NSwxNiBAQCBpbnQgU3RyaW5nOjp0b0lu
dChib29sKiBvaykgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT50b0ludChvayk7CiB9CiAKK2Rv
dWJsZSBTdHJpbmc6OnRvRG91YmxlKGJvb2wqIG9rKSBjb25zdAoreworICAgIGlmICghbV9pbXBs
KSB7CisgICAgICAgIGlmIChvaykKKyAgICAgICAgICAgICpvayA9IGZhbHNlOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIG1faW1wbC0+dG9Eb3VibGUob2spOworfQorCiBT
dHJpbmcgU3RyaW5nOjpjb3B5KCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkKSW5kZXg6IHBs
YXRmb3JtL1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1N0cmluZ0ltcGwu
Y3BwCShyZXZpc2lvbiAxNjU2NykKKysrIHBsYXRmb3JtL1N0cmluZ0ltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxNCArMjgsMTcgQEAKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAKICNp
bmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAi
RGVwcmVjYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlN0cmlu
Z0hhc2guaCIKKyNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDxranMvaWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91
YnJrLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91c3RyaW5nLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvZHRvYS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCkBAIC02MjYsNiArNjI5LDIxIEBAIGludCBTdHJpbmdJbXBsOjp0b0ludChib29sKiBvaykg
Y29uc3QKICAgICByZXR1cm4gRGVwcmVjYXRlZENvbnN0U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgRGVwcmVjYXRlZENoYXIqPihtX2RhdGEpLCBpKS5zdHJpbmcoKS50b0ludChvayk7CiB9
CiAKK2RvdWJsZSBTdHJpbmdJbXBsOjp0b0RvdWJsZShib29sKiBvaykgY29uc3QKK3sKKyAgICBp
ZiAoIW1fbGVuZ3RoKSB7CisgICAgICAgIGlmIChvaykKKyAgICAgICAgICAgICpvayA9IGZhbHNl
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY2hhciAqZW5kOworICAgIENTdHJpbmcg
bGF0aW4xU3RyaW5nID0gTGF0aW4xRW5jb2RpbmcoKS5lbmNvZGUoY2hhcmFjdGVycygpLCBsZW5n
dGgoKSk7CisgICAgZG91YmxlIHZhbCA9IGtqc19zdHJ0b2QobGF0aW4xU3RyaW5nLCAmZW5kKTsK
KyAgICBpZiAob2spCisgICAgICAgICpvayA9IGVuZCA9PSAwIHx8ICplbmQgPT0gJ1wwJzsKKyAg
ICByZXR1cm4gdmFsOworfQorCiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVQ2hhciogYSwgY29u
c3QgY2hhciogYiwgaW50IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoID49IDApOwpJbmRl
eDogcGxhdGZvcm0vU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1N0cmluZ0lt
cGwuaAkocmV2aXNpb24gMTY1NjcpCisrKyBwbGF0Zm9ybS9TdHJpbmdJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDggKzk0LDggQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNPbmx5V2hp
dGVzcGFjZSgpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSh1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBsZW4pIGNvbnN0OwogCi0gICAgLy8gaWdub3JlcyB0cmFpbGluZyBn
YXJiYWdlLCB1bmxpa2UgRGVwcmVjYXRlZFN0cmluZwotICAgIGludCB0b0ludChib29sKiBvayA9
IDApIGNvbnN0OworICAgIGludCB0b0ludChib29sKiBvayA9IDApIGNvbnN0OyAvLyBpZ25vcmVz
IHRyYWlsaW5nIGdhcmJhZ2UsIHVubGlrZSBEZXByZWNhdGVkU3RyaW5nCisgICAgZG91YmxlIHRv
RG91YmxlKGJvb2wqIG9rID0gMCkgY29uc3Q7CiAKICAgICBMZW5ndGgqIHRvQ29vcmRzQXJyYXko
aW50JiBsZW4pIGNvbnN0OwogICAgIExlbmd0aCogdG9MZW5ndGhBcnJheShpbnQmIGxlbikgY29u
c3Q7CkluZGV4OiByZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cmVuZGVyaW5nL0RlcHJlY2F0ZWRTbGlkZXIuY3BwCShyZXZpc2lvbiAxNjU2NykKKysrIHJlbmRl
cmluZy9EZXByZWNhdGVkU2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTEgKzcwLDEx
IEBAIHZvaWQgRGVwcmVjYXRlZFNsaWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIG1heFN0ciA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2Rl
KCkpLT5nZXRBdHRyaWJ1dGUobWF4QXR0cik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVj
aXNpb24gPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKS0+Z2V0QXR0cmli
dXRlKHByZWNpc2lvbkF0dHIpOwogICAgIAotICAgIGRvdWJsZSBtaW5WYWwgPSBtaW5TdHIuaXNO
dWxsKCkgPyAwLjAgOiBtaW5TdHIuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCk7Ci0gICAg
ZG91YmxlIG1heFZhbCA9IG1heFN0ci5pc051bGwoKSA/IDEwMC4wIDogbWF4U3RyLmRlcHJlY2F0
ZWRTdHJpbmcoKS50b0RvdWJsZSgpOworICAgIGRvdWJsZSBtaW5WYWwgPSBtaW5TdHIuaXNOdWxs
KCkgPyAwLjAgOiBtaW5TdHIudG9Eb3VibGUoKTsKKyAgICBkb3VibGUgbWF4VmFsID0gbWF4U3Ry
LmlzTnVsbCgpID8gMTAwLjAgOiBtYXhTdHIudG9Eb3VibGUoKTsKICAgICBtaW5WYWwgPSBtaW4o
bWluVmFsLCBtYXhWYWwpOyAvLyBNYWtlIHN1cmUgdGhlIHJhbmdlIGlzIHNhbmUuCiAgICAgCi0g
ICAgZG91YmxlIHZhbCA9IHZhbHVlLmlzTnVsbCgpID8gKG1heFZhbCArIG1pblZhbCkvMi4wIDog
dmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnRvRG91YmxlKCk7CisgICAgZG91YmxlIHZhbCA9IHZh
bHVlLmlzTnVsbCgpID8gKG1heFZhbCArIG1pblZhbCkvMi4wIDogdmFsdWUudG9Eb3VibGUoKTsK
ICAgICB2YWwgPSBtYXgobWluVmFsLCBtaW4odmFsLCBtYXhWYWwpKTsgLy8gTWFrZSBzdXJlIHZh
bCBpcyB3aXRoaW4gbWluL21heC4KICAgICAKICAgICAvLyBGb3JjZSBpbnRlZ2VyIHZhbHVlIGlm
IG5vdCBmbG9hdC4KSW5kZXg6IHhtbC9YUGF0aEdyYW1tYXIueQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB4bWwv
WFBhdGhHcmFtbWFyLnkJKHJldmlzaW9uIDE2NTY3KQorKysgeG1sL1hQYXRoR3JhbW1hci55CSh3
b3JraW5nIGNvcHkpCkBAIC0zMTcsMTMgKzMxNywxMyBAQCBQcmltYXJ5RXhwcjoKICAgICBMSVRF
UkFMCiAgICAgewogICAgICAgICAkJCA9IG5ldyBTdHJpbmdFeHByZXNzaW9uKCokMSk7Ci0gICAg
ICAgIFBBUlNFUi0+ZGVsZXRlU3RyaW5nKCQxKTsgICAgICAgIAorICAgICAgICBQQVJTRVItPmRl
bGV0ZVN0cmluZygkMSk7CiAgICAgICAgIFBBUlNFUi0+cmVnaXN0ZXJQYXJzZU5vZGUoJCQpOwog
ICAgIH0KICAgICB8CiAgICAgTlVNQkVSCiAgICAgewotICAgICAgICAkJCA9IG5ldyBOdW1iZXIo
JDEtPmRlcHJlY2F0ZWRTdHJpbmcoKS50b0RvdWJsZSgpKTsKKyAgICAgICAgJCQgPSBuZXcgTnVt
YmVyKCQxLT50b0RvdWJsZSgpKTsKICAgICAgICAgUEFSU0VSLT5kZWxldGVTdHJpbmcoJDEpOwog
ICAgICAgICBQQVJTRVItPnJlZ2lzdGVyUGFyc2VOb2RlKCQkKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="3550"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>