<?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>107302</bug_id>
          
          <creation_ts>2013-01-18 10:31:21 -0800</creation_ts>
          <short_desc>Assert the connectedSubframeCount is consistent and fix over counting</short_desc>
          <delta_ts>2013-01-25 09:44:16 -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>New Bugs</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>
          <dependson>101821</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>ap</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>810797</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 10:31:21 -0800</bug_when>
    <thetext>Assert the connectedSubframeCount is consistent in debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810813</commentid>
    <comment_count>1</comment_count>
      <attachid>183501</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 10:41:30 -0800</bug_when>
    <thetext>Created attachment 183501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810819</commentid>
    <comment_count>2</comment_count>
      <attachid>183502</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 10:46:05 -0800</bug_when>
    <thetext>Created attachment 183502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810863</commentid>
    <comment_count>3</comment_count>
      <attachid>183502</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-18 11:16:26 -0800</bug_when>
    <thetext>Comment on attachment 183502
Patch

r=me, although I don&apos;t see a reason to not check consistency every time connectedSubframeCount() is called. That would catch errors much closer to when they occur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810872</commentid>
    <comment_count>4</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 11:23:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 183502 [details])
&gt; r=me, although I don&apos;t see a reason to not check consistency every time connectedSubframeCount() is called. That would catch errors much closer to when they occur.

Because we call that as we walk down the tree in collectFrameOwners() and during tree building, which would mean we&apos;d be walking the subtree, over and over again at every level of the tree making removeChild and parser tree building n^2 in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810897</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-18 11:41:37 -0800</bug_when>
    <thetext>Sure, but weren&apos;t we doing the same before bug 101821, without any practical consequences?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810915</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 12:12:18 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Sure, but weren&apos;t we doing the same before bug 101821, without any practical consequences?

We only walked the subtree once, it wasn&apos;t n^2, and never during tree building in parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811028</commentid>
    <comment_count>7</comment_count>
      <attachid>183502</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-18 14:12:10 -0800</bug_when>
    <thetext>Comment on attachment 183502
Patch

Attachment 183502 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15948532</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811135</commentid>
    <comment_count>8</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 16:18:22 -0800</bug_when>
    <thetext>This uncovered a case where we were counting incorrectly due to the way frame tree destruction happens, the incorrect counting is that we over count though, so there&apos;s no security problem, we&apos;ll just walk the tree looking for loaded frames that are no longer loaded.

I&apos;ll add a test and reupload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811231</commentid>
    <comment_count>9</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-18 18:20:30 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; This uncovered a case where we were counting incorrectly due to the way frame tree destruction happens, the incorrect counting is that we over count though, so there&apos;s no security problem, we&apos;ll just walk the tree looking for loaded frames that are no longer loaded.
&gt; 
&gt; I&apos;ll add a test and reupload.

Also note that fixing this means we remove a full document traversal during document destruction, so navigating child frames or unloading pages will be faster.

ex. window.location = &apos;...&apos;; or frame.contentWindow.location = &apos;...&apos;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813578</commentid>
    <comment_count>10</comment_count>
      <attachid>184085</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-22 17:08:15 -0800</bug_when>
    <thetext>Created attachment 184085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813592</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-22 17:18:39 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=184085) [details]
&gt; Patch

This is ready for review again. I found no cases of undercounting (security badness) but two cases of overcounting which this fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814777</commentid>
    <comment_count>12</comment_count>
      <attachid>184335</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-23 16:10:54 -0800</bug_when>
    <thetext>Created attachment 184335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814781</commentid>
    <comment_count>13</comment_count>
      <attachid>184336</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-23 16:15:01 -0800</bug_when>
    <thetext>Created attachment 184336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815868</commentid>
    <comment_count>14</comment_count>
      <attachid>184336</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-24 14:58:12 -0800</bug_when>
    <thetext>Comment on attachment 184336
Patch

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

I didn&apos;t review particularly deeply, but looks fine. It&apos;s a great feeling when adding a check uncovers an actual bug.

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.cpp:125
&gt; +unsigned assertConnectedSubframeCountIsConsistent(Node* node)

I don&apos;t get what it means when an &quot;assert&quot; function returns a value. I don&apos;t think that it should be named like this in this case.

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.cpp:145
&gt; +    // If we overcount it&apos;s safe, but not optimal. 

It would be helpful to describe in more detail here what is non-optimal. Will we leak? Or will we need to traverse frame tree an extra time somewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816373</commentid>
    <comment_count>15</comment_count>
      <attachid>184336</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-25 01:27:57 -0800</bug_when>
    <thetext>Comment on attachment 184336
Patch

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

&gt;&gt; Source/WebCore/dom/ContainerNodeAlgorithms.cpp:125
&gt;&gt; +unsigned assertConnectedSubframeCountIsConsistent(Node* node)
&gt; 
&gt; I don&apos;t get what it means when an &quot;assert&quot; function returns a value. I don&apos;t think that it should be named like this in this case.

I don&apos;t know what else to call it. It recursively asserts as it goes down the tree, so it needs the return value. In a release build all it would do is computeConnectedSubframeCount(), but I don&apos;t want anyone to use it outside of debug and calling computeConnectedSubframeCount() inside disconnect() and discarding the value seems pretty weird. Have an idea?

&gt;&gt; Source/WebCore/dom/ContainerNodeAlgorithms.cpp:145
&gt;&gt; +    // If we overcount it&apos;s safe, but not optimal. 
&gt; 
&gt; It would be helpful to describe in more detail here what is non-optimal. Will we leak? Or will we need to traverse frame tree an extra time somewhere?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816404</commentid>
    <comment_count>16</comment_count>
      <attachid>184707</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-25 02:16:30 -0800</bug_when>
    <thetext>Created attachment 184707
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816424</commentid>
    <comment_count>17</comment_count>
      <attachid>184707</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 02:49:43 -0800</bug_when>
    <thetext>Comment on attachment 184707
Patch for landing

Clearing flags on attachment: 184707

Committed r140807: &lt;http://trac.webkit.org/changeset/140807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816425</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 02:49:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816617</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-25 08:31:07 -0800</bug_when>
    <thetext>I think that &quot;recursiveCheck...&quot; would be better. Asserts never return values, a &quot;check&quot; function has more leeway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816665</commentid>
    <comment_count>20</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-25 09:44:16 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; I think that &quot;recursiveCheck...&quot; would be better. Asserts never return values, a &quot;check&quot; function has more leeway.

Okay, I&apos;ll rename in a followup patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183501</attachid>
            <date>2013-01-18 10:41:30 -0800</date>
            <delta_ts>2013-01-18 10:46:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107302-20130118103829.patch</filename>
            <type>text/plain</type>
            <size>3171</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU3ZDYzZGFkM2I1MGUz
NDQyMzUxZjhjZTljODRiZTAyYTM2MjY4Yi4uOWEwNmU1MzVkMzIyNjI5OGI0MWM0YmMxMzYwMmRi
NTM4ZDc3ODJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTE4ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFzc2VydCB0aGUg
Y29ubmVjdGVkU3ViZnJhbWVDb3VudCBpcyBjb25zaXN0ZW50IGluIGRlYnVnCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBkZWJ1ZyBhc3NlcnRp
b24gdGhhdCB3YWxrcyB0aGUgc3VidHJlZSBkdXJpbmcgZnJhbWUgZGlzY29ubmVjdGlvbgorICAg
ICAgICBhbmQgbWFudWFsbHkgY291bnRzIHRoZSBudW1iZXIgb2YgY29ubmVjdGVkIHN1YmZyYW1l
cyB0byBhc3NlcnQgdGhhdCB0aGUKKyAgICAgICAgdmFsdWUgZnJvbSBOb2RlOjpjb25uZWN0ZWRT
dWJmcmFtZUNvdW50KCkgaXMgdGhlIHNhbWUgYXMgaWYgd2UgdHJhdmVyc2VkCisgICAgICAgIHRo
cm91Z2ggdGhlIHRyZWUuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphc3NlcnRDb25uZWN0
ZWRTdWJGcmFtZUNvdW50SXNDb25zaXN0ZW50KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hp
bGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdCk6CisKIDIwMTMtMDEtMTggIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xsYWJsZSBo
ZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCAwODBiMGYzNTljYjU2Y2JmYzg5NjIxMjkw
NGE3NmI2ZmUwM2NhYTU4Li5jMThiNTNjMjMzMjViM2EzYTkxZjM0YzMyMmQ4NDI1MWQzODdlZDdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
QEAgLTEyMSw0ICsxMjEsMjcgQEAgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpUYXJnZXQ6
OmRpc2Nvbm5lY3QoKQogICAgIHRvRnJhbWVPd25lckVsZW1lbnQobV9vd25lci5nZXQoKSktPmRp
c2Nvbm5lY3RDb250ZW50RnJhbWUoKTsKIH0KIAorI2lmbmRlZiBOREVCVUcKK3Vuc2lnbmVkIGFz
c2VydENvbm5lY3RlZFN1YkZyYW1lQ291bnRJc0NvbnNpc3RlbnQoTm9kZSogbm9kZSkKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7
CisgICAgICAgIGlmIChub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgdG9GcmFtZU93bmVy
RWxlbWVudChub2RlKS0+Y29udGVudEZyYW1lKCkpCisgICAgICAgICAgICBjb3VudCsrOworCisg
ICAgICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHRvRWxlbWVudChub2RlKS0+c2hhZG93KCk7
CisgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvdy0+eW91bmdlc3RTaGFkb3dS
b290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAg
IGNvdW50ICs9IGFzc2VydENvbm5lY3RlZFN1YkZyYW1lQ291bnRJc0NvbnNpc3RlbnQocm9vdCk7
CisgICAgfQorCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGNvdW50ICs9IGFzc2Vy
dENvbm5lY3RlZFN1YkZyYW1lQ291bnRJc0NvbnNpc3RlbnQoY2hpbGQpOworCisgICAgQVNTRVJU
KG5vZGUtPmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSA9PSBjb3VudCk7CisKKyAgICByZXR1cm4g
Y291bnQ7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaAppbmRleCBhZWNmMTMwMzQwNmQ1NTdjNmQxMjY2NGMwYmNlMzNmNTVkZDQy
NTc2Li43NGMxM2E5NTkyOWYyZTc0ZDBmODhjNWQzYzcwZTI2MTY4NDQzMzIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMjk3LDYgKzI5Nywx
MCBAQCBwcml2YXRlOgogICAgIE5vZGUqIG1fcm9vdDsKIH07CiAKKyNpZm5kZWYgTkRFQlVHCit1
bnNpZ25lZCBhc3NlcnRDb25uZWN0ZWRTdWJGcmFtZUNvdW50SXNDb25zaXN0ZW50KE5vZGUqKTsK
KyNlbmRpZgorCiBpbmxpbmUgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpjb2xsZWN0RnJh
bWVPd25lcnMoTm9kZSogcm9vdCkKIHsKICAgICBpZiAoIXJvb3QtPmNvbm5lY3RlZFN1YmZyYW1l
Q291bnQoKSkKQEAgLTMzMCw2ICszMzQsMTAgQEAgaW5saW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nv
bm5lY3Rvcjo6ZGlzY29ubmVjdENvbGxlY3RlZEZyYW1lT3duZXJzKCkKIAogaW5saW5lIHZvaWQg
Q2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdChEaXNjb25uZWN0UG9saWN5IHBvbGlj
eSkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgYXNzZXJ0Q29ubmVjdGVkU3ViRnJhbWVDb3VudElz
Q29uc2lzdGVudChtX25vZGUpOworI2VuZGlmCisKICAgICBpZiAoIW1fcm9vdC0+Y29ubmVjdGVk
U3ViZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183502</attachid>
            <date>2013-01-18 10:46:05 -0800</date>
            <delta_ts>2013-01-22 17:08:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107302-20130118104304.patch</filename>
            <type>text/plain</type>
            <size>3171</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU3ZDYzZGFkM2I1MGUz
NDQyMzUxZjhjZTljODRiZTAyYTM2MjY4Yi4uMzdjOWFmZjM5ZTU1NjRhOGUyOTg0Yjc2ZDc3NDIz
ZWE4ODU1ZGY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTE4ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFzc2VydCB0aGUg
Y29ubmVjdGVkU3ViZnJhbWVDb3VudCBpcyBjb25zaXN0ZW50IGluIGRlYnVnCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBkZWJ1ZyBhc3NlcnRp
b24gdGhhdCB3YWxrcyB0aGUgc3VidHJlZSBkdXJpbmcgZnJhbWUgZGlzY29ubmVjdGlvbgorICAg
ICAgICBhbmQgbWFudWFsbHkgY291bnRzIHRoZSBudW1iZXIgb2YgY29ubmVjdGVkIHN1YmZyYW1l
cyB0byBhc3NlcnQgdGhhdCB0aGUKKyAgICAgICAgdmFsdWUgZnJvbSBOb2RlOjpjb25uZWN0ZWRT
dWJmcmFtZUNvdW50KCkgaXMgdGhlIHNhbWUgYXMgaWYgd2UgdHJhdmVyc2VkCisgICAgICAgIHRo
cm91Z2ggdGhlIHRyZWUuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphc3NlcnRDb25uZWN0
ZWRTdWJmcmFtZUNvdW50SXNDb25zaXN0ZW50KToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hp
bGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdCk6CisKIDIwMTMtMDEtMTggIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmNvcnJlY3Qgc2Nyb2xsYWJsZSBo
ZWlnaHQgZHVyaW5nIHNpbXBsaWZpZWQgbGF5b3V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCAwODBiMGYzNTljYjU2Y2JmYzg5NjIxMjkw
NGE3NmI2ZmUwM2NhYTU4Li4wOTAwOTJjMWJkNTFkZjBhYmMzOTkwZDUwYjAzZjI2ZGI4MTFjZTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
QEAgLTEyMSw0ICsxMjEsMjcgQEAgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpUYXJnZXQ6
OmRpc2Nvbm5lY3QoKQogICAgIHRvRnJhbWVPd25lckVsZW1lbnQobV9vd25lci5nZXQoKSktPmRp
c2Nvbm5lY3RDb250ZW50RnJhbWUoKTsKIH0KIAorI2lmbmRlZiBOREVCVUcKK3Vuc2lnbmVkIGFz
c2VydENvbm5lY3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQoTm9kZSogbm9kZSkKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7
CisgICAgICAgIGlmIChub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgdG9GcmFtZU93bmVy
RWxlbWVudChub2RlKS0+Y29udGVudEZyYW1lKCkpCisgICAgICAgICAgICBjb3VudCsrOworCisg
ICAgICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHRvRWxlbWVudChub2RlKS0+c2hhZG93KCk7
CisgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvdy0+eW91bmdlc3RTaGFkb3dS
b290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAg
IGNvdW50ICs9IGFzc2VydENvbm5lY3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQocm9vdCk7
CisgICAgfQorCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGNvdW50ICs9IGFzc2Vy
dENvbm5lY3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQoY2hpbGQpOworCisgICAgQVNTRVJU
KG5vZGUtPmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSA9PSBjb3VudCk7CisKKyAgICByZXR1cm4g
Y291bnQ7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaAppbmRleCBhZWNmMTMwMzQwNmQ1NTdjNmQxMjY2NGMwYmNlMzNmNTVkZDQy
NTc2Li4zZGVmOTkyM2Q3MzBlZTY3M2U1NjcyYmE4MTIzNTNiMDllZDFmYjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMjk3LDYgKzI5Nywx
MCBAQCBwcml2YXRlOgogICAgIE5vZGUqIG1fcm9vdDsKIH07CiAKKyNpZm5kZWYgTkRFQlVHCit1
bnNpZ25lZCBhc3NlcnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50SXNDb25zaXN0ZW50KE5vZGUqKTsK
KyNlbmRpZgorCiBpbmxpbmUgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpjb2xsZWN0RnJh
bWVPd25lcnMoTm9kZSogcm9vdCkKIHsKICAgICBpZiAoIXJvb3QtPmNvbm5lY3RlZFN1YmZyYW1l
Q291bnQoKSkKQEAgLTMzMCw2ICszMzQsMTAgQEAgaW5saW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nv
bm5lY3Rvcjo6ZGlzY29ubmVjdENvbGxlY3RlZEZyYW1lT3duZXJzKCkKIAogaW5saW5lIHZvaWQg
Q2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdChEaXNjb25uZWN0UG9saWN5IHBvbGlj
eSkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgYXNzZXJ0Q29ubmVjdGVkU3ViZnJhbWVDb3VudElz
Q29uc2lzdGVudChtX25vZGUpOworI2VuZGlmCisKICAgICBpZiAoIW1fcm9vdC0+Y29ubmVjdGVk
U3ViZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184085</attachid>
            <date>2013-01-22 17:08:15 -0800</date>
            <delta_ts>2013-01-23 16:10:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107302-20130122170509.patch</filename>
            <type>text/plain</type>
            <size>11013</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE2NWQ3ZDY3YjFmMzIz
ODVmODVmNjZjNzYzYTNjYzdjZDE2M2FhNS4uNDJmZjBmNDY2NjAxNDJkNDNhYmIxMjg0ZDc4ODY2
Njg0OGQ5MjZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAxLTIyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFzc2VydCB0aGUg
Y29ubmVjdGVkU3ViZnJhbWVDb3VudCBpcyBjb25zaXN0ZW50IGFuZCBmaXggb3ZlciBjb3VudGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzAy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEg
ZGVidWcgYXNzZXJ0aW9uIHRoYXQgd2Fsa3MgdGhlIHN1YnRyZWUgZHVyaW5nIGZyYW1lIGRpc2Nv
bm5lY3Rpb24KKyAgICAgICAgYW5kIG1hbnVhbGx5IGNvdW50cyB0aGUgbnVtYmVyIG9mIGNvbm5l
Y3RlZCBzdWJmcmFtZXMgdG8gYXNzZXJ0IHRoYXQgdGhlCisgICAgICAgIHZhbHVlIGZyb20gTm9k
ZTo6Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGlzIHRoZSBzYW1lIGFzIGlmIHdlIHRyYXZlcnNl
ZAorICAgICAgICB0aHJvdWdoIHRoZSB0cmVlLgorCisgICAgICAgIEluIGZpeGluZyB0aGUgcGxh
Y2VzIHdoZXJlIHRoaXMgYXNzZXJ0aW9uIGZhaWxlZCBJIG1hZGUgZG9jdW1lbnQgZGVzdHJ1Y3Rp
b24KKyAgICAgICAgZmFzdGVyIGJ5IG5vdCB3YWxraW5nIHRoZSBlbnRpcmUgZG9jdW1lbnQgbG9v
a2luZyBmb3IgZnJhbWVzIGlmIHRoZSBlbnRpcmUKKyAgICAgICAgZnJhbWUgdHJlZSBoYXMgYmVl
biBkZXN0cm95ZWQgYnkgd2F5IG9mIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigpLgorICAg
ICAgICBJIGhhZCBpbmFkdmVydGVudGx5IGludHJvZHVjZWQgdGhpcyBpbXByb3ZlbWVudCBpbiBy
MTMzOTMzLCBidXQgdGhlbiBJCisgICAgICAgIHJlZ3Jlc3NlZCBpdCBpbiByMTQwMDkwIHdoZW4g
d2Ugc3dpdGNoZWQgdG8gY291bnRpbmcgYmVjYXVzZSBJIGRpZG4ndAorICAgICAgICByZWFsaXpl
IHdlIGRlc3Ryb3kgdGhlIGZyYW1lIHRyZWUgc2VwYXJhdGUgb2YgZnJhbWUgZGlzY29ubmVjdGlv
biBvbgorICAgICAgICBkb2N1bWVudCB1bmxvYWQgc28gYWxsIGZyYW1lcyBjb3VsZCBoYXZlIGJl
ZW4gZGVzdHJveWVkIGJ1dCB0aGUgY291bnRzCisgICAgICAgIGxlZnQgb24gdGhlIGFuY2VzdG9y
cy4KKworICAgICAgICBJIGFsc28gZml4ZWQgYW5vdGhlciBvdmVyY291bnRpbmcgY2FzZSB3aGVy
ZSB0aGUgYWRvcHRpb24gYWdlbmN5IGFsZ29yaXRobQorICAgICAgICBtYXkgY2FsbCBDb250YWlu
ZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKCkgd2hpY2ggaW4gdHVybiBjYWxscworICAgICAg
ICBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpIGFuZCBjb3VsZCBoYXZlIGxlZnQg
YSBjb25uZWN0ZWQgc3ViZnJhbWUKKyAgICAgICAgY291bnQgb24gdGhlIG5vZGUgZXZlbiB0aG91
Z2ggYWxsIHRoZSBmcmFtZXMgaGFkIGJlZW4gcmVtb3ZlZC4KKworICAgICAgICBUaGlzIGFzc2Vy
dGlvbiBkaWQgbm90IHVuY292ZXIgYW55IGNhc2VzIG9mIHVuZGVyY291bnRpbmcgdGhlIG51bWVi
ZXIgb2YKKyAgICAgICAgZnJhbWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
aXMgaXMgY292ZXJlZCBieSBsb3RzIG9mIGV4aXN0aW5nIGZyYW1lIHRlc3RzLgorCisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cmVtb3ZlQWxsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBh
cnNlclJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNl
ckFwcGVuZENoaWxkKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0Q29ubmVjdGVkU3ViZnJhbWVDb3VudElzQ29uc2lz
dGVudCk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg6CisgICAgICAg
IChXZWJDb3JlOjpDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpkaXNjb25uZWN0KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp1cGRhdGVBbmNlc3RvckNv
bm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbik6CisgICAg
ICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNsZWFyQ29udGVu
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGlzY29u
bmVjdENvbnRlbnRGcmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisKIDIwMTMtMDEtMjIgIFRvbnkg
R2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggYXNzZXJ0aW9u
cyBpbiBtYWtlOEJpdEZyb20xNkJpdFNvdXJjZSgpIHdpdGggdGhyZWFkZWQgcGFyc2VyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZWY5MjFlYmY2YjQzZDU0YmJkNjhlYTlk
MTIxNmI0ZDRjNDI5OWRhNC4uYjYwY2Y5NGYzMTdlMWZhMDBhMWEwNzgwZmM2ZGJhYTQ1Nzc1Yjg2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtOTIsNiArOTIsMTAgQEAg
c3RhdGljIHZvaWQgY29sbGVjdENoaWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChOb2RlKiBu
b2RlLCBOb2RlVmVjdG9yJiBub2RlcywKIAogdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxD
aGlsZHJlbigpCiB7CisgICAgaWYgKGNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSkgeworICAgICAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3Rl
ZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCk7CisgICAgfQogICAgIHJlbW92ZUFsbENoaWxkcmVu
SW5Db250YWluZXI8Tm9kZSwgQ29udGFpbmVyTm9kZT4odGhpcyk7CiB9CiAKQEAgLTMzMSwxMCAr
MzM1LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogbmV4dENoaWwKIAogICAgIGluc2VydEJlZm9yZUNvbW1v
bihuZXh0Q2hpbGQsIG5ld0NoaWxkLmdldCgpKTsKIAotICAgIGlmICh1bnNpZ25lZCBjb3VudCA9
IG5ld0NoaWxkLT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkpIHsKLSAgICAgICAgZm9yIChOb2Rl
KiBub2RlID0gbmV3Q2hpbGQtPnBhcmVudE9ySG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
PnBhcmVudE9ySG9zdE5vZGUoKSkKLSAgICAgICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3Rl
ZFN1YmZyYW1lQ291bnQoY291bnQpOwotICAgIH0KKyAgICBuZXdDaGlsZC0+dXBkYXRlQW5jZXN0
b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCk7CiAKICAgICBjaGlsZHJlbkNo
YW5nZWQodHJ1ZSwgbmV3Q2hpbGQtPnByZXZpb3VzU2libGluZygpLCBuZXh0Q2hpbGQsIDEpOwog
ICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQo
KSk7CkBAIC01NTcsMTAgKzU1OCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3Zl
Q2hpbGQoTm9kZSogb2xkQ2hpbGQpCiAgICAgTm9kZSogcHJldiA9IG9sZENoaWxkLT5wcmV2aW91
c1NpYmxpbmcoKTsKICAgICBOb2RlKiBuZXh0ID0gb2xkQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAK
LSAgICBpZiAodW5zaWduZWQgY291bnQgPSBvbGRDaGlsZC0+Y29ubmVjdGVkU3ViZnJhbWVDb3Vu
dCgpKSB7Ci0gICAgICAgIGZvciAoTm9kZSogbm9kZSA9IG9sZENoaWxkLT5wYXJlbnRPckhvc3RO
b2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAg
ICBub2RlLT5kZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KGNvdW50KTsKLSAgICB9Cisg
ICAgb2xkQ2hpbGQtPnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJlbW92
YWwoKTsKIAogICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgb2xkQ2hpbGQpOwogCkBAIC03
MDYsMTAgKzcwNCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAgICAgICAgdHJlZVNjb3BlKCktPmFkb3B0SWZOZWVk
ZWQobmV3Q2hpbGQuZ2V0KCkpOwogICAgIH0KIAotICAgIGlmICh1bnNpZ25lZCBjb3VudCA9IG5l
d0NoaWxkLT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBu
b2RlID0gbmV3Q2hpbGQtPnBhcmVudE9ySG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKSkKLSAgICAgICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1
YmZyYW1lQ291bnQoY291bnQpOwotICAgIH0KKyAgICBuZXdDaGlsZC0+dXBkYXRlQW5jZXN0b3JD
b25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCk7CiAKICAgICBjaGlsZHJlbkNoYW5n
ZWQodHJ1ZSwgbGFzdCwgMCwgMSk7CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIodGhp
cykubm90aWZ5KG5ld0NoaWxkLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IDA4MGIwZjM1OWNiNTZjYmZjODk2MjEyOTA0YTc2
YjZmZTAzY2FhNTguLmE4MjRmMGI0MmY4NzFmMGRmMTkyMzcwZWViY2M3ZmFjMjQ2MTQzNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAt
MTIxLDQgKzEyMSwzMCBAQCB2b2lkIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6OlRhcmdldDo6ZGlz
Y29ubmVjdCgpCiAgICAgdG9GcmFtZU93bmVyRWxlbWVudChtX293bmVyLmdldCgpKS0+ZGlzY29u
bmVjdENvbnRlbnRGcmFtZSgpOwogfQogCisjaWZuZGVmIE5ERUJVRwordW5zaWduZWQgYXNzZXJ0
Q29ubmVjdGVkU3ViZnJhbWVDb3VudElzQ29uc2lzdGVudChOb2RlKiBub2RlKQoreworICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKKworICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKKyAg
ICAgICAgaWYgKG5vZGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSAmJiB0b0ZyYW1lT3duZXJFbGVt
ZW50KG5vZGUpLT5jb250ZW50RnJhbWUoKSkKKyAgICAgICAgICAgIGNvdW50Kys7CisKKyAgICAg
ICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHRvRWxlbWVudChub2RlKS0+c2hhZG93KCkp
IHsKKyAgICAgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvdy0+eW91bmdlc3RT
aGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAg
ICAgICAgICAgICBjb3VudCArPSBhc3NlcnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50SXNDb25zaXN0
ZW50KHJvb3QpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5v
ZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisg
ICAgICAgIGNvdW50ICs9IGFzc2VydENvbm5lY3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQo
Y2hpbGQpOworCisgICAgLy8gSWYgd2Ugb3ZlcmNvdW50IGl0J3Mgc2FmZSwgYnV0IG5vdCBvcHRp
bWFsLiBJZiB3ZSB1bmRlcmNvdW50IHRoZXJlJ3MgcG9zc2libHkgYSBzZWN1cml0eSBidWcuCisg
ICAgQVNTRVJUKG5vZGUtPmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSA+PSBjb3VudCk7CisgICAg
QVNTRVJUKG5vZGUtPmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSA9PSBjb3VudCk7CisKKyAgICBy
ZXR1cm4gY291bnQ7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCBhZWNmMTMwMzQwNmQ1NTdjNmQxMjY2NGMwYmNlMzNm
NTVkZDQyNTc2Li4yYzU0MDE1NGU4ZDc0ODk2YjYwYjQyYjhhNDI3NDAyOGMxMjRkOTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMjk3LDYg
KzI5NywxMCBAQCBwcml2YXRlOgogICAgIE5vZGUqIG1fcm9vdDsKIH07CiAKKyNpZm5kZWYgTkRF
QlVHCit1bnNpZ25lZCBhc3NlcnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50SXNDb25zaXN0ZW50KE5v
ZGUqKTsKKyNlbmRpZgorCiBpbmxpbmUgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpjb2xs
ZWN0RnJhbWVPd25lcnMoTm9kZSogcm9vdCkKIHsKICAgICBpZiAoIXJvb3QtPmNvbm5lY3RlZFN1
YmZyYW1lQ291bnQoKSkKQEAgLTMzMCw2ICszMzQsMTAgQEAgaW5saW5lIHZvaWQgQ2hpbGRGcmFt
ZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdENvbGxlY3RlZEZyYW1lT3duZXJzKCkKIAogaW5saW5l
IHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdChEaXNjb25uZWN0UG9saWN5
IHBvbGljeSkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgYXNzZXJ0Q29ubmVjdGVkU3ViZnJhbWVD
b3VudElzQ29uc2lzdGVudChtX3Jvb3QpOworI2VuZGlmCisKICAgICBpZiAoIW1fcm9vdC0+Y29u
bmVjdGVkU3ViZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA5YmQ4ZjJjMTdkYWU0M2FjZDlkMjdiYWQwYmM3ZTYwNjZiMzg5ZTg2Li5iZjFhNTE3N2Y3
NTExNDdmMjc3YzYxYzIxYjRjZmYyOThmZTQ4Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNjIw
LDYgKzI2MjAsMjggQEAgdm9pZCBOb2RlOjpkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50
KHVuc2lnbmVkIGFtb3VudCkKICAgICByYXJlRGF0YSgpLT5kZWNyZW1lbnRDb25uZWN0ZWRTdWJm
cmFtZUNvdW50KGFtb3VudCk7CiB9CiAKK3ZvaWQgTm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0
ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY291bnQg
PSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7CisKKyAgICBpZiAoIWNvdW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAgIG5vZGUtPmRlY3JlbWVu
dENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOworfQorCit2b2lkIE5vZGU6OnVwZGF0ZUFu
Y2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpIGNvbnN0Cit7CisgICAg
dW5zaWduZWQgY291bnQgPSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7CisKKyAgICBpZiAoIWNv
dW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPckhv
c3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAg
IG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOworfQorCiAjaWYg
RU5BQkxFKERJQUxPR19FTEVNRU5UKQogdm9pZCBOb2RlOjpzZXRJc0luVG9wTGF5ZXIoYm9vbCBp
c0luVG9wTGF5ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5ZGQ2MDE5NTdiYTE4YmQ0YTAxOTBjNTYx
YzcwMTAyZWExMWRlYjcwLi44YTdkNzNhMTEwZTMwNDk3ZmU1MWFkNDg3Mjc5NjBkZWRkM2YzN2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKQEAgLTY4MSw2ICs2ODEsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5jcmVtZW50Q29ubmVj
dGVkU3ViZnJhbWVDb3VudCh1bnNpZ25lZCBhbW91bnQgPSAxKTsKICAgICB2b2lkIGRlY3JlbWVu
dENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50ID0gMSk7CisgICAgdm9pZCB1
cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCkgY29uc3Q7Cisg
ICAgdm9pZCB1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNlcnRpb24o
KSBjb25zdDsKIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBib29sIGlzSW5Ub3BM
YXllcigpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNJblRvcExheWVyKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4IGZiNjk4ZWE3Mjhj
NTgyNzkxYWQwM2Q3MzU0MWViZmMxMTk2OTVmYmYuLjIxMThmYjZjOTUwMTkyNTliZDNjNTczNjM2
NDk5NTNjMzEwOTgwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVy
RWxlbWVudC5jcHAKQEAgLTYyLDYgKzYyLDE3IEBAIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50
OjpzZXRDb250ZW50RnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBub2RlLT5pbmNyZW1lbnRD
b25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7CiB9CiAKK3ZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50
OjpjbGVhckNvbnRlbnRGcmFtZSgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRGcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jb250ZW50RnJhbWUgPSAwOworCisgICAgZm9yIChDb250YWlu
ZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KSkKKyAgICAgICAgbm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCgpOworfQor
CiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpCiB7
CiAgICAgQVNTRVJUKGhhc0N1c3RvbUNhbGxiYWNrcygpKTsKQEAgLTcwLDkgKzgxLDYgQEAgdm9p
ZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmRpc2Nvbm5lY3RDb250ZW50RnJhbWUoKQogICAgIC8v
IHJlYWNoIHVwIGludG8gdGhpcyBkb2N1bWVudCBhbmQgdGhlbiBhdHRlbXB0IHRvIGxvb2sgYmFj
ayBkb3duLiBXZSBzaG91bGQKICAgICAvLyBzZWUgaWYgdGhpcyBiZWhhdmlvciBpcyByZWFsbHkg
bmVlZGVkIGFzIEdlY2tvIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IGNvbnRlbnRGcmFtZSgpKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogbm9kZSA9
IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAg
ICBub2RlLT5kZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7Ci0KICAgICAgICAgUmVm
UHRyPEZyYW1lPiBwcm90ZWN0KGZyYW1lKTsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5mcmFt
ZURldGFjaGVkKCk7CiAgICAgICAgIGZyYW1lLT5kaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCAxNTM4M2Fl
ZWUyZjhmNWUyZGM3ODdlOWZhYmQ4NDkwMzZlMzA4OTI5Li5kMDdlY2UwYjYxYjJmZTY4NDY2NjQx
YzAzYWQ3ZGRjYmUzMTAyYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBjb250
ZW50RG9jdW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7
Ci0gICAgdm9pZCBjbGVhckNvbnRlbnRGcmFtZSgpIHsgbV9jb250ZW50RnJhbWUgPSAwOyB9Cisg
ICAgdm9pZCBjbGVhckNvbnRlbnRGcmFtZSgpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0Q29udGVu
dEZyYW1lKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184335</attachid>
            <date>2013-01-23 16:10:54 -0800</date>
            <delta_ts>2013-01-23 16:14:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107302-20130123160747.patch</filename>
            <type>text/plain</type>
            <size>16282</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI2MWU1MTc5MzNjZTE0
MWQ1NTNkNWE4MTYxOWQ4OGFmZmYzYmFlNi4uMWRhNTkxODJmZjg2ZDVlMDMwNjQzODBmOGRlZDVl
NzZlMzg1NWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAxLTIzICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIEFzc2VydCB0aGUgY29u
bmVjdGVkU3ViZnJhbWVDb3VudCBpcyBjb25zaXN0ZW50IGFuZCBmaXggb3ZlciBjb3VudGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZGVi
dWcgYXNzZXJ0aW9uIHRoYXQgd2Fsa3MgdGhlIHN1YnRyZWUgZHVyaW5nIGZyYW1lIGRpc2Nvbm5l
Y3Rpb24KKyAgICAgICAgYW5kIG1hbnVhbGx5IGNvdW50cyB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rl
ZCBzdWJmcmFtZXMgdG8gYXNzZXJ0IHRoYXQgdGhlCisgICAgICAgIHZhbHVlIGZyb20gTm9kZTo6
Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGlzIHRoZSBzYW1lIGFzIGlmIHdlIHRyYXZlcnNlZAor
ICAgICAgICB0aHJvdWdoIHRoZSB0cmVlLgorCisgICAgICAgIEluIGZpeGluZyB0aGUgcGxhY2Vz
IHdoZXJlIHRoaXMgYXNzZXJ0aW9uIGZhaWxlZCBJIG1hZGUgZG9jdW1lbnQgZGVzdHJ1Y3Rpb24K
KyAgICAgICAgZmFzdGVyIGJ5IG5vdCB3YWxraW5nIHRoZSBlbnRpcmUgZG9jdW1lbnQgbG9va2lu
ZyBmb3IgZnJhbWVzIGlmIHRoZSBlbnRpcmUKKyAgICAgICAgZnJhbWUgdHJlZSBoYXMgYmVlbiBk
ZXN0cm95ZWQgYnkgd2F5IG9mIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigpLgorICAgICAg
ICBJIGhhZCBpbmFkdmVydGVudGx5IGludHJvZHVjZWQgdGhpcyBpbXByb3ZlbWVudCBpbiByMTMz
OTMzLCBidXQgdGhlbiBJCisgICAgICAgIHJlZ3Jlc3NlZCBpdCBpbiByMTQwMDkwIHdoZW4gd2Ug
c3dpdGNoZWQgdG8gY291bnRpbmcgYmVjYXVzZSBJIGRpZG4ndAorICAgICAgICByZWFsaXplIHdl
IGRlc3Ryb3kgdGhlIGZyYW1lIHRyZWUgc2VwYXJhdGUgb2YgZnJhbWUgZGlzY29ubmVjdGlvbiBv
bgorICAgICAgICBkb2N1bWVudCB1bmxvYWQgc28gYWxsIGZyYW1lcyBjb3VsZCBoYXZlIGJlZW4g
ZGVzdHJveWVkIGJ1dCB0aGUgY291bnRzCisgICAgICAgIGxlZnQgb24gdGhlIGFuY2VzdG9ycy4K
KworICAgICAgICBJIGFsc28gZml4ZWQgYW5vdGhlciBvdmVyY291bnRpbmcgY2FzZSB3aGVyZSB0
aGUgYWRvcHRpb24gYWdlbmN5IGFsZ29yaXRobQorICAgICAgICBtYXkgY2FsbCBDb250YWluZXJO
b2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKCkgd2hpY2ggaW4gdHVybiBjYWxscworICAgICAgICBD
b250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpIGFuZCBjb3VsZCBoYXZlIGxlZnQgYSBj
b25uZWN0ZWQgc3ViZnJhbWUKKyAgICAgICAgY291bnQgb24gdGhlIG5vZGUgZXZlbiB0aG91Z2gg
YWxsIHRoZSBmcmFtZXMgaGFkIGJlZW4gcmVtb3ZlZC4KKworICAgICAgICBUaGlzIGFzc2VydGlv
biBkaWQgbm90IHVuY292ZXIgYW55IGNhc2VzIG9mIHVuZGVyY291bnRpbmcgdGhlIG51bWJlciBv
ZgorICAgICAgICBmcmFtZXMuCisKKyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgcmFyZSBlZGdl
IGNhc2Ugd2hlcmUgcmVtb3ZlQ2hpbGQgb2YgYW4gaWZyYW1lIHRoYXQKKyAgICAgICAgd2FzIGFs
cmVhZHkgYmVpbmcgdW5sb2FkZWQgd291bGQgbm90IHVubG9hZCB0aGUgZnJhbWUgdW50aWwgdGhl
IHRvcCBsZXZlbAorICAgICAgICB1bmxvYWQgd2FzIGRvbmUsIGFuZCBhIHJlcGFyZW50aW5nIG9m
IHRoZSBpZnJhbWUgd291bGQgbm90IGNhdXNlIGl0IHRvIGxvYWQuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9mcmFtZXMvcmVwYXJlbnQtaW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC5odG1sCisKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmFzc2VydENvbm5l
Y3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aGlsZEZyYW1lRGlzY29ubmVjdG9yOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZy
YW1lQ291bnRGb3JSZW1vdmFsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9u
KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50OjpjbGVhckNvbnRlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGlzY29ubmVjdENvbnRlbnRG
cmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAg
KEhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisKIDIwMTMtMDEtMjMgIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NTUyBHcmlkIExheW91dF0gQWRk
IHN1cHBvcnQgZm9yIG1heC1jb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
aW5kZXggZWY5MjFlYmY2YjQzZDU0YmJkNjhlYTlkMTIxNmI0ZDRjNDI5OWRhNC4uYjYwY2Y5NGYz
MTdlMWZhMDBhMWEwNzgwZmM2ZGJhYTQ1Nzc1Yjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcApAQCAtOTIsNiArOTIsMTAgQEAgc3RhdGljIHZvaWQgY29sbGVjdENoaWxkcmVu
QW5kUmVtb3ZlRnJvbU9sZFBhcmVudChOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcywKIAog
dm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiB7CisgICAgaWYgKGNvbm5l
Y3RlZFN1YmZyYW1lQ291bnQoKSkgeworICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAg
IGNoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCk7
CisgICAgfQogICAgIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXI8Tm9kZSwgQ29udGFpbmVy
Tm9kZT4odGhpcyk7CiB9CiAKQEAgLTMzMSwxMCArMzM1LDcgQEAgdm9pZCBDb250YWluZXJOb2Rl
OjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogbmV4
dENoaWwKIAogICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0Q2hpbGQsIG5ld0NoaWxkLmdldCgp
KTsKIAotICAgIGlmICh1bnNpZ25lZCBjb3VudCA9IG5ld0NoaWxkLT5jb25uZWN0ZWRTdWJmcmFt
ZUNvdW50KCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gbmV3Q2hpbGQtPnBhcmVudE9y
SG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKLSAgICAg
ICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOwotICAg
IH0KKyAgICBuZXdDaGlsZC0+dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9y
SW5zZXJ0aW9uKCk7CiAKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbmV3Q2hpbGQtPnByZXZp
b3VzU2libGluZygpLCBuZXh0Q2hpbGQsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlm
aWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CkBAIC01NTcsMTAgKzU1OCw3IEBAIHZv
aWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQpCiAgICAg
Tm9kZSogcHJldiA9IG9sZENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICBOb2RlKiBuZXh0
ID0gb2xkQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAKLSAgICBpZiAodW5zaWduZWQgY291bnQgPSBv
bGRDaGlsZC0+Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpKSB7Ci0gICAgICAgIGZvciAoTm9kZSog
bm9kZSA9IG9sZENoaWxkLT5wYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5w
YXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAgICBub2RlLT5kZWNyZW1lbnRDb25uZWN0ZWRT
dWJmcmFtZUNvdW50KGNvdW50KTsKLSAgICB9CisgICAgb2xkQ2hpbGQtPnVwZGF0ZUFuY2VzdG9y
Q29ubmVjdGVkU3ViZnJhbWVDb3VudEZvclJlbW92YWwoKTsKIAogICAgIHJlbW92ZUJldHdlZW4o
cHJldiwgbmV4dCwgb2xkQ2hpbGQpOwogCkBAIC03MDYsMTAgKzcwNCw3IEBAIHZvaWQgQ29udGFp
bmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAg
ICAgICAgdHJlZVNjb3BlKCktPmFkb3B0SWZOZWVkZWQobmV3Q2hpbGQuZ2V0KCkpOwogICAgIH0K
IAotICAgIGlmICh1bnNpZ25lZCBjb3VudCA9IG5ld0NoaWxkLT5jb25uZWN0ZWRTdWJmcmFtZUNv
dW50KCkpIHsKLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gbmV3Q2hpbGQtPnBhcmVudE9ySG9z
dE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKLSAgICAgICAg
ICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOwotICAgIH0K
KyAgICBuZXdDaGlsZC0+dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5z
ZXJ0aW9uKCk7CiAKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbGFzdCwgMCwgMSk7CiAgICAg
Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIodGhpcykubm90aWZ5KG5ld0NoaWxkLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4
IDA4MGIwZjM1OWNiNTZjYmZjODk2MjEyOTA0YTc2YjZmZTAzY2FhNTguLjM4NDM0MmZmNzNjYzg4
MjlhNmFjMzY4M2EyNDdmODIxMmMyYTg0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAtMTIxLDQgKzEyMSwzMiBAQCB2b2lkIENoaWxk
RnJhbWVEaXNjb25uZWN0b3I6OlRhcmdldDo6ZGlzY29ubmVjdCgpCiAgICAgdG9GcmFtZU93bmVy
RWxlbWVudChtX293bmVyLmdldCgpKS0+ZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpOwogfQogCisj
aWZuZGVmIE5ERUJVRwordW5zaWduZWQgYXNzZXJ0Q29ubmVjdGVkU3ViZnJhbWVDb3VudElzQ29u
c2lzdGVudChOb2RlKiBub2RlKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKworICAgIGlm
IChub2RlLT5pc0VsZW1lbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzRnJhbWVPd25l
ckVsZW1lbnQoKSAmJiB0b0ZyYW1lT3duZXJFbGVtZW50KG5vZGUpLT5jb250ZW50RnJhbWUoKSkK
KyAgICAgICAgICAgIGNvdW50Kys7CisKKyAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRv
dyA9IHRvRWxlbWVudChub2RlKS0+c2hhZG93KCkpIHsKKyAgICAgICAgICAgIGZvciAoU2hhZG93
Um9vdCogcm9vdCA9IHNoYWRvdy0+eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSBy
b290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBjb3VudCArPSBhc3NlcnRD
b25uZWN0ZWRTdWJmcmFtZUNvdW50SXNDb25zaXN0ZW50KHJvb3QpOworICAgICAgICB9CisgICAg
fQorCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGNvdW50ICs9IGFzc2VydENvbm5l
Y3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQoY2hpbGQpOworCisgICAgLy8gSWYgd2UgdW5k
ZXJjb3VudCB0aGVyZSdzIHBvc3NpYmx5IGEgc2VjdXJpdHkgYnVnLgorICAgIEFTU0VSVChub2Rl
LT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgPj0gY291bnQpOworCisgICAgLy8gSWYgd2Ugb3Zl
cmNvdW50IGl0J3Mgc2FmZSwgYnV0IG5vdCBvcHRpbWFsLiAKKyAgICBBU1NFUlQobm9kZS0+Y29u
bmVjdGVkU3ViZnJhbWVDb3VudCgpID09IGNvdW50KTsKKworICAgIHJldHVybiBjb3VudDsKK30K
KyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5oCmluZGV4IGFlY2YxMzAzNDA2ZDU1N2M2ZDEyNjY0YzBiY2UzM2Y1NWRkNDI1NzYuLjJjNTQw
MTU0ZThkNzQ4OTZiNjBiNDJiOGE0Mjc0MDI4YzEyNGQ5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yOTcsNiArMjk3LDEwIEBAIHByaXZh
dGU6CiAgICAgTm9kZSogbV9yb290OwogfTsKIAorI2lmbmRlZiBOREVCVUcKK3Vuc2lnbmVkIGFz
c2VydENvbm5lY3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQoTm9kZSopOworI2VuZGlmCisK
IGlubGluZSB2b2lkIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6OmNvbGxlY3RGcmFtZU93bmVycyhO
b2RlKiByb290KQogewogICAgIGlmICghcm9vdC0+Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpKQpA
QCAtMzMwLDYgKzMzNCwxMCBAQCBpbmxpbmUgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpk
aXNjb25uZWN0Q29sbGVjdGVkRnJhbWVPd25lcnMoKQogCiBpbmxpbmUgdm9pZCBDaGlsZEZyYW1l
RGlzY29ubmVjdG9yOjpkaXNjb25uZWN0KERpc2Nvbm5lY3RQb2xpY3kgcG9saWN5KQogeworI2lm
bmRlZiBOREVCVUcKKyAgICBhc3NlcnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50SXNDb25zaXN0ZW50
KG1fcm9vdCk7CisjZW5kaWYKKwogICAgIGlmICghbV9yb290LT5jb25uZWN0ZWRTdWJmcmFtZUNv
dW50KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGVmMjY0ZDljNjgy
ZjljMDEwYThjMjA4ODJjYzQ1Y2FlYjNiMDlmYjcuLjY5OTkwMzRjMDBiNGNmMTIzYmQzZGU3ZDhi
YjA5OTE2MmRkZDI1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI2MjAsNiArMjYyMCwyOCBAQCB2
b2lkIE5vZGU6OmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50
KQogICAgIHJhcmVEYXRhKCktPmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoYW1vdW50
KTsKIH0KIAordm9pZCBOb2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRG
b3JSZW1vdmFsKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IGNvbm5lY3RlZFN1YmZy
YW1lQ291bnQoKTsKKworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZv
ciAoTm9kZSogbm9kZSA9IHBhcmVudE9ySG9zdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBh
cmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAgbm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJh
bWVDb3VudChjb3VudCk7Cit9CisKK3ZvaWQgTm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRT
dWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9
IGNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKTsKKworICAgIGlmICghY291bnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE9ySG9zdE5vZGUoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAgbm9kZS0+aW5jcmVtZW50
Q29ubmVjdGVkU3ViZnJhbWVDb3VudChjb3VudCk7Cit9CisKIHZvaWQgTm9kZTo6cmVnaXN0ZXJT
Y29wZWRIVE1MU3R5bGVDaGlsZCgpCiB7CiAgICAgc2V0SGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGQo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAppbmRleCAxNjFlNWVjNDMxZTI2YmM1Y2I5N2UwYTcwNjkxNTIzZDNm
YTMyNmUxLi45MmZiMmI5ODgxY2RmMmYyNWVmMzcyM2IzNDZkNWQ0MmJkYzhjNGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKQEAgLTY4MSw2ICs2ODEsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgY29ubmVjdGVk
U3ViZnJhbWVDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGVkU3ViZnJh
bWVDb3VudCh1bnNpZ25lZCBhbW91bnQgPSAxKTsKICAgICB2b2lkIGRlY3JlbWVudENvbm5lY3Rl
ZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50ID0gMSk7CisgICAgdm9pZCB1cGRhdGVBbmNl
c3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCkgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNlcnRpb24oKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBlbnVtIE5vZGVGbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKaW5kZXggZmI2OThlYTcyOGM1ODI3OTFhZDAzZDcz
NTQxZWJmYzExOTY5NWZiZi4uMjExOGZiNmM5NTAxOTI1OWJkM2M1NzM2MzY0OTk1M2MzMTA5ODA5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcApA
QCAtNjIsNiArNjIsMTcgQEAgdm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnNldENvbnRlbnRG
cmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZy
YW1lQ291bnQoKTsKIH0KIAordm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNsZWFyQ29udGVu
dEZyYW1lKCkKK3sKKyAgICBpZiAoIW1fY29udGVudEZyYW1lKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NvbnRlbnRGcmFtZSA9IDA7CisKKyAgICBmb3IgKENvbnRhaW5lck5vZGUqIG5vZGUg
PSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgICAgICBu
b2RlLT5kZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7Cit9CisKIHZvaWQgSFRNTEZy
YW1lT3duZXJFbGVtZW50OjpkaXNjb25uZWN0Q29udGVudEZyYW1lKCkKIHsKICAgICBBU1NFUlQo
aGFzQ3VzdG9tQ2FsbGJhY2tzKCkpOwpAQCAtNzAsOSArODEsNiBAQCB2b2lkIEhUTUxGcmFtZU93
bmVyRWxlbWVudDo6ZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpCiAgICAgLy8gcmVhY2ggdXAgaW50
byB0aGlzIGRvY3VtZW50IGFuZCB0aGVuIGF0dGVtcHQgdG8gbG9vayBiYWNrIGRvd24uIFdlIHNo
b3VsZAogICAgIC8vIHNlZSBpZiB0aGlzIGJlaGF2aW9yIGlzIHJlYWxseSBuZWVkZWQgYXMgR2Vj
a28gZG9lcyBub3QgYWxsb3cgdGhpcy4KICAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZy
YW1lKCkpIHsKLSAgICAgICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsg
bm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKLSAgICAgICAgICAgIG5vZGUtPmRlY3Jl
bWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoKTsKLQogICAgICAgICBSZWZQdHI8RnJhbWU+IHBy
b3RlY3QoZnJhbWUpOwogICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmZyYW1lRGV0YWNoZWQoKTsK
ICAgICAgICAgZnJhbWUtPmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCmluZGV4IDE1MzgzYWVlZTJmOGY1ZTJkYzc4
N2U5ZmFiZDg0OTAzNmUzMDg5MjkuLmQwN2VjZTBiNjFiMmZlNjg0NjY2NDFjMDNhZDdkZGNiZTMx
MDJiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCgp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50RnJhbWUoRnJhbWUqKTsKLSAgICB2b2lkIGNs
ZWFyQ29udGVudEZyYW1lKCkgeyBtX2NvbnRlbnRGcmFtZSA9IDA7IH0KKyAgICB2b2lkIGNsZWFy
Q29udGVudEZyYW1lKCk7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RDb250ZW50RnJhbWUoKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDg3MDFiMjZmZTM2YWVjMGYxMmE5NWZlN2ZhZGU5OTIxYmFkZWQ2YWEuLjZmOTFmNTc4
ZTE3OWM0NDBhMDQ5YzMwYzI4YWMzMWI5MTFkNjgwNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMy0wMS0yMyAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGdtYWlsLmNvbT4KKworICAgICAg
ICBBc3NlcnQgdGhlIGNvbm5lY3RlZFN1YmZyYW1lQ291bnQgaXMgY29uc2lzdGVudCBhbmQgZml4
IG92ZXIgY291bnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNzMwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIHRlc3QgdGhhdCByZW1vdmluZyBhbiBpZnJhbWUgaW4gdGhlIG1pZGRsZSBv
ZiB1bmxvYWQgY2F1c2VzIHRoZQorICAgICAgICBjb250ZW50RG9jdW1lbnQgdG8gYmVjb21lIGlt
bWVkaWF0ZWx5IGluYWNjZXNzaWJsZS4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL3JlcGFyZW50
LWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50Lmh0bWw6IEFk
ZGVkLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVtb3ZlY2hpbGQtaW4tdW5sb2FkLWNvbnRl
bnRkb2N1bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jl
bW92ZWNoaWxkLWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mcmFtZXMvcmVwYXJlbnQtaW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3JlcGFyZW50LWluLXVubG9hZC1j
b250ZW50ZG9jdW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMjMgIEVyaWsgQXJ2aWRzc29u
ICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXQgVGVzdCBwbGF0Zm9ybS9jaHJv
bWl1bS13aW4vZmFzdC9ldmVudHMvcGFuU2Nyb2xsLXBhbkljb24uaHRtbCBpcyBmYWlsaW5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZW1vdmVjaGlsZC1pbi11bmxvYWQt
Y29udGVudGRvY3VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
bW92ZWNoaWxkLWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEwZjk3NDRkZjMyM2QzZDRiZmRiYzM0ZjU5MjI1NDg1Mzk5NTBkMTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZW1vdmVjaGlsZC1pbi11bmxvYWQtY29u
dGVudGRvY3VtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1MgZnJhbWUuY29u
dGVudERvY3VtZW50IGlzIG51bGwKK1BBU1MgZnJhbWUuY29udGVudERvY3VtZW50IGlzIG5vdCBu
dWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVtb3ZlY2hpbGQtaW4tdW5sb2Fk
LWNvbnRlbnRkb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVtb3ZlY2hp
bGQtaW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMzY5YzVkMzM4
ZTQ4MTk4Y2E3MTIxOTJjMjVlMDI1ZDVkMzczODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZW1vdmVjaGlsZC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50Lmh0
bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJhIj4KKyAg
ICA8ZGl2IGlkPSJiIj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjIj4KKzwvZGl2
PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBm
cmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwordmFyIGEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYScpOwordmFyIGIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YicpOwordmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycpOworCitvbmxvYWQgPSBm
dW5jdGlvbigpIHsKKyAgICBiLmFwcGVuZENoaWxkKGZyYW1lKTsKKworICAgIGZyYW1lLm9ubG9h
ZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5pbm5l
ckhUTUwgPSAnU2hvdWxkIGJlIHZpc2libGUuJzsKKyAgICB9OworCisgICAgZnJhbWUuY29udGVu
dFdpbmRvdy5vbnVubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBiLnBhcmVudE5vZGUucmVt
b3ZlQ2hpbGQoYik7CisgICAgICAgIHNob3VsZEJlTnVsbCgnZnJhbWUuY29udGVudERvY3VtZW50
Jyk7CisgICAgICAgIGMuYXBwZW5kQ2hpbGQoYik7CisgICAgICAgIHNob3VsZE5vdEJlKCdmcmFt
ZS5jb250ZW50RG9jdW1lbnQnLCAnbnVsbCcpOworICAgICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNl
ZCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICB9OworCisgICAgYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGEpOworfTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVwYXJlbnQtaW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9yZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMDM0OTI2ZTFjNWZkM2FmYWE0YjZhY2ViNWYyYTVjOThmMmU2
YTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVwYXJlbnQt
aW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAor
UEFTUyBmcmFtZS5jb250ZW50RG9jdW1lbnQgaXMgbnVsbAorUEFTUyBmcmFtZS5jb250ZW50RG9j
dW1lbnQgaXMgbm90IG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK1Nob3VsZCBiZSB2aXNpYmxlLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVwYXJlbnQtaW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVwYXJlbnQtaW4tdW5sb2FkLWNvbnRlbnRk
b2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NGZjNDhiYzkxMGI1M2U2M2JjMDZjMTlkMWU1YTRj
ZmE5NTljODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXBh
cmVudC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50Lmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJhIj4KKyAgICA8ZGl2IGlkPSJiIj4KKyAgICA8L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjIj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKK30KKwordmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7
Cit2YXIgYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhJyk7Cit2YXIgYiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdiJyk7Cit2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
Jyk7CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGIuYXBwZW5kQ2hpbGQoZnJhbWUpOwor
CisgICAgZnJhbWUub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGZyYW1lLmNvbnRlbnRE
b2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICdTaG91bGQgYmUgdmlzaWJsZS4nOworICAgIH07CisK
KyAgICBmcmFtZS5jb250ZW50V2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKTsKKyAgICAgICAgc2hvdWxkQmVOdWxsKCdmcmFt
ZS5jb250ZW50RG9jdW1lbnQnKTsKKyAgICAgICAgYy5hcHBlbmRDaGlsZChiKTsKKyAgICAgICAg
c2hvdWxkTm90QmUoJ2ZyYW1lLmNvbnRlbnREb2N1bWVudCcsICdudWxsJyk7CisgICAgICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH07CisKKyAgICBhLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoYSk7Cit9OworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184336</attachid>
            <date>2013-01-23 16:15:01 -0800</date>
            <delta_ts>2013-01-25 02:16:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107302-20130123161154.patch</filename>
            <type>text/plain</type>
            <size>14216</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNmN2ZkMTIwOWZhMWU0
YWQ2ZWIzMzM1YWZjMWYwYmQ3NzdmN2MxOS4uNDMxYjZmYWQ5ZDliMWQ3M2I1YmVlYzkyYTZkOGZl
MTJlMmRjY2MxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAxLTIzICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIEFzc2VydCB0aGUgY29u
bmVjdGVkU3ViZnJhbWVDb3VudCBpcyBjb25zaXN0ZW50IGFuZCBmaXggb3ZlciBjb3VudGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZGVi
dWcgYXNzZXJ0aW9uIHRoYXQgd2Fsa3MgdGhlIHN1YnRyZWUgZHVyaW5nIGZyYW1lIGRpc2Nvbm5l
Y3Rpb24KKyAgICAgICAgYW5kIG1hbnVhbGx5IGNvdW50cyB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rl
ZCBzdWJmcmFtZXMgdG8gYXNzZXJ0IHRoYXQgdGhlCisgICAgICAgIHZhbHVlIGZyb20gTm9kZTo6
Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpIGlzIHRoZSBzYW1lIGFzIGlmIHdlIHRyYXZlcnNlZAor
ICAgICAgICB0aHJvdWdoIHRoZSB0cmVlLgorCisgICAgICAgIEluIGZpeGluZyB0aGUgcGxhY2Vz
IHdoZXJlIHRoaXMgYXNzZXJ0aW9uIGZhaWxlZCBJIG1hZGUgZG9jdW1lbnQgZGVzdHJ1Y3Rpb24K
KyAgICAgICAgZmFzdGVyIGJ5IG5vdCB3YWxraW5nIHRoZSBlbnRpcmUgZG9jdW1lbnQgbG9va2lu
ZyBmb3IgZnJhbWVzIGlmIHRoZSBlbnRpcmUKKyAgICAgICAgZnJhbWUgdHJlZSBoYXMgYmVlbiBk
ZXN0cm95ZWQgYnkgd2F5IG9mIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigpLgorICAgICAg
ICBJIGhhZCBpbmFkdmVydGVudGx5IGludHJvZHVjZWQgdGhpcyBpbXByb3ZlbWVudCBpbiByMTMz
OTMzLCBidXQgdGhlbiBJCisgICAgICAgIHJlZ3Jlc3NlZCBpdCBpbiByMTQwMDkwIHdoZW4gd2Ug
c3dpdGNoZWQgdG8gY291bnRpbmcgYmVjYXVzZSBJIGRpZG4ndAorICAgICAgICByZWFsaXplIHdl
IGRlc3Ryb3kgdGhlIGZyYW1lIHRyZWUgc2VwYXJhdGUgb2YgZnJhbWUgZGlzY29ubmVjdGlvbiBv
bgorICAgICAgICBkb2N1bWVudCB1bmxvYWQgc28gYWxsIGZyYW1lcyBjb3VsZCBoYXZlIGJlZW4g
ZGVzdHJveWVkIGJ1dCB0aGUgY291bnRzCisgICAgICAgIGxlZnQgb24gdGhlIGFuY2VzdG9ycy4K
KworICAgICAgICBJIGFsc28gZml4ZWQgYW5vdGhlciBvdmVyY291bnRpbmcgY2FzZSB3aGVyZSB0
aGUgYWRvcHRpb24gYWdlbmN5IGFsZ29yaXRobQorICAgICAgICBtYXkgY2FsbCBDb250YWluZXJO
b2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKCkgd2hpY2ggaW4gdHVybiBjYWxscworICAgICAgICBD
b250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpIGFuZCBjb3VsZCBoYXZlIGxlZnQgYSBj
b25uZWN0ZWQgc3ViZnJhbWUKKyAgICAgICAgY291bnQgb24gdGhlIG5vZGUgZXZlbiB0aG91Z2gg
YWxsIHRoZSBmcmFtZXMgaGFkIGJlZW4gcmVtb3ZlZC4KKworICAgICAgICBUaGlzIGFzc2VydGlv
biBkaWQgbm90IHVuY292ZXIgYW55IGNhc2VzIG9mIHVuZGVyY291bnRpbmcgdGhlIG51bWJlciBv
ZgorICAgICAgICBmcmFtZXMuCisKKyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgcmFyZSBlZGdl
IGNhc2Ugd2hlcmUgcmVtb3ZlQ2hpbGQgb2YgYW4gaWZyYW1lIHRoYXQKKyAgICAgICAgd2FzIGFs
cmVhZHkgYmVpbmcgdW5sb2FkZWQgd291bGQgbm90IHVubG9hZCB0aGUgZnJhbWUgdW50aWwgdGhl
IHRvcCBsZXZlbAorICAgICAgICB1bmxvYWQgd2FzIGRvbmUsIGFuZCBhIHJlcGFyZW50aW5nIG9m
IHRoZSBpZnJhbWUgd291bGQgbm90IGNhdXNlIGl0IHRvIGxvYWQuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9mcmFtZXMvcmVwYXJlbnQtaW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC5odG1sCisKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmFzc2VydENvbm5l
Y3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aGlsZEZyYW1lRGlzY29ubmVjdG9yOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZy
YW1lQ291bnRGb3JSZW1vdmFsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9u
KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50OjpjbGVhckNvbnRlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGlzY29ubmVjdENvbnRlbnRG
cmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAg
KEhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisKIDIwMTMtMDEtMjMgIEhhbnMgTXVsbGVyICA8aG11
bGxlckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBBZGQgc3VwcG9ydCBm
b3IgY29tcHV0aW5nIGZpcnN0IGluY2x1ZGVkIGludGVydmFsIHBvc2l0aW9uIGZvciBwb2x5Z29u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGVmOTIxZWJmNmI0M2Q1NGJi
ZDY4ZWE5ZDEyMTZiNGQ0YzQyOTlkYTQuLmI2MGNmOTRmMzE3ZTFmYTAwYTFhMDc4MGZjNmRiYWE0
NTc3NWI4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTkyLDYgKzky
LDEwIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQo
Tm9kZSogbm9kZSwgTm9kZVZlY3RvciYgbm9kZXMsCiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlQWxsQ2hpbGRyZW4oKQogeworICAgIGlmIChjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkpIHsK
KyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBjaGlsZC0+dXBkYXRlQW5jZXN0b3JD
b25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpOworICAgIH0KICAgICByZW1vdmVBbGxD
aGlsZHJlbkluQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KHRoaXMpOwogfQogCkBAIC0z
MzEsMTAgKzMzNSw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKFBh
c3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG5leHRDaGlsCiAKICAgICBpbnNlcnRCZWZv
cmVDb21tb24obmV4dENoaWxkLCBuZXdDaGlsZC5nZXQoKSk7CiAKLSAgICBpZiAodW5zaWduZWQg
Y291bnQgPSBuZXdDaGlsZC0+Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpKSB7Ci0gICAgICAgIGZv
ciAoTm9kZSogbm9kZSA9IG5ld0NoaWxkLT5wYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAgICBub2RlLT5pbmNyZW1lbnRD
b25uZWN0ZWRTdWJmcmFtZUNvdW50KGNvdW50KTsKLSAgICB9CisgICAgbmV3Q2hpbGQtPnVwZGF0
ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpOwogCiAgICAgY2hp
bGRyZW5DaGFuZ2VkKHRydWUsIG5ld0NoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSwgbmV4dENoaWxk
LCAxKTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcih0aGlzKS5ub3RpZnkobmV3Q2hp
bGQuZ2V0KCkpOwpAQCAtNTU3LDEwICs1NTgsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNl
clJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkKQogICAgIE5vZGUqIHByZXYgPSBvbGRDaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgTm9kZSogbmV4dCA9IG9sZENoaWxkLT5uZXh0U2libGlu
ZygpOwogCi0gICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gb2xkQ2hpbGQtPmNvbm5lY3RlZFN1YmZy
YW1lQ291bnQoKSkgewotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBvbGRDaGlsZC0+cGFyZW50
T3JIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKQotICAg
ICAgICAgICAgbm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudChjb3VudCk7Ci0g
ICAgfQorICAgIG9sZENoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRG
b3JSZW1vdmFsKCk7CiAKICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxkKTsK
IApAQCAtNzA2LDEwICs3MDQsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFwcGVuZENo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAgICAgICAgIHRyZWVTY29wZSgpLT5hZG9w
dElmTmVlZGVkKG5ld0NoaWxkLmdldCgpKTsKICAgICB9CiAKLSAgICBpZiAodW5zaWduZWQgY291
bnQgPSBuZXdDaGlsZC0+Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpKSB7Ci0gICAgICAgIGZvciAo
Tm9kZSogbm9kZSA9IG5ld0NoaWxkLT5wYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAgICBub2RlLT5pbmNyZW1lbnRDb25u
ZWN0ZWRTdWJmcmFtZUNvdW50KGNvdW50KTsKLSAgICB9CisgICAgbmV3Q2hpbGQtPnVwZGF0ZUFu
Y2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpOwogCiAgICAgY2hpbGRy
ZW5DaGFuZ2VkKHRydWUsIGxhc3QsIDAsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlm
aWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCAwODBiMGYzNTljYjU2Y2JmYzg5NjIx
MjkwNGE3NmI2ZmUwM2NhYTU4Li4zODQzNDJmZjczY2M4ODI5YTZhYzM2ODNhMjQ3ZjgyMTJjMmE4
NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHAKQEAgLTEyMSw0ICsxMjEsMzIgQEAgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpUYXJn
ZXQ6OmRpc2Nvbm5lY3QoKQogICAgIHRvRnJhbWVPd25lckVsZW1lbnQobV9vd25lci5nZXQoKSkt
PmRpc2Nvbm5lY3RDb250ZW50RnJhbWUoKTsKIH0KIAorI2lmbmRlZiBOREVCVUcKK3Vuc2lnbmVk
IGFzc2VydENvbm5lY3RlZFN1YmZyYW1lQ291bnRJc0NvbnNpc3RlbnQoTm9kZSogbm9kZSkKK3sK
KyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgp
KSB7CisgICAgICAgIGlmIChub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgdG9GcmFtZU93
bmVyRWxlbWVudChub2RlKS0+Y29udGVudEZyYW1lKCkpCisgICAgICAgICAgICBjb3VudCsrOwor
CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNo
YWRvdygpKSB7CisgICAgICAgICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3ctPnlv
dW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkp
CisgICAgICAgICAgICAgICAgY291bnQgKz0gYXNzZXJ0Q29ubmVjdGVkU3ViZnJhbWVDb3VudElz
Q29uc2lzdGVudChyb290KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoTm9kZSogY2hp
bGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKQorICAgICAgICBjb3VudCArPSBhc3NlcnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50SXNDb25z
aXN0ZW50KGNoaWxkKTsKKworICAgIC8vIElmIHdlIHVuZGVyY291bnQgdGhlcmUncyBwb3NzaWJs
eSBhIHNlY3VyaXR5IGJ1Zy4KKyAgICBBU1NFUlQobm9kZS0+Y29ubmVjdGVkU3ViZnJhbWVDb3Vu
dCgpID49IGNvdW50KTsKKworICAgIC8vIElmIHdlIG92ZXJjb3VudCBpdCdzIHNhZmUsIGJ1dCBu
b3Qgb3B0aW1hbC4gCisgICAgQVNTRVJUKG5vZGUtPmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSA9
PSBjb3VudCk7CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisjZW5kaWYKKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCBhZWNmMTMwMzQwNmQ1
NTdjNmQxMjY2NGMwYmNlMzNmNTVkZDQyNTc2Li4yYzU0MDE1NGU4ZDc0ODk2YjYwYjQyYjhhNDI3
NDAyOGMxMjRkOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuaApAQCAtMjk3LDYgKzI5NywxMCBAQCBwcml2YXRlOgogICAgIE5vZGUqIG1fcm9vdDsK
IH07CiAKKyNpZm5kZWYgTkRFQlVHCit1bnNpZ25lZCBhc3NlcnRDb25uZWN0ZWRTdWJmcmFtZUNv
dW50SXNDb25zaXN0ZW50KE5vZGUqKTsKKyNlbmRpZgorCiBpbmxpbmUgdm9pZCBDaGlsZEZyYW1l
RGlzY29ubmVjdG9yOjpjb2xsZWN0RnJhbWVPd25lcnMoTm9kZSogcm9vdCkKIHsKICAgICBpZiAo
IXJvb3QtPmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSkKQEAgLTMzMCw2ICszMzQsMTAgQEAgaW5s
aW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVjdENvbGxlY3RlZEZyYW1l
T3duZXJzKCkKIAogaW5saW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6ZGlzY29ubmVj
dChEaXNjb25uZWN0UG9saWN5IHBvbGljeSkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgYXNzZXJ0
Q29ubmVjdGVkU3ViZnJhbWVDb3VudElzQ29uc2lzdGVudChtX3Jvb3QpOworI2VuZGlmCisKICAg
ICBpZiAoIW1fcm9vdC0+Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCBlZjI2NGQ5YzY4MmY5YzAxMGE4YzIwODgyY2M0NWNhZWIz
YjA5ZmI3Li42OTk5MDM0YzAwYjRjZjEyM2JkM2RlN2Q4YmIwOTkxNjJkZGQyNWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC0yNjIwLDYgKzI2MjAsMjggQEAgdm9pZCBOb2RlOjpkZWNyZW1lbnRDb25u
ZWN0ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3VudCkKICAgICByYXJlRGF0YSgpLT5kZWNy
ZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KGFtb3VudCk7CiB9CiAKK3ZvaWQgTm9kZTo6dXBk
YXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpIGNvbnN0Cit7Cisg
ICAgdW5zaWduZWQgY291bnQgPSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7CisKKyAgICBpZiAo
IWNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRP
ckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAg
ICAgIG5vZGUtPmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOworfQorCit2
b2lkIE5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlv
bigpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY291bnQgPSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50
KCk7CisKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUq
IG5vZGUgPSBwYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhv
c3ROb2RlKCkpCisgICAgICAgIG5vZGUtPmluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQo
Y291bnQpOworfQorCiB2b2lkIE5vZGU6OnJlZ2lzdGVyU2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQog
ewogICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXgg
MTYxZTVlYzQzMWUyNmJjNWNiOTdlMGE3MDY5MTUyM2QzZmEzMjZlMS4uOTJmYjJiOTg4MWNkZjJm
MjVlZjM3MjNiMzQ2ZDVkNDJiZGM4YzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC02ODEsNiArNjgxLDgg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSBjb25zdDsK
ICAgICB2b2lkIGluY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQodW5zaWduZWQgYW1vdW50
ID0gMSk7CiAgICAgdm9pZCBkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVk
IGFtb3VudCA9IDEpOworICAgIHZvaWQgdXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNv
dW50Rm9yUmVtb3ZhbCgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRT
dWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZW51bSBO
b2RlRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQu
Y3BwCmluZGV4IGZiNjk4ZWE3MjhjNTgyNzkxYWQwM2Q3MzU0MWViZmMxMTk2OTVmYmYuLjIxMThm
YjZjOTUwMTkyNTliZDNjNTczNjM2NDk5NTNjMzEwOTgwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKQEAgLTYyLDYgKzYyLDE3IEBAIHZvaWQg
SFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRDb250ZW50RnJhbWUoRnJhbWUqIGZyYW1lKQogICAg
ICAgICBub2RlLT5pbmNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7CiB9CiAKK3ZvaWQg
SFRNTEZyYW1lT3duZXJFbGVtZW50OjpjbGVhckNvbnRlbnRGcmFtZSgpCit7CisgICAgaWYgKCFt
X2NvbnRlbnRGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZW50RnJhbWUgPSAw
OworCisgICAgZm9yIChDb250YWluZXJOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAgbm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVk
U3ViZnJhbWVDb3VudCgpOworfQorCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGlzY29u
bmVjdENvbnRlbnRGcmFtZSgpCiB7CiAgICAgQVNTRVJUKGhhc0N1c3RvbUNhbGxiYWNrcygpKTsK
QEAgLTcwLDkgKzgxLDYgQEAgdm9pZCBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmRpc2Nvbm5lY3RD
b250ZW50RnJhbWUoKQogICAgIC8vIHJlYWNoIHVwIGludG8gdGhpcyBkb2N1bWVudCBhbmQgdGhl
biBhdHRlbXB0IHRvIGxvb2sgYmFjayBkb3duLiBXZSBzaG91bGQKICAgICAvLyBzZWUgaWYgdGhp
cyBiZWhhdmlvciBpcyByZWFsbHkgbmVlZGVkIGFzIEdlY2tvIGRvZXMgbm90IGFsbG93IHRoaXMu
CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgpKSB7Ci0gICAgICAgIGZvciAo
Q29udGFpbmVyTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRPckhv
c3ROb2RlKCkpCi0gICAgICAgICAgICBub2RlLT5kZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNv
dW50KCk7Ci0KICAgICAgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0KGZyYW1lKTsKICAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLT5mcmFtZURldGFjaGVkKCk7CiAgICAgICAgIGZyYW1lLT5kaXNjb25u
ZWN0T3duZXJFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuaAppbmRleCAxNTM4M2FlZWUyZjhmNWUyZGM3ODdlOWZhYmQ4NDkwMzZlMzA4OTI5Li5k
MDdlY2UwYjYxYjJmZTY4NDY2NjQxYzAzYWQ3ZGRjYmUzMTAyYmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
Q29udGVudEZyYW1lKEZyYW1lKik7Ci0gICAgdm9pZCBjbGVhckNvbnRlbnRGcmFtZSgpIHsgbV9j
b250ZW50RnJhbWUgPSAwOyB9CisgICAgdm9pZCBjbGVhckNvbnRlbnRGcmFtZSgpOwogCiAgICAg
dm9pZCBkaXNjb25uZWN0Q29udGVudEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOGMwNDk0N2NlMGE2YzZl
ZDZhNTRjZWY3YTBlNDg5NTgyZjllZDU5Li5hZDI1NDZhM2ZlNTY4NTg5MjM4YWY3N2VkMjAzZjAz
MzQ3ZTE1YzY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDEtMjMgIEVsbGlvdHQgU3By
ZWhuICA8ZXNwcmVobkBnbWFpbC5jb20+CisKKyAgICAgICAgQXNzZXJ0IHRoZSBjb25uZWN0ZWRT
dWJmcmFtZUNvdW50IGlzIGNvbnNpc3RlbnQgYW5kIGZpeCBvdmVyIGNvdW50aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczMDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IHRoYXQg
cmVtb3ZpbmcgYW4gaWZyYW1lIGluIHRoZSBtaWRkbGUgb2YgdW5sb2FkIGNhdXNlcyB0aGUKKyAg
ICAgICAgY29udGVudERvY3VtZW50IHRvIGJlY29tZSBpbW1lZGlhdGVseSBpbmFjY2Vzc2libGUu
CisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRvY3Vt
ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVwYXJlbnQt
aW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0yMyAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvbnN0YW50IGZvbGRpbmcg
YW4gYWNjZXNzIHRvIGFuIHVuY2FwdHVyZWQgdmFyaWFibGUgdGhhdCBpcyBjYXB0dXJlZCBsYXRl
ciBpbiB0aGUgc2FtZSBiYXNpYyBibG9jayBzaG91bGRuJ3QgbGVhZCB0byBhc3NlcnRpb24gZmFp
bHVyZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3JlcGFyZW50LWluLXVu
bG9hZC1jb250ZW50ZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVwYXJlbnQtaW4tdW5sb2FkLWNvbnRlbnRkb2N1bWVudC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTAzNDkyNmUxYzVmZDNhZmFhNGI2YWNlYjVmMmE1Yzk4ZjJlNmE2NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3JlcGFyZW50LWluLXVubG9hZC1jb250
ZW50ZG9jdW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BBU1MgZnJhbWUuY29u
dGVudERvY3VtZW50IGlzIG51bGwKK1BBU1MgZnJhbWUuY29udGVudERvY3VtZW50IGlzIG5vdCBu
dWxsCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0t
LS0tLS0tCitTaG91bGQgYmUgdmlzaWJsZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3JlcGFyZW50LWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3JlcGFyZW50LWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDRmYzQ4YmM5MTBiNTNlNjNiYzA2YzE5ZDFlNWE0Y2ZhOTU5Yzg4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVwYXJlbnQtaW4tdW5sb2Fk
LWNvbnRlbnRkb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgor
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KworPGRpdiBpZD0iYSI+CisgICAgPGRpdiBpZD0iYiI+CisgICAgPC9kaXY+Cis8L2Rpdj4KKwor
PGRpdiBpZD0iYyI+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcENoaWxk
RnJhbWVzQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK3Zh
ciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwordmFyIGEgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYScpOwordmFyIGIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYicpOwordmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYycpOworCitvbmxvYWQg
PSBmdW5jdGlvbigpIHsKKyAgICBiLmFwcGVuZENoaWxkKGZyYW1lKTsKKworICAgIGZyYW1lLm9u
bG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBmcmFtZS5jb250ZW50RG9jdW1lbnQuYm9keS5p
bm5lckhUTUwgPSAnU2hvdWxkIGJlIHZpc2libGUuJzsKKyAgICB9OworCisgICAgZnJhbWUuY29u
dGVudFdpbmRvdy5vbnVubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBiLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoYik7CisgICAgICAgIHNob3VsZEJlTnVsbCgnZnJhbWUuY29udGVudERvY3Vt
ZW50Jyk7CisgICAgICAgIGMuYXBwZW5kQ2hpbGQoYik7CisgICAgICAgIHNob3VsZE5vdEJlKCdm
cmFtZS5jb250ZW50RG9jdW1lbnQnLCAnbnVsbCcpOworICAgICAgICBpc1N1Y2Nlc3NmdWxseVBh
cnNlZCgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9OworCisgICAgYS5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKGEpOworfTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184707</attachid>
            <date>2013-01-25 02:16:30 -0800</date>
            <delta_ts>2013-01-25 02:49:43 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107302-20130125021321.patch</filename>
            <type>text/plain</type>
            <size>14457</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUwNzRkNGY1MDlhMmU3
YzllYmU4MzU2OTczZGU0MjgxNTYwZWJiMy4uNjYwNzgyYmIxYWMzZjdiYzRiZWYzZTljZGIxZGVm
OTJhM2M3NTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAxLTI1ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIEFzc2VydCB0aGUgY29u
bmVjdGVkU3ViZnJhbWVDb3VudCBpcyBjb25zaXN0ZW50IGFuZCBmaXggb3ZlciBjb3VudGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MzAyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGQg
YSBkZWJ1ZyBhc3NlcnRpb24gdGhhdCB3YWxrcyB0aGUgc3VidHJlZSBkdXJpbmcgZnJhbWUgZGlz
Y29ubmVjdGlvbgorICAgICAgICBhbmQgbWFudWFsbHkgY291bnRzIHRoZSBudW1iZXIgb2YgY29u
bmVjdGVkIHN1YmZyYW1lcyB0byBhc3NlcnQgdGhhdCB0aGUKKyAgICAgICAgdmFsdWUgZnJvbSBO
b2RlOjpjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkgaXMgdGhlIHNhbWUgYXMgaWYgd2UgdHJhdmVy
c2VkCisgICAgICAgIHRocm91Z2ggdGhlIHRyZWUuCisKKyAgICAgICAgSW4gZml4aW5nIHRoZSBw
bGFjZXMgd2hlcmUgdGhpcyBhc3NlcnRpb24gZmFpbGVkIEkgbWFkZSBkb2N1bWVudCBkZXN0cnVj
dGlvbgorICAgICAgICBmYXN0ZXIgYnkgbm90IHdhbGtpbmcgdGhlIGVudGlyZSBkb2N1bWVudCBs
b29raW5nIGZvciBmcmFtZXMgaWYgdGhlIGVudGlyZQorICAgICAgICBmcmFtZSB0cmVlIGhhcyBi
ZWVuIGRlc3Ryb3llZCBieSB3YXkgb2YgRnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVuKCkuCisg
ICAgICAgIEkgaGFkIGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlZCB0aGlzIGltcHJvdmVtZW50IGlu
IHIxMzM5MzMsIGJ1dCB0aGVuIEkKKyAgICAgICAgcmVncmVzc2VkIGl0IGluIHIxNDAwOTAgd2hl
biB3ZSBzd2l0Y2hlZCB0byBjb3VudGluZyBiZWNhdXNlIEkgZGlkbid0CisgICAgICAgIHJlYWxp
emUgd2UgZGVzdHJveSB0aGUgZnJhbWUgdHJlZSBzZXBhcmF0ZSBvZiBmcmFtZSBkaXNjb25uZWN0
aW9uIG9uCisgICAgICAgIGRvY3VtZW50IHVubG9hZCBzbyBhbGwgZnJhbWVzIGNvdWxkIGhhdmUg
YmVlbiBkZXN0cm95ZWQgYnV0IHRoZSBjb3VudHMKKyAgICAgICAgbGVmdCBvbiB0aGUgYW5jZXN0
b3JzLgorCisgICAgICAgIEkgYWxzbyBmaXhlZCBhbm90aGVyIG92ZXJjb3VudGluZyBjYXNlIHdo
ZXJlIHRoZSBhZG9wdGlvbiBhZ2VuY3kgYWxnb3JpdGhtCisgICAgICAgIG1heSBjYWxsIENvbnRh
aW5lck5vZGU6OnRha2VBbGxDaGlsZHJlbkZyb20oKSB3aGljaCBpbiB0dXJuIGNhbGxzCisgICAg
ICAgIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuKCkgYW5kIGNvdWxkIGhhdmUgbGVm
dCBhIGNvbm5lY3RlZCBzdWJmcmFtZQorICAgICAgICBjb3VudCBvbiB0aGUgbm9kZSBldmVuIHRo
b3VnaCBhbGwgdGhlIGZyYW1lcyBoYWQgYmVlbiByZW1vdmVkLgorCisgICAgICAgIFRoaXMgYXNz
ZXJ0aW9uIGRpZCBub3QgdW5jb3ZlciBhbnkgY2FzZXMgb2YgdW5kZXJjb3VudGluZyB0aGUgbnVt
YmVyIG9mCisgICAgICAgIGZyYW1lcy4KKworICAgICAgICBUaGlzIGFsc28gZml4ZXMgYSByYXJl
IGVkZ2UgY2FzZSB3aGVyZSByZW1vdmVDaGlsZCBvZiBhbiBpZnJhbWUgdGhhdAorICAgICAgICB3
YXMgYWxyZWFkeSBiZWluZyB1bmxvYWRlZCB3b3VsZCBub3QgdW5sb2FkIHRoZSBmcmFtZSB1bnRp
bCB0aGUgdG9wIGxldmVsCisgICAgICAgIHVubG9hZCB3YXMgZG9uZSwgYW5kIGEgcmVwYXJlbnRp
bmcgb2YgdGhlIGlmcmFtZSB3b3VsZCBub3QgY2F1c2UgaXQgdG8gbG9hZC4KKworICAgICAgICBU
ZXN0OiBmYXN0L2ZyYW1lcy9yZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50Lmh0bWwK
KworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpwYXJzZXJBcHBlbmRDaGlsZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0
Q29ubmVjdGVkU3ViZnJhbWVDb3VudElzQ29uc2lzdGVudCk6CisgICAgICAgICogZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkRnJhbWVEaXNjb25uZWN0b3I6OmRpc2Nvbm5lY3QpOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVk
U3ViZnJhbWVDb3VudEZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp1cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNl
cnRpb24pOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAg
KiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQ6OmNsZWFyQ29udGVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpkaXNjb25uZWN0Q29u
dGVudEZyYW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAg
ICAgICAoSFRNTEZyYW1lT3duZXJFbGVtZW50KToKKwogMjAxMy0wMS0yNSAgRG9taW5pYyBNYXp6
b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTQwNjU4
KTogTXVsdGlwbGUgYWNjZXNzaWJpbGl0eSBmYWlsdXJlcyBvbiBHVEsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAppbmRleCBjMTIzZjQ5YmRlZjE4ZjlhYjgwZmM1NDk0NDcxMTBlODY2
NmZmOWIzLi44NzNiZjY2Y2M4ODc4MjUxMjEwOWRjMjc5MGIyYmMxYjgxMWMxZDNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC05Miw2ICs5MiwxMCBAQCBzdGF0aWMgdm9p
ZCBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KE5vZGUqIG5vZGUsIE5vZGVW
ZWN0b3ImIG5vZGVzLAogCiB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZURldGFjaGVkQ2hpbGRy
ZW4oKQogeworICAgIGlmIChjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkpIHsKKyAgICAgICAgZm9y
IChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpCisgICAgICAgICAgICBjaGlsZC0+dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJm
cmFtZUNvdW50Rm9yUmVtb3ZhbCgpOworICAgIH0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gQVNTRVJUKCFhdHRhY2hlZCgpKSBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA3ODAxCiAgICAgcmVtb3ZlRGV0YWNoZWRDaGlsZHJlbkluQ29u
dGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KHRoaXMpOwogfQpAQCAtMzMyLDEwICszMzYsNyBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hpbAogCiAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHRD
aGlsZCwgbmV3Q2hpbGQuZ2V0KCkpOwogCi0gICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gbmV3Q2hp
bGQtPmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSkgewotICAgICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBuZXdDaGlsZC0+cGFyZW50T3JIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50
T3JIb3N0Tm9kZSgpKQotICAgICAgICAgICAgbm9kZS0+aW5jcmVtZW50Q29ubmVjdGVkU3ViZnJh
bWVDb3VudChjb3VudCk7Ci0gICAgfQorICAgIG5ld0NoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5l
Y3RlZFN1YmZyYW1lQ291bnRGb3JJbnNlcnRpb24oKTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0
cnVlLCBuZXdDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCksIG5leHRDaGlsZCwgMSk7CiAgICAgQ2hp
bGROb2RlSW5zZXJ0aW9uTm90aWZpZXIodGhpcykubm90aWZ5KG5ld0NoaWxkLmdldCgpKTsKQEAg
LTU1OCwxMCArNTU5LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChO
b2RlKiBvbGRDaGlsZCkKICAgICBOb2RlKiBwcmV2ID0gb2xkQ2hpbGQtPnByZXZpb3VzU2libGlu
ZygpOwogICAgIE5vZGUqIG5leHQgPSBvbGRDaGlsZC0+bmV4dFNpYmxpbmcoKTsKIAotICAgIGlm
ICh1bnNpZ25lZCBjb3VudCA9IG9sZENoaWxkLT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkpIHsK
LSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gb2xkQ2hpbGQtPnBhcmVudE9ySG9zdE5vZGUoKTsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKLSAgICAgICAgICAgIG5vZGUt
PmRlY3JlbWVudENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOwotICAgIH0KKyAgICBvbGRD
aGlsZC0+dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpOwog
CiAgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBvbGRDaGlsZCk7CiAKQEAgLTcwNywxMCAr
NzA1LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRDaGlsZChQYXNzUmVmUHRy
PE5vZGU+IG5ld0NoaWxkKQogICAgICAgICB0cmVlU2NvcGUoKS0+YWRvcHRJZk5lZWRlZChuZXdD
aGlsZC5nZXQoKSk7CiAgICAgfQogCi0gICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gbmV3Q2hpbGQt
PmNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSkgewotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBu
ZXdDaGlsZC0+cGFyZW50T3JIb3N0Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpKQotICAgICAgICAgICAgbm9kZS0+aW5jcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVD
b3VudChjb3VudCk7Ci0gICAgfQorICAgIG5ld0NoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3Rl
ZFN1YmZyYW1lQ291bnRGb3JJbnNlcnRpb24oKTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0cnVl
LCBsYXN0LCAwLCAxKTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcih0aGlzKS5ub3Rp
ZnkobmV3Q2hpbGQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5jcHAKaW5kZXggMDgwYjBmMzU5Y2I1NmNiZmM4OTYyMTI5MDRhNzZiNmZlMDNj
YWE1OC4uMDlkN2IyMjkwOThmODZkZDQ2OWNlOTdlYmU3NzQwMmFkYzM3NmM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC0xMjEsNCAr
MTIxLDM1IEBAIHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6VGFyZ2V0OjpkaXNjb25uZWN0
KCkKICAgICB0b0ZyYW1lT3duZXJFbGVtZW50KG1fb3duZXIuZ2V0KCkpLT5kaXNjb25uZWN0Q29u
dGVudEZyYW1lKCk7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCit1bnNpZ25lZCBhc3NlcnRDb25uZWN0
ZWRTdWJyYW1lQ291bnRJc0NvbnNpc3RlbnQoTm9kZSogbm9kZSkKK3sKKyAgICB1bnNpZ25lZCBj
b3VudCA9IDA7CisKKyAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgIGlm
IChub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgdG9GcmFtZU93bmVyRWxlbWVudChub2Rl
KS0+Y29udGVudEZyYW1lKCkpCisgICAgICAgICAgICBjb3VudCsrOworCisgICAgICAgIGlmIChF
bGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKSB7CisgICAg
ICAgICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3ctPnlvdW5nZXN0U2hhZG93Um9v
dCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAgICAgICAg
ICAgY291bnQgKz0gYXNzZXJ0Q29ubmVjdGVkU3VicmFtZUNvdW50SXNDb25zaXN0ZW50KHJvb3Qp
OworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGNv
dW50ICs9IGFzc2VydENvbm5lY3RlZFN1YnJhbWVDb3VudElzQ29uc2lzdGVudChjaGlsZCk7CisK
KyAgICAvLyBJZiB3ZSB1bmRlcmNvdW50IHRoZXJlJ3MgcG9zc2libHkgYSBzZWN1cml0eSBidWcg
c2luY2Ugd2UnZCBsZWF2ZSBmcmFtZXMKKyAgICAvLyBpbiBzdWJ0cmVlcyBvdXRzaWRlIHRoZSBk
b2N1bWVudC4KKyAgICBBU1NFUlQobm9kZS0+Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpID49IGNv
dW50KTsKKworICAgIC8vIElmIHdlIG92ZXJjb3VudCBpdCdzIHNhZmUsIGJ1dCBub3Qgb3B0aW1h
bCBiZWNhdXNlIGl0IG1lYW5zIHdlJ2xsIHRyYXZlcnNlCisgICAgLy8gdGhyb3VnaCB0aGUgZG9j
dW1lbnQgaW4gQ2hpbGRGcmFtZURpc2Nvbm5lY3RvciBsb29raW5nIGZvciBmcmFtZXMgdGhhdCBo
YXZlCisgICAgLy8gYWxyZWFkeSBiZWVuIGRpc2Nvbm5lY3RlZC4KKyAgICBBU1NFUlQobm9kZS0+
Y29ubmVjdGVkU3ViZnJhbWVDb3VudCgpID09IGNvdW50KTsKKworICAgIHJldHVybiBjb3VudDsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3Jp
dGhtcy5oCmluZGV4IDllZjEwNTYxOTExYTBhMGZhNDEyY2Q0ZDI2NTFkYTA4NDAxOTNkYTguLmMx
YmMzMmM3ZGQ2MGZkOTMyOGY2OWVkN2EwYzdhMjg1NGQwOGJlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yOTcsNiArMjk3LDEwIEBAIHBy
aXZhdGU6CiAgICAgTm9kZSogbV9yb290OwogfTsKIAorI2lmbmRlZiBOREVCVUcKK3Vuc2lnbmVk
IGFzc2VydENvbm5lY3RlZFN1YnJhbWVDb3VudElzQ29uc2lzdGVudChOb2RlKik7CisjZW5kaWYK
KwogaW5saW5lIHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6Y29sbGVjdEZyYW1lT3duZXJz
KE5vZGUqIHJvb3QpCiB7CiAgICAgaWYgKCFyb290LT5jb25uZWN0ZWRTdWJmcmFtZUNvdW50KCkp
CkBAIC0zMzAsNiArMzM0LDEwIEBAIGlubGluZSB2b2lkIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6
OmRpc2Nvbm5lY3RDb2xsZWN0ZWRGcmFtZU93bmVycygpCiAKIGlubGluZSB2b2lkIENoaWxkRnJh
bWVEaXNjb25uZWN0b3I6OmRpc2Nvbm5lY3QoRGlzY29ubmVjdFBvbGljeSBwb2xpY3kpCiB7Cisj
aWZuZGVmIE5ERUJVRworICAgIGFzc2VydENvbm5lY3RlZFN1YnJhbWVDb3VudElzQ29uc2lzdGVu
dChtX3Jvb3QpOworI2VuZGlmCisKICAgICBpZiAoIW1fcm9vdC0+Y29ubmVjdGVkU3ViZnJhbWVD
b3VudCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAyMDBmMTliNDY3
Y2EzOTZlZjhiNDg2OWU5MDI3YTZlNGIxZDQ1YzM0Li40MTE2OTAxOWQyZWIxYTk2N2ZjYzU2Y2Fm
MjJlMDIyM2Q1N2JmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNjIwLDYgKzI2MjAsMjggQEAg
dm9pZCBOb2RlOjpkZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3Vu
dCkKICAgICByYXJlRGF0YSgpLT5kZWNyZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KGFtb3Vu
dCk7CiB9CiAKK3ZvaWQgTm9kZTo6dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50
Rm9yUmVtb3ZhbCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY291bnQgPSBjb25uZWN0ZWRTdWJm
cmFtZUNvdW50KCk7CisKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBm
b3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5w
YXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAgIG5vZGUtPmRlY3JlbWVudENvbm5lY3RlZFN1YmZy
YW1lQ291bnQoY291bnQpOworfQorCit2b2lkIE5vZGU6OnVwZGF0ZUFuY2VzdG9yQ29ubmVjdGVk
U3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY291bnQg
PSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7CisKKyAgICBpZiAoIWNvdW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnRPckhvc3ROb2RlKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAgIG5vZGUtPmluY3JlbWVu
dENvbm5lY3RlZFN1YmZyYW1lQ291bnQoY291bnQpOworfQorCiB2b2lkIE5vZGU6OnJlZ2lzdGVy
U2NvcGVkSFRNTFN0eWxlQ2hpbGQoKQogewogICAgIHNldEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxk
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMTYxZTVlYzQzMWUyNmJjNWNiOTdlMGE3MDY5MTUyM2Qz
ZmEzMjZlMS4uOTJmYjJiOTg4MWNkZjJmMjVlZjM3MjNiMzQ2ZDVkNDJiZGM4YzRkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCkBAIC02ODEsNiArNjgxLDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGNvbm5lY3Rl
ZFN1YmZyYW1lQ291bnQoKSBjb25zdDsKICAgICB2b2lkIGluY3JlbWVudENvbm5lY3RlZFN1YmZy
YW1lQ291bnQodW5zaWduZWQgYW1vdW50ID0gMSk7CiAgICAgdm9pZCBkZWNyZW1lbnRDb25uZWN0
ZWRTdWJmcmFtZUNvdW50KHVuc2lnbmVkIGFtb3VudCA9IDEpOworICAgIHZvaWQgdXBkYXRlQW5j
ZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpIGNvbnN0OworICAgIHZvaWQg
dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgZW51bSBOb2RlRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCmluZGV4IGZiNjk4ZWE3MjhjNTgyNzkxYWQwM2Q3
MzU0MWViZmMxMTk2OTVmYmYuLjIxMThmYjZjOTUwMTkyNTliZDNjNTczNjM2NDk5NTNjMzEwOTgw
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAK
QEAgLTYyLDYgKzYyLDE3IEBAIHZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpzZXRDb250ZW50
RnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBub2RlLT5pbmNyZW1lbnRDb25uZWN0ZWRTdWJm
cmFtZUNvdW50KCk7CiB9CiAKK3ZvaWQgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpjbGVhckNvbnRl
bnRGcmFtZSgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRGcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jb250ZW50RnJhbWUgPSAwOworCisgICAgZm9yIChDb250YWluZXJOb2RlKiBub2Rl
ID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAg
bm9kZS0+ZGVjcmVtZW50Q29ubmVjdGVkU3ViZnJhbWVDb3VudCgpOworfQorCiB2b2lkIEhUTUxG
cmFtZU93bmVyRWxlbWVudDo6ZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpCiB7CiAgICAgQVNTRVJU
KGhhc0N1c3RvbUNhbGxiYWNrcygpKTsKQEAgLTcwLDkgKzgxLDYgQEAgdm9pZCBIVE1MRnJhbWVP
d25lckVsZW1lbnQ6OmRpc2Nvbm5lY3RDb250ZW50RnJhbWUoKQogICAgIC8vIHJlYWNoIHVwIGlu
dG8gdGhpcyBkb2N1bWVudCBhbmQgdGhlbiBhdHRlbXB0IHRvIGxvb2sgYmFjayBkb3duLiBXZSBz
aG91bGQKICAgICAvLyBzZWUgaWYgdGhpcyBiZWhhdmlvciBpcyByZWFsbHkgbmVlZGVkIGFzIEdl
Y2tvIGRvZXMgbm90IGFsbG93IHRoaXMuCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvbnRlbnRG
cmFtZSgpKSB7Ci0gICAgICAgIGZvciAoQ29udGFpbmVyTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7
IG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpCi0gICAgICAgICAgICBub2RlLT5kZWNy
ZW1lbnRDb25uZWN0ZWRTdWJmcmFtZUNvdW50KCk7Ci0KICAgICAgICAgUmVmUHRyPEZyYW1lPiBw
cm90ZWN0KGZyYW1lKTsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5mcmFtZURldGFjaGVkKCk7
CiAgICAgICAgIGZyYW1lLT5kaXNjb25uZWN0T3duZXJFbGVtZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCAxNTM4M2FlZWUyZjhmNWUyZGM3
ODdlOWZhYmQ4NDkwMzZlMzA4OTI5Li5kMDdlY2UwYjYxYjJmZTY4NDY2NjQxYzAzYWQ3ZGRjYmUz
MTAyYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgK
QEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBjb250ZW50RG9jdW1lbnQo
KSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudEZyYW1lKEZyYW1lKik7Ci0gICAgdm9pZCBj
bGVhckNvbnRlbnRGcmFtZSgpIHsgbV9jb250ZW50RnJhbWUgPSAwOyB9CisgICAgdm9pZCBjbGVh
ckNvbnRlbnRGcmFtZSgpOwogCiAgICAgdm9pZCBkaXNjb25uZWN0Q29udGVudEZyYW1lKCk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZmIzYmY5ZGEyMzcxMWQ3ZTM4NjMzZmQyOGY0NWEyNDkzZDFmMzg2Li4xODlkNTE0
NmE5ODcyM2E4YzJiMDk3NzgzZjYxYTcyMzljNjEwZjEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTMtMDEtMjUgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBnbWFpbC5jb20+CisKKyAgICAg
ICAgQXNzZXJ0IHRoZSBjb25uZWN0ZWRTdWJmcmFtZUNvdW50IGlzIGNvbnNpc3RlbnQgYW5kIGZp
eCBvdmVyIGNvdW50aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDczMDIKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292
LgorCisgICAgICAgIEFkZCBhIHRlc3QgdGhhdCByZW1vdmluZyBhbiBpZnJhbWUgaW4gdGhlIG1p
ZGRsZSBvZiB1bmxvYWQgY2F1c2VzIHRoZQorICAgICAgICBjb250ZW50RG9jdW1lbnQgdG8gYmVj
b21lIGltbWVkaWF0ZWx5IGluYWNjZXNzaWJsZS4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL3Jl
cGFyZW50LWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9yZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50Lmh0
bWw6IEFkZGVkLgorCiAyMDEzLTAxLTI1ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gTWFya2luZyByZXNpemUtY29ybmVyLXRyYWNraW5n
Ki5odG1sIGFzIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3JlcGFyZW50LWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEwMzQ5MjZlMWM1ZmQzYWZhYTRiNmFjZWI1ZjJhNWM5OGYyZTZh
NjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXBhcmVudC1p
bi11bmxvYWQtY29udGVudGRvY3VtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitQ
QVNTIGZyYW1lLmNvbnRlbnREb2N1bWVudCBpcyBudWxsCitQQVNTIGZyYW1lLmNvbnRlbnREb2N1
bWVudCBpcyBub3QgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTAtLT4tLT4nCistLS0tLS0tLQorU2hvdWxkIGJlIHZpc2libGUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRvY3VtZW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXBhcmVudC1pbi11bmxvYWQtY29udGVudGRv
Y3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ0ZmM0OGJjOTEwYjUzZTYzYmMwNmMxOWQxZTVhNGNm
YTk1OWM4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3JlcGFy
ZW50LWluLXVubG9hZC1jb250ZW50ZG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURP
Q1RZUEUgaHRtbD4KKworPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9ImEiPgorICAgIDxkaXYgaWQ9ImIiPgorICAgIDwvZGl2
PgorPC9kaXY+CisKKzxkaXYgaWQ9ImMiPgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCit2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsK
K3ZhciBhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EnKTsKK3ZhciBiID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2InKTsKK3ZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Mn
KTsKKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgYi5hcHBlbmRDaGlsZChmcmFtZSk7CisK
KyAgICBmcmFtZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZnJhbWUuY29udGVudERv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJ1Nob3VsZCBiZSB2aXNpYmxlLic7CisgICAgfTsKKwor
ICAgIGZyYW1lLmNvbnRlbnRXaW5kb3cub251bmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
Yi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpOworICAgICAgICBzaG91bGRCZU51bGwoJ2ZyYW1l
LmNvbnRlbnREb2N1bWVudCcpOworICAgICAgICBjLmFwcGVuZENoaWxkKGIpOworICAgICAgICBz
aG91bGROb3RCZSgnZnJhbWUuY29udGVudERvY3VtZW50JywgJ251bGwnKTsKKyAgICAgICAgaXNT
dWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfTsKKworICAgIGEucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChhKTsKK307Cis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>