<?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>97093</bug_id>
          
          <creation_ts>2012-09-19 03:08:57 -0700</creation_ts>
          <short_desc>[Chromium] Improve glyph positioning of HarfBuzzShaper</short_desc>
          <delta_ts>2012-09-19 17:00:28 -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>Platform</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="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>723424</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-19 03:08:57 -0700</bug_when>
    <thetext>There are two problems in glyph positioning of HarfBuzzShaper:
- If the shaper produces multiple HarfBuzzRuns, the position of first glyph of second and following runs could be wrong if the offsets of the precedence glyph (that is the last glyph of the previous run) aren&apos;t zero.
- Letter spacing and word spacing are added at the right side of characters/words even for RTL run. Spacing should be added at the left side of characters/words.

We should fix these problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723425</commentid>
    <comment_count>1</comment_count>
      <attachid>164705</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-19 03:12:20 -0700</bug_when>
    <thetext>Created attachment 164705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723427</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-19 03:13:06 -0700</bug_when>
    <thetext>Hi Tony,

Could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723644</commentid>
    <comment_count>3</comment_count>
      <attachid>164705</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-19 10:27:30 -0700</bug_when>
    <thetext>Comment on attachment 164705
Patch

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

FWIW, if you uploaded before and after png results for the tests that change as a separate attachment to the bug, it would help me understand the change.

&gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzShaper.cpp:319
&gt; +    // HarfBuzz returns the shaping result in visual order. We need not to flip for RTL

Nit: Missing period at the end of the sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723879</commentid>
    <comment_count>4</comment_count>
      <attachid>164786</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-19 15:25:28 -0700</bug_when>
    <thetext>Created attachment 164786
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723881</commentid>
    <comment_count>5</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-19 15:26:37 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 164705 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164705&amp;action=review
&gt; 
&gt; FWIW, if you uploaded before and after png results for the tests that change as a separate attachment to the bug, it would help me understand the change.
&gt; 

I should have done so. I&apos;ll do it next time.

&gt; &gt; Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzShaper.cpp:319
&gt; &gt; +    // HarfBuzz returns the shaping result in visual order. We need not to flip for RTL
&gt; 
&gt; Nit: Missing period at the end of the sentence.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723892</commentid>
    <comment_count>6</comment_count>
      <attachid>164786</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 15:47:15 -0700</bug_when>
    <thetext>Comment on attachment 164786
Patch for landing

Rejecting attachment 164786 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
kitpy/layout_tests/models/test_expectations_unittest.py
Failed to merge in the changes.
Patch failed at 0001 implement first part of support for the new TestExpectations syntax

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.

Full output: http://queues.webkit.org/results/13905607</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723898</commentid>
    <comment_count>7</comment_count>
      <attachid>164791</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-19 15:54:47 -0700</bug_when>
    <thetext>Created attachment 164791
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723980</commentid>
    <comment_count>8</comment_count>
      <attachid>164791</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 17:00:24 -0700</bug_when>
    <thetext>Comment on attachment 164791
Patch for landing

Clearing flags on attachment: 164791

Committed r129074: &lt;http://trac.webkit.org/changeset/129074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723981</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 17:00:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164705</attachid>
            <date>2012-09-19 03:12:20 -0700</date>
            <delta_ts>2012-09-19 15:25:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97093-20120919191146.patch</filename>
            <type>text/plain</type>
            <size>15175</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E4OWEzYmY4MmMxMzFk
MWRhYmRlZmE0ZDk1M2MwODhjMzJlMzM1Yi4uMGJhOTRhNTFjZTg4MTJlYjQ4MGMwODI1MDIxOGQ5
ZDk4NTBkOTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTE5ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IEltcHJvdmUgZ2x5cGggcG9zaXRpb25pbmcgb2YgSGFyZkJ1enpTaGFwZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDkzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIHByb3BlciBwb3NpdGlvbmlu
ZywgSGFyZkJ1enpTaGFwZXIgcmVxdWlyZXMgdGhlIHBvc2l0aW9ucyhvZmZzZXRzIGFuZCBhZHZh
bmNlKQorICAgICAgICBvZiB0aGUgcHJldmlvdXMgZ2x5cGguIFRoaXMgbWVhbiB3ZSBuZWVkIHRv
IHNoYXBlIGFsbCBIYXJmQnV6elJ1bnMgYmVmb3JlIGdseXBoIHBvc2l0aW9uaW5nLgorICAgICAg
ICBDb2xsZWN0IGFuZCBzaGFwZSBIYXJmQnV6elJ1bnMsIHRoZW4gc2V0IHBvc2l0aW9ucyBvZiBn
bHlwaHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUZXN0cyB0aGF0IHVzZXMgc3BhY2luZyBm
b3IgY29tcGxleCB0ZXh0IChlLmcuIGZhc3QvdGV4dC9hdHN1aS1uZWdhdGl2ZS1zcGFjaW5nLWZl
YXR1cmVzLmh0bWwpCisgICAgICAgIHNob3VsZCBjbG9zZSBpbiB0aGUgZXhwZWN0YXRpb25zLiAo
bm90IHRoZSBpZGVudGljYWwsIG1heWJlIHRoZXJlIGFyZSBzdWJ0bGUgZGlmZmVyZW5jZXMgYmV0
d2VlbgorICAgICAgICBoYXJmYnV6eiBvbGQgYW5kIGhhcmZidXp6IG5nKQorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjphcHBseVNoYXBlUmVzdWx0
KTogQWxsb2NhdGUgbV9vZmZzZXRzLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6
OkhhcmZCdXp6UnVuOjpzZXRHbHlwaEFuZFBvc2l0aW9ucyk6IFJlbmFtZWQgYW5kIHNldCBvZmZz
ZXQgdG9vLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjpj
aGFyYWN0ZXJJbmRleEZvclhQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNo
YXBlcjo6c2hhcGUpOiBDYWxsIGZpbGxHbHlwaEJ1ZmZlcigpIGlmIHdlIG5lZWQgdG8gZmlsbCBn
bHlwaEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpzaGFwZUhhcmZC
dXp6UnVucyk6IFJlbW92ZWQgZ2x5cGggcG9zaXRpb25pbmcgY29kZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhhcmZCdXp6U2hhcGVyOjpzZXRHbHlwaFBvc2l0aW9uc0ZvckhhcmZCdXp6UnVuKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6ZmlsbEdseXBoQnVmZmVyRnJv
bUhhcmZCdXp6UnVuKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhhcmZCdXp6U2hhcGVyOjpmaWxsR2x5cGhCdWZmZXIpOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5oOgorICAgICAgICAo
SGFyZkJ1enpSdW4pOgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6
UnVuOjpvZmZzZXRzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6
SGFyZkJ1enpSdW46OmdseXBoVG9DaGFyYWN0ZXJJbmRleGVzKTogQWRkZWQuCisgICAgICAgIChI
YXJmQnV6elNoYXBlcik6CisKIDIwMTItMDktMTggIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gU2tpYUdldEdseXBoV2lkdGhBbmRF
eHRlbnRzKCkgc2hvdWxkIGludmVydCB5LWF4aXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmNw
cAppbmRleCAwZmFjMzJjOGIyYTQ5Nzc0MGEwODcxMWUzZmFkOGVkYmQ2ZDM2ZThlLi5hMmM4MjUw
OWY1NWRhOTcxZmU2N2ViNWU2MWFiNjNlNmJkNDBjMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpT
aGFwZXIuY3BwCkBAIC04NSwxMiArODUsMTMgQEAgdm9pZCBIYXJmQnV6elNoYXBlcjo6SGFyZkJ1
enpSdW46OmFwcGx5U2hhcGVSZXN1bHQoaGJfYnVmZmVyX3QqIGhhcmZidXp6QnVmZmVyKQogICAg
IG1fbnVtR2x5cGhzID0gaGJfYnVmZmVyX2dldF9sZW5ndGgoaGFyZmJ1enpCdWZmZXIpOwogICAg
IG1fZ2x5cGhzLnJlc2l6ZShtX251bUdseXBocyk7CiAgICAgbV9hZHZhbmNlcy5yZXNpemUobV9u
dW1HbHlwaHMpOwotICAgIG1fZ2x5cGhUb0NoYXJhY3RlckluZGV4LnJlc2l6ZShtX251bUdseXBo
cyk7CisgICAgbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhlcy5yZXNpemUobV9udW1HbHlwaHMpOwog
ICAgIG1fbG9nQ2x1c3RlcnMucmVzaXplKG1fbnVtQ2hhcmFjdGVycyk7CisgICAgbV9vZmZzZXRz
LnJlc2l6ZShtX251bUdseXBocyk7CiAKICAgICBoYl9nbHlwaF9pbmZvX3QqIGluZm9zID0gaGJf
YnVmZmVyX2dldF9nbHlwaF9pbmZvcyhoYXJmYnV6ekJ1ZmZlciwgMCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbnVtR2x5cGhzOyArK2kpCi0gICAgICAgIG1fZ2x5cGhUb0NoYXJh
Y3RlckluZGV4W2ldID0gaW5mb3NbaV0uY2x1c3RlcjsKKyAgICAgICAgbV9nbHlwaFRvQ2hhcmFj
dGVySW5kZXhlc1tpXSA9IGluZm9zW2ldLmNsdXN0ZXI7CiAKICAgICAvLyBGaWxsIGxvZ2ljYWwg
Y2x1c3RlcnMKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CkBAIC0xMTEsMTAgKzExMiwxMSBAQCB2
b2lkIEhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6YXBwbHlTaGFwZVJlc3VsdChoYl9idWZm
ZXJfdCogaGFyZmJ1enpCdWZmZXIpCiAgICAgfQogfQogCi12b2lkIEhhcmZCdXp6U2hhcGVyOjpI
YXJmQnV6elJ1bjo6c2V0R2x5cGhBbmRBZHZhbmNlKHVuc2lnbmVkIGluZGV4LCB1aW50MTZfdCBn
bHlwaElkLCBmbG9hdCBhZHZhbmNlKQordm9pZCBIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46
OnNldEdseXBoQW5kUG9zaXRpb25zKHVuc2lnbmVkIGluZGV4LCB1aW50MTZfdCBnbHlwaElkLCBm
bG9hdCBhZHZhbmNlLCBmbG9hdCBvZmZzZXRYLCBmbG9hdCBvZmZzZXRZKQogewogICAgIG1fZ2x5
cGhzW2luZGV4XSA9IGdseXBoSWQ7CiAgICAgbV9hZHZhbmNlc1tpbmRleF0gPSBhZHZhbmNlOwor
ICAgIG1fb2Zmc2V0c1tpbmRleF0gPSBGbG9hdFBvaW50KG9mZnNldFgsIG9mZnNldFkpOwogfQog
CiBpbnQgSGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjpjaGFyYWN0ZXJJbmRleEZvclhQb3Np
dGlvbihmbG9hdCB0YXJnZXRYKQpAQCAtMTI2LDcgKzEyOCw3IEBAIGludCBIYXJmQnV6elNoYXBl
cjo6SGFyZkJ1enpSdW46OmNoYXJhY3RlckluZGV4Rm9yWFBvc2l0aW9uKGZsb2F0IHRhcmdldFgp
CiAgICAgICAgIGZsb2F0IGN1cnJlbnRBZHZhbmNlID0gbV9hZHZhbmNlc1tpXSAvIDIuMDsKICAg
ICAgICAgZmxvYXQgbmV4dFggPSBjdXJyZW50WCArIHByZXZBZHZhbmNlICsgY3VycmVudEFkdmFu
Y2U7CiAgICAgICAgIGlmIChjdXJyZW50WCA8PSB0YXJnZXRYICYmIHRhcmdldFggPD0gbmV4dFgp
Ci0gICAgICAgICAgICByZXR1cm4gbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhbaV0gKyAocnRsKCkg
PyAxIDogMCk7CisgICAgICAgICAgICByZXR1cm4gbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhlc1tp
XSArIChydGwoKSA/IDEgOiAwKTsKICAgICAgICAgY3VycmVudFggPSBuZXh0WDsKICAgICAgICAg
cHJldkFkdmFuY2UgPSBjdXJyZW50QWR2YW5jZTsKICAgICB9CkBAIC0xOTAsMTEgKzE5Miw2IEBA
IHZvaWQgSGFyZkJ1enpTaGFwZXI6OnNldERyYXdSYW5nZShpbnQgZnJvbSwgaW50IHRvKQogICAg
IG1fdG9JbmRleCA9IHRvOwogfQogCi1ib29sIEhhcmZCdXp6U2hhcGVyOjpzaG91bGREcmF3Q2hh
cmFjdGVyQXQoaW50IGluZGV4KQotewotICAgIHJldHVybiBtX2Zyb21JbmRleCA8PSBpbmRleCAm
JiBpbmRleCA8IG1fdG9JbmRleDsKLX0KLQogdm9pZCBIYXJmQnV6elNoYXBlcjo6c2V0Rm9udEZl
YXR1cmVzKCkKIHsKICAgICBGb250RmVhdHVyZVNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZm9udC0+
Zm9udERlc2NyaXB0aW9uKCkuZmVhdHVyZVNldHRpbmdzKCk7CkBAIC0yMTgsOSArMjE1LDEzIEBA
IGJvb2wgSGFyZkJ1enpTaGFwZXI6OnNoYXBlKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV90b3RhbFdpZHRoID0gMDsKLSAgICBpZiAoIXNo
YXBlSGFyZkJ1enpSdW5zKGdseXBoQnVmZmVyKSkKKyAgICBpZiAoIXNoYXBlSGFyZkJ1enpSdW5z
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3RvdGFsV2lkdGggPSByb3VuZGYobV90
b3RhbFdpZHRoKTsKKworICAgIGlmIChnbHlwaEJ1ZmZlcikKKyAgICAgICAgZmlsbEdseXBoQnVm
ZmVyKGdseXBoQnVmZmVyKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjcsMTQgKzI2
OCwxMiBAQCBib29sIEhhcmZCdXp6U2hhcGVyOjpjb2xsZWN0SGFyZkJ1enpSdW5zKCkKICAgICBy
ZXR1cm4gIW1faGFyZmJ1enpSdW5zLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBIYXJmQnV6elNoYXBl
cjo6c2hhcGVIYXJmQnV6elJ1bnMoR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQorYm9vbCBIYXJm
QnV6elNoYXBlcjo6c2hhcGVIYXJmQnV6elJ1bnMoKQogewogICAgIEhhcmZCdXp6U2NvcGVkUHRy
PGhiX2J1ZmZlcl90PiBoYXJmYnV6ekJ1ZmZlcihoYl9idWZmZXJfY3JlYXRlKCksIGhiX2J1ZmZl
cl9kZXN0cm95KTsKLSAgICBmbG9hdCBwZW5kaW5nR2x5cGhBZHZhbmNlWCA9IDA7Ci0gICAgZmxv
YXQgcGVuZGluZ0dseXBoQWR2YW5jZVkgPSAwOwogCiAgICAgaGJfYnVmZmVyX3NldF91bmljb2Rl
X2Z1bmNzKGhhcmZidXp6QnVmZmVyLmdldCgpLCBoYl9pY3VfZ2V0X3VuaWNvZGVfZnVuY3MoKSk7
Ci0gICAgaWYgKG1fcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkKKyAgICBpZiAobV9ydW4ucnRs
KCkgfHwgbV9ydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgpKQogICAgICAgICBoYl9idWZmZXJfc2V0
X2RpcmVjdGlvbihoYXJmYnV6ekJ1ZmZlci5nZXQoKSwgbV9ydW4ucnRsKCkgPyBIQl9ESVJFQ1RJ
T05fUlRMIDogSEJfRElSRUNUSU9OX0xUUik7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9oYXJmYnV6elJ1bnMuc2l6ZSgpOyArK2kpIHsKQEAgLTI5OCwxNiArMjk3LDE3IEBAIGJv
b2wgSGFyZkJ1enpTaGFwZXI6OnNoYXBlSGFyZkJ1enpSdW5zKEdseXBoQnVmZmVyKiBnbHlwaEJ1
ZmZlcikKICAgICAgICAgaGJfc2hhcGUoaGFyZmJ1enpGb250LmdldCgpLCBoYXJmYnV6ekJ1ZmZl
ci5nZXQoKSwgbV9mZWF0dXJlcy5pc0VtcHR5KCkgPyAwIDogbV9mZWF0dXJlcy5kYXRhKCksIG1f
ZmVhdHVyZXMuc2l6ZSgpKTsKIAogICAgICAgICBjdXJyZW50UnVuLT5hcHBseVNoYXBlUmVzdWx0
KGhhcmZidXp6QnVmZmVyLmdldCgpKTsKLSAgICAgICAgc2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJm
QnV6elJ1bihjdXJyZW50UnVuLCBpLCBoYXJmYnV6ekJ1ZmZlci5nZXQoKSwgZ2x5cGhCdWZmZXIs
IHBlbmRpbmdHbHlwaEFkdmFuY2VYLCBwZW5kaW5nR2x5cGhBZHZhbmNlWSk7CisgICAgICAgIHNl
dEdseXBoUG9zaXRpb25zRm9ySGFyZkJ1enpSdW4oY3VycmVudFJ1biwgaGFyZmJ1enpCdWZmZXIu
Z2V0KCkpOwogCiAgICAgICAgIGhiX2J1ZmZlcl9yZXNldChoYXJmYnV6ekJ1ZmZlci5nZXQoKSk7
Ci0gICAgICAgIGlmIChtX3J1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpCisgICAgICAgIGlmICht
X3J1bi5ydGwoKSB8fCBtX3J1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpCiAgICAgICAgICAgICBo
Yl9idWZmZXJfc2V0X2RpcmVjdGlvbihoYXJmYnV6ekJ1ZmZlci5nZXQoKSwgbV9ydW4ucnRsKCkg
PyBIQl9ESVJFQ1RJT05fUlRMIDogSEJfRElSRUNUSU9OX0xUUik7CiAgICAgfQorCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgSGFyZkJ1enpTaGFwZXI6OnNldEdseXBoUG9zaXRpb25zRm9y
SGFyZkJ1enpSdW4oSGFyZkJ1enpSdW4qIGN1cnJlbnRSdW4sIHVuc2lnbmVkIHJ1bkluZGV4SW5W
aXN1YWxPcmRlciwgaGJfYnVmZmVyX3QqIGhhcmZidXp6QnVmZmVyLCBHbHlwaEJ1ZmZlciogZ2x5
cGhCdWZmZXIsIGZsb2F0JiBwZW5kaW5nR2x5cGhBZHZhbmNlWCwgZmxvYXQmIHBlbmRpbmdHbHlw
aEFkdmFuY2VZKQordm9pZCBIYXJmQnV6elNoYXBlcjo6c2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJm
QnV6elJ1bihIYXJmQnV6elJ1biogY3VycmVudFJ1biwgaGJfYnVmZmVyX3QqIGhhcmZidXp6QnVm
ZmVyKQogewogICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBjdXJyZW50Rm9udERhdGEgPSBjdXJy
ZW50UnVuLT5mb250RGF0YSgpOwogICAgIGhiX2dseXBoX2luZm9fdCogZ2x5cGhJbmZvcyA9IGhi
X2J1ZmZlcl9nZXRfZ2x5cGhfaW5mb3MoaGFyZmJ1enpCdWZmZXIsIDApOwpAQCAtMzE1LDU4ICsz
MTUsOTMgQEAgdm9pZCBIYXJmQnV6elNoYXBlcjo6c2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJmQnV6
elJ1bihIYXJmQnV6elJ1biogY3VycmVudFJ1biwgdW4KIAogICAgIHVuc2lnbmVkIG51bUdseXBo
cyA9IGN1cnJlbnRSdW4tPm51bUdseXBocygpOwogICAgIGZsb2F0IHRvdGFsQWR2YW5jZSA9IDA7
Ci0gICAgZmxvYXQgbmV4dE9mZnNldFggPSBoYXJmYnV6elBvc2l0aW9uVG9GbG9hdChnbHlwaFBv
c2l0aW9uc1swXS54X29mZnNldCk7Ci0gICAgZmxvYXQgbmV4dE9mZnNldFkgPSAtaGFyZmJ1enpQ
b3NpdGlvblRvRmxvYXQoZ2x5cGhQb3NpdGlvbnNbMF0ueV9vZmZzZXQpOwotICAgIC8vIEhhcmZC
dXp6IHJldHVybnMgdGhlIHNoYXBpbmcgcmVzdWx0IGluIHZpc3VhbCBvcmRlci4gV2UgbmVlZCBu
b3QgdG8gZmxpcCB0aGVtIGZvciBSVEwuCisKKyAgICAvLyBIYXJmQnV6eiByZXR1cm5zIHRoZSBz
aGFwaW5nIHJlc3VsdCBpbiB2aXN1YWwgb3JkZXIuIFdlIG5lZWQgbm90IHRvIGZsaXAgZm9yIFJU
TAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKICAgICAgICAg
Ym9vbCBydW5FbmQgPSBpICsgMSA9PSBudW1HbHlwaHM7CiAgICAgICAgIHVpbnQxNl90IGdseXBo
ID0gZ2x5cGhJbmZvc1tpXS5jb2RlcG9pbnQ7Ci0gICAgICAgIGZsb2F0IG9mZnNldFggPSBuZXh0
T2Zmc2V0WDsKLSAgICAgICAgZmxvYXQgb2Zmc2V0WSA9IG5leHRPZmZzZXRZOworICAgICAgICBm
bG9hdCBvZmZzZXRYID0gaGFyZmJ1enpQb3NpdGlvblRvRmxvYXQoZ2x5cGhQb3NpdGlvbnNbaV0u
eF9vZmZzZXQpOworICAgICAgICBmbG9hdCBvZmZzZXRZID0gLWhhcmZidXp6UG9zaXRpb25Ub0Zs
b2F0KGdseXBoUG9zaXRpb25zW2ldLnlfb2Zmc2V0KTsKICAgICAgICAgZmxvYXQgYWR2YW5jZSA9
IGhhcmZidXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25zW2ldLnhfYWR2YW5jZSk7Ci0g
ICAgICAgIG5leHRPZmZzZXRYID0gcnVuRW5kID8gMCA6IGhhcmZidXp6UG9zaXRpb25Ub0Zsb2F0
KGdseXBoUG9zaXRpb25zW2kgKyAxXS54X29mZnNldCk7Ci0gICAgICAgIG5leHRPZmZzZXRZID0g
cnVuRW5kID8gMCA6IC1oYXJmYnV6elBvc2l0aW9uVG9GbG9hdChnbHlwaFBvc2l0aW9uc1tpICsg
MV0ueV9vZmZzZXQpOwogCiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCA9
IGN1cnJlbnRSdW4tPnN0YXJ0SW5kZXgoKSArIGdseXBoSW5mb3NbaV0uY2x1c3RlcjsKICAgICAg
ICAgYm9vbCBpc0NsdXN0ZXJFbmQgPSBydW5FbmQgfHwgZ2x5cGhJbmZvc1tpXS5jbHVzdGVyICE9
IGdseXBoSW5mb3NbaSArIDFdLmNsdXN0ZXI7Ci0gICAgICAgIGZsb2F0IHNwYWNpbmcgPSBpc0Ns
dXN0ZXJFbmQgPyBtX2xldHRlclNwYWNpbmcgOiAwOworICAgICAgICBmbG9hdCBzcGFjaW5nID0g
MDsKKyAgICAgICAgaWYgKGlzQ2x1c3RlckVuZCAmJiAhRm9udDo6dHJlYXRBc1plcm9XaWR0aFNw
YWNlKG1fbm9ybWFsaXplZEJ1ZmZlcltjdXJyZW50Q2hhcmFjdGVySW5kZXhdKSkKKyAgICAgICAg
ICAgIHNwYWNpbmcgKz0gbV9sZXR0ZXJTcGFjaW5nOwogCiAgICAgICAgIGlmIChpc0NsdXN0ZXJF
bmQgJiYgaXNXb3JkRW5kKGN1cnJlbnRDaGFyYWN0ZXJJbmRleCkpCiAgICAgICAgICAgICBzcGFj
aW5nICs9IGRldGVybWluZVdvcmRCcmVha1NwYWNpbmcoKTsKIAogICAgICAgICBpZiAoY3VycmVu
dEZvbnREYXRhLT5pc1plcm9XaWR0aFNwYWNlR2x5cGgoZ2x5cGgpKSB7Ci0gICAgICAgICAgICBj
dXJyZW50UnVuLT5zZXRHbHlwaEFuZEFkdmFuY2UoaSwgZ2x5cGgsIDApOwotICAgICAgICAgICAg
aWYgKGdseXBoQnVmZmVyICYmIHNob3VsZERyYXdDaGFyYWN0ZXJBdChjdXJyZW50Q2hhcmFjdGVy
SW5kZXgpKQotICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQoZ2x5cGgsIGN1cnJlbnRG
b250RGF0YSwgY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKDAsIDApKTsKKyAgICAgICAgICAgIGN1
cnJlbnRSdW4tPnNldEdseXBoQW5kUG9zaXRpb25zKGksIGdseXBoLCAwLCAwLCAwKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgYWR2YW5jZSArPSBzcGFjaW5n
OwotCi0gICAgICAgIGN1cnJlbnRSdW4tPnNldEdseXBoQW5kQWR2YW5jZShpLCBnbHlwaCwgYWR2
YW5jZSk7Ci0gICAgICAgIGlmIChnbHlwaEJ1ZmZlcikgewotICAgICAgICAgICAgaWYgKCFpICYm
ICFydW5JbmRleEluVmlzdWFsT3JkZXIpCi0gICAgICAgICAgICAgICAgbV9zdGFydE9mZnNldC5z
ZXQob2Zmc2V0WCwgb2Zmc2V0WSk7Ci0gICAgICAgICAgICBmbG9hdCBnbHlwaEFkdmFuY2VYID0g
YWR2YW5jZSArIG5leHRPZmZzZXRYIC0gb2Zmc2V0WDsKLSAgICAgICAgICAgIGZsb2F0IGdseXBo
QWR2YW5jZVkgPSBuZXh0T2Zmc2V0WSAtIG9mZnNldFk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxk
RHJhd0NoYXJhY3RlckF0KGN1cnJlbnRDaGFyYWN0ZXJJbmRleCkpIHsKLSAgICAgICAgICAgICAg
ICBnbHlwaEFkdmFuY2VYICs9IHBlbmRpbmdHbHlwaEFkdmFuY2VYOwotICAgICAgICAgICAgICAg
IGdseXBoQWR2YW5jZVkgKz0gcGVuZGluZ0dseXBoQWR2YW5jZVk7Ci0gICAgICAgICAgICAgICAg
cGVuZGluZ0dseXBoQWR2YW5jZVggPSAwOwotICAgICAgICAgICAgICAgIHBlbmRpbmdHbHlwaEFk
dmFuY2VZID0gMDsKLSAgICAgICAgICAgICAgICBnbHlwaEJ1ZmZlci0+YWRkKGdseXBoLCBjdXJy
ZW50Rm9udERhdGEsIGNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZShnbHlwaEFkdmFuY2VYLCBnbHlw
aEFkdmFuY2VZKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBlbmRp
bmdHbHlwaEFkdmFuY2VYICs9IGdseXBoQWR2YW5jZVg7Ci0gICAgICAgICAgICAgICAgcGVuZGlu
Z0dseXBoQWR2YW5jZVkgKz0gZ2x5cGhBZHZhbmNlWTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
aWYgKG1fcnVuLnJ0bCgpKSB7CisgICAgICAgICAgICAvLyBJbiBSVEwsIHNwYWNpbmcgc2hvdWxk
IGJlIGFkZGVkIHRvIGxlZnQgc2lkZSBvZiBnbHlwaHMuCisgICAgICAgICAgICBvZmZzZXRYICs9
IHNwYWNpbmc7CisgICAgICAgICAgICBpZiAoIWlzQ2x1c3RlckVuZCkKKyAgICAgICAgICAgICAg
ICBvZmZzZXRYICs9IG1fbGV0dGVyU3BhY2luZzsKICAgICAgICAgfQogCisgICAgICAgIGN1cnJl
bnRSdW4tPnNldEdseXBoQW5kUG9zaXRpb25zKGksIGdseXBoLCBhZHZhbmNlLCBvZmZzZXRYLCBv
ZmZzZXRZKTsKKwogICAgICAgICB0b3RhbEFkdmFuY2UgKz0gYWR2YW5jZTsKICAgICB9CiAgICAg
Y3VycmVudFJ1bi0+c2V0V2lkdGgodG90YWxBZHZhbmNlID4gMC4wID8gdG90YWxBZHZhbmNlIDog
MC4wKTsKICAgICBtX3RvdGFsV2lkdGggKz0gY3VycmVudFJ1bi0+d2lkdGgoKTsKIH0KIAordm9p
ZCBIYXJmQnV6elNoYXBlcjo6ZmlsbEdseXBoQnVmZmVyRnJvbUhhcmZCdXp6UnVuKEdseXBoQnVm
ZmVyKiBnbHlwaEJ1ZmZlciwgSGFyZkJ1enpSdW4qIGN1cnJlbnRSdW4sIEZsb2F0UG9pbnQmIGZp
cnN0T2Zmc2V0T2ZOZXh0UnVuKQoreworICAgIEZsb2F0UG9pbnQqIG9mZnNldHMgPSBjdXJyZW50
UnVuLT5vZmZzZXRzKCk7CisgICAgdWludDE2X3QqIGdseXBocyA9IGN1cnJlbnRSdW4tPmdseXBo
cygpOworICAgIGZsb2F0KiBhZHZhbmNlcyA9IGN1cnJlbnRSdW4tPmFkdmFuY2VzKCk7CisgICAg
dW5zaWduZWQgbnVtR2x5cGhzID0gY3VycmVudFJ1bi0+bnVtR2x5cGhzKCk7CisgICAgdWludDE2
X3QqIGdseXBoVG9DaGFyYWN0ZXJJbmRleGVzID0gY3VycmVudFJ1bi0+Z2x5cGhUb0NoYXJhY3Rl
ckluZGV4ZXMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsr
aSkgeworICAgICAgICB1aW50MTZfdCBjdXJyZW50Q2hhcmFjdGVySW5kZXggPSBjdXJyZW50UnVu
LT5zdGFydEluZGV4KCkgKyBnbHlwaFRvQ2hhcmFjdGVySW5kZXhlc1tpXTsKKyAgICAgICAgRmxv
YXRQb2ludCYgY3VycmVudE9mZnNldCA9IG9mZnNldHNbaV07CisgICAgICAgIEZsb2F0UG9pbnQm
IG5leHRPZmZzZXQgPSAoaSA9PSBudW1HbHlwaHMgLSAxKSA/IGZpcnN0T2Zmc2V0T2ZOZXh0UnVu
IDogb2Zmc2V0c1tpICsgMV07CisgICAgICAgIGZsb2F0IGdseXBoQWR2YW5jZVggPSBhZHZhbmNl
c1tpXSArIG5leHRPZmZzZXQueCgpIC0gY3VycmVudE9mZnNldC54KCk7CisgICAgICAgIGZsb2F0
IGdseXBoQWR2YW5jZVkgPSBuZXh0T2Zmc2V0LnkoKSAtIGN1cnJlbnRPZmZzZXQueSgpOworICAg
ICAgICBpZiAobV9ydW4ucnRsKCkpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVy
SW5kZXggPiBtX3RvSW5kZXgpCisgICAgICAgICAgICAgICAgbV9zdGFydE9mZnNldC5tb3ZlKGds
eXBoQWR2YW5jZVgsIGdseXBoQWR2YW5jZVkpOworICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVu
dENoYXJhY3RlckluZGV4ID49IG1fZnJvbUluZGV4KQorICAgICAgICAgICAgICAgIGdseXBoQnVm
ZmVyLT5hZGQoZ2x5cGhzW2ldLCBjdXJyZW50UnVuLT5mb250RGF0YSgpLCBjcmVhdGVHbHlwaEJ1
ZmZlckFkdmFuY2UoZ2x5cGhBZHZhbmNlWCwgZ2x5cGhBZHZhbmNlWSkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXJJbmRleCA8IG1fZnJvbUluZGV4
KQorICAgICAgICAgICAgICAgIG1fc3RhcnRPZmZzZXQubW92ZShnbHlwaEFkdmFuY2VYLCBnbHlw
aEFkdmFuY2VZKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXJJbmRleCA8
IG1fdG9JbmRleCkKKyAgICAgICAgICAgICAgICBnbHlwaEJ1ZmZlci0+YWRkKGdseXBoc1tpXSwg
Y3VycmVudFJ1bi0+Zm9udERhdGEoKSwgY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKGdseXBoQWR2
YW5jZVgsIGdseXBoQWR2YW5jZVkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBIYXJm
QnV6elNoYXBlcjo6ZmlsbEdseXBoQnVmZmVyKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlcikKK3sK
KyAgICB1bnNpZ25lZCBudW1SdW5zID0gbV9oYXJmYnV6elJ1bnMuc2l6ZSgpOworICAgIGlmICht
X3J1bi5ydGwoKSkgeworICAgICAgICBtX3N0YXJ0T2Zmc2V0ID0gbV9oYXJmYnV6elJ1bnMubGFz
dCgpLT5vZmZzZXRzKClbMF07CisgICAgICAgIGZvciAoaW50IHJ1bkluZGV4ID0gbnVtUnVucyAt
IDE7IHJ1bkluZGV4ID49IDA7IC0tcnVuSW5kZXgpIHsKKyAgICAgICAgICAgIEhhcmZCdXp6UnVu
KiBjdXJyZW50UnVuID0gbV9oYXJmYnV6elJ1bnNbcnVuSW5kZXhdLmdldCgpOworICAgICAgICAg
ICAgRmxvYXRQb2ludCBmaXJzdE9mZnNldE9mTmV4dFJ1biA9ICFydW5JbmRleCA/IEZsb2F0UG9p
bnQoKSA6IG1faGFyZmJ1enpSdW5zW3J1bkluZGV4IC0gMV0tPm9mZnNldHMoKVswXTsKKyAgICAg
ICAgICAgIGZpbGxHbHlwaEJ1ZmZlckZyb21IYXJmQnV6elJ1bihnbHlwaEJ1ZmZlciwgY3VycmVu
dFJ1biwgZmlyc3RPZmZzZXRPZk5leHRSdW4pOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9zdGFydE9mZnNldCA9IG1faGFyZmJ1enpSdW5zLmZpcnN0KCktPm9mZnNldHMoKVsw
XTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBydW5JbmRleCA9IDA7IHJ1bkluZGV4IDwgbnVtUnVu
czsgKytydW5JbmRleCkgeworICAgICAgICAgICAgSGFyZkJ1enpSdW4qIGN1cnJlbnRSdW4gPSBt
X2hhcmZidXp6UnVuc1tydW5JbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGZp
cnN0T2Zmc2V0T2ZOZXh0UnVuID0gcnVuSW5kZXggPT0gbnVtUnVucyAtIDEgPyBGbG9hdFBvaW50
KCkgOiBtX2hhcmZidXp6UnVuc1tydW5JbmRleCArIDFdLT5vZmZzZXRzKClbMF07CisgICAgICAg
ICAgICBmaWxsR2x5cGhCdWZmZXJGcm9tSGFyZkJ1enpSdW4oZ2x5cGhCdWZmZXIsIGN1cnJlbnRS
dW4sIGZpcnN0T2Zmc2V0T2ZOZXh0UnVuKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogaW50IEhh
cmZCdXp6U2hhcGVyOjpvZmZzZXRGb3JQb3NpdGlvbihmbG9hdCB0YXJnZXRYKQogewogICAgIGlu
dCBjaGFyYWN0ZXJzU29GYXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmgKaW5kZXggODI2
MGZjOTZjMzQyMjM2NzgwMzIwZjVkMDU2Y2E2ZDhmYzNhNzAwMi4uOTQ2ZDBjMDg5NmYwNDY5N2Jk
YzdlZWZkMWRhZDU3NmY0ODM4N2E2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5oCkBAIC02
Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGFwcGx5U2hh
cGVSZXN1bHQoaGJfYnVmZmVyX3QqKTsKLSAgICAgICAgdm9pZCBzZXRHbHlwaEFuZEFkdmFuY2Uo
dW5zaWduZWQgaW5kZXgsIHVpbnQxNl90IGdseXBoSWQsIGZsb2F0IGFkdmFuY2UpOworICAgICAg
ICB2b2lkIHNldEdseXBoQW5kUG9zaXRpb25zKHVuc2lnbmVkIGluZGV4LCB1aW50MTZfdCBnbHlw
aElkLCBmbG9hdCBhZHZhbmNlLCBmbG9hdCBvZmZzZXRYLCBmbG9hdCBvZmZzZXRZKTsKICAgICAg
ICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KIAogICAg
ICAgICBpbnQgY2hhcmFjdGVySW5kZXhGb3JYUG9zaXRpb24oZmxvYXQgdGFyZ2V0WCk7CkBAIC03
OSw2ICs3OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG51bUdseXBocygpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtR2x5cGhzOyB9CiAgICAgICAgIHVpbnQxNl90KiBnbHlwaHMoKSB7IHJl
dHVybiAmbV9nbHlwaHNbMF07IH0KICAgICAgICAgZmxvYXQqIGFkdmFuY2VzKCkgeyByZXR1cm4g
Jm1fYWR2YW5jZXNbMF07IH0KKyAgICAgICAgRmxvYXRQb2ludCogb2Zmc2V0cygpIHsgcmV0dXJu
ICZtX29mZnNldHNbMF07IH0KKyAgICAgICAgdWludDE2X3QqIGdseXBoVG9DaGFyYWN0ZXJJbmRl
eGVzKCkgeyByZXR1cm4gJm1fZ2x5cGhUb0NoYXJhY3RlckluZGV4ZXNbMF07IH0KICAgICAgICAg
ZmxvYXQgd2lkdGgoKSB7IHJldHVybiBtX3dpZHRoOyB9CiAKICAgICBwcml2YXRlOgpAQCAtOTMs
MTYgKzk1LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3Rvcjx1aW50MTZfdCwgMjU2PiBtX2ds
eXBoczsKICAgICAgICAgVmVjdG9yPGZsb2F0LCAyNTY+IG1fYWR2YW5jZXM7CiAgICAgICAgIFZl
Y3Rvcjx1aW50MTZfdCwgMjU2PiBtX2xvZ0NsdXN0ZXJzOwotICAgICAgICBWZWN0b3I8dWludDE2
X3QsIDI1Nj4gbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXg7CisgICAgICAgIFZlY3Rvcjx1aW50MTZf
dCwgMjU2PiBtX2dseXBoVG9DaGFyYWN0ZXJJbmRleGVzOworICAgICAgICBWZWN0b3I8RmxvYXRQ
b2ludCwgMjU2PiBtX29mZnNldHM7CiAgICAgICAgIGZsb2F0IG1fd2lkdGg7CiAgICAgfTsKIAot
ICAgIGJvb2wgc2hvdWxkRHJhd0NoYXJhY3RlckF0KGludCBpbmRleCk7CiAgICAgdm9pZCBzZXRG
b250RmVhdHVyZXMoKTsKIAogICAgIGJvb2wgY29sbGVjdEhhcmZCdXp6UnVucygpOwotICAgIGJv
b2wgc2hhcGVIYXJmQnV6elJ1bnMoR2x5cGhCdWZmZXIqKTsKLSAgICB2b2lkIHNldEdseXBoUG9z
aXRpb25zRm9ySGFyZkJ1enpSdW4oSGFyZkJ1enpSdW4qLCB1bnNpZ25lZCBydW5JbmRleEluVmlz
dWFsT3JkZXIsIGhiX2J1ZmZlcl90KiwgR2x5cGhCdWZmZXIqLCBmbG9hdCYgcGVuZGluZ0dseXBo
QWR2YW5jZVgsIGZsb2F0JiBwZW5kaW5nR2x5cGhBZHZhbmNlWSk7CisgICAgYm9vbCBzaGFwZUhh
cmZCdXp6UnVucygpOworICAgIHZvaWQgZmlsbEdseXBoQnVmZmVyKEdseXBoQnVmZmVyKik7Cisg
ICAgdm9pZCBmaWxsR2x5cGhCdWZmZXJGcm9tSGFyZkJ1enpSdW4oR2x5cGhCdWZmZXIqLCBIYXJm
QnV6elJ1biosIEZsb2F0UG9pbnQmIGZpcnN0T2Zmc2V0T2ZOZXh0UnVuKTsKKyAgICB2b2lkIHNl
dEdseXBoUG9zaXRpb25zRm9ySGFyZkJ1enpSdW4oSGFyZkJ1enpSdW4qLCBoYl9idWZmZXJfdCop
OwogCiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGNyZWF0ZUdseXBoQnVmZmVyQWR2YW5jZShmbG9h
dCwgZmxvYXQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164786</attachid>
            <date>2012-09-19 15:25:28 -0700</date>
            <delta_ts>2012-09-19 15:54:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97093-20120920072453.patch</filename>
            <type>text/plain</type>
            <size>15180</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5ZjBiMjc3ZDJhNjM3
OWJjNzQwYjJkNGYxNmNmNmViYzc5MzJjYy4uZjJhMzI4Y2E5M2E0YTJhNGYzOGY0NDZmNGNjMjU1
MDY5Mzk3ODU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTE5ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IEltcHJvdmUgZ2x5cGggcG9zaXRpb25pbmcgb2YgSGFyZkJ1enpTaGFwZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDkzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBGb3IgcHJvcGVyIHBvc2l0aW9uaW5nLCBI
YXJmQnV6elNoYXBlciByZXF1aXJlcyB0aGUgcG9zaXRpb25zKG9mZnNldHMgYW5kIGFkdmFuY2Up
CisgICAgICAgIG9mIHRoZSBwcmV2aW91cyBnbHlwaC4gVGhpcyBtZWFuIHdlIG5lZWQgdG8gc2hh
cGUgYWxsIEhhcmZCdXp6UnVucyBiZWZvcmUgZ2x5cGggcG9zaXRpb25pbmcuCisgICAgICAgIENv
bGxlY3QgYW5kIHNoYXBlIEhhcmZCdXp6UnVucywgdGhlbiBzZXQgcG9zaXRpb25zIG9mIGdseXBo
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRlc3RzIHRoYXQgdXNlcyBzcGFjaW5nIGZvciBj
b21wbGV4IHRleHQgKGUuZy4gZmFzdC90ZXh0L2F0c3VpLW5lZ2F0aXZlLXNwYWNpbmctZmVhdHVy
ZXMuaHRtbCkKKyAgICAgICAgc2hvdWxkIGNsb3NlIGluIHRoZSBleHBlY3RhdGlvbnMuIChub3Qg
dGhlIGlkZW50aWNhbCwgbWF5YmUgdGhlcmUgYXJlIHN1YnRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVu
CisgICAgICAgIGhhcmZidXp6IG9sZCBhbmQgaGFyZmJ1enogbmcpCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OmFwcGx5U2hhcGVSZXN1bHQpOiBB
bGxvY2F0ZSBtX29mZnNldHMuCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFy
ZkJ1enpSdW46OnNldEdseXBoQW5kUG9zaXRpb25zKTogUmVuYW1lZCBhbmQgc2V0IG9mZnNldCB0
b28uCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OmNoYXJh
Y3RlckluZGV4Rm9yWFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVy
OjpzaGFwZSk6IENhbGwgZmlsbEdseXBoQnVmZmVyKCkgaWYgd2UgbmVlZCB0byBmaWxsIGdseXBo
QnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OnNoYXBlSGFyZkJ1enpS
dW5zKTogUmVtb3ZlZCBnbHlwaCBwb3NpdGlvbmluZyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
SGFyZkJ1enpTaGFwZXI6OnNldEdseXBoUG9zaXRpb25zRm9ySGFyZkJ1enpSdW4pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpmaWxsR2x5cGhCdWZmZXJGcm9tSGFy
ZkJ1enpSdW4pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SGFyZkJ1enpTaGFwZXI6OmZpbGxHbHlwaEJ1ZmZlcik6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmg6CisgICAgICAgIChIYXJm
QnV6elJ1bik6CisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46
Om9mZnNldHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpIYXJm
QnV6elJ1bjo6Z2x5cGhUb0NoYXJhY3RlckluZGV4ZXMpOiBBZGRlZC4KKyAgICAgICAgKEhhcmZC
dXp6U2hhcGVyKToKKwogMjAxMi0wOS0xOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbW92ZSBSZW5kZXJJRnJhbWU6OnVwZGF0ZUxvZ2ljYWxIZWlnaHQgYW5k
IFJlbmRlcklGcmFtZTo6dXBkYXRlTG9naWNhbFdpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBl
ci5jcHAKaW5kZXggMGZhYzMyYzhiMmE0OTc3NDBhMDg3MTFlM2ZhZDhlZGJkNmQzNmU4ZS4uYTEx
ZTQzZmQ5NTE4YzFiNmY3NDQ0OTE2OWFiYmUzOGE3YzQ4ODY4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZC
dXp6U2hhcGVyLmNwcApAQCAtODUsMTIgKzg1LDEzIEBAIHZvaWQgSGFyZkJ1enpTaGFwZXI6Okhh
cmZCdXp6UnVuOjphcHBseVNoYXBlUmVzdWx0KGhiX2J1ZmZlcl90KiBoYXJmYnV6ekJ1ZmZlcikK
ICAgICBtX251bUdseXBocyA9IGhiX2J1ZmZlcl9nZXRfbGVuZ3RoKGhhcmZidXp6QnVmZmVyKTsK
ICAgICBtX2dseXBocy5yZXNpemUobV9udW1HbHlwaHMpOwogICAgIG1fYWR2YW5jZXMucmVzaXpl
KG1fbnVtR2x5cGhzKTsKLSAgICBtX2dseXBoVG9DaGFyYWN0ZXJJbmRleC5yZXNpemUobV9udW1H
bHlwaHMpOworICAgIG1fZ2x5cGhUb0NoYXJhY3RlckluZGV4ZXMucmVzaXplKG1fbnVtR2x5cGhz
KTsKICAgICBtX2xvZ0NsdXN0ZXJzLnJlc2l6ZShtX251bUNoYXJhY3RlcnMpOworICAgIG1fb2Zm
c2V0cy5yZXNpemUobV9udW1HbHlwaHMpOwogCiAgICAgaGJfZ2x5cGhfaW5mb190KiBpbmZvcyA9
IGhiX2J1ZmZlcl9nZXRfZ2x5cGhfaW5mb3MoaGFyZmJ1enpCdWZmZXIsIDApOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX251bUdseXBoczsgKytpKQotICAgICAgICBtX2dseXBoVG9D
aGFyYWN0ZXJJbmRleFtpXSA9IGluZm9zW2ldLmNsdXN0ZXI7CisgICAgICAgIG1fZ2x5cGhUb0No
YXJhY3RlckluZGV4ZXNbaV0gPSBpbmZvc1tpXS5jbHVzdGVyOwogCiAgICAgLy8gRmlsbCBsb2dp
Y2FsIGNsdXN0ZXJzCiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwpAQCAtMTExLDEwICsxMTIsMTEg
QEAgdm9pZCBIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OmFwcGx5U2hhcGVSZXN1bHQoaGJf
YnVmZmVyX3QqIGhhcmZidXp6QnVmZmVyKQogICAgIH0KIH0KIAotdm9pZCBIYXJmQnV6elNoYXBl
cjo6SGFyZkJ1enpSdW46OnNldEdseXBoQW5kQWR2YW5jZSh1bnNpZ25lZCBpbmRleCwgdWludDE2
X3QgZ2x5cGhJZCwgZmxvYXQgYWR2YW5jZSkKK3ZvaWQgSGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6
UnVuOjpzZXRHbHlwaEFuZFBvc2l0aW9ucyh1bnNpZ25lZCBpbmRleCwgdWludDE2X3QgZ2x5cGhJ
ZCwgZmxvYXQgYWR2YW5jZSwgZmxvYXQgb2Zmc2V0WCwgZmxvYXQgb2Zmc2V0WSkKIHsKICAgICBt
X2dseXBoc1tpbmRleF0gPSBnbHlwaElkOwogICAgIG1fYWR2YW5jZXNbaW5kZXhdID0gYWR2YW5j
ZTsKKyAgICBtX29mZnNldHNbaW5kZXhdID0gRmxvYXRQb2ludChvZmZzZXRYLCBvZmZzZXRZKTsK
IH0KIAogaW50IEhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6Y2hhcmFjdGVySW5kZXhGb3JY
UG9zaXRpb24oZmxvYXQgdGFyZ2V0WCkKQEAgLTEyNiw3ICsxMjgsNyBAQCBpbnQgSGFyZkJ1enpT
aGFwZXI6OkhhcmZCdXp6UnVuOjpjaGFyYWN0ZXJJbmRleEZvclhQb3NpdGlvbihmbG9hdCB0YXJn
ZXRYKQogICAgICAgICBmbG9hdCBjdXJyZW50QWR2YW5jZSA9IG1fYWR2YW5jZXNbaV0gLyAyLjA7
CiAgICAgICAgIGZsb2F0IG5leHRYID0gY3VycmVudFggKyBwcmV2QWR2YW5jZSArIGN1cnJlbnRB
ZHZhbmNlOwogICAgICAgICBpZiAoY3VycmVudFggPD0gdGFyZ2V0WCAmJiB0YXJnZXRYIDw9IG5l
eHRYKQotICAgICAgICAgICAgcmV0dXJuIG1fZ2x5cGhUb0NoYXJhY3RlckluZGV4W2ldICsgKHJ0
bCgpID8gMSA6IDApOworICAgICAgICAgICAgcmV0dXJuIG1fZ2x5cGhUb0NoYXJhY3RlckluZGV4
ZXNbaV0gKyAocnRsKCkgPyAxIDogMCk7CiAgICAgICAgIGN1cnJlbnRYID0gbmV4dFg7CiAgICAg
ICAgIHByZXZBZHZhbmNlID0gY3VycmVudEFkdmFuY2U7CiAgICAgfQpAQCAtMTkwLDExICsxOTIs
NiBAQCB2b2lkIEhhcmZCdXp6U2hhcGVyOjpzZXREcmF3UmFuZ2UoaW50IGZyb20sIGludCB0bykK
ICAgICBtX3RvSW5kZXggPSB0bzsKIH0KIAotYm9vbCBIYXJmQnV6elNoYXBlcjo6c2hvdWxkRHJh
d0NoYXJhY3RlckF0KGludCBpbmRleCkKLXsKLSAgICByZXR1cm4gbV9mcm9tSW5kZXggPD0gaW5k
ZXggJiYgaW5kZXggPCBtX3RvSW5kZXg7Ci19Ci0KIHZvaWQgSGFyZkJ1enpTaGFwZXI6OnNldEZv
bnRGZWF0dXJlcygpCiB7CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2Zv
bnQtPmZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOwpAQCAtMjE4LDkgKzIxNSwx
MyBAQCBib29sIEhhcmZCdXp6U2hhcGVyOjpzaGFwZShHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fdG90YWxXaWR0aCA9IDA7Ci0gICAgaWYg
KCFzaGFwZUhhcmZCdXp6UnVucyhnbHlwaEJ1ZmZlcikpCisgICAgaWYgKCFzaGFwZUhhcmZCdXp6
UnVucygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV90b3RhbFdpZHRoID0gcm91bmRm
KG1fdG90YWxXaWR0aCk7CisKKyAgICBpZiAoZ2x5cGhCdWZmZXIpCisgICAgICAgIGZpbGxHbHlw
aEJ1ZmZlcihnbHlwaEJ1ZmZlcik7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY3LDE0
ICsyNjgsMTIgQEAgYm9vbCBIYXJmQnV6elNoYXBlcjo6Y29sbGVjdEhhcmZCdXp6UnVucygpCiAg
ICAgcmV0dXJuICFtX2hhcmZidXp6UnVucy5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgSGFyZkJ1enpT
aGFwZXI6OnNoYXBlSGFyZkJ1enpSdW5zKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlcikKK2Jvb2wg
SGFyZkJ1enpTaGFwZXI6OnNoYXBlSGFyZkJ1enpSdW5zKCkKIHsKICAgICBIYXJmQnV6elNjb3Bl
ZFB0cjxoYl9idWZmZXJfdD4gaGFyZmJ1enpCdWZmZXIoaGJfYnVmZmVyX2NyZWF0ZSgpLCBoYl9i
dWZmZXJfZGVzdHJveSk7Ci0gICAgZmxvYXQgcGVuZGluZ0dseXBoQWR2YW5jZVggPSAwOwotICAg
IGZsb2F0IHBlbmRpbmdHbHlwaEFkdmFuY2VZID0gMDsKIAogICAgIGhiX2J1ZmZlcl9zZXRfdW5p
Y29kZV9mdW5jcyhoYXJmYnV6ekJ1ZmZlci5nZXQoKSwgaGJfaWN1X2dldF91bmljb2RlX2Z1bmNz
KCkpOwotICAgIGlmIChtX3J1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpCisgICAgaWYgKG1fcnVu
LnJ0bCgpIHx8IG1fcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkKICAgICAgICAgaGJfYnVmZmVy
X3NldF9kaXJlY3Rpb24oaGFyZmJ1enpCdWZmZXIuZ2V0KCksIG1fcnVuLnJ0bCgpID8gSEJfRElS
RUNUSU9OX1JUTCA6IEhCX0RJUkVDVElPTl9MVFIpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1faGFyZmJ1enpSdW5zLnNpemUoKTsgKytpKSB7CkBAIC0yOTgsMTYgKzI5NywxNyBA
QCBib29sIEhhcmZCdXp6U2hhcGVyOjpzaGFwZUhhcmZCdXp6UnVucyhHbHlwaEJ1ZmZlciogZ2x5
cGhCdWZmZXIpCiAgICAgICAgIGhiX3NoYXBlKGhhcmZidXp6Rm9udC5nZXQoKSwgaGFyZmJ1enpC
dWZmZXIuZ2V0KCksIG1fZmVhdHVyZXMuaXNFbXB0eSgpID8gMCA6IG1fZmVhdHVyZXMuZGF0YSgp
LCBtX2ZlYXR1cmVzLnNpemUoKSk7CiAKICAgICAgICAgY3VycmVudFJ1bi0+YXBwbHlTaGFwZVJl
c3VsdChoYXJmYnV6ekJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIHNldEdseXBoUG9zaXRpb25zRm9y
SGFyZkJ1enpSdW4oY3VycmVudFJ1biwgaSwgaGFyZmJ1enpCdWZmZXIuZ2V0KCksIGdseXBoQnVm
ZmVyLCBwZW5kaW5nR2x5cGhBZHZhbmNlWCwgcGVuZGluZ0dseXBoQWR2YW5jZVkpOworICAgICAg
ICBzZXRHbHlwaFBvc2l0aW9uc0ZvckhhcmZCdXp6UnVuKGN1cnJlbnRSdW4sIGhhcmZidXp6QnVm
ZmVyLmdldCgpKTsKIAogICAgICAgICBoYl9idWZmZXJfcmVzZXQoaGFyZmJ1enpCdWZmZXIuZ2V0
KCkpOwotICAgICAgICBpZiAobV9ydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgpKQorICAgICAgICBp
ZiAobV9ydW4ucnRsKCkgfHwgbV9ydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgpKQogICAgICAgICAg
ICAgaGJfYnVmZmVyX3NldF9kaXJlY3Rpb24oaGFyZmJ1enpCdWZmZXIuZ2V0KCksIG1fcnVuLnJ0
bCgpID8gSEJfRElSRUNUSU9OX1JUTCA6IEhCX0RJUkVDVElPTl9MVFIpOwogICAgIH0KKwogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIEhhcmZCdXp6U2hhcGVyOjpzZXRHbHlwaFBvc2l0aW9u
c0ZvckhhcmZCdXp6UnVuKEhhcmZCdXp6UnVuKiBjdXJyZW50UnVuLCB1bnNpZ25lZCBydW5JbmRl
eEluVmlzdWFsT3JkZXIsIGhiX2J1ZmZlcl90KiBoYXJmYnV6ekJ1ZmZlciwgR2x5cGhCdWZmZXIq
IGdseXBoQnVmZmVyLCBmbG9hdCYgcGVuZGluZ0dseXBoQWR2YW5jZVgsIGZsb2F0JiBwZW5kaW5n
R2x5cGhBZHZhbmNlWSkKK3ZvaWQgSGFyZkJ1enpTaGFwZXI6OnNldEdseXBoUG9zaXRpb25zRm9y
SGFyZkJ1enpSdW4oSGFyZkJ1enpSdW4qIGN1cnJlbnRSdW4sIGhiX2J1ZmZlcl90KiBoYXJmYnV6
ekJ1ZmZlcikKIHsKICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogY3VycmVudEZvbnREYXRhID0g
Y3VycmVudFJ1bi0+Zm9udERhdGEoKTsKICAgICBoYl9nbHlwaF9pbmZvX3QqIGdseXBoSW5mb3Mg
PSBoYl9idWZmZXJfZ2V0X2dseXBoX2luZm9zKGhhcmZidXp6QnVmZmVyLCAwKTsKQEAgLTMxNSw1
OCArMzE1LDkzIEBAIHZvaWQgSGFyZkJ1enpTaGFwZXI6OnNldEdseXBoUG9zaXRpb25zRm9ySGFy
ZkJ1enpSdW4oSGFyZkJ1enpSdW4qIGN1cnJlbnRSdW4sIHVuCiAKICAgICB1bnNpZ25lZCBudW1H
bHlwaHMgPSBjdXJyZW50UnVuLT5udW1HbHlwaHMoKTsKICAgICBmbG9hdCB0b3RhbEFkdmFuY2Ug
PSAwOwotICAgIGZsb2F0IG5leHRPZmZzZXRYID0gaGFyZmJ1enpQb3NpdGlvblRvRmxvYXQoZ2x5
cGhQb3NpdGlvbnNbMF0ueF9vZmZzZXQpOwotICAgIGZsb2F0IG5leHRPZmZzZXRZID0gLWhhcmZi
dXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25zWzBdLnlfb2Zmc2V0KTsKLSAgICAvLyBI
YXJmQnV6eiByZXR1cm5zIHRoZSBzaGFwaW5nIHJlc3VsdCBpbiB2aXN1YWwgb3JkZXIuIFdlIG5l
ZWQgbm90IHRvIGZsaXAgdGhlbSBmb3IgUlRMLgorCisgICAgLy8gSGFyZkJ1enogcmV0dXJucyB0
aGUgc2hhcGluZyByZXN1bHQgaW4gdmlzdWFsIG9yZGVyLiBXZSBuZWVkIG5vdCB0byBmbGlwIGZv
ciBSVEwuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewogICAg
ICAgICBib29sIHJ1bkVuZCA9IGkgKyAxID09IG51bUdseXBoczsKICAgICAgICAgdWludDE2X3Qg
Z2x5cGggPSBnbHlwaEluZm9zW2ldLmNvZGVwb2ludDsKLSAgICAgICAgZmxvYXQgb2Zmc2V0WCA9
IG5leHRPZmZzZXRYOwotICAgICAgICBmbG9hdCBvZmZzZXRZID0gbmV4dE9mZnNldFk7CisgICAg
ICAgIGZsb2F0IG9mZnNldFggPSBoYXJmYnV6elBvc2l0aW9uVG9GbG9hdChnbHlwaFBvc2l0aW9u
c1tpXS54X29mZnNldCk7CisgICAgICAgIGZsb2F0IG9mZnNldFkgPSAtaGFyZmJ1enpQb3NpdGlv
blRvRmxvYXQoZ2x5cGhQb3NpdGlvbnNbaV0ueV9vZmZzZXQpOwogICAgICAgICBmbG9hdCBhZHZh
bmNlID0gaGFyZmJ1enpQb3NpdGlvblRvRmxvYXQoZ2x5cGhQb3NpdGlvbnNbaV0ueF9hZHZhbmNl
KTsKLSAgICAgICAgbmV4dE9mZnNldFggPSBydW5FbmQgPyAwIDogaGFyZmJ1enpQb3NpdGlvblRv
RmxvYXQoZ2x5cGhQb3NpdGlvbnNbaSArIDFdLnhfb2Zmc2V0KTsKLSAgICAgICAgbmV4dE9mZnNl
dFkgPSBydW5FbmQgPyAwIDogLWhhcmZidXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25z
W2kgKyAxXS55X29mZnNldCk7CiAKICAgICAgICAgdW5zaWduZWQgY3VycmVudENoYXJhY3Rlcklu
ZGV4ID0gY3VycmVudFJ1bi0+c3RhcnRJbmRleCgpICsgZ2x5cGhJbmZvc1tpXS5jbHVzdGVyOwog
ICAgICAgICBib29sIGlzQ2x1c3RlckVuZCA9IHJ1bkVuZCB8fCBnbHlwaEluZm9zW2ldLmNsdXN0
ZXIgIT0gZ2x5cGhJbmZvc1tpICsgMV0uY2x1c3RlcjsKLSAgICAgICAgZmxvYXQgc3BhY2luZyA9
IGlzQ2x1c3RlckVuZCA/IG1fbGV0dGVyU3BhY2luZyA6IDA7CisgICAgICAgIGZsb2F0IHNwYWNp
bmcgPSAwOworICAgICAgICBpZiAoaXNDbHVzdGVyRW5kICYmICFGb250Ojp0cmVhdEFzWmVyb1dp
ZHRoU3BhY2UobV9ub3JtYWxpemVkQnVmZmVyW2N1cnJlbnRDaGFyYWN0ZXJJbmRleF0pKQorICAg
ICAgICAgICAgc3BhY2luZyArPSBtX2xldHRlclNwYWNpbmc7CiAKICAgICAgICAgaWYgKGlzQ2x1
c3RlckVuZCAmJiBpc1dvcmRFbmQoY3VycmVudENoYXJhY3RlckluZGV4KSkKICAgICAgICAgICAg
IHNwYWNpbmcgKz0gZGV0ZXJtaW5lV29yZEJyZWFrU3BhY2luZygpOwogCiAgICAgICAgIGlmIChj
dXJyZW50Rm9udERhdGEtPmlzWmVyb1dpZHRoU3BhY2VHbHlwaChnbHlwaCkpIHsKLSAgICAgICAg
ICAgIGN1cnJlbnRSdW4tPnNldEdseXBoQW5kQWR2YW5jZShpLCBnbHlwaCwgMCk7Ci0gICAgICAg
ICAgICBpZiAoZ2x5cGhCdWZmZXIgJiYgc2hvdWxkRHJhd0NoYXJhY3RlckF0KGN1cnJlbnRDaGFy
YWN0ZXJJbmRleCkpCi0gICAgICAgICAgICAgICAgZ2x5cGhCdWZmZXItPmFkZChnbHlwaCwgY3Vy
cmVudEZvbnREYXRhLCBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoMCwgMCkpOworICAgICAgICAg
ICAgY3VycmVudFJ1bi0+c2V0R2x5cGhBbmRQb3NpdGlvbnMoaSwgZ2x5cGgsIDAsIDAsIDApOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBhZHZhbmNlICs9IHNw
YWNpbmc7Ci0KLSAgICAgICAgY3VycmVudFJ1bi0+c2V0R2x5cGhBbmRBZHZhbmNlKGksIGdseXBo
LCBhZHZhbmNlKTsKLSAgICAgICAgaWYgKGdseXBoQnVmZmVyKSB7Ci0gICAgICAgICAgICBpZiAo
IWkgJiYgIXJ1bkluZGV4SW5WaXN1YWxPcmRlcikKLSAgICAgICAgICAgICAgICBtX3N0YXJ0T2Zm
c2V0LnNldChvZmZzZXRYLCBvZmZzZXRZKTsKLSAgICAgICAgICAgIGZsb2F0IGdseXBoQWR2YW5j
ZVggPSBhZHZhbmNlICsgbmV4dE9mZnNldFggLSBvZmZzZXRYOwotICAgICAgICAgICAgZmxvYXQg
Z2x5cGhBZHZhbmNlWSA9IG5leHRPZmZzZXRZIC0gb2Zmc2V0WTsKLSAgICAgICAgICAgIGlmIChz
aG91bGREcmF3Q2hhcmFjdGVyQXQoY3VycmVudENoYXJhY3RlckluZGV4KSkgewotICAgICAgICAg
ICAgICAgIGdseXBoQWR2YW5jZVggKz0gcGVuZGluZ0dseXBoQWR2YW5jZVg7Ci0gICAgICAgICAg
ICAgICAgZ2x5cGhBZHZhbmNlWSArPSBwZW5kaW5nR2x5cGhBZHZhbmNlWTsKLSAgICAgICAgICAg
ICAgICBwZW5kaW5nR2x5cGhBZHZhbmNlWCA9IDA7Ci0gICAgICAgICAgICAgICAgcGVuZGluZ0ds
eXBoQWR2YW5jZVkgPSAwOwotICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQoZ2x5cGgs
IGN1cnJlbnRGb250RGF0YSwgY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKGdseXBoQWR2YW5jZVgs
IGdseXBoQWR2YW5jZVkpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cGVuZGluZ0dseXBoQWR2YW5jZVggKz0gZ2x5cGhBZHZhbmNlWDsKLSAgICAgICAgICAgICAgICBw
ZW5kaW5nR2x5cGhBZHZhbmNlWSArPSBnbHlwaEFkdmFuY2VZOwotICAgICAgICAgICAgfQorICAg
ICAgICBpZiAobV9ydW4ucnRsKCkpIHsKKyAgICAgICAgICAgIC8vIEluIFJUTCwgc3BhY2luZyBz
aG91bGQgYmUgYWRkZWQgdG8gbGVmdCBzaWRlIG9mIGdseXBocy4KKyAgICAgICAgICAgIG9mZnNl
dFggKz0gc3BhY2luZzsKKyAgICAgICAgICAgIGlmICghaXNDbHVzdGVyRW5kKQorICAgICAgICAg
ICAgICAgIG9mZnNldFggKz0gbV9sZXR0ZXJTcGFjaW5nOwogICAgICAgICB9CiAKKyAgICAgICAg
Y3VycmVudFJ1bi0+c2V0R2x5cGhBbmRQb3NpdGlvbnMoaSwgZ2x5cGgsIGFkdmFuY2UsIG9mZnNl
dFgsIG9mZnNldFkpOworCiAgICAgICAgIHRvdGFsQWR2YW5jZSArPSBhZHZhbmNlOwogICAgIH0K
ICAgICBjdXJyZW50UnVuLT5zZXRXaWR0aCh0b3RhbEFkdmFuY2UgPiAwLjAgPyB0b3RhbEFkdmFu
Y2UgOiAwLjApOwogICAgIG1fdG90YWxXaWR0aCArPSBjdXJyZW50UnVuLT53aWR0aCgpOwogfQog
Cit2b2lkIEhhcmZCdXp6U2hhcGVyOjpmaWxsR2x5cGhCdWZmZXJGcm9tSGFyZkJ1enpSdW4oR2x5
cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBIYXJmQnV6elJ1biogY3VycmVudFJ1biwgRmxvYXRQb2lu
dCYgZmlyc3RPZmZzZXRPZk5leHRSdW4pCit7CisgICAgRmxvYXRQb2ludCogb2Zmc2V0cyA9IGN1
cnJlbnRSdW4tPm9mZnNldHMoKTsKKyAgICB1aW50MTZfdCogZ2x5cGhzID0gY3VycmVudFJ1bi0+
Z2x5cGhzKCk7CisgICAgZmxvYXQqIGFkdmFuY2VzID0gY3VycmVudFJ1bi0+YWR2YW5jZXMoKTsK
KyAgICB1bnNpZ25lZCBudW1HbHlwaHMgPSBjdXJyZW50UnVuLT5udW1HbHlwaHMoKTsKKyAgICB1
aW50MTZfdCogZ2x5cGhUb0NoYXJhY3RlckluZGV4ZXMgPSBjdXJyZW50UnVuLT5nbHlwaFRvQ2hh
cmFjdGVySW5kZXhlcygpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdseXBo
czsgKytpKSB7CisgICAgICAgIHVpbnQxNl90IGN1cnJlbnRDaGFyYWN0ZXJJbmRleCA9IGN1cnJl
bnRSdW4tPnN0YXJ0SW5kZXgoKSArIGdseXBoVG9DaGFyYWN0ZXJJbmRleGVzW2ldOworICAgICAg
ICBGbG9hdFBvaW50JiBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0c1tpXTsKKyAgICAgICAgRmxvYXRQ
b2ludCYgbmV4dE9mZnNldCA9IChpID09IG51bUdseXBocyAtIDEpID8gZmlyc3RPZmZzZXRPZk5l
eHRSdW4gOiBvZmZzZXRzW2kgKyAxXTsKKyAgICAgICAgZmxvYXQgZ2x5cGhBZHZhbmNlWCA9IGFk
dmFuY2VzW2ldICsgbmV4dE9mZnNldC54KCkgLSBjdXJyZW50T2Zmc2V0LngoKTsKKyAgICAgICAg
ZmxvYXQgZ2x5cGhBZHZhbmNlWSA9IG5leHRPZmZzZXQueSgpIC0gY3VycmVudE9mZnNldC55KCk7
CisgICAgICAgIGlmIChtX3J1bi5ydGwoKSkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFy
YWN0ZXJJbmRleCA+IG1fdG9JbmRleCkKKyAgICAgICAgICAgICAgICBtX3N0YXJ0T2Zmc2V0Lm1v
dmUoZ2x5cGhBZHZhbmNlWCwgZ2x5cGhBZHZhbmNlWSk7CisgICAgICAgICAgICBlbHNlIGlmIChj
dXJyZW50Q2hhcmFjdGVySW5kZXggPj0gbV9mcm9tSW5kZXgpCisgICAgICAgICAgICAgICAgZ2x5
cGhCdWZmZXItPmFkZChnbHlwaHNbaV0sIGN1cnJlbnRSdW4tPmZvbnREYXRhKCksIGNyZWF0ZUds
eXBoQnVmZmVyQWR2YW5jZShnbHlwaEFkdmFuY2VYLCBnbHlwaEFkdmFuY2VZKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY3VycmVudENoYXJhY3RlckluZGV4IDwgbV9mcm9t
SW5kZXgpCisgICAgICAgICAgICAgICAgbV9zdGFydE9mZnNldC5tb3ZlKGdseXBoQWR2YW5jZVgs
IGdseXBoQWR2YW5jZVkpOworICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJhY3Rlcklu
ZGV4IDwgbV90b0luZGV4KQorICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQoZ2x5cGhz
W2ldLCBjdXJyZW50UnVuLT5mb250RGF0YSgpLCBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoZ2x5
cGhBZHZhbmNlWCwgZ2x5cGhBZHZhbmNlWSkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEhhcmZCdXp6U2hhcGVyOjpmaWxsR2x5cGhCdWZmZXIoR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVy
KQoreworICAgIHVuc2lnbmVkIG51bVJ1bnMgPSBtX2hhcmZidXp6UnVucy5zaXplKCk7CisgICAg
aWYgKG1fcnVuLnJ0bCgpKSB7CisgICAgICAgIG1fc3RhcnRPZmZzZXQgPSBtX2hhcmZidXp6UnVu
cy5sYXN0KCktPm9mZnNldHMoKVswXTsKKyAgICAgICAgZm9yIChpbnQgcnVuSW5kZXggPSBudW1S
dW5zIC0gMTsgcnVuSW5kZXggPj0gMDsgLS1ydW5JbmRleCkgeworICAgICAgICAgICAgSGFyZkJ1
enpSdW4qIGN1cnJlbnRSdW4gPSBtX2hhcmZidXp6UnVuc1tydW5JbmRleF0uZ2V0KCk7CisgICAg
ICAgICAgICBGbG9hdFBvaW50IGZpcnN0T2Zmc2V0T2ZOZXh0UnVuID0gIXJ1bkluZGV4ID8gRmxv
YXRQb2ludCgpIDogbV9oYXJmYnV6elJ1bnNbcnVuSW5kZXggLSAxXS0+b2Zmc2V0cygpWzBdOwor
ICAgICAgICAgICAgZmlsbEdseXBoQnVmZmVyRnJvbUhhcmZCdXp6UnVuKGdseXBoQnVmZmVyLCBj
dXJyZW50UnVuLCBmaXJzdE9mZnNldE9mTmV4dFJ1bik7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBtX3N0YXJ0T2Zmc2V0ID0gbV9oYXJmYnV6elJ1bnMuZmlyc3QoKS0+b2Zmc2V0
cygpWzBdOworICAgICAgICBmb3IgKHVuc2lnbmVkIHJ1bkluZGV4ID0gMDsgcnVuSW5kZXggPCBu
dW1SdW5zOyArK3J1bkluZGV4KSB7CisgICAgICAgICAgICBIYXJmQnV6elJ1biogY3VycmVudFJ1
biA9IG1faGFyZmJ1enpSdW5zW3J1bkluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEZsb2F0UG9p
bnQgZmlyc3RPZmZzZXRPZk5leHRSdW4gPSBydW5JbmRleCA9PSBudW1SdW5zIC0gMSA/IEZsb2F0
UG9pbnQoKSA6IG1faGFyZmJ1enpSdW5zW3J1bkluZGV4ICsgMV0tPm9mZnNldHMoKVswXTsKKyAg
ICAgICAgICAgIGZpbGxHbHlwaEJ1ZmZlckZyb21IYXJmQnV6elJ1bihnbHlwaEJ1ZmZlciwgY3Vy
cmVudFJ1biwgZmlyc3RPZmZzZXRPZk5leHRSdW4pOworICAgICAgICB9CisgICAgfQorfQorCiBp
bnQgSGFyZkJ1enpTaGFwZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IHRhcmdldFgpCiB7CiAg
ICAgaW50IGNoYXJhY3RlcnNTb0ZhciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFwZXIuaAppbmRl
eCA4MjYwZmM5NmMzNDIyMzY3ODAzMjBmNWQwNTZjYTZkOGZjM2E3MDAyLi45NDZkMGMwODk2ZjA0
Njk3YmRjN2VlZmQxZGFkNTc2ZjQ4Mzg3YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmgK
QEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgYXBw
bHlTaGFwZVJlc3VsdChoYl9idWZmZXJfdCopOwotICAgICAgICB2b2lkIHNldEdseXBoQW5kQWR2
YW5jZSh1bnNpZ25lZCBpbmRleCwgdWludDE2X3QgZ2x5cGhJZCwgZmxvYXQgYWR2YW5jZSk7Cisg
ICAgICAgIHZvaWQgc2V0R2x5cGhBbmRQb3NpdGlvbnModW5zaWduZWQgaW5kZXgsIHVpbnQxNl90
IGdseXBoSWQsIGZsb2F0IGFkdmFuY2UsIGZsb2F0IG9mZnNldFgsIGZsb2F0IG9mZnNldFkpOwog
ICAgICAgICB2b2lkIHNldFdpZHRoKGZsb2F0IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQog
CiAgICAgICAgIGludCBjaGFyYWN0ZXJJbmRleEZvclhQb3NpdGlvbihmbG9hdCB0YXJnZXRYKTsK
QEAgLTc5LDYgKzc5LDggQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbnVtR2x5cGhzKCkg
Y29uc3QgeyByZXR1cm4gbV9udW1HbHlwaHM7IH0KICAgICAgICAgdWludDE2X3QqIGdseXBocygp
IHsgcmV0dXJuICZtX2dseXBoc1swXTsgfQogICAgICAgICBmbG9hdCogYWR2YW5jZXMoKSB7IHJl
dHVybiAmbV9hZHZhbmNlc1swXTsgfQorICAgICAgICBGbG9hdFBvaW50KiBvZmZzZXRzKCkgeyBy
ZXR1cm4gJm1fb2Zmc2V0c1swXTsgfQorICAgICAgICB1aW50MTZfdCogZ2x5cGhUb0NoYXJhY3Rl
ckluZGV4ZXMoKSB7IHJldHVybiAmbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhlc1swXTsgfQogICAg
ICAgICBmbG9hdCB3aWR0aCgpIHsgcmV0dXJuIG1fd2lkdGg7IH0KIAogICAgIHByaXZhdGU6CkBA
IC05MywxNiArOTUsMTggQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPHVpbnQxNl90LCAyNTY+
IG1fZ2x5cGhzOwogICAgICAgICBWZWN0b3I8ZmxvYXQsIDI1Nj4gbV9hZHZhbmNlczsKICAgICAg
ICAgVmVjdG9yPHVpbnQxNl90LCAyNTY+IG1fbG9nQ2x1c3RlcnM7Ci0gICAgICAgIFZlY3Rvcjx1
aW50MTZfdCwgMjU2PiBtX2dseXBoVG9DaGFyYWN0ZXJJbmRleDsKKyAgICAgICAgVmVjdG9yPHVp
bnQxNl90LCAyNTY+IG1fZ2x5cGhUb0NoYXJhY3RlckluZGV4ZXM7CisgICAgICAgIFZlY3RvcjxG
bG9hdFBvaW50LCAyNTY+IG1fb2Zmc2V0czsKICAgICAgICAgZmxvYXQgbV93aWR0aDsKICAgICB9
OwogCi0gICAgYm9vbCBzaG91bGREcmF3Q2hhcmFjdGVyQXQoaW50IGluZGV4KTsKICAgICB2b2lk
IHNldEZvbnRGZWF0dXJlcygpOwogCiAgICAgYm9vbCBjb2xsZWN0SGFyZkJ1enpSdW5zKCk7Ci0g
ICAgYm9vbCBzaGFwZUhhcmZCdXp6UnVucyhHbHlwaEJ1ZmZlciopOwotICAgIHZvaWQgc2V0R2x5
cGhQb3NpdGlvbnNGb3JIYXJmQnV6elJ1bihIYXJmQnV6elJ1biosIHVuc2lnbmVkIHJ1bkluZGV4
SW5WaXN1YWxPcmRlciwgaGJfYnVmZmVyX3QqLCBHbHlwaEJ1ZmZlciosIGZsb2F0JiBwZW5kaW5n
R2x5cGhBZHZhbmNlWCwgZmxvYXQmIHBlbmRpbmdHbHlwaEFkdmFuY2VZKTsKKyAgICBib29sIHNo
YXBlSGFyZkJ1enpSdW5zKCk7CisgICAgdm9pZCBmaWxsR2x5cGhCdWZmZXIoR2x5cGhCdWZmZXIq
KTsKKyAgICB2b2lkIGZpbGxHbHlwaEJ1ZmZlckZyb21IYXJmQnV6elJ1bihHbHlwaEJ1ZmZlcios
IEhhcmZCdXp6UnVuKiwgRmxvYXRQb2ludCYgZmlyc3RPZmZzZXRPZk5leHRSdW4pOworICAgIHZv
aWQgc2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJmQnV6elJ1bihIYXJmQnV6elJ1biosIGhiX2J1ZmZl
cl90Kik7CiAKICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNl
KGZsb2F0LCBmbG9hdCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164791</attachid>
            <date>2012-09-19 15:54:47 -0700</date>
            <delta_ts>2012-09-19 17:00:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97093-20120920075412.patch</filename>
            <type>text/plain</type>
            <size>15196</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTViNmJhYTc1NTAxYzgx
MTJkN2RhNDEwNmZjNjdkNTk4NTg5ZTFiMy4uZDQ1NTk3NTQ5OThkNTIyZTVhN2YzNDkxN2UzYmQx
YTI4NzM2Mzk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTE5ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IEltcHJvdmUgZ2x5cGggcG9zaXRpb25pbmcgb2YgSGFyZkJ1enpTaGFwZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MDkzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBGb3IgcHJvcGVyIHBvc2l0aW9uaW5nLCBI
YXJmQnV6elNoYXBlciByZXF1aXJlcyB0aGUgcG9zaXRpb25zKG9mZnNldHMgYW5kIGFkdmFuY2Up
CisgICAgICAgIG9mIHRoZSBwcmV2aW91cyBnbHlwaC4gVGhpcyBtZWFuIHdlIG5lZWQgdG8gc2hh
cGUgYWxsIEhhcmZCdXp6UnVucyBiZWZvcmUgZ2x5cGggcG9zaXRpb25pbmcuCisgICAgICAgIENv
bGxlY3QgYW5kIHNoYXBlIEhhcmZCdXp6UnVucywgdGhlbiBzZXQgcG9zaXRpb25zIG9mIGdseXBo
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRlc3RzIHRoYXQgdXNlcyBzcGFjaW5nIGZvciBj
b21wbGV4IHRleHQgKGUuZy4gZmFzdC90ZXh0L2F0c3VpLW5lZ2F0aXZlLXNwYWNpbmctZmVhdHVy
ZXMuaHRtbCkKKyAgICAgICAgc2hvdWxkIGNsb3NlIGluIHRoZSBleHBlY3RhdGlvbnMuIChub3Qg
dGhlIGlkZW50aWNhbCwgbWF5YmUgdGhlcmUgYXJlIHN1YnRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVu
CisgICAgICAgIGhhcmZidXp6IG9sZCBhbmQgaGFyZmJ1enogbmcpCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OmFwcGx5U2hhcGVSZXN1bHQpOiBB
bGxvY2F0ZSBtX29mZnNldHMuCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFy
ZkJ1enpSdW46OnNldEdseXBoQW5kUG9zaXRpb25zKTogUmVuYW1lZCBhbmQgc2V0IG9mZnNldCB0
b28uCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OmNoYXJh
Y3RlckluZGV4Rm9yWFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVy
OjpzaGFwZSk6IENhbGwgZmlsbEdseXBoQnVmZmVyKCkgaWYgd2UgbmVlZCB0byBmaWxsIGdseXBo
QnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OnNoYXBlSGFyZkJ1enpS
dW5zKTogUmVtb3ZlZCBnbHlwaCBwb3NpdGlvbmluZyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6
SGFyZkJ1enpTaGFwZXI6OnNldEdseXBoUG9zaXRpb25zRm9ySGFyZkJ1enpSdW4pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpmaWxsR2x5cGhCdWZmZXJGcm9tSGFy
ZkJ1enpSdW4pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SGFyZkJ1enpTaGFwZXI6OmZpbGxHbHlwaEJ1ZmZlcik6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyLmg6CisgICAgICAgIChIYXJm
QnV6elJ1bik6CisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46
Om9mZnNldHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjpIYXJm
QnV6elJ1bjo6Z2x5cGhUb0NoYXJhY3RlckluZGV4ZXMpOiBBZGRlZC4KKyAgICAgICAgKEhhcmZC
dXp6U2hhcGVyKToKKwogMjAxMi0wOS0xOSAgVGVycnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFN0b3JlIHRoZSBjb250ZW50cyBzY2Fs
ZSBmYWN0b3IgaW4gUGxhdGZvcm1Db250ZXh0U2tpYSBvbiBpbml0aWFsaXphdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1
enpTaGFwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
bmcvSGFyZkJ1enpTaGFwZXIuY3BwCmluZGV4IGE1Zjk3NmEzODQxOTNiODFlNTVkMjAyODY4ODFl
N2E4MDU2MjU3YzQuLjlkNjVmMGZkYTczN2RjNWJkZjQzOWMwNDkxYjkwMWZiOGFkMDMyNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hh
cmZCdXp6U2hhcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9uZy9IYXJmQnV6elNoYXBlci5jcHAKQEAgLTg1LDEyICs4NSwxMyBAQCB2b2lkIEhh
cmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6YXBwbHlTaGFwZVJlc3VsdChoYl9idWZmZXJfdCog
aGFyZmJ1enpCdWZmZXIpCiAgICAgbV9udW1HbHlwaHMgPSBoYl9idWZmZXJfZ2V0X2xlbmd0aCho
YXJmYnV6ekJ1ZmZlcik7CiAgICAgbV9nbHlwaHMucmVzaXplKG1fbnVtR2x5cGhzKTsKICAgICBt
X2FkdmFuY2VzLnJlc2l6ZShtX251bUdseXBocyk7Ci0gICAgbV9nbHlwaFRvQ2hhcmFjdGVySW5k
ZXgucmVzaXplKG1fbnVtR2x5cGhzKTsKKyAgICBtX2dseXBoVG9DaGFyYWN0ZXJJbmRleGVzLnJl
c2l6ZShtX251bUdseXBocyk7CiAgICAgbV9sb2dDbHVzdGVycy5yZXNpemUobV9udW1DaGFyYWN0
ZXJzKTsKKyAgICBtX29mZnNldHMucmVzaXplKG1fbnVtR2x5cGhzKTsKIAogICAgIGhiX2dseXBo
X2luZm9fdCogaW5mb3MgPSBoYl9idWZmZXJfZ2V0X2dseXBoX2luZm9zKGhhcmZidXp6QnVmZmVy
LCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1HbHlwaHM7ICsraSkKLSAg
ICAgICAgbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXhbaV0gPSBpbmZvc1tpXS5jbHVzdGVyOworICAg
ICAgICBtX2dseXBoVG9DaGFyYWN0ZXJJbmRleGVzW2ldID0gaW5mb3NbaV0uY2x1c3RlcjsKIAog
ICAgIC8vIEZpbGwgbG9naWNhbCBjbHVzdGVycwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKQEAg
LTExMSwxMCArMTEyLDExIEBAIHZvaWQgSGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjphcHBs
eVNoYXBlUmVzdWx0KGhiX2J1ZmZlcl90KiBoYXJmYnV6ekJ1ZmZlcikKICAgICB9CiB9CiAKLXZv
aWQgSGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6UnVuOjpzZXRHbHlwaEFuZEFkdmFuY2UodW5zaWdu
ZWQgaW5kZXgsIHVpbnQxNl90IGdseXBoSWQsIGZsb2F0IGFkdmFuY2UpCit2b2lkIEhhcmZCdXp6
U2hhcGVyOjpIYXJmQnV6elJ1bjo6c2V0R2x5cGhBbmRQb3NpdGlvbnModW5zaWduZWQgaW5kZXgs
IHVpbnQxNl90IGdseXBoSWQsIGZsb2F0IGFkdmFuY2UsIGZsb2F0IG9mZnNldFgsIGZsb2F0IG9m
ZnNldFkpCiB7CiAgICAgbV9nbHlwaHNbaW5kZXhdID0gZ2x5cGhJZDsKICAgICBtX2FkdmFuY2Vz
W2luZGV4XSA9IGFkdmFuY2U7CisgICAgbV9vZmZzZXRzW2luZGV4XSA9IEZsb2F0UG9pbnQob2Zm
c2V0WCwgb2Zmc2V0WSk7CiB9CiAKIGludCBIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpSdW46OmNo
YXJhY3RlckluZGV4Rm9yWFBvc2l0aW9uKGZsb2F0IHRhcmdldFgpCkBAIC0xMjYsNyArMTI4LDcg
QEAgaW50IEhhcmZCdXp6U2hhcGVyOjpIYXJmQnV6elJ1bjo6Y2hhcmFjdGVySW5kZXhGb3JYUG9z
aXRpb24oZmxvYXQgdGFyZ2V0WCkKICAgICAgICAgZmxvYXQgY3VycmVudEFkdmFuY2UgPSBtX2Fk
dmFuY2VzW2ldIC8gMi4wOwogICAgICAgICBmbG9hdCBuZXh0WCA9IGN1cnJlbnRYICsgcHJldkFk
dmFuY2UgKyBjdXJyZW50QWR2YW5jZTsKICAgICAgICAgaWYgKGN1cnJlbnRYIDw9IHRhcmdldFgg
JiYgdGFyZ2V0WCA8PSBuZXh0WCkKLSAgICAgICAgICAgIHJldHVybiBtX2dseXBoVG9DaGFyYWN0
ZXJJbmRleFtpXSArIChydGwoKSA/IDEgOiAwKTsKKyAgICAgICAgICAgIHJldHVybiBtX2dseXBo
VG9DaGFyYWN0ZXJJbmRleGVzW2ldICsgKHJ0bCgpID8gMSA6IDApOwogICAgICAgICBjdXJyZW50
WCA9IG5leHRYOwogICAgICAgICBwcmV2QWR2YW5jZSA9IGN1cnJlbnRBZHZhbmNlOwogICAgIH0K
QEAgLTE5MCwxMSArMTkyLDYgQEAgdm9pZCBIYXJmQnV6elNoYXBlcjo6c2V0RHJhd1JhbmdlKGlu
dCBmcm9tLCBpbnQgdG8pCiAgICAgbV90b0luZGV4ID0gdG87CiB9CiAKLWJvb2wgSGFyZkJ1enpT
aGFwZXI6OnNob3VsZERyYXdDaGFyYWN0ZXJBdChpbnQgaW5kZXgpCi17Ci0gICAgcmV0dXJuIG1f
ZnJvbUluZGV4IDw9IGluZGV4ICYmIGluZGV4IDwgbV90b0luZGV4OwotfQotCiB2b2lkIEhhcmZC
dXp6U2hhcGVyOjpzZXRGb250RmVhdHVyZXMoKQogewogICAgIEZvbnRGZWF0dXJlU2V0dGluZ3Mq
IHNldHRpbmdzID0gbV9mb250LT5mb250RGVzY3JpcHRpb24oKS5mZWF0dXJlU2V0dGluZ3MoKTsK
QEAgLTIxOCw5ICsyMTUsMTMgQEAgYm9vbCBIYXJmQnV6elNoYXBlcjo6c2hhcGUoR2x5cGhCdWZm
ZXIqIGdseXBoQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3RvdGFsV2lk
dGggPSAwOwotICAgIGlmICghc2hhcGVIYXJmQnV6elJ1bnMoZ2x5cGhCdWZmZXIpKQorICAgIGlm
ICghc2hhcGVIYXJmQnV6elJ1bnMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fdG90
YWxXaWR0aCA9IHJvdW5kZihtX3RvdGFsV2lkdGgpOworCisgICAgaWYgKGdseXBoQnVmZmVyKQor
ICAgICAgICBmaWxsR2x5cGhCdWZmZXIoZ2x5cGhCdWZmZXIpOworCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTMwNCwxNCArMzA1LDEyIEBAIGJvb2wgSGFyZkJ1enpTaGFwZXI6OmNvbGxlY3RI
YXJmQnV6elJ1bnMoKQogICAgIHJldHVybiAhbV9oYXJmYnV6elJ1bnMuaXNFbXB0eSgpOwogfQog
Ci1ib29sIEhhcmZCdXp6U2hhcGVyOjpzaGFwZUhhcmZCdXp6UnVucyhHbHlwaEJ1ZmZlciogZ2x5
cGhCdWZmZXIpCitib29sIEhhcmZCdXp6U2hhcGVyOjpzaGFwZUhhcmZCdXp6UnVucygpCiB7CiAg
ICAgSGFyZkJ1enpTY29wZWRQdHI8aGJfYnVmZmVyX3Q+IGhhcmZidXp6QnVmZmVyKGhiX2J1ZmZl
cl9jcmVhdGUoKSwgaGJfYnVmZmVyX2Rlc3Ryb3kpOwotICAgIGZsb2F0IHBlbmRpbmdHbHlwaEFk
dmFuY2VYID0gMDsKLSAgICBmbG9hdCBwZW5kaW5nR2x5cGhBZHZhbmNlWSA9IDA7CiAKICAgICBo
Yl9idWZmZXJfc2V0X3VuaWNvZGVfZnVuY3MoaGFyZmJ1enpCdWZmZXIuZ2V0KCksIGhiX2ljdV9n
ZXRfdW5pY29kZV9mdW5jcygpKTsKLSAgICBpZiAobV9ydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgp
KQorICAgIGlmIChtX3J1bi5ydGwoKSB8fCBtX3J1bi5kaXJlY3Rpb25hbE92ZXJyaWRlKCkpCiAg
ICAgICAgIGhiX2J1ZmZlcl9zZXRfZGlyZWN0aW9uKGhhcmZidXp6QnVmZmVyLmdldCgpLCBtX3J1
bi5ydGwoKSA/IEhCX0RJUkVDVElPTl9SVEwgOiBIQl9ESVJFQ1RJT05fTFRSKTsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hhcmZidXp6UnVucy5zaXplKCk7ICsraSkgewpAQCAt
MzM1LDE2ICszMzQsMTcgQEAgYm9vbCBIYXJmQnV6elNoYXBlcjo6c2hhcGVIYXJmQnV6elJ1bnMo
R2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQogICAgICAgICBoYl9zaGFwZShoYXJmYnV6ekZvbnQu
Z2V0KCksIGhhcmZidXp6QnVmZmVyLmdldCgpLCBtX2ZlYXR1cmVzLmlzRW1wdHkoKSA/IDAgOiBt
X2ZlYXR1cmVzLmRhdGEoKSwgbV9mZWF0dXJlcy5zaXplKCkpOwogCiAgICAgICAgIGN1cnJlbnRS
dW4tPmFwcGx5U2hhcGVSZXN1bHQoaGFyZmJ1enpCdWZmZXIuZ2V0KCkpOwotICAgICAgICBzZXRH
bHlwaFBvc2l0aW9uc0ZvckhhcmZCdXp6UnVuKGN1cnJlbnRSdW4sIGksIGhhcmZidXp6QnVmZmVy
LmdldCgpLCBnbHlwaEJ1ZmZlciwgcGVuZGluZ0dseXBoQWR2YW5jZVgsIHBlbmRpbmdHbHlwaEFk
dmFuY2VZKTsKKyAgICAgICAgc2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJmQnV6elJ1bihjdXJyZW50
UnVuLCBoYXJmYnV6ekJ1ZmZlci5nZXQoKSk7CiAKICAgICAgICAgaGJfYnVmZmVyX3Jlc2V0KGhh
cmZidXp6QnVmZmVyLmdldCgpKTsKLSAgICAgICAgaWYgKG1fcnVuLmRpcmVjdGlvbmFsT3ZlcnJp
ZGUoKSkKKyAgICAgICAgaWYgKG1fcnVuLnJ0bCgpIHx8IG1fcnVuLmRpcmVjdGlvbmFsT3ZlcnJp
ZGUoKSkKICAgICAgICAgICAgIGhiX2J1ZmZlcl9zZXRfZGlyZWN0aW9uKGhhcmZidXp6QnVmZmVy
LmdldCgpLCBtX3J1bi5ydGwoKSA/IEhCX0RJUkVDVElPTl9SVEwgOiBIQl9ESVJFQ1RJT05fTFRS
KTsKICAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBIYXJmQnV6elNoYXBlcjo6
c2V0R2x5cGhQb3NpdGlvbnNGb3JIYXJmQnV6elJ1bihIYXJmQnV6elJ1biogY3VycmVudFJ1biwg
dW5zaWduZWQgcnVuSW5kZXhJblZpc3VhbE9yZGVyLCBoYl9idWZmZXJfdCogaGFyZmJ1enpCdWZm
ZXIsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgZmxvYXQmIHBlbmRpbmdHbHlwaEFkdmFuY2VY
LCBmbG9hdCYgcGVuZGluZ0dseXBoQWR2YW5jZVkpCit2b2lkIEhhcmZCdXp6U2hhcGVyOjpzZXRH
bHlwaFBvc2l0aW9uc0ZvckhhcmZCdXp6UnVuKEhhcmZCdXp6UnVuKiBjdXJyZW50UnVuLCBoYl9i
dWZmZXJfdCogaGFyZmJ1enpCdWZmZXIpCiB7CiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGN1
cnJlbnRGb250RGF0YSA9IGN1cnJlbnRSdW4tPmZvbnREYXRhKCk7CiAgICAgaGJfZ2x5cGhfaW5m
b190KiBnbHlwaEluZm9zID0gaGJfYnVmZmVyX2dldF9nbHlwaF9pbmZvcyhoYXJmYnV6ekJ1ZmZl
ciwgMCk7CkBAIC0zNTIsNTggKzM1Miw5MyBAQCB2b2lkIEhhcmZCdXp6U2hhcGVyOjpzZXRHbHlw
aFBvc2l0aW9uc0ZvckhhcmZCdXp6UnVuKEhhcmZCdXp6UnVuKiBjdXJyZW50UnVuLCB1bgogCiAg
ICAgdW5zaWduZWQgbnVtR2x5cGhzID0gY3VycmVudFJ1bi0+bnVtR2x5cGhzKCk7CiAgICAgZmxv
YXQgdG90YWxBZHZhbmNlID0gMDsKLSAgICBmbG9hdCBuZXh0T2Zmc2V0WCA9IGhhcmZidXp6UG9z
aXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25zWzBdLnhfb2Zmc2V0KTsKLSAgICBmbG9hdCBuZXh0
T2Zmc2V0WSA9IC1oYXJmYnV6elBvc2l0aW9uVG9GbG9hdChnbHlwaFBvc2l0aW9uc1swXS55X29m
ZnNldCk7Ci0gICAgLy8gSGFyZkJ1enogcmV0dXJucyB0aGUgc2hhcGluZyByZXN1bHQgaW4gdmlz
dWFsIG9yZGVyLiBXZSBuZWVkIG5vdCB0byBmbGlwIHRoZW0gZm9yIFJUTC4KKworICAgIC8vIEhh
cmZCdXp6IHJldHVybnMgdGhlIHNoYXBpbmcgcmVzdWx0IGluIHZpc3VhbCBvcmRlci4gV2UgbmVl
ZCBub3QgdG8gZmxpcCBmb3IgUlRMLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtR2x5
cGhzOyArK2kpIHsKICAgICAgICAgYm9vbCBydW5FbmQgPSBpICsgMSA9PSBudW1HbHlwaHM7CiAg
ICAgICAgIHVpbnQxNl90IGdseXBoID0gZ2x5cGhJbmZvc1tpXS5jb2RlcG9pbnQ7Ci0gICAgICAg
IGZsb2F0IG9mZnNldFggPSBuZXh0T2Zmc2V0WDsKLSAgICAgICAgZmxvYXQgb2Zmc2V0WSA9IG5l
eHRPZmZzZXRZOworICAgICAgICBmbG9hdCBvZmZzZXRYID0gaGFyZmJ1enpQb3NpdGlvblRvRmxv
YXQoZ2x5cGhQb3NpdGlvbnNbaV0ueF9vZmZzZXQpOworICAgICAgICBmbG9hdCBvZmZzZXRZID0g
LWhhcmZidXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25zW2ldLnlfb2Zmc2V0KTsKICAg
ICAgICAgZmxvYXQgYWR2YW5jZSA9IGhhcmZidXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRp
b25zW2ldLnhfYWR2YW5jZSk7Ci0gICAgICAgIG5leHRPZmZzZXRYID0gcnVuRW5kID8gMCA6IGhh
cmZidXp6UG9zaXRpb25Ub0Zsb2F0KGdseXBoUG9zaXRpb25zW2kgKyAxXS54X29mZnNldCk7Ci0g
ICAgICAgIG5leHRPZmZzZXRZID0gcnVuRW5kID8gMCA6IC1oYXJmYnV6elBvc2l0aW9uVG9GbG9h
dChnbHlwaFBvc2l0aW9uc1tpICsgMV0ueV9vZmZzZXQpOwogCiAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRDaGFyYWN0ZXJJbmRleCA9IGN1cnJlbnRSdW4tPnN0YXJ0SW5kZXgoKSArIGdseXBoSW5m
b3NbaV0uY2x1c3RlcjsKICAgICAgICAgYm9vbCBpc0NsdXN0ZXJFbmQgPSBydW5FbmQgfHwgZ2x5
cGhJbmZvc1tpXS5jbHVzdGVyICE9IGdseXBoSW5mb3NbaSArIDFdLmNsdXN0ZXI7Ci0gICAgICAg
IGZsb2F0IHNwYWNpbmcgPSBpc0NsdXN0ZXJFbmQgPyBtX2xldHRlclNwYWNpbmcgOiAwOworICAg
ICAgICBmbG9hdCBzcGFjaW5nID0gMDsKKyAgICAgICAgaWYgKGlzQ2x1c3RlckVuZCAmJiAhRm9u
dDo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKG1fbm9ybWFsaXplZEJ1ZmZlcltjdXJyZW50Q2hhcmFj
dGVySW5kZXhdKSkKKyAgICAgICAgICAgIHNwYWNpbmcgKz0gbV9sZXR0ZXJTcGFjaW5nOwogCiAg
ICAgICAgIGlmIChpc0NsdXN0ZXJFbmQgJiYgaXNXb3JkRW5kKGN1cnJlbnRDaGFyYWN0ZXJJbmRl
eCkpCiAgICAgICAgICAgICBzcGFjaW5nICs9IGRldGVybWluZVdvcmRCcmVha1NwYWNpbmcoKTsK
IAogICAgICAgICBpZiAoY3VycmVudEZvbnREYXRhLT5pc1plcm9XaWR0aFNwYWNlR2x5cGgoZ2x5
cGgpKSB7Ci0gICAgICAgICAgICBjdXJyZW50UnVuLT5zZXRHbHlwaEFuZEFkdmFuY2UoaSwgZ2x5
cGgsIDApOwotICAgICAgICAgICAgaWYgKGdseXBoQnVmZmVyICYmIHNob3VsZERyYXdDaGFyYWN0
ZXJBdChjdXJyZW50Q2hhcmFjdGVySW5kZXgpKQotICAgICAgICAgICAgICAgIGdseXBoQnVmZmVy
LT5hZGQoZ2x5cGgsIGN1cnJlbnRGb250RGF0YSwgY3JlYXRlR2x5cGhCdWZmZXJBZHZhbmNlKDAs
IDApKTsKKyAgICAgICAgICAgIGN1cnJlbnRSdW4tPnNldEdseXBoQW5kUG9zaXRpb25zKGksIGds
eXBoLCAwLCAwLCAwKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgYWR2YW5jZSArPSBzcGFjaW5nOwotCi0gICAgICAgIGN1cnJlbnRSdW4tPnNldEdseXBoQW5k
QWR2YW5jZShpLCBnbHlwaCwgYWR2YW5jZSk7Ci0gICAgICAgIGlmIChnbHlwaEJ1ZmZlcikgewot
ICAgICAgICAgICAgaWYgKCFpICYmICFydW5JbmRleEluVmlzdWFsT3JkZXIpCi0gICAgICAgICAg
ICAgICAgbV9zdGFydE9mZnNldC5zZXQob2Zmc2V0WCwgb2Zmc2V0WSk7Ci0gICAgICAgICAgICBm
bG9hdCBnbHlwaEFkdmFuY2VYID0gYWR2YW5jZSArIG5leHRPZmZzZXRYIC0gb2Zmc2V0WDsKLSAg
ICAgICAgICAgIGZsb2F0IGdseXBoQWR2YW5jZVkgPSBuZXh0T2Zmc2V0WSAtIG9mZnNldFk7Ci0g
ICAgICAgICAgICBpZiAoc2hvdWxkRHJhd0NoYXJhY3RlckF0KGN1cnJlbnRDaGFyYWN0ZXJJbmRl
eCkpIHsKLSAgICAgICAgICAgICAgICBnbHlwaEFkdmFuY2VYICs9IHBlbmRpbmdHbHlwaEFkdmFu
Y2VYOwotICAgICAgICAgICAgICAgIGdseXBoQWR2YW5jZVkgKz0gcGVuZGluZ0dseXBoQWR2YW5j
ZVk7Ci0gICAgICAgICAgICAgICAgcGVuZGluZ0dseXBoQWR2YW5jZVggPSAwOwotICAgICAgICAg
ICAgICAgIHBlbmRpbmdHbHlwaEFkdmFuY2VZID0gMDsKLSAgICAgICAgICAgICAgICBnbHlwaEJ1
ZmZlci0+YWRkKGdseXBoLCBjdXJyZW50Rm9udERhdGEsIGNyZWF0ZUdseXBoQnVmZmVyQWR2YW5j
ZShnbHlwaEFkdmFuY2VYLCBnbHlwaEFkdmFuY2VZKSk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIHBlbmRpbmdHbHlwaEFkdmFuY2VYICs9IGdseXBoQWR2YW5jZVg7Ci0g
ICAgICAgICAgICAgICAgcGVuZGluZ0dseXBoQWR2YW5jZVkgKz0gZ2x5cGhBZHZhbmNlWTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgaWYgKG1fcnVuLnJ0bCgpKSB7CisgICAgICAgICAgICAvLyBJ
biBSVEwsIHNwYWNpbmcgc2hvdWxkIGJlIGFkZGVkIHRvIGxlZnQgc2lkZSBvZiBnbHlwaHMuCisg
ICAgICAgICAgICBvZmZzZXRYICs9IHNwYWNpbmc7CisgICAgICAgICAgICBpZiAoIWlzQ2x1c3Rl
ckVuZCkKKyAgICAgICAgICAgICAgICBvZmZzZXRYICs9IG1fbGV0dGVyU3BhY2luZzsKICAgICAg
ICAgfQogCisgICAgICAgIGN1cnJlbnRSdW4tPnNldEdseXBoQW5kUG9zaXRpb25zKGksIGdseXBo
LCBhZHZhbmNlLCBvZmZzZXRYLCBvZmZzZXRZKTsKKwogICAgICAgICB0b3RhbEFkdmFuY2UgKz0g
YWR2YW5jZTsKICAgICB9CiAgICAgY3VycmVudFJ1bi0+c2V0V2lkdGgodG90YWxBZHZhbmNlID4g
MC4wID8gdG90YWxBZHZhbmNlIDogMC4wKTsKICAgICBtX3RvdGFsV2lkdGggKz0gY3VycmVudFJ1
bi0+d2lkdGgoKTsKIH0KIAordm9pZCBIYXJmQnV6elNoYXBlcjo6ZmlsbEdseXBoQnVmZmVyRnJv
bUhhcmZCdXp6UnVuKEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgSGFyZkJ1enpSdW4qIGN1cnJl
bnRSdW4sIEZsb2F0UG9pbnQmIGZpcnN0T2Zmc2V0T2ZOZXh0UnVuKQoreworICAgIEZsb2F0UG9p
bnQqIG9mZnNldHMgPSBjdXJyZW50UnVuLT5vZmZzZXRzKCk7CisgICAgdWludDE2X3QqIGdseXBo
cyA9IGN1cnJlbnRSdW4tPmdseXBocygpOworICAgIGZsb2F0KiBhZHZhbmNlcyA9IGN1cnJlbnRS
dW4tPmFkdmFuY2VzKCk7CisgICAgdW5zaWduZWQgbnVtR2x5cGhzID0gY3VycmVudFJ1bi0+bnVt
R2x5cGhzKCk7CisgICAgdWludDE2X3QqIGdseXBoVG9DaGFyYWN0ZXJJbmRleGVzID0gY3VycmVu
dFJ1bi0+Z2x5cGhUb0NoYXJhY3RlckluZGV4ZXMoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgeworICAgICAgICB1aW50MTZfdCBjdXJyZW50Q2hhcmFj
dGVySW5kZXggPSBjdXJyZW50UnVuLT5zdGFydEluZGV4KCkgKyBnbHlwaFRvQ2hhcmFjdGVySW5k
ZXhlc1tpXTsKKyAgICAgICAgRmxvYXRQb2ludCYgY3VycmVudE9mZnNldCA9IG9mZnNldHNbaV07
CisgICAgICAgIEZsb2F0UG9pbnQmIG5leHRPZmZzZXQgPSAoaSA9PSBudW1HbHlwaHMgLSAxKSA/
IGZpcnN0T2Zmc2V0T2ZOZXh0UnVuIDogb2Zmc2V0c1tpICsgMV07CisgICAgICAgIGZsb2F0IGds
eXBoQWR2YW5jZVggPSBhZHZhbmNlc1tpXSArIG5leHRPZmZzZXQueCgpIC0gY3VycmVudE9mZnNl
dC54KCk7CisgICAgICAgIGZsb2F0IGdseXBoQWR2YW5jZVkgPSBuZXh0T2Zmc2V0LnkoKSAtIGN1
cnJlbnRPZmZzZXQueSgpOworICAgICAgICBpZiAobV9ydW4ucnRsKCkpIHsKKyAgICAgICAgICAg
IGlmIChjdXJyZW50Q2hhcmFjdGVySW5kZXggPiBtX3RvSW5kZXgpCisgICAgICAgICAgICAgICAg
bV9zdGFydE9mZnNldC5tb3ZlKGdseXBoQWR2YW5jZVgsIGdseXBoQWR2YW5jZVkpOworICAgICAg
ICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJhY3RlckluZGV4ID49IG1fZnJvbUluZGV4KQorICAg
ICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQoZ2x5cGhzW2ldLCBjdXJyZW50UnVuLT5mb250
RGF0YSgpLCBjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoZ2x5cGhBZHZhbmNlWCwgZ2x5cGhBZHZh
bmNlWSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0
ZXJJbmRleCA8IG1fZnJvbUluZGV4KQorICAgICAgICAgICAgICAgIG1fc3RhcnRPZmZzZXQubW92
ZShnbHlwaEFkdmFuY2VYLCBnbHlwaEFkdmFuY2VZKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGN1
cnJlbnRDaGFyYWN0ZXJJbmRleCA8IG1fdG9JbmRleCkKKyAgICAgICAgICAgICAgICBnbHlwaEJ1
ZmZlci0+YWRkKGdseXBoc1tpXSwgY3VycmVudFJ1bi0+Zm9udERhdGEoKSwgY3JlYXRlR2x5cGhC
dWZmZXJBZHZhbmNlKGdseXBoQWR2YW5jZVgsIGdseXBoQWR2YW5jZVkpKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBIYXJmQnV6elNoYXBlcjo6ZmlsbEdseXBoQnVmZmVyKEdseXBoQnVm
ZmVyKiBnbHlwaEJ1ZmZlcikKK3sKKyAgICB1bnNpZ25lZCBudW1SdW5zID0gbV9oYXJmYnV6elJ1
bnMuc2l6ZSgpOworICAgIGlmIChtX3J1bi5ydGwoKSkgeworICAgICAgICBtX3N0YXJ0T2Zmc2V0
ID0gbV9oYXJmYnV6elJ1bnMubGFzdCgpLT5vZmZzZXRzKClbMF07CisgICAgICAgIGZvciAoaW50
IHJ1bkluZGV4ID0gbnVtUnVucyAtIDE7IHJ1bkluZGV4ID49IDA7IC0tcnVuSW5kZXgpIHsKKyAg
ICAgICAgICAgIEhhcmZCdXp6UnVuKiBjdXJyZW50UnVuID0gbV9oYXJmYnV6elJ1bnNbcnVuSW5k
ZXhdLmdldCgpOworICAgICAgICAgICAgRmxvYXRQb2ludCBmaXJzdE9mZnNldE9mTmV4dFJ1biA9
ICFydW5JbmRleCA/IEZsb2F0UG9pbnQoKSA6IG1faGFyZmJ1enpSdW5zW3J1bkluZGV4IC0gMV0t
Pm9mZnNldHMoKVswXTsKKyAgICAgICAgICAgIGZpbGxHbHlwaEJ1ZmZlckZyb21IYXJmQnV6elJ1
bihnbHlwaEJ1ZmZlciwgY3VycmVudFJ1biwgZmlyc3RPZmZzZXRPZk5leHRSdW4pOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zdGFydE9mZnNldCA9IG1faGFyZmJ1enpSdW5z
LmZpcnN0KCktPm9mZnNldHMoKVswXTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBydW5JbmRleCA9
IDA7IHJ1bkluZGV4IDwgbnVtUnVuczsgKytydW5JbmRleCkgeworICAgICAgICAgICAgSGFyZkJ1
enpSdW4qIGN1cnJlbnRSdW4gPSBtX2hhcmZidXp6UnVuc1tydW5JbmRleF0uZ2V0KCk7CisgICAg
ICAgICAgICBGbG9hdFBvaW50IGZpcnN0T2Zmc2V0T2ZOZXh0UnVuID0gcnVuSW5kZXggPT0gbnVt
UnVucyAtIDEgPyBGbG9hdFBvaW50KCkgOiBtX2hhcmZidXp6UnVuc1tydW5JbmRleCArIDFdLT5v
ZmZzZXRzKClbMF07CisgICAgICAgICAgICBmaWxsR2x5cGhCdWZmZXJGcm9tSGFyZkJ1enpSdW4o
Z2x5cGhCdWZmZXIsIGN1cnJlbnRSdW4sIGZpcnN0T2Zmc2V0T2ZOZXh0UnVuKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwogaW50IEhhcmZCdXp6U2hhcGVyOjpvZmZzZXRGb3JQb3NpdGlvbihmbG9h
dCB0YXJnZXRYKQogewogICAgIGludCBjaGFyYWN0ZXJzU29GYXIgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L25nL0hhcmZC
dXp6U2hhcGVyLmgKaW5kZXggODI2MGZjOTZjMzQyMjM2NzgwMzIwZjVkMDU2Y2E2ZDhmYzNhNzAw
Mi4uOTQ2ZDBjMDg5NmYwNDY5N2JkYzdlZWZkMWRhZDU3NmY0ODM4N2E2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpTaGFw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9uZy9I
YXJmQnV6elNoYXBlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGFwcGx5U2hhcGVSZXN1bHQoaGJfYnVmZmVyX3QqKTsKLSAgICAgICAgdm9p
ZCBzZXRHbHlwaEFuZEFkdmFuY2UodW5zaWduZWQgaW5kZXgsIHVpbnQxNl90IGdseXBoSWQsIGZs
b2F0IGFkdmFuY2UpOworICAgICAgICB2b2lkIHNldEdseXBoQW5kUG9zaXRpb25zKHVuc2lnbmVk
IGluZGV4LCB1aW50MTZfdCBnbHlwaElkLCBmbG9hdCBhZHZhbmNlLCBmbG9hdCBvZmZzZXRYLCBm
bG9hdCBvZmZzZXRZKTsKICAgICAgICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBtX3dp
ZHRoID0gd2lkdGg7IH0KIAogICAgICAgICBpbnQgY2hhcmFjdGVySW5kZXhGb3JYUG9zaXRpb24o
ZmxvYXQgdGFyZ2V0WCk7CkBAIC03OSw2ICs3OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2ln
bmVkIG51bUdseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtR2x5cGhzOyB9CiAgICAgICAgIHVp
bnQxNl90KiBnbHlwaHMoKSB7IHJldHVybiAmbV9nbHlwaHNbMF07IH0KICAgICAgICAgZmxvYXQq
IGFkdmFuY2VzKCkgeyByZXR1cm4gJm1fYWR2YW5jZXNbMF07IH0KKyAgICAgICAgRmxvYXRQb2lu
dCogb2Zmc2V0cygpIHsgcmV0dXJuICZtX29mZnNldHNbMF07IH0KKyAgICAgICAgdWludDE2X3Qq
IGdseXBoVG9DaGFyYWN0ZXJJbmRleGVzKCkgeyByZXR1cm4gJm1fZ2x5cGhUb0NoYXJhY3Rlcklu
ZGV4ZXNbMF07IH0KICAgICAgICAgZmxvYXQgd2lkdGgoKSB7IHJldHVybiBtX3dpZHRoOyB9CiAK
ICAgICBwcml2YXRlOgpAQCAtOTMsMTYgKzk1LDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3Rv
cjx1aW50MTZfdCwgMjU2PiBtX2dseXBoczsKICAgICAgICAgVmVjdG9yPGZsb2F0LCAyNTY+IG1f
YWR2YW5jZXM7CiAgICAgICAgIFZlY3Rvcjx1aW50MTZfdCwgMjU2PiBtX2xvZ0NsdXN0ZXJzOwot
ICAgICAgICBWZWN0b3I8dWludDE2X3QsIDI1Nj4gbV9nbHlwaFRvQ2hhcmFjdGVySW5kZXg7Cisg
ICAgICAgIFZlY3Rvcjx1aW50MTZfdCwgMjU2PiBtX2dseXBoVG9DaGFyYWN0ZXJJbmRleGVzOwor
ICAgICAgICBWZWN0b3I8RmxvYXRQb2ludCwgMjU2PiBtX29mZnNldHM7CiAgICAgICAgIGZsb2F0
IG1fd2lkdGg7CiAgICAgfTsKIAotICAgIGJvb2wgc2hvdWxkRHJhd0NoYXJhY3RlckF0KGludCBp
bmRleCk7CiAgICAgdm9pZCBzZXRGb250RmVhdHVyZXMoKTsKIAogICAgIGJvb2wgY29sbGVjdEhh
cmZCdXp6UnVucygpOwotICAgIGJvb2wgc2hhcGVIYXJmQnV6elJ1bnMoR2x5cGhCdWZmZXIqKTsK
LSAgICB2b2lkIHNldEdseXBoUG9zaXRpb25zRm9ySGFyZkJ1enpSdW4oSGFyZkJ1enpSdW4qLCB1
bnNpZ25lZCBydW5JbmRleEluVmlzdWFsT3JkZXIsIGhiX2J1ZmZlcl90KiwgR2x5cGhCdWZmZXIq
LCBmbG9hdCYgcGVuZGluZ0dseXBoQWR2YW5jZVgsIGZsb2F0JiBwZW5kaW5nR2x5cGhBZHZhbmNl
WSk7CisgICAgYm9vbCBzaGFwZUhhcmZCdXp6UnVucygpOworICAgIHZvaWQgZmlsbEdseXBoQnVm
ZmVyKEdseXBoQnVmZmVyKik7CisgICAgdm9pZCBmaWxsR2x5cGhCdWZmZXJGcm9tSGFyZkJ1enpS
dW4oR2x5cGhCdWZmZXIqLCBIYXJmQnV6elJ1biosIEZsb2F0UG9pbnQmIGZpcnN0T2Zmc2V0T2ZO
ZXh0UnVuKTsKKyAgICB2b2lkIHNldEdseXBoUG9zaXRpb25zRm9ySGFyZkJ1enpSdW4oSGFyZkJ1
enpSdW4qLCBoYl9idWZmZXJfdCopOwogCiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGNyZWF0ZUds
eXBoQnVmZmVyQWR2YW5jZShmbG9hdCwgZmxvYXQpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>