<?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>129464</bug_id>
          
          <creation_ts>2014-02-27 16:46:30 -0800</creation_ts>
          <short_desc>Clean up Heap::collect and Heap::markRoots</short_desc>
          <delta_ts>2014-03-04 21:51:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985419</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-27 16:46:30 -0800</bug_when>
    <thetext>These functions have built up a lot of cruft recently. We should do a bit of cleanup to make them easier to grok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985420</commentid>
    <comment_count>1</comment_count>
      <attachid>225430</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-27 16:49:57 -0800</bug_when>
    <thetext>Created attachment 225430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985436</commentid>
    <comment_count>2</comment_count>
      <attachid>225430</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-27 18:46:49 -0800</bug_when>
    <thetext>Comment on attachment 225430
Patch

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

r=me

&gt; Source/JavaScriptCore/heap/Heap.cpp:483
&gt; +void Heap::markProtectedObjects(HeapRootVisitor&amp; heapRootVisitor)

&quot;visit&quot;?

&gt; Source/JavaScriptCore/heap/Heap.cpp:493
&gt; +void Heap::markTempSortVectors(HeapRootVisitor&amp; heapRootVisitor)

&quot;visit&quot;?

&gt; Source/JavaScriptCore/heap/Heap.cpp:513
&gt; +void Heap::markArgumentBuffers(HeapRootVisitor&amp; visitor)

&quot;visit&quot;?

&gt; Source/JavaScriptCore/heap/Heap.cpp:637
&gt; +    SamplingRegion samplingRegion(&quot;Garbage Collection: Tracing&quot;);

&quot;Marking&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985577</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 08:50:48 -0800</bug_when>
    <thetext>Committed r164862: &lt;http://trac.webkit.org/changeset/164862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985578</commentid>
    <comment_count>4</comment_count>
      <attachid>225430</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 08:51:05 -0800</bug_when>
    <thetext>Comment on attachment 225430
Patch

Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985585</commentid>
    <comment_count>5</comment_count>
      <attachid>225430</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-28 09:05:46 -0800</bug_when>
    <thetext>Comment on attachment 225430
Patch

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

&gt; Source/JavaScriptCore/heap/Heap.cpp:667
&gt; +#if ENABLE(GGC)
&gt; +    Vector&lt;const JSCell*&gt; rememberedSet(m_slotVisitor.markStack().size());
&gt; +    m_slotVisitor.markStack().fillVector(rememberedSet);
&gt; +#endif

rememberedSet is defined inside ENABLE(GGC) guard ...

&gt; Source/JavaScriptCore/heap/Heap.cpp:689
&gt; +    clearRememberedSet(rememberedSet);

... but used outside. And it broke the !ENABLE(GGC) builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985589</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 09:21:56 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 225430 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225430&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.cpp:667
&gt; &gt; +#if ENABLE(GGC)
&gt; &gt; +    Vector&lt;const JSCell*&gt; rememberedSet(m_slotVisitor.markStack().size());
&gt; &gt; +    m_slotVisitor.markStack().fillVector(rememberedSet);
&gt; &gt; +#endif
&gt; 
&gt; rememberedSet is defined inside ENABLE(GGC) guard ...
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.cpp:689
&gt; &gt; +    clearRememberedSet(rememberedSet);
&gt; 
&gt; ... but used outside. And it broke the !ENABLE(GGC) builds.

Good point, fix coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985600</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 09:35:40 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985601</commentid>
    <comment_count>8</comment_count>
      <attachid>225473</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 09:35:49 -0800</bug_when>
    <thetext>Created attachment 225473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985602</commentid>
    <comment_count>9</comment_count>
      <attachid>225473</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 09:38:53 -0800</bug_when>
    <thetext>Comment on attachment 225473
Patch

Since this fixes a build, it doesn&apos;t need review but feel free to comment :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985604</commentid>
    <comment_count>10</comment_count>
      <attachid>225473</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 09:41:10 -0800</bug_when>
    <thetext>Comment on attachment 225473
Patch

Bah, commit queue will take too long. Landed manually in r164864.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987115</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-04 21:51:27 -0800</bug_when>
    <thetext>Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225430</attachid>
            <date>2014-02-27 16:49:57 -0800</date>
            <delta_ts>2014-02-28 09:35:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129464-20140227164956.patch</filename>
            <type>text/plain</type>
            <size>29316</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0ODQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE0LTAyLTI3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQ2xlYW4gdXAgSGVhcDo6Y29sbGVjdCBhbmQgSGVhcDo6bWFya1Jvb3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0NjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBmdW5jdGlv
bnMgaGF2ZSBidWlsdCB1cCBhIGxvdCBvZiBjcnVmdCByZWNlbnRseS4gCisgICAgICAgIFdlIHNo
b3VsZCBkbyBhIGJpdCBvZiBjbGVhbnVwIHRvIG1ha2UgdGhlbSBlYXNpZXIgdG8gZ3Jvay4KKwor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmZpbmFsaXplVW5j
b25kaXRpb25hbEZpbmFsaXplcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjpnYXRoZXJTdGFja1Jv
b3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2F0aGVySlNTdGFja1Jvb3RzKToKKyAgICAgICAg
KEpTQzo6SGVhcDo6Z2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y2xlYXJMaXZlbmVzc0RhdGEpOgorICAgICAgICAoSlNDOjpIZWFwOjp2aXNpdFNtYWxsU3Ry
aW5ncyk6CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0Q29uc2VydmF0aXZlUm9vdHMpOgorICAg
ICAgICAoSlNDOjpIZWFwOjp2aXNpdENvbXBpbGVyV29ya2xpc3RzKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrVGVt
cFNvcnRWZWN0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya0FyZ3VtZW50QnVmZmVycyk6
CisgICAgICAgIChKU0M6OkhlYXA6OnZpc2l0RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6dmlzaXRTdHJvbmdIYW5kbGVzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dmlzaXRIYW5kbGVT
dGFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnRyYWNlQ29kZUJsb2Nrc0FuZEpJVFN0dWJSb3V0
aW5lcyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbnZlcmdlKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6dmlzaXRXZWFrSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyUmVtZW1iZXJl
ZFNldCk6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZU9iamVjdENvdW50cyk6CisgICAgICAg
IChKU0M6OkhlYXA6OnJlc2V0VmlzaXRvcnMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJrUm9v
dHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb3B5QmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChK
U0M6OkhlYXA6OmRlbGV0ZVVubWFya2VkQ29tcGlsZWRDb2RlKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVm
ZXIpOgorICAgICAgICAoSlNDOjpIZWFwOjpzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6
OmRlbGV0ZU9sZENvZGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpmbHVzaE9sZFN0cnVjdHVyZUlE
VGFibGVzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzdG9wQWxsb2NhdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6
OnJlYXBXZWFrSGFuZGxlcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN3ZWVwQXJyYXlCdWZmZXJz
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6c25hcHNob3RNYXJrZWRTcGFjZSk6CisgICAgICAgIChK
U0M6OkhlYXA6OmRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6bm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVtZW1i
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVz
ZXRBbGxvY2F0b3JzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0
cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAo
SlNDOjpIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMpOgorICAgICAgICAqIGhlYXAvSGVhcC5o
OgorCiAyMDE0LTAyLTI3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW01hY10gV2FybmluZzogTXVsdGlwbGUgYnVpbGQgY29tbWFuZHMgZm9yIG91dHB1
dCBmaWxlIEdDU2VnbWVudGVkQXJyYXkgYW5kIEluc3BlY3RvckFnZW50CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTY0ODI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSwxMyArMzY5LDYg
QEAgdm9pZCBIZWFwOjphZGRSZWZlcmVuY2UoSlNDZWxsKiBjZWxsLCBBcgogICAgIH0KIH0KIAot
dm9pZCBIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290
VmlzaXRvcikKLXsKLSAgICBQcm90ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVj
dGVkVmFsdWVzLmVuZCgpOwotICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9
IG1fcHJvdGVjdGVkVmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaGVh
cFJvb3RWaXNpdG9yLnZpc2l0KCZpdC0+a2V5KTsKLX0KLQogdm9pZCBIZWFwOjpwdXNoVGVtcFNv
cnRWZWN0b3IoVmVjdG9yPFZhbHVlU3RyaW5nUGFpciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
KiB0ZW1wVmVjdG9yKQogewogICAgIG1fdGVtcFNvcnRpbmdWZWN0b3JzLmFwcGVuZCh0ZW1wVmVj
dG9yKTsKQEAgLTM4NywyMiArMzgwLDYgQEAgdm9pZCBIZWFwOjpwb3BUZW1wU29ydFZlY3RvcihW
ZWN0b3I8VmFsdQogICAgIG1fdGVtcFNvcnRpbmdWZWN0b3JzLnJlbW92ZUxhc3QoKTsKIH0KIAot
dm9pZCBIZWFwOjptYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RW
aXNpdG9yKQotewotICAgIHR5cGVkZWYgVmVjdG9yPFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXIsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiogPiBWZWN0b3JPZlZhbHVlU3RyaW5nVmVjdG9yczsKLQot
ICAgIFZlY3Rvck9mVmFsdWVTdHJpbmdWZWN0b3JzOjppdGVyYXRvciBlbmQgPSBtX3RlbXBTb3J0
aW5nVmVjdG9ycy5lbmQoKTsKLSAgICBmb3IgKFZlY3Rvck9mVmFsdWVTdHJpbmdWZWN0b3JzOjpp
dGVyYXRvciBpdCA9IG1fdGVtcFNvcnRpbmdWZWN0b3JzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBWZWN0b3I8VmFsdWVTdHJpbmdQYWlyLCAwLCBVbnNhZmVWZWN0b3JPdmVy
Zmxvdz4qIHRlbXBTb3J0aW5nVmVjdG9yID0gKml0OwotCi0gICAgICAgIFZlY3RvcjxWYWx1ZVN0
cmluZ1BhaXI+OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB0ZW1wU29ydGluZ1ZlY3Rvci0+ZW5kKCk7
Ci0gICAgICAgIGZvciAoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj46Oml0ZXJhdG9yIHZlY3Rvckl0
ID0gdGVtcFNvcnRpbmdWZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2
ZWN0b3JJdCkgewotICAgICAgICAgICAgaWYgKHZlY3Rvckl0LT5maXJzdCkKLSAgICAgICAgICAg
ICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoJnZlY3Rvckl0LT5maXJzdCk7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KIHZvaWQgSGVhcDo6aGFydmVzdFdlYWtSZWZlcmVuY2VzKCkKIHsKICAgICBt
X3Nsb3RWaXNpdG9yLmhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOwpAQCAtNDEwLDYgKzM4Nyw3IEBA
IHZvaWQgSGVhcDo6aGFydmVzdFdlYWtSZWZlcmVuY2VzKCkKIAogdm9pZCBIZWFwOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCkKIHsKKyAgICBHQ1BIQVNFKEZpbmFsaXplVW5jb25k
aXRpb25hbEZpbmFsaXplcnMpOwogICAgIG1fc2xvdFZpc2l0b3IuZmluYWxpemVVbmNvbmRpdGlv
bmFsRmluYWxpemVycygpOwogfQogCkBAIC00NDIsMTkxICs0MjAsMTg5IEBAIHZvaWQgSGVhcDo6
Z2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cygKICAgICB9CiB9CiAKLXZvaWQgSGVhcDo6bWFy
a1Jvb3RzKCkKK3ZvaWQgSGVhcDo6Z2F0aGVyU3RhY2tSb290cyhDb25zZXJ2YXRpdmVSb290cyYg
cm9vdHMsIHZvaWQqKiBkdW1teSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bigiR2FyYmFnZSBDb2xsZWN0aW9uOiBUcmFjaW5nIik7Ci0KLSAgICBHQ1BIQVNFKE1hcmtSb290
cyk7Ci0gICAgQVNTRVJUKGlzVmFsaWRUaHJlYWRTdGF0ZShtX3ZtKSk7CisgICAgR0NQSEFTRShH
YXRoZXJTdGFja1Jvb3RzKTsKKyAgICBtX2ppdFN0dWJSb3V0aW5lcy5jbGVhck1hcmtzKCk7Cisg
ICAgbV9tYWNoaW5lVGhyZWFkcy5nYXRoZXJDb25zZXJ2YXRpdmVSb290cyhyb290cywgbV9qaXRT
dHViUm91dGluZXMsIG1fY29kZUJsb2NrcywgZHVtbXkpOworfQogCi0jaWYgRU5BQkxFKE9CSkVD
VF9NQVJLX0xPR0dJTkcpCi0gICAgZG91YmxlIGdjU3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKK3ZvaWQgSGVhcDo6Z2F0aGVySlNTdGFja1Jvb3RzKENvbnNl
cnZhdGl2ZVJvb3RzJiByb290cykKK3sKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQorICAgIEdD
UEhBU0UoR2F0aGVyU3RhY2tSb290cyk7CisgICAgc3RhY2soKS5nYXRoZXJDb25zZXJ2YXRpdmVS
b290cyhyb290cywgbV9qaXRTdHViUm91dGluZXMsIG1fY29kZUJsb2Nrcyk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShyb290cyk7CiAjZW5kaWYKK30KIAotICAgIG1fY29kZUJsb2Nrcy5jbGVh
ck1hcmtzKCk7Ci0gICAgdm9pZCogZHVtbXk7Cit2b2lkIEhlYXA6OmdhdGhlclNjcmF0Y2hCdWZm
ZXJSb290cyhDb25zZXJ2YXRpdmVSb290cyYgcm9vdHMpCit7CisjaWYgRU5BQkxFKERGR19KSVQp
CisgICAgR0NQSEFTRShHYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMpOworICAgIG1fdm0tPmdhdGhl
ckNvbnNlcnZhdGl2ZVJvb3RzKHJvb3RzKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJvb3Rz
KTsKKyNlbmRpZgorfQogCi0gICAgLy8gV2UgZ2F0aGVyIGNvbnNlcnZhdGl2ZSByb290cyBiZWZv
cmUgY2xlYXJpbmcgbWFyayBiaXRzIGJlY2F1c2UgY29uc2VydmF0aXZlCi0gICAgLy8gZ2F0aGVy
aW5nIHVzZXMgdGhlIG1hcmsgYml0cyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBp
cyB2YWxpZC4KLSAgICBDb25zZXJ2YXRpdmVSb290cyBtYWNoaW5lVGhyZWFkUm9vdHMoJm1fb2Jq
ZWN0U3BhY2UuYmxvY2tzKCksICZtX3N0b3JhZ2VTcGFjZSk7Ci0gICAgbV9qaXRTdHViUm91dGlu
ZXMuY2xlYXJNYXJrcygpOwotICAgIHsKLSAgICAgICAgR0NQSEFTRShHYXRoZXJDb25zZXJ2YXRp
dmVSb290cyk7Ci0gICAgICAgIG1fbWFjaGluZVRocmVhZHMuZ2F0aGVyQ29uc2VydmF0aXZlUm9v
dHMobWFjaGluZVRocmVhZFJvb3RzLCBtX2ppdFN0dWJSb3V0aW5lcywgbV9jb2RlQmxvY2tzLCAm
ZHVtbXkpOwotICAgIH0KK3ZvaWQgSGVhcDo6Y2xlYXJMaXZlbmVzc0RhdGEoKQoreworICAgIEdD
UEhBU0UoQ2xlYXJMaXZlbmVzc0RhdGEpOworICAgIG1fb2JqZWN0U3BhY2UuY2xlYXJOZXdseUFs
bG9jYXRlZCgpOworICAgIG1fb2JqZWN0U3BhY2UuY2xlYXJNYXJrcygpOworfQogCi0jaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKLSAgICBDb25zZXJ2YXRpdmVSb290cyBzdGFja1Jvb3RzKCZtX29i
amVjdFNwYWNlLmJsb2NrcygpLCAmbV9zdG9yYWdlU3BhY2UpOwotICAgIHsKLSAgICAgICAgR0NQ
SEFTRShHYXRoZXJTdGFja1Jvb3RzKTsKLSAgICAgICAgc3RhY2soKS5nYXRoZXJDb25zZXJ2YXRp
dmVSb290cyhzdGFja1Jvb3RzLCBtX2ppdFN0dWJSb3V0aW5lcywgbV9jb2RlQmxvY2tzKTsKLSAg
ICB9Ci0jZW5kaWYKK3ZvaWQgSGVhcDo6dmlzaXRTbWFsbFN0cmluZ3MoKQoreworICAgIEdDUEhB
U0UoVmlzaXRTbWFsbFN0cmluZ3MpOworICAgIG1fdm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9u
Z1JlZmVyZW5jZXMobV9zbG90VmlzaXRvcik7Cit9CiAKLSAgICBzYW5pdGl6ZVN0YWNrRm9yVk0o
bV92bSk7Cit2b2lkIEhlYXA6OnZpc2l0Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9v
dHMmIHJvb3RzKQoreworICAgIEdDUEhBU0UoVmlzaXRDb25zZXJ2YXRpdmVSb290cyk7CisgICAg
TUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiQ29uc2VydmF0aXZlIFJvb3RzIik7CisgICAg
bV9zbG90VmlzaXRvci5hcHBlbmQocm9vdHMpOworICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5k
RHJhaW4oKTsKK30KIAordm9pZCBIZWFwOjp2aXNpdENvbXBpbGVyV29ya2xpc3RzKCkKK3sKICNp
ZiBFTkFCTEUoREZHX0pJVCkKLSAgICBDb25zZXJ2YXRpdmVSb290cyBzY3JhdGNoQnVmZmVyUm9v
dHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCksICZtX3N0b3JhZ2VTcGFjZSk7Ci0gICAgewotICAg
ICAgICBHQ1BIQVNFKEdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyk7Ci0gICAgICAgIG1fdm0tPmdh
dGhlckNvbnNlcnZhdGl2ZVJvb3RzKHNjcmF0Y2hCdWZmZXJSb290cyk7CisgICAgR0NQSEFTRShW
aXNpdERGR1dvcmtsaXN0cyk7CisgICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiREZH
IFdvcmtsaXN0cyIpOworICAgIGZvciAodW5zaWduZWQgaSA9IERGRzo6bnVtYmVyT2ZXb3JrbGlz
dHMoKTsgaS0tOykgeworICAgICAgICBpZiAoREZHOjpXb3JrbGlzdCogd29ya2xpc3QgPSBERkc6
OndvcmtsaXN0Rm9ySW5kZXhPck51bGwoaSkpCisgICAgICAgICAgICB3b3JrbGlzdC0+dmlzaXRD
aGlsZHJlbihtX3Nsb3RWaXNpdG9yLCBtX2NvZGVCbG9ja3MpOwogICAgIH0KICNlbmRpZgorfQog
Ci0gICAgewotICAgICAgICBHQ1BIQVNFKENsZWFyTGl2ZW5lc3NEYXRhKTsKLSAgICAgICAgbV9v
YmplY3RTcGFjZS5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2Uu
Y2xlYXJNYXJrcygpOwordm9pZCBIZWFwOjptYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZp
c2l0b3ImIGhlYXBSb290VmlzaXRvcikKK3sKKyAgICBHQ1BIQVNFKFZpc2l0UHJvdGVjdGVkT2Jq
ZWN0cyk7CisgICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiUHJvdGVjdGVkIE9iamVj
dHMiKTsKKyAgICBQcm90ZWN0Q291bnRTZXQ6Oml0ZXJhdG9yIGVuZCA9IG1fcHJvdGVjdGVkVmFs
dWVzLmVuZCgpOworICAgIGZvciAoUHJvdGVjdENvdW50U2V0OjppdGVyYXRvciBpdCA9IG1fcHJv
dGVjdGVkVmFsdWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaGVhcFJvb3RW
aXNpdG9yLnZpc2l0KCZpdC0+a2V5KTsKKyAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWlu
KCk7Cit9CisKK3ZvaWQgSGVhcDo6bWFya1RlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0b3Im
IGhlYXBSb290VmlzaXRvcikKK3sKKyAgICBHQ1BIQVNFKFZpc2l0VGVtcFNvcnRWZWN0b3JzKTsK
KyAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJUZW1wIFNvcnQgVmVjdG9ycyIpOwor
CisgICAgdHlwZWRlZiBWZWN0b3I8VmVjdG9yPFZhbHVlU3RyaW5nUGFpciwgMCwgVW5zYWZlVmVj
dG9yT3ZlcmZsb3c+KiA+IFZlY3Rvck9mVmFsdWVTdHJpbmdWZWN0b3JzOworCisgICAgVmVjdG9y
T2ZWYWx1ZVN0cmluZ1ZlY3RvcnM6Oml0ZXJhdG9yIGVuZCA9IG1fdGVtcFNvcnRpbmdWZWN0b3Jz
LmVuZCgpOworICAgIGZvciAoVmVjdG9yT2ZWYWx1ZVN0cmluZ1ZlY3RvcnM6Oml0ZXJhdG9yIGl0
ID0gbV90ZW1wU29ydGluZ1ZlY3RvcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiogdGVt
cFNvcnRpbmdWZWN0b3IgPSAqaXQ7CisKKyAgICAgICAgVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj46
Oml0ZXJhdG9yIHZlY3RvckVuZCA9IHRlbXBTb3J0aW5nVmVjdG9yLT5lbmQoKTsKKyAgICAgICAg
Zm9yIChWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPjo6aXRlcmF0b3IgdmVjdG9ySXQgPSB0ZW1wU29y
dGluZ1ZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyArK3ZlY3Rvckl0KSB7
CisgICAgICAgICAgICBpZiAodmVjdG9ySXQtPmZpcnN0KQorICAgICAgICAgICAgICAgIGhlYXBS
b290VmlzaXRvci52aXNpdCgmdmVjdG9ySXQtPmZpcnN0KTsKKyAgICAgICAgfQogICAgIH0KKyAg
ICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7Cit9CiAKLSAgICBtX3NoYXJlZERhdGEu
ZGlkU3RhcnRNYXJraW5nKCk7Ci0gICAgU2xvdFZpc2l0b3ImIHZpc2l0b3IgPSBtX3Nsb3RWaXNp
dG9yOwotICAgIHZpc2l0b3IuZGlkU3RhcnRNYXJraW5nKCk7Ci0gICAgSGVhcFJvb3RWaXNpdG9y
IGhlYXBSb290VmlzaXRvcih2aXNpdG9yKTsKK3ZvaWQgSGVhcDo6bWFya0FyZ3VtZW50QnVmZmVy
cyhIZWFwUm9vdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgR0NQSEFTRShNYXJraW5nQXJndW1l
bnRCdWZmZXJzKTsKKyAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZpc2l0b3IsICJBcmd1bWVudCBC
dWZmZXJzIik7CisgICAgaWYgKCFtX21hcmtMaXN0U2V0IHx8ICFtX21hcmtMaXN0U2V0LT5zaXpl
KCkpCisgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShHR0MpCi0gICAgVmVjdG9yPGNvbnN0
IEpTQ2VsbCo+IHJlbWVtYmVyZWRTZXQobV9zbG90VmlzaXRvci5tYXJrU3RhY2soKS5zaXplKCkp
OwotICAgIG1fc2xvdFZpc2l0b3IubWFya1N0YWNrKCkuZmlsbFZlY3RvcihyZW1lbWJlcmVkU2V0
KTsKLSNlbmRpZgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHModmlzaXRvciwg
Km1fbWFya0xpc3RTZXQpOworICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKK30K
IAotICAgIHsKLSAgICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHZpc2l0b3IpOwor
dm9pZCBIZWFwOjp2aXNpdEV4Y2VwdGlvbihIZWFwUm9vdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgR0NQSEFTRShNYXJraW5nRXhjZXB0aW9uKTsKKyAgICBNQVJLX0xPR19ST09UKG1fc2xvdFZp
c2l0b3IsICJFeGNlcHRpb25zIik7CisgICAgaWYgKCFtX3ZtLT5leGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIG1fdm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9uZ1JlZmVy
ZW5jZXModmlzaXRvcik7CisgICAgdmlzaXRvci52aXNpdChtX3ZtLT5hZGRyZXNzT2ZFeGNlcHRp
b24oKSk7CisgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOworfQogCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEdDUEhBU0UoVmlzaXRNYWNoaW5lUm9vdHMpOwotICAgICAgICAgICAg
TUFSS19MT0dfUk9PVCh2aXNpdG9yLCAiQysrIFN0YWNrIik7Ci0gICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZChtYWNoaW5lVGhyZWFkUm9vdHMpOwotICAgICAgICAgICAgdmlzaXRvci5kb25hdGVB
bmREcmFpbigpOwotICAgICAgICB9Ci0jaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKLSAgICAgICAg
ewotICAgICAgICAgICAgR0NQSEFTRShWaXNpdFN0YWNrUm9vdHMpOwotICAgICAgICAgICAgTUFS
S19MT0dfUk9PVCh2aXNpdG9yLCAiU3RhY2siKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KHN0YWNrUm9vdHMpOwotICAgICAgICAgICAgdmlzaXRvci5kb25hdGVBbmREcmFpbigpOwotICAg
ICAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgewotICAgICAgICAg
ICAgR0NQSEFTRShWaXNpdFNjcmF0Y2hCdWZmZXJSb290cyk7Ci0gICAgICAgICAgICBNQVJLX0xP
R19ST09UKHZpc2l0b3IsICJTY3JhdGNoIEJ1ZmZlcnMiKTsKLSAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKHNjcmF0Y2hCdWZmZXJSb290cyk7Ci0gICAgICAgICAgICB2aXNpdG9yLmRvbmF0ZUFu
ZERyYWluKCk7Ci0gICAgICAgIH0KLSAgICAgICAgewotICAgICAgICAgICAgR0NQSEFTRShWaXNp
dERGR1dvcmtsaXN0cyk7Ci0gICAgICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJERkcg
V29ya2xpc3RzIik7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBERkc6Om51bWJlck9m
V29ya2xpc3RzKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICBpZiAoREZHOjpXb3JrbGlzdCog
d29ya2xpc3QgPSBERkc6OndvcmtsaXN0Rm9ySW5kZXhPck51bGwoaSkpCi0gICAgICAgICAgICAg
ICAgICAgIHdvcmtsaXN0LT52aXNpdENoaWxkcmVuKHZpc2l0b3IsIG1fY29kZUJsb2Nrcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICBH
Q1BIQVNFKFZpc2l0UHJvdGVjdGVkT2JqZWN0cyk7Ci0gICAgICAgICAgICBNQVJLX0xPR19ST09U
KHZpc2l0b3IsICJQcm90ZWN0ZWQgT2JqZWN0cyIpOwotICAgICAgICAgICAgbWFya1Byb3RlY3Rl
ZE9iamVjdHMoaGVhcFJvb3RWaXNpdG9yKTsKLSAgICAgICAgICAgIHZpc2l0b3IuZG9uYXRlQW5k
RHJhaW4oKTsKLSAgICAgICAgfQotICAgICAgICB7Ci0gICAgICAgICAgICBHQ1BIQVNFKFZpc2l0
VGVtcFNvcnRWZWN0b3JzKTsKLSAgICAgICAgICAgIE1BUktfTE9HX1JPT1QodmlzaXRvciwgIlRl
bXAgU29ydCBWZWN0b3JzIik7Ci0gICAgICAgICAgICBtYXJrVGVtcFNvcnRWZWN0b3JzKGhlYXBS
b290VmlzaXRvcik7Ci0gICAgICAgICAgICB2aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7Ci0gICAg
ICAgIH0KK3ZvaWQgSGVhcDo6dmlzaXRTdHJvbmdIYW5kbGVzKEhlYXBSb290VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBHQ1BIQVNFKFZpc2l0U3Ryb25nSGFuZGxlcyk7CisgICAgTUFSS19MT0df
Uk9PVChtX3Nsb3RWaXNpdG9yLCAiU3Ryb25nIEhhbmRsZXMiKTsKKyAgICBtX2hhbmRsZVNldC52
aXNpdFN0cm9uZ0hhbmRsZXModmlzaXRvcik7CisgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmRE
cmFpbigpOworfQogCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdDUEhBU0UoTWFya2luZ0FyZ3Vt
ZW50QnVmZmVycyk7Ci0gICAgICAgICAgICBpZiAobV9tYXJrTGlzdFNldCAmJiBtX21hcmtMaXN0
U2V0LT5zaXplKCkpIHsKLSAgICAgICAgICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJB
cmd1bWVudCBCdWZmZXJzIik7Ci0gICAgICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6
Om1hcmtMaXN0cyhoZWFwUm9vdFZpc2l0b3IsICptX21hcmtMaXN0U2V0KTsKLSAgICAgICAgICAg
ICAgICB2aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKG1fdm0tPmV4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBHQ1BIQVNFKE1h
cmtpbmdFeGNlcHRpb24pOwotICAgICAgICAgICAgTUFSS19MT0dfUk9PVCh2aXNpdG9yLCAiRXhj
ZXB0aW9ucyIpOwotICAgICAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZpc2l0KG1fdm0tPmFkZHJl
c3NPZkV4Y2VwdGlvbigpKTsKLSAgICAgICAgICAgIHZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsK
LSAgICAgICAgfQotICAgIAotICAgICAgICB7Ci0gICAgICAgICAgICBHQ1BIQVNFKFZpc2l0U3Ry
b25nSGFuZGxlcyk7Ci0gICAgICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJTdHJvbmcg
SGFuZGxlcyIpOwotICAgICAgICAgICAgbV9oYW5kbGVTZXQudmlzaXRTdHJvbmdIYW5kbGVzKGhl
YXBSb290VmlzaXRvcik7Ci0gICAgICAgICAgICB2aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7Ci0g
ICAgICAgIH0KLSAgICAKLSAgICAgICAgewotICAgICAgICAgICAgR0NQSEFTRShIYW5kbGVTdGFj
ayk7Ci0gICAgICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJIYW5kbGUgU3RhY2siKTsK
LSAgICAgICAgICAgIG1faGFuZGxlU3RhY2sudmlzaXQoaGVhcFJvb3RWaXNpdG9yKTsKLSAgICAg
ICAgICAgIHZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKLSAgICAgICAgfQotICAgIAotICAgICAg
ICB7Ci0gICAgICAgICAgICBHQ1BIQVNFKFRyYWNlQ29kZUJsb2Nrc0FuZEpJVFN0dWJSb3V0aW5l
cyk7Ci0gICAgICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJUcmFjZSBDb2RlIEJsb2Nr
cyBhbmQgSklUIFN0dWIgUm91dGluZXMiKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2Nrcy50cmFj
ZU1hcmtlZCh2aXNpdG9yKTsKLSAgICAgICAgICAgIG1faml0U3R1YlJvdXRpbmVzLnRyYWNlTWFy
a2VkU3R1YlJvdXRpbmVzKHZpc2l0b3IpOwotICAgICAgICAgICAgdmlzaXRvci5kb25hdGVBbmRE
cmFpbigpOwotICAgICAgICB9Ci0gICAgCit2b2lkIEhlYXA6OnZpc2l0SGFuZGxlU3RhY2soSGVh
cFJvb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEdDUEhBU0UoVmlzaXRIYW5kbGVTdGFjayk7
CisgICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiSGFuZGxlIFN0YWNrIik7CisgICAg
bV9oYW5kbGVTdGFjay52aXNpdCh2aXNpdG9yKTsKKyAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFu
ZERyYWluKCk7Cit9CisKK3ZvaWQgSGVhcDo6dHJhY2VDb2RlQmxvY2tzQW5kSklUU3R1YlJvdXRp
bmVzKCkKK3sKKyAgICBHQ1BIQVNFKFRyYWNlQ29kZUJsb2Nrc0FuZEpJVFN0dWJSb3V0aW5lcyk7
CisgICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiVHJhY2UgQ29kZSBCbG9ja3MgYW5k
IEpJVCBTdHViIFJvdXRpbmVzIik7CisgICAgbV9jb2RlQmxvY2tzLnRyYWNlTWFya2VkKG1fc2xv
dFZpc2l0b3IpOworICAgIG1faml0U3R1YlJvdXRpbmVzLnRyYWNlTWFya2VkU3R1YlJvdXRpbmVz
KG1fc2xvdFZpc2l0b3IpOworICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKK30K
Kwordm9pZCBIZWFwOjpjb252ZXJnZSgpCit7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBHQ1BIQVNFKENvbnZlcmdlbmNlKTsKLSAgICAgICAgICAgIHZp
c2l0b3IuZHJhaW5Gcm9tU2hhcmVkKFNsb3RWaXNpdG9yOjpNYXN0ZXJEcmFpbik7Ci0gICAgICAg
IH0KKyAgICBHQ1BIQVNFKENvbnZlcmdlbmNlKTsKKyAgICBtX3Nsb3RWaXNpdG9yLmRyYWluRnJv
bVNoYXJlZChTbG90VmlzaXRvcjo6TWFzdGVyRHJhaW4pOwogI2VuZGlmCi0gICAgfQorfQogCi0g
ICAgLy8gV2VhayByZWZlcmVuY2VzIG11c3QgYmUgbWFya2VkIGxhc3QgYmVjYXVzZSB0aGVpciBs
aXZlbmVzcyBkZXBlbmRzIG9uCi0gICAgLy8gdGhlIGxpdmVuZXNzIG9mIHRoZSByZXN0IG9mIHRo
ZSBvYmplY3QgZ3JhcGguCi0gICAgewotICAgICAgICBHQ1BIQVNFKFZpc2l0aW5nTGl2ZVdlYWtI
YW5kbGVzKTsKLSAgICAgICAgTUFSS19MT0dfUk9PVCh2aXNpdG9yLCAiTGl2ZSBXZWFrIEhhbmRs
ZXMiKTsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIG1fb2JqZWN0U3BhY2Uu
dmlzaXRXZWFrU2V0cyhoZWFwUm9vdFZpc2l0b3IpOwotICAgICAgICAgICAgaGFydmVzdFdlYWtS
ZWZlcmVuY2VzKCk7Ci0gICAgICAgICAgICBpZiAodmlzaXRvci5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUGFyYWxsZWxN
b2RlRW5hYmxlciBlbmFibGVyKHZpc2l0b3IpOwotICAgICAgICAgICAgICAgIHZpc2l0b3IuZG9u
YXRlQW5kRHJhaW4oKTsKK3ZvaWQgSGVhcDo6dmlzaXRXZWFrSGFuZGxlcyhIZWFwUm9vdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgR0NQSEFTRShWaXNpdGluZ0xpdmVXZWFrSGFuZGxlcyk7Cisg
ICAgTUFSS19MT0dfUk9PVChtX3Nsb3RWaXNpdG9yLCAiTGl2ZSBXZWFrIEhhbmRsZXMiKTsKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBtX29iamVjdFNwYWNlLnZpc2l0V2Vha1NldHModmlz
aXRvcik7CisgICAgICAgIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygpOworICAgICAgICBpZiAobV9z
bG90VmlzaXRvci5pc0VtcHR5KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgeworICAg
ICAgICAgICAgUGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKG1fc2xvdFZpc2l0b3IpOworICAg
ICAgICAgICAgbV9zbG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOwogI2lmIEVOQUJMRShQQVJB
TExFTF9HQykKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmRyYWluRnJvbVNoYXJlZChTbG90Vmlz
aXRvcjo6TWFzdGVyRHJhaW4pOworICAgICAgICAgICAgbV9zbG90VmlzaXRvci5kcmFpbkZyb21T
aGFyZWQoU2xvdFZpc2l0b3I6Ok1hc3RlckRyYWluKTsKICNlbmRpZgotICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQorfQogCit2b2lkIEhlYXA6OmNsZWFyUmVtZW1iZXJlZFNldChWZWN0
b3I8Y29uc3QgSlNDZWxsKj4mIHJlbWVtYmVyZWRTZXQpCit7CiAjaWYgRU5BQkxFKEdHQykKLSAg
ICB7Ci0gICAgICAgIEdDUEhBU0UoQ2xlYXJSZW1lbWJlcmVkU2V0KTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJlbWVtYmVyZWRTZXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIGNvbnN0IEpTQ2VsbCogY2VsbCA9IHJlbWVtYmVyZWRTZXRbaV07Ci0gICAgICAgICAgICBN
YXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPmNsZWFyUmVtZW1iZXJlZChjZWxsKTsKLSAgICAg
ICAgfQorICAgIEdDUEhBU0UoQ2xlYXJSZW1lbWJlcmVkU2V0KTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcmVtZW1iZXJlZFNldC5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBK
U0NlbGwqIGNlbGwgPSByZW1lbWJlcmVkU2V0W2ldOworICAgICAgICBNYXJrZWRCbG9jazo6Ymxv
Y2tGb3IoY2VsbCktPmNsZWFyUmVtZW1iZXJlZChjZWxsKTsKICAgICB9CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShyZW1lbWJlcmVkU2V0KTsKICNlbmRpZgorfQogCi0gICAgR0NDT1VOVEVSKFZp
c2l0ZWRWYWx1ZUNvdW50LCB2aXNpdG9yLnZpc2l0Q291bnQoKSk7Cit2b2lkIEhlYXA6OnVwZGF0
ZU9iamVjdENvdW50cygpCit7CisgICAgR0NDT1VOVEVSKFZpc2l0ZWRWYWx1ZUNvdW50LCBtX3Ns
b3RWaXNpdG9yLnZpc2l0Q291bnQoKSk7CiAKLSAgICBtX3NoYXJlZERhdGEuZGlkRmluaXNoTWFy
a2luZygpOwogI2lmIEVOQUJMRShPQkpFQ1RfTUFSS19MT0dHSU5HKQotICAgIHNpemVfdCB2aXNp
dENvdW50ID0gdmlzaXRvci52aXNpdENvdW50KCk7CisgICAgc2l6ZV90IHZpc2l0Q291bnQgPSBt
X3Nsb3RWaXNpdG9yLnZpc2l0Q291bnQoKTsKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAgICAg
dmlzaXRDb3VudCArPSBtX3NoYXJlZERhdGEuY2hpbGRWaXNpdENvdW50KCk7CiAjZW5kaWYKQEAg
LTYzNCwyOSArNjEwLDk3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICNlbmRpZgogCiAgICAg
aWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikgewotICAgICAgICBt
X3RvdGFsQnl0ZXNWaXNpdGVkICs9IHZpc2l0b3IuYnl0ZXNWaXNpdGVkKCk7Ci0gICAgICAgIG1f
dG90YWxCeXRlc0NvcGllZCArPSB2aXNpdG9yLmJ5dGVzQ29waWVkKCk7CisgICAgICAgIG1fdG90
YWxCeXRlc1Zpc2l0ZWQgKz0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKTsKKyAgICAgICAg
bV90b3RhbEJ5dGVzQ29waWVkICs9IG1fc2xvdFZpc2l0b3IuYnl0ZXNDb3BpZWQoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xs
ZWN0aW9uKTsKLSAgICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCA9IHZpc2l0b3IuYnl0ZXNWaXNp
dGVkKCk7Ci0gICAgICAgIG1fdG90YWxCeXRlc0NvcGllZCA9IHZpc2l0b3IuYnl0ZXNDb3BpZWQo
KTsKKyAgICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCA9IG1fc2xvdFZpc2l0b3IuYnl0ZXNWaXNp
dGVkKCk7CisgICAgICAgIG1fdG90YWxCeXRlc0NvcGllZCA9IG1fc2xvdFZpc2l0b3IuYnl0ZXND
b3BpZWQoKTsKICAgICB9CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQogICAgIG1fdG90YWxCeXRl
c1Zpc2l0ZWQgKz0gbV9zaGFyZWREYXRhLmNoaWxkQnl0ZXNWaXNpdGVkKCk7CiAgICAgbV90b3Rh
bEJ5dGVzQ29waWVkICs9IG1fc2hhcmVkRGF0YS5jaGlsZEJ5dGVzQ29waWVkKCk7CiAjZW5kaWYK
K30KIAotICAgIHZpc2l0b3IucmVzZXQoKTsKK3ZvaWQgSGVhcDo6cmVzZXRWaXNpdG9ycygpCit7
CisgICAgbV9zbG90VmlzaXRvci5yZXNldCgpOwogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKICAg
ICBtX3NoYXJlZERhdGEucmVzZXRDaGlsZHJlbigpOwogI2VuZGlmCiAgICAgbV9zaGFyZWREYXRh
LnJlc2V0KCk7CiB9CiAKLXRlbXBsYXRlIDxIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlPgor
dm9pZCBIZWFwOjptYXJrUm9vdHMoKQoreworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJHYXJiYWdlIENvbGxlY3Rpb246IFRyYWNpbmciKTsKKworICAgIEdDUEhBU0UoTWFya1Jv
b3RzKTsKKyAgICBBU1NFUlQoaXNWYWxpZFRocmVhZFN0YXRlKG1fdm0pKTsKKworI2lmIEVOQUJM
RShPQkpFQ1RfTUFSS19MT0dHSU5HKQorICAgIGRvdWJsZSBnY1N0YXJ0VGltZSA9IFdURjo6bW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisjZW5kaWYKKworICAgIG1fY29kZUJsb2Nrcy5j
bGVhck1hcmtzKCk7CisKKyAgICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9y
ZSBjbGVhcmluZyBtYXJrIGJpdHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKKyAgICAvLyBnYXRoZXJp
bmcgdXNlcyB0aGUgbWFyayBiaXRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlz
IHZhbGlkLgorICAgIHZvaWQqIGR1bW15OworICAgIENvbnNlcnZhdGl2ZVJvb3RzIGNvbnNlcnZh
dGl2ZVJvb3RzKCZtX29iamVjdFNwYWNlLmJsb2NrcygpLCAmbV9zdG9yYWdlU3BhY2UpOworICAg
IGdhdGhlclN0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9vdHMsICZkdW1teSk7CisgICAgZ2F0aGVy
SlNTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKKyAgICBnYXRoZXJTY3JhdGNoQnVmZmVy
Um9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworCisgICAgc2FuaXRpemVTdGFja0ZvclZNKG1fdm0p
OworCisgICAgY2xlYXJMaXZlbmVzc0RhdGEoKTsKKworICAgIG1fc2hhcmVkRGF0YS5kaWRTdGFy
dE1hcmtpbmcoKTsKKyAgICBtX3Nsb3RWaXNpdG9yLmRpZFN0YXJ0TWFya2luZygpOworICAgIEhl
YXBSb290VmlzaXRvciBoZWFwUm9vdFZpc2l0b3IobV9zbG90VmlzaXRvcik7CisKKyNpZiBFTkFC
TEUoR0dDKQorICAgIFZlY3Rvcjxjb25zdCBKU0NlbGwqPiByZW1lbWJlcmVkU2V0KG1fc2xvdFZp
c2l0b3IubWFya1N0YWNrKCkuc2l6ZSgpKTsKKyAgICBtX3Nsb3RWaXNpdG9yLm1hcmtTdGFjaygp
LmZpbGxWZWN0b3IocmVtZW1iZXJlZFNldCk7CisjZW5kaWYKKworICAgIHsKKyAgICAgICAgUGFy
YWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKG1fc2xvdFZpc2l0b3IpOworCisgICAgICAgIHZpc2l0
U21hbGxTdHJpbmdzKCk7CisgICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoY29uc2VydmF0
aXZlUm9vdHMpOworICAgICAgICB2aXNpdENvbXBpbGVyV29ya2xpc3RzKCk7CisgICAgICAgIG1h
cmtQcm90ZWN0ZWRPYmplY3RzKGhlYXBSb290VmlzaXRvcik7CisgICAgICAgIG1hcmtUZW1wU29y
dFZlY3RvcnMoaGVhcFJvb3RWaXNpdG9yKTsKKyAgICAgICAgbWFya0FyZ3VtZW50QnVmZmVycyho
ZWFwUm9vdFZpc2l0b3IpOworICAgICAgICB2aXNpdEV4Y2VwdGlvbihoZWFwUm9vdFZpc2l0b3Ip
OworICAgICAgICB2aXNpdFN0cm9uZ0hhbmRsZXMoaGVhcFJvb3RWaXNpdG9yKTsKKyAgICAgICAg
dmlzaXRIYW5kbGVTdGFjayhoZWFwUm9vdFZpc2l0b3IpOworICAgICAgICB0cmFjZUNvZGVCbG9j
a3NBbmRKSVRTdHViUm91dGluZXMoKTsKKyAgICAgICAgY29udmVyZ2UoKTsKKyAgICB9CisKKyAg
ICAvLyBXZWFrIHJlZmVyZW5jZXMgbXVzdCBiZSBtYXJrZWQgbGFzdCBiZWNhdXNlIHRoZWlyIGxp
dmVuZXNzIGRlcGVuZHMgb24KKyAgICAvLyB0aGUgbGl2ZW5lc3Mgb2YgdGhlIHJlc3Qgb2YgdGhl
IG9iamVjdCBncmFwaC4KKyAgICB2aXNpdFdlYWtIYW5kbGVzKGhlYXBSb290VmlzaXRvcik7CisK
KyAgICBjbGVhclJlbWVtYmVyZWRTZXQocmVtZW1iZXJlZFNldCk7CisgICAgbV9zaGFyZWREYXRh
LmRpZEZpbmlzaE1hcmtpbmcoKTsKKyAgICB1cGRhdGVPYmplY3RDb3VudHMoKTsKKyAgICByZXNl
dFZpc2l0b3JzKCk7Cit9CisKIHZvaWQgSGVhcDo6Y29weUJhY2tpbmdTdG9yZXMoKQogewotICAg
IG1fc3RvcmFnZVNwYWNlLnN0YXJ0ZWRDb3B5aW5nPGNvbGxlY3Rpb25UeXBlPigpOworICAgIGlm
IChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pCisgICAgICAgIG1fc3Rv
cmFnZVNwYWNlLnN0YXJ0ZWRDb3B5aW5nPEVkZW5Db2xsZWN0aW9uPigpOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKTsK
KyAgICAgICAgbV9zdG9yYWdlU3BhY2Uuc3RhcnRlZENvcHlpbmc8RnVsbENvbGxlY3Rpb24+KCk7
CisgICAgfQorCiAgICAgaWYgKG1fc3RvcmFnZVNwYWNlLnNob3VsZERvQ29weVBoYXNlKCkpIHsK
ICAgICAgICAgbV9zaGFyZWREYXRhLmRpZFN0YXJ0Q29weWluZygpOwogICAgICAgICBtX2NvcHlW
aXNpdG9yLnN0YXJ0Q29weWluZygpOwpAQCAtNzYyLDYgKzgwNiw3IEBAIHZvaWQgSGVhcDo6ZGVs
ZXRlQWxsQ29tcGlsZWRDb2RlKCkKIAogdm9pZCBIZWFwOjpkZWxldGVVbm1hcmtlZENvbXBpbGVk
Q29kZSgpCiB7CisgICAgR0NQSEFTRShEZWxldGVDb2RlQmxvY2tzKTsKICAgICBFeGVjdXRhYmxl
QmFzZSogbmV4dDsKICAgICBmb3IgKEV4ZWN1dGFibGVCYXNlKiBjdXJyZW50ID0gbV9jb21waWxl
ZENvZGUuaGVhZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gbmV4dCkgewogICAgICAgICBuZXh0ID0g
Y3VycmVudC0+bmV4dCgpOwpAQCAtODI1LDE0ICs4NzAsNzAgQEAgdm9pZCBIZWFwOjpjb2xsZWN0
KCkKICAgICBBU1NFUlQobV9pc1NhZmVUb0NvbGxlY3QpOwogICAgIEpBVkFTQ1JJUFRDT1JFX0dD
X0JFR0lOKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5v
T3BlcmF0aW9uKTsKLSAgICAKKworICAgIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsKKyAgICB3
aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisKKyAgICBkb3VibGUgZ2NTdGFydFRpbWUgPSBXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCisgICAgZGVsZXRlT2xkQ29kZShnY1N0YXJ0
VGltZSk7CisgICAgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOworICAgIHN0b3BBbGxvY2F0
aW9uKCk7CisgICAgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKTsKKworICAgIG1hcmtSb290cygp
OworCisgICAgSkFWQVNDUklQVENPUkVfR0NfTUFSS0VEKCk7CisKKyAgICByZWFwV2Vha0hhbmRs
ZXMoKTsKKyAgICBzd2VlcEFycmF5QnVmZmVycygpOworICAgIHNuYXBzaG90TWFya2VkU3BhY2Uo
KTsKKworICAgIGNvcHlCYWNraW5nU3RvcmVzKCk7CisKKyAgICBmaW5hbGl6ZVVuY29uZGl0aW9u
YWxGaW5hbGl6ZXJzKCk7CisgICAgZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKTsKKyAgICBk
ZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOworICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBl
cigpOworICAgIHJlbWVtYmVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOworCisgICAg
cmVzZXRBbGxvY2F0b3JzKCk7CisgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOworICAgIGRp
ZEZpbmlzaENvbGxlY3Rpb24oZ2NTdGFydFRpbWUpOworICAgIHJlc3VtZUNvbXBpbGVyVGhyZWFk
cygpOworCisgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpIHsKKyAgICAgICAgZG91YmxlIGFmdGVy
ID0gY3VycmVudFRpbWVNUygpOworICAgICAgICBkYXRhTG9nKGFmdGVyIC0gYmVmb3JlLCAiIG1z
XVxuIik7CisgICAgfQorfQorCitib29sIEhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIo
KQoreworICAgIGlmIChpc0RlZmVycmVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghc2hvdWxkQ29sbGVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb2xs
ZWN0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSGVhcDo6c3VzcGVuZENvbXBpbGVy
VGhyZWFkcygpCit7CiAjaWYgRU5BQkxFKERGR19KSVQpCisgICAgR0NQSEFTRShTdXNwZW5kQ29t
cGlsZXJUaHJlYWRzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBERkc6Om51bWJlck9mV29ya2xp
c3RzKCk7IGktLTspIHsKICAgICAgICAgaWYgKERGRzo6V29ya2xpc3QqIHdvcmtsaXN0ID0gREZH
Ojp3b3JrbGlzdEZvckluZGV4T3JOdWxsKGkpKQogICAgICAgICAgICAgd29ya2xpc3QtPnN1c3Bl
bmRBbGxUaHJlYWRzKCk7CiAgICAgfQogI2VuZGlmCit9CiAKK3ZvaWQgSGVhcDo6d2lsbFN0YXJ0
Q29sbGVjdGlvbigpCit7CisgICAgR0NQSEFTRShTdGFydGluZ0NvbGxlY3Rpb24pOwogICAgIGlm
IChzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkpIHsKICAgICAgICAgbV9vcGVyYXRpb25JblByb2dy
ZXNzID0gRnVsbENvbGxlY3Rpb247CiAgICAgICAgIG1fc2xvdFZpc2l0b3IuY2xlYXJNYXJrU3Rh
Y2soKTsKQEAgLTg0OSw4NCArOTUwLDkzIEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAKICAgICBp
ZiAobV9hY3Rpdml0eUNhbGxiYWNrKQogICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPndpbGxD
b2xsZWN0KCk7Cit9CiAKLSAgICBkb3VibGUgbGFzdEdDU3RhcnRUaW1lID0gV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBpZiAobGFzdEdDU3RhcnRUaW1lIC0gbV9sYXN0
Q29kZURpc2NhcmRUaW1lID4gbWludXRlKSB7Cit2b2lkIEhlYXA6OmRlbGV0ZU9sZENvZGUoZG91
YmxlIGdjU3RhcnRUaW1lKQoreworICAgIEdDUEhBU0UoRGVsZXRlT2xkQ29kZSk7CisgICAgaWYg
KGdjU3RhcnRUaW1lIC0gbV9sYXN0Q29kZURpc2NhcmRUaW1lID4gbWludXRlKSB7CiAgICAgICAg
IGRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOwogICAgICAgICBtX2xhc3RDb2RlRGlzY2FyZFRpbWUg
PSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgIH0KK30KIAotICAgIHsK
LSAgICAgICAgR0NQSEFTRShTdG9wQWxsb2NhdGlvbik7Ci0gICAgICAgIG1fc3RydWN0dXJlSURU
YWJsZS5mbHVzaE9sZFRhYmxlcygpOwotICAgICAgICBtX29iamVjdFNwYWNlLnN0b3BBbGxvY2F0
aW5nKCk7Ci0gICAgICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rp
b24pCi0gICAgICAgICAgICBtX3N0b3JhZ2VTcGFjZS5kaWRTdGFydEZ1bGxDb2xsZWN0aW9uKCk7
Ci0gICAgfQotCi0gICAgewotICAgICAgICBHQ1BIQVNFKEZsdXNoV3JpdGVCYXJyaWVyQnVmZmVy
KTsKLSAgICAgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbikK
LSAgICAgICAgICAgIG1fd3JpdGVCYXJyaWVyQnVmZmVyLmZsdXNoKCp0aGlzKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIucmVzZXQoKTsKLSAgICB9Cit2
b2lkIEhlYXA6OmZsdXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKQoreworICAgIEdDUEhBU0UoRmx1
c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcyk7CisgICAgbV9zdHJ1Y3R1cmVJRFRhYmxlLmZsdXNoT2xk
VGFibGVzKCk7Cit9CiAKLSAgICBtYXJrUm9vdHMoKTsKLSAgICAKLSAgICB7Ci0gICAgICAgIEdD
UEhBU0UoUmVhcGluZ1dlYWtIYW5kbGVzKTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5yZWFwV2Vh
a1NldHMoKTsKK3ZvaWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoKQoreworICAgIEdD
UEhBU0UoRmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIpOworICAgIGlmIChtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKKyAgICAgICAgbV93cml0ZUJhcnJpZXJCdWZmZXIu
Zmx1c2goKnRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgfQorICAgIG1fd3JpdGVCYXJyaWVy
QnVmZmVyLnJlc2V0KCk7Cit9CiAKLSAgICBKQVZBU0NSSVBUQ09SRV9HQ19NQVJLRUQoKTsKLSAg
ICAKLSAgICB7Ci0gICAgICAgIEdDUEhBU0UoU3dlZXBpbmdBcnJheUJ1ZmZlcnMpOwotICAgICAg
ICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOwotICAgIH0KK3ZvaWQgSGVhcDo6c3RvcEFsbG9jYXRp
b24oKQoreworICAgIEdDUEhBU0UoU3RvcEFsbG9jYXRpb24pOworICAgIG1fb2JqZWN0U3BhY2Uu
c3RvcEFsbG9jYXRpbmcoKTsKKyAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxD
b2xsZWN0aW9uKQorICAgICAgICBtX3N0b3JhZ2VTcGFjZS5kaWRTdGFydEZ1bGxDb2xsZWN0aW9u
KCk7Cit9CiAKLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9u
KSB7Ci0gICAgICAgIG1fYmxvY2tTbmFwc2hvdC5yZXNpemUobV9vYmplY3RTcGFjZS5ibG9ja3Mo
KS5zZXQoKS5zaXplKCkpOwotICAgICAgICBNYXJrZWRCbG9ja1NuYXBzaG90RnVuY3RvciBmdW5j
dG9yKG1fYmxvY2tTbmFwc2hvdCk7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJsb2Nr
KGZ1bmN0b3IpOwotICAgIH0KK3ZvaWQgSGVhcDo6cmVhcFdlYWtIYW5kbGVzKCkKK3sKKyAgICBH
Q1BIQVNFKFJlYXBpbmdXZWFrSGFuZGxlcyk7CisgICAgbV9vYmplY3RTcGFjZS5yZWFwV2Vha1Nl
dHMoKTsKK30KIAotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rp
b24pCi0gICAgICAgIGNvcHlCYWNraW5nU3RvcmVzPEZ1bGxDb2xsZWN0aW9uPigpOwotICAgIGVs
c2UKLSAgICAgICAgY29weUJhY2tpbmdTdG9yZXM8RWRlbkNvbGxlY3Rpb24+KCk7Cit2b2lkIEhl
YXA6OnN3ZWVwQXJyYXlCdWZmZXJzKCkKK3sKKyAgICBHQ1BIQVNFKFN3ZWVwaW5nQXJyYXlCdWZm
ZXJzKTsKKyAgICBtX2FycmF5QnVmZmVycy5zd2VlcCgpOworfQogCi0gICAgewotICAgICAgICBH
Q1BIQVNFKEZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMpOwotICAgICAgICBmaW5hbGl6
ZVVuY29uZGl0aW9uYWxGaW5hbGl6ZXJzKCk7Ci0gICAgfQordm9pZCBIZWFwOjpzbmFwc2hvdE1h
cmtlZFNwYWNlKCkKK3sKKyAgICBHQ1BIQVNFKFNuYXBzaG90TWFya2VkU3BhY2UpOworICAgIGlm
IChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gRnVsbENvbGxlY3Rpb24pCisgICAgICAgIHJldHVy
bjsKIAotICAgIHsKLSAgICAgICAgR0NQSEFTRShEZWxldGVDb2RlQmxvY2tzKTsKLSAgICAgICAg
ZGVsZXRlVW5tYXJrZWRDb21waWxlZENvZGUoKTsKLSAgICB9CisgICAgbV9ibG9ja1NuYXBzaG90
LnJlc2l6ZShtX29iamVjdFNwYWNlLmJsb2NrcygpLnNldCgpLnNpemUoKSk7CisgICAgTWFya2Vk
QmxvY2tTbmFwc2hvdEZ1bmN0b3IgZnVuY3RvcihtX2Jsb2NrU25hcHNob3QpOworICAgIG1fb2Jq
ZWN0U3BhY2UuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworfQogCi0gICAgewotICAgICAgICBHQ1BI
QVNFKERlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKTsKLSAgICAgICAgbV92bS0+Y2xlYXJTb3Vy
Y2VQcm92aWRlckNhY2hlcygpOwotICAgIH0KK3ZvaWQgSGVhcDo6ZGVsZXRlU291cmNlUHJvdmlk
ZXJDYWNoZXMoKQoreworICAgIEdDUEhBU0UoRGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMpOwor
ICAgIG1fdm0tPmNsZWFyU291cmNlUHJvdmlkZXJDYWNoZXMoKTsKK30KIAotICAgIGlmIChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCi0gICAgICAgIG1fc3dlZXBlci0+
c3RhcnRTd2VlcGluZyhtX2Jsb2NrU25hcHNob3QpOwordm9pZCBIZWFwOjpub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKQoreworICAgIEdDUEhBU0UoTm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKTsK
KyAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IEZ1bGxDb2xsZWN0aW9uKQorICAgICAg
ICByZXR1cm47CisgICAgbV9zd2VlcGVyLT5zdGFydFN3ZWVwaW5nKG1fYmxvY2tTbmFwc2hvdCk7
Cit9CiAKLSAgICB7Ci0gICAgICAgIEdDUEhBU0UoQWRkQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2Nrc1RvUmVtZW1iZXJlZFNldCk7Ci0gICAgICAgIG1fY29kZUJsb2Nrcy5yZW1lbWJlckN1cnJl
bnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7Ci0gICAgfQordm9pZCBIZWFwOjpyZW1lbWJl
ckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKQoreworICAgIEdDUEhBU0UoUmVtZW1iZXJD
dXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKTsKKyAgICBtX2NvZGVCbG9ja3MucmVtZW1iZXJD
dXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOworfQogCi0gICAgbV9ieXRlc0FiYW5k
b25lZFRoaXNDeWNsZSA9IDA7Cit2b2lkIEhlYXA6OnJlc2V0QWxsb2NhdG9ycygpCit7CisgICAg
R0NQSEFTRShSZXNldEFsbG9jYXRvcnMpOworICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0
b3JzKCk7Cit9CiAKLSAgICB7Ci0gICAgICAgIEdDUEhBU0UoUmVzZXRBbGxvY2F0b3JzKTsKLSAg
ICAgICAgbV9vYmplY3RTcGFjZS5yZXNldEFsbG9jYXRvcnMoKTsKLSAgICB9Ci0gICAgCit2b2lk
IEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQoreworICAgIEdDUEhBU0UoVXBkYXRlQWxs
b2NhdGlvbkxpbWl0cyk7CiAgICAgc2l6ZV90IGN1cnJlbnRIZWFwU2l6ZSA9IHNpemVBZnRlckNv
bGxlY3QoKTsKICAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIGN1cnJlbnRIZWFw
U2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6
OmV4aXRXaXRoRmFpbHVyZSgpOwpAQCAtOTQ5LDEzICsxMDU5LDIxIEBAIHZvaWQgSGVhcDo6Y29s
bGVjdCgpCiAgICAgfQogCiAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9IGN1cnJlbnRIZWFw
U2l6ZTsKLQogICAgIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPSAwOwotICAgIGRvdWJsZSBs
YXN0R0NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBt
X2xhc3RHQ0xlbmd0aCA9IGxhc3RHQ0VuZFRpbWUgLSBsYXN0R0NTdGFydFRpbWU7CisgICAgbV9i
eXRlc0FiYW5kb25lZFRoaXNDeWNsZSA9IDA7CisKKyAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkK
KyAgICAgICAgZGF0YUxvZyhjdXJyZW50SGVhcFNpemUgLyAxMDI0LCAiIGtiLCAiKTsKK30KKwor
dm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnY1N0YXJ0VGltZSkKK3sKKyAg
ICBHQ1BIQVNFKEZpbmlzaGluZ0NvbGxlY3Rpb24pOworICAgIGRvdWJsZSBnY0VuZFRpbWUgPSBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIG1fbGFzdEdDTGVuZ3RoID0g
Z2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7CiAKICAgICBpZiAoT3B0aW9uczo6cmVjb3JkR0NQYXVz
ZVRpbWVzKCkpCi0gICAgICAgIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShsYXN0
R0NTdGFydFRpbWUsIGxhc3RHQ0VuZFRpbWUpOworICAgICAgICBIZWFwU3RhdGlzdGljczo6cmVj
b3JkR0NQYXVzZVRpbWUoZ2NTdGFydFRpbWUsIGdjRW5kVGltZSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uIHx8IG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbik7CiAKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPSBOb09wZXJhdGlvbjsKQEAgLTk2OSwzMCArMTA4NywxNyBAQCB2b2lkIEhlYXA6OmNvbGxl
Y3QoKQogCiAgICAgaWYgKE9wdGlvbnM6OnNob3dPYmplY3RTdGF0aXN0aWNzKCkpCiAgICAgICAg
IEhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyh0aGlzKTsKLSAgICAKK30KKwor
dm9pZCBIZWFwOjpyZXN1bWVDb21waWxlclRocmVhZHMoKQorewogI2lmIEVOQUJMRShERkdfSklU
KQorICAgIEdDUEhBU0UoUmVzdW1lQ29tcGlsZXJUaHJlYWRzKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBERkc6Om51bWJlck9mV29ya2xpc3RzKCk7IGktLTspIHsKICAgICAgICAgaWYgKERGRzo6
V29ya2xpc3QqIHdvcmtsaXN0ID0gREZHOjp3b3JrbGlzdEZvckluZGV4T3JOdWxsKGkpKQogICAg
ICAgICAgICAgd29ya2xpc3QtPnJlc3VtZUFsbFRocmVhZHMoKTsKICAgICB9CiAjZW5kaWYKLQot
ICAgIGlmIChPcHRpb25zOjpsb2dHQygpKSB7Ci0gICAgICAgIGRvdWJsZSBhZnRlciA9IGN1cnJl
bnRUaW1lTVMoKTsKLSAgICAgICAgZGF0YUxvZyhhZnRlciAtIGJlZm9yZSwgIiBtcywgIiwgY3Vy
cmVudEhlYXBTaXplIC8gMTAyNCwgIiBrYl1cbiIpOwotICAgIH0KLX0KLQotYm9vbCBIZWFwOjpj
b2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKCkKLXsKLSAgICBpZiAoaXNEZWZlcnJlZCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXNob3VsZENvbGxlY3QoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgY29sbGVjdCgpOwotICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIEhlYXA6Om1hcmtEZWFkT2JqZWN0cygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCShyZXZpc2lvbiAxNjQ4MjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OCwxNCArMjQ4LDQ4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xv
d0Nhc2Uoc2l6ZV90KTsKIAorICAgICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsK
KyAgICAgICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisgICAgICAgIHZvaWQgZGVsZXRl
T2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpOworICAgICAgICB2b2lkIGZsdXNoT2xkU3RydWN0
dXJlSURUYWJsZXMoKTsKKyAgICAgICAgdm9pZCBmbHVzaFdyaXRlQmFycmllckJ1ZmZlcigpOwor
ICAgICAgICB2b2lkIHN0b3BBbGxvY2F0aW9uKCk7CisKICAgICAgICAgdm9pZCBtYXJrUm9vdHMo
KTsKKyAgICAgICAgdm9pZCBnYXRoZXJTdGFja1Jvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiwgdm9p
ZCoqIGR1bW15KTsKKyAgICAgICAgdm9pZCBnYXRoZXJKU1N0YWNrUm9vdHMoQ29uc2VydmF0aXZl
Um9vdHMmKTsKKyAgICAgICAgdm9pZCBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoQ29uc2VydmF0
aXZlUm9vdHMmKTsKKyAgICAgICAgdm9pZCBjbGVhckxpdmVuZXNzRGF0YSgpOworICAgICAgICB2
b2lkIHZpc2l0U21hbGxTdHJpbmdzKCk7CisgICAgICAgIHZvaWQgdmlzaXRDb25zZXJ2YXRpdmVS
b290cyhDb25zZXJ2YXRpdmVSb290cyYpOworICAgICAgICB2b2lkIHZpc2l0Q29tcGlsZXJXb3Jr
bGlzdHMoKTsKICAgICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0
b3ImKTsKICAgICAgICAgdm9pZCBtYXJrVGVtcFNvcnRWZWN0b3JzKEhlYXBSb290VmlzaXRvciYp
OwotICAgICAgICB0ZW1wbGF0ZSA8SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZT4KKyAgICAg
ICAgdm9pZCBtYXJrQXJndW1lbnRCdWZmZXJzKEhlYXBSb290VmlzaXRvciYpOworICAgICAgICB2
b2lkIHZpc2l0RXhjZXB0aW9uKEhlYXBSb290VmlzaXRvciYpOworICAgICAgICB2b2lkIHZpc2l0
U3Ryb25nSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICAgICAgdm9pZCB2aXNpdEhhbmRs
ZVN0YWNrKEhlYXBSb290VmlzaXRvciYpOworICAgICAgICB2b2lkIHRyYWNlQ29kZUJsb2Nrc0Fu
ZEpJVFN0dWJSb3V0aW5lcygpOworICAgICAgICB2b2lkIGNvbnZlcmdlKCk7CisgICAgICAgIHZv
aWQgdmlzaXRXZWFrSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICAgICAgdm9pZCBjbGVh
clJlbWVtYmVyZWRTZXQoVmVjdG9yPGNvbnN0IEpTQ2VsbCo+Jik7CisgICAgICAgIHZvaWQgdXBk
YXRlT2JqZWN0Q291bnRzKCk7CisgICAgICAgIHZvaWQgcmVzZXRWaXNpdG9ycygpOworCisgICAg
ICAgIHZvaWQgcmVhcFdlYWtIYW5kbGVzKCk7CisgICAgICAgIHZvaWQgc3dlZXBBcnJheUJ1ZmZl
cnMoKTsKKyAgICAgICAgdm9pZCBzbmFwc2hvdE1hcmtlZFNwYWNlKCk7CisgICAgICAgIHZvaWQg
ZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKTsKKyAgICAgICAgdm9pZCBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKKyAgICAgICAgdm9pZCByZW1lbWJlckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRvcnMoKTsKICAgICAgICAgdm9p
ZCBjb3B5QmFja2luZ1N0b3JlcygpOwogICAgICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNl
cygpOwogICAgICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKICAg
ICAgICAgdm9pZCBkZWxldGVVbm1hcmtlZENvbXBpbGVkQ29kZSgpOworICAgICAgICB2b2lkIHVw
ZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hDb2xsZWN0aW9u
KGRvdWJsZSBnY1N0YXJ0VGltZSk7CisgICAgICAgIHZvaWQgcmVzdW1lQ29tcGlsZXJUaHJlYWRz
KCk7CiAgICAgICAgIHZvaWQgem9tYmlmeURlYWRPYmplY3RzKCk7CiAgICAgICAgIHZvaWQgbWFy
a0RlYWRPYmplY3RzKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225473</attachid>
            <date>2014-02-28 09:35:49 -0800</date>
            <delta_ts>2014-02-28 09:41:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129464-20140228093543.patch</filename>
            <type>text/plain</type>
            <size>1383</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0ODYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBA
CisyMDE0LTAyLTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRml4ICFFTkFCTEUoR0dDKSBidWlsZHMKKworICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6CisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgIChKU0M6OkhlYXA6
OmdhdGhlckpTU3RhY2tSb290cyk6IEFsc28gZml4IG9uZSBvZiB0aGUgbmFtZXMgb2YgdGhlIEdD
IHBoYXNlcy4KKwogMjAxNC0wMi0yNyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIEhlYXA6OmNvbGxlY3QgYW5kIEhlYXA6Om1hcmtS
b290cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2NDg2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTIsNiArNDUyLDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogI2lmIEVOQUJMRShH
R0MpCiAgICAgVmVjdG9yPGNvbnN0IEpTQ2VsbCo+IHJlbWVtYmVyZWRTZXQobV9zbG90VmlzaXRv
ci5tYXJrU3RhY2soKS5zaXplKCkpOwogICAgIG1fc2xvdFZpc2l0b3IubWFya1N0YWNrKCkuZmls
bFZlY3RvcihyZW1lbWJlcmVkU2V0KTsKKyNlbHNlCisgICAgVmVjdG9yPGNvbnN0IEpTQ2VsbCo+
IHJlbWVtYmVyZWRTZXQ7CiAjZW5kaWYKIAogICAgIHsKQEAgLTUxMiw3ICs1MTQsNyBAQCB2b2lk
IEhlYXA6OmdhdGhlclN0YWNrUm9vdHMoQ29uc2VydmF0aXZlCiB2b2lkIEhlYXA6OmdhdGhlckpT
U3RhY2tSb290cyhDb25zZXJ2YXRpdmVSb290cyYgcm9vdHMpCiB7CiAjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKLSAgICBHQ1BIQVNFKEdhdGhlclN0YWNrUm9vdHMpOworICAgIEdDUEhBU0UoR2F0
aGVySlNTdGFja1Jvb3RzKTsKICAgICBzdGFjaygpLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJv
b3RzLCBtX2ppdFN0dWJSb3V0aW5lcywgbV9jb2RlQmxvY2tzKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHJvb3RzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>