<?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>111883</bug_id>
          
          <creation_ts>2013-03-08 12:17:11 -0800</creation_ts>
          <short_desc>[WK2] Make it possible to reuse sandbox extensions</short_desc>
          <delta_ts>2013-03-11 08:54:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>111917</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>851416</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-08 12:17:11 -0800</bug_when>
    <thetext>NetworkBlobRegistry holds sandbox extensions for as long as a blob exists, and the same blob could be loaded multiple times.

Since an extension is revoked at the end of a load, this does not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851426</commentid>
    <comment_count>1</comment_count>
      <attachid>192270</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-08 12:23:23 -0800</bug_when>
    <thetext>Created attachment 192270
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851429</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-08 12:28:09 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/145254&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851608</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-08 16:36:49 -0800</bug_when>
    <thetext>It seems like this patch caused a test failure:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=fast%2Fdom%2FWindow%2Fredirect-with-timer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851693</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 20:28:24 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 111917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851709</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-08 21:54:24 -0800</bug_when>
    <thetext>Got it. The regression is caused by a bug in SandboxExtensionTracker that used to be hidden because we used to permanently leak the consumed extension in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851715</commentid>
    <comment_count>6</comment_count>
      <attachid>192335</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-08 22:21:07 -0800</bug_when>
    <thetext>Created attachment 192335
patch to land later

Updated with build fix, removed an unneeded null check, and added an assertion that would have caught this condition earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851796</commentid>
    <comment_count>7</comment_count>
      <attachid>192346</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-09 10:43:41 -0800</bug_when>
    <thetext>Created attachment 192346
proposed patch

It turned out that it makes much more sense to fix the pre-existing bug now, as that&apos;s easier to do with the new SandboxExtension functionality.

The new patch also changes SandboxExtension to require manual balancing of consume and revoke calls. It&apos;s less error prone this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852371</commentid>
    <comment_count>8</comment_count>
      <attachid>192346</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 08:54:06 -0700</bug_when>
    <thetext>Comment on attachment 192346
proposed patch

Clearing flags on attachment: 192346

Committed r145369: &lt;http://trac.webkit.org/changeset/145369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852372</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 08:54:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192270</attachid>
            <date>2013-03-08 12:23:23 -0800</date>
            <delta_ts>2013-03-08 22:21:07 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>ReuseExtensions.txt</filename>
            <type>text/plain</type>
            <size>10810</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTI1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTA4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gcmV1c2Ugc2FuZGJveCBleHRlbnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBhcyBpbnZhbGlkYXRlKCkgY2FsbCB3aXRoIHJl
dm9rZSgpLgorCisgICAgICAgIFdlIG5vIGNvdW50IGhvdyBtYW55IHRpbWVzIGNvbnN1bWUoKSB3
YXMgY2FsbGVkLCBhbmQga2VlcCB0aGUgZXh0ZW5zaW9uIGFjdGl2ZQorICAgICAgICBmb3IgYXMg
bG9uZyBhcyByZXZva2UoKSBoYXNuJ3QgYmVlbiBjYWxsZWQgYXMgbWFueSB0aW1lcy4gQWxzbywg
d2Ugb25seSBwZXJtYW5lbnRseQorICAgICAgICBkZXN0cm95IHRoZSBleHRlbnNpb24gaW4gZGVz
dHJ1Y3Rvci4KKworICAgICAgICBUaGlzIGFsbG93cyBmb3IgcHJvcGVybHkga2VlcGluZyBleHRl
bnNpb25zIGluIE5ldHdvcmtCbG9iUmVnaXN0cnkgZm9yIGFzIGxvbmcgYXMKKyAgICAgICAgdGhl
eSBhcmUgbmVlZGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY2hlZHVsYWJsZUxvYWRlcjo6aW52YWxpZGF0ZVNh
bmRib3hFeHRlbnNpb25zKToKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZENh
bmNlbCk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKFNh
bmRib3hFeHRlbnNpb24pOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxlcjo6c3RvcCk6CisgICAgICAgICogU2hh
cmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6cmV2b2tlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6aW52YWxpZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpzZXRQ
ZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFsTG9hZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKToKKwogMjAxMy0wMy0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl1bR1RLXSBJbnZhbGlkIHJlcXVl
c3QgcmV0dXJuZWQgYnkgd2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0IGlmIGNhbGxlZCBiZWZv
cmUgZG93bmxvYWQgc3RhcnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9T
Y2hlZHVsYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCShyZXZpc2lvbiAxNDUyMzUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDEwICs5OCwxMCBAQCB2b2lkIFNjaGVkdWxhYmxlTG9hZGVyOjpjb25zdW1l
U2FuZGJveEV4CiB2b2lkIFNjaGVkdWxhYmxlTG9hZGVyOjppbnZhbGlkYXRlU2FuZGJveEV4dGVu
c2lvbnMoKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IG1fcmVxdWVzdEJvZHlT
YW5kYm94RXh0ZW5zaW9ucy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBtX3JlcXVl
c3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbaV0tPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9yZXF1
ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2ldLT5yZXZva2UoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwLCBjb3VudCA9IG1fcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9ucy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKQotICAgICAgICBtX3Jlc291cmNlU2FuZGJveEV4dGVuc2lvbnNbaV0tPmludmFs
aWRhdGUoKTsKKyAgICAgICAgbV9yZXNvdXJjZVNhbmRib3hFeHRlbnNpb25zW2ldLT5yZXZva2Uo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2FuZGJveEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDE0NTIzNSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEwICs5NSwx
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5cGUsIEhhbmRsZSYpOwogICAgIH5TYW5k
Ym94RXh0ZW5zaW9uKCk7CiAKLSAgICBib29sIGludmFsaWRhdGUoKTsKICAgICBib29sIGNvbnN1
bWUoKTsKLSAgICBib29sIGNvbnN1bWVQZXJtYW5lbnRseSgpOworICAgIGJvb2wgcmV2b2tlKCk7
CiAKKyAgICBib29sIGNvbnN1bWVQZXJtYW5lbnRseSgpOwogICAgIHN0YXRpYyBib29sIGNvbnN1
bWVQZXJtYW5lbnRseShjb25zdCBIYW5kbGUmKTsKIAogcHJpdmF0ZToKQEAgLTEwNiw2ICsxMDYs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgCiAjaWYgRU5BQkxFKFdFQl9QUk9D
RVNTX1NBTkRCT1gpCiAgICAgbXV0YWJsZSBXS1NhbmRib3hFeHRlbnNpb25SZWYgbV9zYW5kYm94
RXh0ZW5zaW9uOworICAgIHNpemVfdCBtX3VzZUNvdW50OwogI2VuZGlmCiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCShyZXZpc2lvbiAxNDUy
MzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNywxMCArMTA3LDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzdG9w
KCkgCiAgICAgaWYgKG1fc3RvcFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fc3RvcFRpbWVy
LnN0b3AoKTsKICAgICAKLSAgICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKSB7Ci0g
ICAgICAgIG1fc2FtcGxlTG9nU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAg
ICBtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24gPSAwOwotICAgIH0gICAgCisgICAgbV9zYW1w
bGVMb2dTYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsKIH0KIAogYm9vbCBXZWJNZW1vcnlTYW1w
bGVyOjppc1J1bm5pbmcoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9Eb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAJKHJldmlzaW9uIDE0NTIzNSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsOCAr
MTM1LDcgQEAgdm9pZCBEb3dubG9hZDo6ZGlkRmluaXNoKCkKIAogICAgIHNlbmQoTWVzc2FnZXM6
OkRvd25sb2FkUHJveHk6OkRpZEZpbmlzaCgpKTsKIAotICAgIGlmIChtX3NhbmRib3hFeHRlbnNp
b24pCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kb3dubG9h
ZEZpbmlzaGVkKHRoaXMpOwogfQpAQCAtMTQ1LDggKzE0NCw3IEBAIHZvaWQgRG93bmxvYWQ6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnIKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFBy
b3h5OjpEaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhKSk7CiAKLSAgICBpZiAobV9zYW5kYm94RXh0
ZW5zaW9uKQotICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsKKyAgICBt
X3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRvd25s
b2FkRmluaXNoZWQodGhpcyk7CiB9CiAKQEAgLTE1NCw4ICsxNTIsNyBAQCB2b2lkIERvd25sb2Fk
OjpkaWRDYW5jZWwoY29uc3QgQ29yZUlQQzo6CiB7CiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxv
YWRQcm94eTo6RGlkQ2FuY2VsKHJlc3VtZURhdGEpKTsKIAotICAgIGlmIChtX3NhbmRib3hFeHRl
bnNpb24pCi0gICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOworICAgIG1f
c2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZG93bmxv
YWRGaW5pc2hlZCh0aGlzKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkocmV2aXNpb24gMTQ1MjM1KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjEsNiArMjYxLDcgQEAgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvcgogCiBTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYg
aGFuZGxlKQogICAgIDogbV9zYW5kYm94RXh0ZW5zaW9uKGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24pCisgICAgLCBtX3VzZUNvdW50KDApCiB7CiAgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lv
biA9IDA7CiB9CkBAIC0yNzQsMTMgKzI3NSwxNSBAQCBTYW5kYm94RXh0ZW5zaW9uOjp+U2FuZGJv
eEV4dGVuc2lvbigpCiAgICAgV0tTYW5kYm94RXh0ZW5zaW9uRGVzdHJveShtX3NhbmRib3hFeHRl
bnNpb24pOwogfQogCi1ib29sIFNhbmRib3hFeHRlbnNpb246OmludmFsaWRhdGUoKQorYm9vbCBT
YW5kYm94RXh0ZW5zaW9uOjpyZXZva2UoKQogewogICAgIEFTU0VSVChtX3NhbmRib3hFeHRlbnNp
b24pOworICAgIEFTU0VSVChtX3VzZUNvdW50KTsKKyAgICAKKyAgICBpZiAoLS1tX3VzZUNvdW50
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gV0tTYW5kYm94RXh0
ZW5zaW9uSW52YWxpZGF0ZShtX3NhbmRib3hFeHRlbnNpb24pOwotICAgIFdLU2FuZGJveEV4dGVu
c2lvbkRlc3Ryb3kobV9zYW5kYm94RXh0ZW5zaW9uKTsKLSAgICBtX3NhbmRib3hFeHRlbnNpb24g
PSAwOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI4OSw2ICsyOTIsOSBAQCBib29sIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWUoKQogewogICAgIEFTU0VSVChtX3NhbmRib3hFeHRlbnNp
b24pOwogCisgICAgaWYgKG1fdXNlQ291bnQrKykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAg
ICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uQ29uc3VtZShtX3NhbmRib3hFeHRlbnNpb24pOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCShyZXZpc2lvbiAxNDUyMzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NjEsMTMgKzI1NjEsOCBAQCB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvCiAgICAgICAgIG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhKTsKIAogICAgICAgICAvLyBJZiB3
ZSBzdGFydGVkIGxvYWRpbmcgYSBsb2NhbCBmaWxlLCB0aGUgc2FuZGJveCBleHRlbnNpb24gdHJh
Y2tlciB3b3VsZCBoYXZlIGFkb3B0ZWQgdGhpcwotICAgICAgICAvLyBwZW5kaW5nIGRyb3Agc2Fu
ZGJveCBleHRlbnNpb24uIElmIG5vdCwgd2UnbGwgcGxheSBpdCBzYWZlIGFuZCBpbnZhbGlkYXRl
IGl0LgotICAgICAgICBpZiAobV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24pIHsKLSAgICAg
ICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7Ci0gICAg
ICAgICAgICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7Ci0gICAgICAg
IH0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdEcm9wRXh0ZW5zaW9u
c0ZvckZpbGVVcGxvYWQuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBtX3BlbmRpbmdEcm9wRXh0
ZW5zaW9uc0ZvckZpbGVVcGxvYWRbaV0tPmludmFsaWRhdGUoKTsKKyAgICAgICAgLy8gcGVuZGlu
ZyBkcm9wIHNhbmRib3ggZXh0ZW5zaW9uLiBJZiBub3QsIHdlJ2xsIHBsYXkgaXQgc2FmZSBhbmQg
ZGVzdHJveSBpdC4KKyAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24gPSBudWxs
cHRyOwogCiAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5jbGVh
cigpOwogICAgICAgICBicmVhazsKQEAgLTMwODMsMjAgKzMwNzgsOSBAQCBXZWJQYWdlOjpTYW5k
Ym94RXh0ZW5zaW9uVHJhY2tlcjo6flNhbmRiCiAKIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVu
c2lvblRyYWNrZXI6OmludmFsaWRhdGUoKQogewotICAgIGlmIChtX3BlbmRpbmdQcm92aXNpb25h
bFNhbmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94
RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2Fu
ZGJveEV4dGVuc2lvbiA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1fcHJvdmlzaW9uYWxTYW5kYm94
RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLT5pbnZh
bGlkYXRlKCk7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gMDsKLSAg
ICB9Ci0KLSAgICBpZiAobV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1f
Y29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX2NvbW1p
dHRlZFNhbmRib3hFeHRlbnNpb24gPSAwOwotICAgIH0KKyAgICBtX3BlbmRpbmdQcm92aXNpb25h
bFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOworICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0
ZW5zaW9uID0gbnVsbHB0cjsKKyAgICBtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24gPSBudWxs
cHRyOwogfQogCiB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjp3aWxsUGVy
Zm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
PiBwZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24pCkBAIC0zMTEzLDE0ICszMDk3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6YgogCiB2b2lkIFdlYlBhZ2U6OlNh
bmRib3hFeHRlbnNpb25UcmFja2VyOjpzZXRQZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5z
aW9uKFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJv
eEV4dGVuc2lvbikKIHsKLSAgICAvLyBJZiB3ZSBnZXQgdHdvIGJlZ2luTG9hZCBjYWxscyBpbiBz
dWNjZXNzaW9uLCB3aXRob3V0IGEgcHJvdmlzaW9uYWwgbG9hZCBzdGFydGluZywgdGhlbgotICAg
IC8vIG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiB3aWxsIGJlIG5vbi1udWxs
LiBJbnZhbGlkYXRlIGFuZCBudWxsIG91dCB0aGUgZXh0ZW5zaW9uIGlmIHRoYXQgaXMgdGhlIGNh
c2UuCi0gICAgaWYgKG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbikgewotICAg
ICAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsK
LSAgICAgICAgbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsK
LSAgICB9Ci0gICAgCi0gICAgbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0g
cGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbjsgICAgCisgICAgbV9wZW5kaW5nUHJv
dmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVu
c2lvbjsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkUmV1c2VDb21taXR0ZWRTYW5kYm94RXh0ZW5z
aW9uKFdlYkZyYW1lKiBmcmFtZSkKQEAgLTMxNzMsMTUgKzMxNTAsNyBAQCB2b2lkIFdlYlBhZ2U6
OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkCiAKICAgICAvLyBHZW5lcmFsbHksIHRoZXJlIHNo
b3VsZCBiZSBubyBwZW5kaW5nIGV4dGVuc2lvbiBhdCB0aGlzIHN0YWdlLCBidXQgd2UgY2FuIGhh
dmUgb25lIGlmIFVJIHByb2Nlc3MKICAgICAvLyBoYXMgYW4gb3V0IG9mIGRhdGUgaWRlYSBvZiBX
ZWJQcm9jZXNzIHN0YXRlLCBhbmQgaW5pdGlhdGVzIGEgbG9hZCBvciByZWxvYWQgd2l0aG91dCBz
dG9wcGluZyBhbiBleGlzdGluZyBvbmUuCi0gICAgaWYgKG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2Fu
ZGJveEV4dGVuc2lvbikgewotICAgICAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRl
bnNpb24tPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94
RXh0ZW5zaW9uID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyBUaGUgcHJvdmlzaW9uYWwgbG9h
ZCBoYXMgYmVlbiBjb21taXR0ZWQuIEludmFsaWRhdGUgdGhlIGN1cnJlbnRseSBjb21taXR0ZWQg
c2FuZGJveAotICAgIC8vIGV4dGVuc2lvbiBhbmQgbWFrZSB0aGUgcHJvdmlzaW9uYWwgc2FuZGJv
eCBleHRlbnNpb24gdGhlIGNvbW1pdHRlZCBzYW5kYm94IGV4dGVuc2lvbi4KLSAgICBpZiAobV9j
b21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uKQotICAgICAgICBtX2NvbW1pdHRlZFNhbmRib3hFeHRl
bnNpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRl
bnNpb24gPSBudWxscHRyOwogCiAgICAgbV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uID0gbV9w
cm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24ucmVsZWFzZSgpOwogfQpAQCAtMzE5MywxNSArMzE2
MiwxMSBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkCiAKICAgICAv
LyBHZW5lcmFsbHksIHRoZXJlIHNob3VsZCBiZSBubyBwZW5kaW5nIGV4dGVuc2lvbiBhdCB0aGlz
IHN0YWdlLCBidXQgd2UgY2FuIGhhdmUgb25lIGlmIFVJIHByb2Nlc3MKICAgICAvLyBoYXMgYW4g
b3V0IG9mIGRhdGUgaWRlYSBvZiBXZWJQcm9jZXNzIHN0YXRlLCBhbmQgaW5pdGlhdGVzIGEgbG9h
ZCBvciByZWxvYWQgd2l0aG91dCBzdG9wcGluZyBhbiBleGlzdGluZyBvbmUuCi0gICAgaWYgKG1f
cGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbikgewotICAgICAgICBtX3BlbmRpbmdQ
cm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9wZW5k
aW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsKLSAgICB9CisgICAgbV9w
ZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsKIAogICAgIGlmICgh
bV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wcm92aXNp
b25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogfQogCg==
</data>
<flag name="review"
          id="213468"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192335</attachid>
            <date>2013-03-08 22:21:07 -0800</date>
            <delta_ts>2013-03-09 10:43:41 -0800</delta_ts>
            <desc>patch to land later</desc>
            <filename>ReuseExtensions.txt</filename>
            <type>text/plain</type>
            <size>11645</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTMwMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTA4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gcmV1c2Ugc2FuZGJveCBleHRlbnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMg
Q2FybHNzb24uCisKKyAgICAgICAgUmVwbGFjZWQgYXMgaW52YWxpZGF0ZSgpIGNhbGwgd2l0aCBy
ZXZva2UoKS4KKworICAgICAgICBXZSBubyBjb3VudCBob3cgbWFueSB0aW1lcyBjb25zdW1lKCkg
d2FzIGNhbGxlZCwgYW5kIGtlZXAgdGhlIGV4dGVuc2lvbiBhY3RpdmUKKyAgICAgICAgZm9yIGFz
IGxvbmcgYXMgcmV2b2tlKCkgaGFzbid0IGJlZW4gY2FsbGVkIGFzIG1hbnkgdGltZXMuIEFsc28s
IHdlIG9ubHkgcGVybWFuZW50bHkKKyAgICAgICAgZGVzdHJveSB0aGUgZXh0ZW5zaW9uIGluIGRl
c3RydWN0b3IuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgZm9yIHByb3Blcmx5IGtlZXBpbmcgZXh0
ZW5zaW9ucyBpbiBOZXR3b3JrQmxvYlJlZ2lzdHJ5IGZvciBhcyBsb25nIGFzCisgICAgICAgIHRo
ZXkgYXJlIG5lZWRlZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2NoZWR1bGFibGVMb2FkZXI6OmludmFsaWRhdGVT
YW5kYm94RXh0ZW5zaW9ucyk6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRD
YW5jZWwpOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgIChT
YW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6OnN0b3ApOgorICAgICAgICAqIFNo
YXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OnJldm9rZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6c2V0
UGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRDb21taXRQcm92aXNpb25hbExvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZCk6CisKIDIwMTMtMDMtMDggIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNDUyNTQsIHIxNDUyNjQsIGFuZCByMTQ1Mjg4LgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gMTQ1
MzAwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMCArOTgsMTAgQEAgdm9pZCBTY2hlZHVsYWJsZUxv
YWRlcjo6Y29uc3VtZVNhbmRib3hFeAogdm9pZCBTY2hlZHVsYWJsZUxvYWRlcjo6aW52YWxpZGF0
ZVNhbmRib3hFeHRlbnNpb25zKCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBt
X3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKLSAg
ICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2ldLT5pbnZhbGlkYXRlKCk7Cisg
ICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uc1tpXS0+cmV2b2tlKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBtX3Jlc291cmNlU2FuZGJveEV4dGVuc2lvbnMu
c2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgbV9yZXNvdXJjZVNhbmRib3hFeHRlbnNp
b25zW2ldLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9u
c1tpXS0+cmV2b2tlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAxNDUzMDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NSwxMCArOTUsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlSGFuZGxl
Rm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlLCBIYW5kbGUm
KTsKICAgICB+U2FuZGJveEV4dGVuc2lvbigpOwogCi0gICAgYm9vbCBpbnZhbGlkYXRlKCk7CiAg
ICAgYm9vbCBjb25zdW1lKCk7Ci0gICAgYm9vbCBjb25zdW1lUGVybWFuZW50bHkoKTsKKyAgICBi
b29sIHJldm9rZSgpOwogCisgICAgYm9vbCBjb25zdW1lUGVybWFuZW50bHkoKTsKICAgICBzdGF0
aWMgYm9vbCBjb25zdW1lUGVybWFuZW50bHkoY29uc3QgSGFuZGxlJik7CiAKIHByaXZhdGU6CkBA
IC0xMDYsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgIAogI2lmIEVO
QUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQogICAgIG11dGFibGUgV0tTYW5kYm94RXh0ZW5zaW9u
UmVmIG1fc2FuZGJveEV4dGVuc2lvbjsKKyAgICBzaXplX3QgbV91c2VDb3VudDsKICNlbmRpZgog
fTsKIApAQCAtMTI4LDcgKzEyOSw3IEBAIGlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmQKIGlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBIYW5kbGUmKSB7IH0KIGlubGluZSBTdHJp
bmcgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIC8qcHJlZml4Ki8sIFR5cGUsIEhhbmRsZSYpIHtyZXR1cm4gU3RyaW5nKCk7fQogaW5s
aW5lIFNhbmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0ZW5zaW9uKCkgeyB9Ci1pbmxpbmUgYm9v
bCBTYW5kYm94RXh0ZW5zaW9uOjppbnZhbGlkYXRlKCkgeyByZXR1cm4gdHJ1ZTsgfQoraW5saW5l
IGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6cmV2b2tlKCkgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5l
IGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSgpIHsgcmV0dXJuIHRydWU7IH0KIGlubGlu
ZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSgpIHsgcmV0dXJuIHRy
dWU7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShj
b25zdCBIYW5kbGUmKSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCShyZXZpc2lvbiAxNDUzMDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNywx
MCArMTA3LDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzdG9wKCkgCiAgICAgaWYgKG1fc3Rv
cFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fc3RvcFRpbWVyLnN0b3AoKTsKICAgICAKLSAg
ICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fc2FtcGxlTG9n
U2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX3NhbXBsZUxvZ1NhbmRi
b3hFeHRlbnNpb24gPSAwOwotICAgIH0gICAgCisgICAgbV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5z
aW9uID0gbnVsbHB0cjsKIH0KIAogYm9vbCBXZWJNZW1vcnlTYW1wbGVyOjppc1J1bm5pbmcoKSBj
b25zdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5j
cHAJKHJldmlzaW9uIDE0NTMwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
RG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsOCArMTM1LDcgQEAgdm9pZCBEb3du
bG9hZDo6ZGlkRmluaXNoKCkKIAogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRp
ZEZpbmlzaCgpKTsKIAotICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCi0gICAgICAgIG1fc2Fu
ZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IG51
bGxwdHI7CiAKICAgICBtX2Rvd25sb2FkTWFuYWdlci5kb3dubG9hZEZpbmlzaGVkKHRoaXMpOwog
fQpAQCAtMTQ1LDggKzE0NCw3IEBAIHZvaWQgRG93bmxvYWQ6OmRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnIKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRGYWlsKGVycm9y
LCByZXN1bWVEYXRhKSk7CiAKLSAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQotICAgICAgICBt
X3NhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24g
PSBudWxscHRyOwogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRvd25sb2FkRmluaXNoZWQodGhpcyk7
CiB9CiAKQEAgLTE1NCw4ICsxNTIsNyBAQCB2b2lkIERvd25sb2FkOjpkaWRDYW5jZWwoY29uc3Qg
Q29yZUlQQzo6CiB7CiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkQ2FuY2Vs
KHJlc3VtZURhdGEpKTsKIAotICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCi0gICAgICAgIG1f
c2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOworICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9
IG51bGxwdHI7CiAgICAgbV9kb3dubG9hZE1hbmFnZXIuZG93bmxvYWRGaW5pc2hlZCh0aGlzKTsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQkocmV2aXNpb24gMTQ1MzAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNiArMjYxLDcg
QEAgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcgogCiBTYW5kYm94RXh0
ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIDogbV9z
YW5kYm94RXh0ZW5zaW9uKGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pCisgICAgLCBtX3VzZUNv
dW50KDApCiB7CiAgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IDA7CiB9CkBAIC0yNzAs
MTcgKzI3MSwyMiBAQCBTYW5kYm94RXh0ZW5zaW9uOjp+U2FuZGJveEV4dGVuc2lvbigpCiAgICAg
aWYgKCFtX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLU2FuZGJv
eEV4dGVuc2lvbkludmFsaWRhdGUobV9zYW5kYm94RXh0ZW5zaW9uKTsKKyAgICBpZiAobV91c2VD
b3VudCkgeworICAgICAgICBBU1NFUlQobV91c2VDb3VudCA9PSAxKTsKKyAgICAgICAgV0tTYW5k
Ym94RXh0ZW5zaW9uSW52YWxpZGF0ZShtX3NhbmRib3hFeHRlbnNpb24pOworICAgIH0KICAgICBX
S1NhbmRib3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7CiB9CiAKLWJvb2wg
U2FuZGJveEV4dGVuc2lvbjo6aW52YWxpZGF0ZSgpCitib29sIFNhbmRib3hFeHRlbnNpb246OnJl
dm9rZSgpCiB7CiAgICAgQVNTRVJUKG1fc2FuZGJveEV4dGVuc2lvbik7CisgICAgQVNTRVJUKG1f
dXNlQ291bnQpOworICAgIAorICAgIGlmICgtLW1fdXNlQ291bnQpCisgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgYm9vbCByZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25JbnZhbGlkYXRlKG1f
c2FuZGJveEV4dGVuc2lvbik7Ci0gICAgV0tTYW5kYm94RXh0ZW5zaW9uRGVzdHJveShtX3NhbmRi
b3hFeHRlbnNpb24pOwotICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IDA7CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMjg5LDYgKzI5NSw5IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZSgpCiB7CiAgICAgQVNTRVJUKG1fc2FuZGJveEV4dGVuc2lvbik7CiAKKyAgICBpZiAobV91
c2VDb3VudCsrKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHJldHVybiBXS1NhbmRib3hF
eHRlbnNpb25Db25zdW1lKG1fc2FuZGJveEV4dGVuc2lvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE0NTMw
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU2MywxMyArMjU2Myw4IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW8KICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5wZXJm
b3JtRHJhZygmZHJhZ0RhdGEpOwogCiAgICAgICAgIC8vIElmIHdlIHN0YXJ0ZWQgbG9hZGluZyBh
IGxvY2FsIGZpbGUsIHRoZSBzYW5kYm94IGV4dGVuc2lvbiB0cmFja2VyIHdvdWxkIGhhdmUgYWRv
cHRlZCB0aGlzCi0gICAgICAgIC8vIHBlbmRpbmcgZHJvcCBzYW5kYm94IGV4dGVuc2lvbi4gSWYg
bm90LCB3ZSdsbCBwbGF5IGl0IHNhZmUgYW5kIGludmFsaWRhdGUgaXQuCi0gICAgICAgIGlmICht
X3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbikgewotICAgICAgICAgICAgbV9wZW5kaW5nRHJv
cFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsKLSAgICAgICAgICAgIG1fcGVuZGluZ0Ry
b3BTYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5zaXpl
KCk7IGkrKykKLSAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9h
ZFtpXS0+aW52YWxpZGF0ZSgpOworICAgICAgICAvLyBwZW5kaW5nIGRyb3Agc2FuZGJveCBleHRl
bnNpb24uIElmIG5vdCwgd2UnbGwgcGxheSBpdCBzYWZlIGFuZCBkZXN0cm95IGl0LgorICAgICAg
ICBtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAKICAgICAgICAgbV9w
ZW5kaW5nRHJvcEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkLmNsZWFyKCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMzA4NSwyMCArMzA4MCw5IEBAIFdlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2Vy
Ojp+U2FuZGIKIAogdm9pZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6aW52YWxp
ZGF0ZSgpCiB7Ci0gICAgaWYgKG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbikg
ewotICAgICAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRh
dGUoKTsKLSAgICAgICAgbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gMDsK
LSAgICB9Ci0KLSAgICBpZiAobV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24pIHsKLSAgICAg
ICAgbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsKLSAgICAgICAg
bV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSAwOwotICAgIH0KLQotICAgIGlmIChtX2Nv
bW1pdHRlZFNhbmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgbV9jb21taXR0ZWRTYW5kYm94RXh0
ZW5zaW9uLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lv
biA9IDA7Ci0gICAgfQorICAgIG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9
IG51bGxwdHI7CisgICAgbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwor
ICAgIG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OndpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5h
dGlvbkFjdGlvbihQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHBlbmRpbmdEcm9wU2FuZGJv
eEV4dGVuc2lvbikKQEAgLTMxMTUsMTQgKzMwOTksNyBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hF
eHRlbnNpb25UcmFja2VyOjpiCiAKIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNr
ZXI6OnNldFBlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24oUGFzc1JlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiBwZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKQogewotICAg
IC8vIElmIHdlIGdldCB0d28gYmVnaW5Mb2FkIGNhbGxzIGluIHN1Y2Nlc3Npb24sIHdpdGhvdXQg
YSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0aW5nLCB0aGVuCi0gICAgLy8gbV9wZW5kaW5nUHJvdmlz
aW9uYWxTYW5kYm94RXh0ZW5zaW9uIHdpbGwgYmUgbm9uLW51bGwuIEludmFsaWRhdGUgYW5kIG51
bGwgb3V0IHRoZSBleHRlbnNpb24gaWYgdGhhdCBpcyB0aGUgY2FzZS4KLSAgICBpZiAobV9wZW5k
aW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fcGVuZGluZ1Byb3Zp
c2lvbmFsU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX3BlbmRpbmdQ
cm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICBt
X3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBwZW5kaW5nUHJvdmlzaW9uYWxT
YW5kYm94RXh0ZW5zaW9uOyAgICAKKyAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRl
bnNpb24gPSBwZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uOwogfQogCiBzdGF0aWMg
Ym9vbCBzaG91bGRSZXVzZUNvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24oV2ViRnJhbWUqIGZyYW1l
KQpAQCAtMzE3NSwxNSArMzE1Miw3IEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRy
YWNrZXI6OmQKIAogICAgIC8vIEdlbmVyYWxseSwgdGhlcmUgc2hvdWxkIGJlIG5vIHBlbmRpbmcg
ZXh0ZW5zaW9uIGF0IHRoaXMgc3RhZ2UsIGJ1dCB3ZSBjYW4gaGF2ZSBvbmUgaWYgVUkgcHJvY2Vz
cwogICAgIC8vIGhhcyBhbiBvdXQgb2YgZGF0ZSBpZGVhIG9mIFdlYlByb2Nlc3Mgc3RhdGUsIGFu
ZCBpbml0aWF0ZXMgYSBsb2FkIG9yIHJlbG9hZCB3aXRob3V0IHN0b3BwaW5nIGFuIGV4aXN0aW5n
IG9uZS4KLSAgICBpZiAobV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKSB7Ci0g
ICAgICAgIG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgp
OwotICAgICAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRy
OwotICAgIH0KLQotICAgIC8vIFRoZSBwcm92aXNpb25hbCBsb2FkIGhhcyBiZWVuIGNvbW1pdHRl
ZC4gSW52YWxpZGF0ZSB0aGUgY3VycmVudGx5IGNvbW1pdHRlZCBzYW5kYm94Ci0gICAgLy8gZXh0
ZW5zaW9uIGFuZCBtYWtlIHRoZSBwcm92aXNpb25hbCBzYW5kYm94IGV4dGVuc2lvbiB0aGUgY29t
bWl0dGVkIHNhbmRib3ggZXh0ZW5zaW9uLgotICAgIGlmIChtX2NvbW1pdHRlZFNhbmRib3hFeHRl
bnNpb24pCi0gICAgICAgIG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgp
OworICAgIG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAK
ICAgICBtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24gPSBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4
dGVuc2lvbi5yZWxlYXNlKCk7CiB9CkBAIC0zMTk1LDE1ICszMTY0LDggQEAgdm9pZCBXZWJQYWdl
OjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6ZAogCiAgICAgLy8gR2VuZXJhbGx5LCB0aGVyZSBz
aG91bGQgYmUgbm8gcGVuZGluZyBleHRlbnNpb24gYXQgdGhpcyBzdGFnZSwgYnV0IHdlIGNhbiBo
YXZlIG9uZSBpZiBVSSBwcm9jZXNzCiAgICAgLy8gaGFzIGFuIG91dCBvZiBkYXRlIGlkZWEgb2Yg
V2ViUHJvY2VzcyBzdGF0ZSwgYW5kIGluaXRpYXRlcyBhIGxvYWQgb3IgcmVsb2FkIHdpdGhvdXQg
c3RvcHBpbmcgYW4gZXhpc3Rpbmcgb25lLgotICAgIGlmIChtX3BlbmRpbmdQcm92aXNpb25hbFNh
bmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgbV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0
ZW5zaW9uLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJv
eEV4dGVuc2lvbiA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgaWYgKCFtX3Byb3Zpc2lvbmFsU2Fu
ZGJveEV4dGVuc2lvbikKLSAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ1Byb3Zpc2lvbmFs
U2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAKLSAgICBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4
dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwogICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9u
ID0gbnVsbHB0cjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192346</attachid>
            <date>2013-03-09 10:43:41 -0800</date>
            <delta_ts>2013-03-11 08:54:06 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>ReuseExtensions.txt</filename>
            <type>text/plain</type>
            <size>13837</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTMxOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAzLTA5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gcmV1c2Ugc2FuZGJveCBleHRlbnNpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGFsbG93cyBmb3IgcHJvcGVybHkga2VlcGluZyBleHRl
bnNpb25zIGluIE5ldHdvcmtCbG9iUmVnaXN0cnkgZm9yIGFzIGxvbmcgYXMKKyAgICAgICAgdGhl
eSBhcmUgbmVlZGVkLgorCisgICAgICAgIFRoZSBwYXRjaCBhbHNvIGZpeGVzIGEgYnVnIHdoZXJl
IGV4dGVuc2lvbnMgd291bGQgbGVhayB3aGVuIG5hdmlnYXRpbmcgYmV0d2VlbgorICAgICAgICBm
aWxlOi8vIHBhZ2VzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICBSZXZva2UgdGhlIGV4dGVuc2lvbnMsIGJ1dCBkb24ndCBpbnZhbGlk
YXRlIC0gd2UgbWF5IG5lZWQgdGhlbSBsYXRlci4KKworICAgICAgICAqIFNoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkRmluaXNoKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgUmVwbGFjZWQgaW52YWxpZGF0ZSgpIHdpdGgg
cmV2b2tlKCkgYW5kIGNsZWFyaW5nIG91dC4gU2FuZGJveEV4dGVuc2lvbiBkZXN0cnVjdG9yCisg
ICAgICAgIG5vdyByZXF1aXJlcyByZXZvY2F0aW9ucyB3dG8gYmUgYmFsYW5jZWQsIGFzIG90aGVy
d2lzZSB1bmRlcnN0YW5kaW5nIGR1YWwgcmVmZXJlbmNlCisgICAgICAgIGNvdW50aW5nIGluIFNh
bmRib3hFeHRlbnNpb24gd291bGQgYmUgdG9vIGRpZmZpY3VsdC4KKworICAgICAgICAqIFNoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmg6IFdlIG5vdyBrZWVwIHRyYWNrIG9mIGhvdyBtYW55IHRpbWVz
IHRoZSBleHRlbnNpb24KKyAgICAgICAgd2FzIGNvbnN1bWVkLiBFdmVudHVhbGx5LCB3ZSBzaG91
bGQgcmVmYWN0b3IgdGhlIGNsYXNzIHRvIG5vdCBoYXZlIHN1Y2ggZHVwbGljYXRlCisgICAgICAg
IHJlZmVyZW5jZSBjb3VudGluZy4KKyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNp
b25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRl
bnNpb24pOiBJbml0aWFsaXplIHVzZSBjb3VudC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24pOiBXZSBub3cgcmVxdWlyZSBjb25zdW1lL3Jldm9r
ZSBjYWxscworICAgICAgICB0byBiZSBiYWxhbmNlZC4gVGhpcyBpcyBub3QgaGFyZCB0byBkbyBp
biBleGlzdGluZyB1c2FnZSwgYW5kIG1ha2VzIHRoZSBkZXNpZ24gbXVjaAorICAgICAgICBtb3Jl
IHJlbGlhYmxlLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UpOiBE
b24ndCBwZXJtYW5lbnRseSBkZXN0cm95IHRoZSBleHRlbnNpb24gd2hlbgorICAgICAgICBpbnZh
bGlkYXRpZCwgd2UgbWF5IG5lZWQgaXQgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSk6IEFkZGVkIHVzZSBjb3VudGluZy4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDogKFdlYktpdDo6V2ViTWVtb3J5U2FtcGxl
cjo6c3RvcCk6IFRoaXMgZXh0ZW5zaW9uCisgICAgICAgIGlzIG5vdCBnb2luZyB0byBiZSByZXVz
ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6IFBlbmRpbmcg
ZXh0ZW5zaW9ucyBhcmUgbm90IGNvbnN1bWVkLAorICAgICAgICBzbyB0aGVyZSBpcyBubyBuZWVk
IHRvIHJldm9rZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRy
YWNrZXI6OmludmFsaWRhdGUpOiBQZW5kaW5nIGV4dGVuc2lvbiBpcyBub3QKKyAgICAgICAgY29u
c3VtZWQsIGFuZCB0aGUgb3RoZXIgdHdvIGFsd2F5cyBhcmUuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpzZXRQZW5kaW5nUHJvdmlzaW9uYWxTYW5k
Ym94RXh0ZW5zaW9uKToKKyAgICAgICAgUGVuZGluZyBleHRlbnNpb24gaXMgbmV2ZXIgY29uc3Vt
ZWQgaW4gcGxhY2UsIG5vIG5lZWQgdG8gcmV2b2tlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOiBEbyBu
b3QgdW5zZXQKKyAgICAgICAgcmV1c2VkIGNvbW1pdHRlZCBleHRlbnNpb24geWV0IC0gd2UgbWF5
IG5lZWQgaXQgbGF0ZXIgaWYgcHJvdmlzaW9uYWwgbG9hZCBmYWlscy4KKyAgICAgICAgVGhhbmtz
IHRvIHVzZSBjb3VudGluZywgd2UgY2FuIG5vdyBjb25zdW1lIHRoZSBzYW1lIGV4dGVuc2lvbiBh
cyBib3RoIGNvbW1pdHRlZAorICAgICAgICBhbmQgcHJvdmlzaW9uYWwuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRDb21taXRQcm92aXNpb25h
bExvYWQpOiBOb3cgdGhlCisgICAgICAgIGNvbW1pdHRlZCBleHRlbnNpb24gY2FuIGJlIHJldm9r
ZWQgYW5kIHJlcGxhY2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpTYW5kYm94RXh0ZW5z
aW9uVHJhY2tlcjo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6IEp1c3QgcmV2b2tlCisgICAgICAg
IHByb3Zpc2lvbmFsIGV4dGVuc2lvbiwgY29tbWl0dGVkIG9uZSBpcyBzdGlsbCBpbiBwbGFjZS4K
KwogMjAxMy0wMy0wOSAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXVtXSzJdIEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIG1pc3NpbmctZmll
bGQtaW5pdGlhbGl6ZXJzIGluIHdlYmtpdC0yLjAgc3RhYmxlIGJyYW5jaApJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmNwcAko
cmV2aXNpb24gMTQ1MzAwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU2NoZWR1
bGFibGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMCArOTgsMTAgQEAgdm9pZCBT
Y2hlZHVsYWJsZUxvYWRlcjo6Y29uc3VtZVNhbmRib3hFeAogdm9pZCBTY2hlZHVsYWJsZUxvYWRl
cjo6aW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0g
MCwgY291bnQgPSBtX3JlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuc2l6ZSgpOyBpIDwgY291
bnQ7ICsraSkKLSAgICAgICAgbV9yZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zW2ldLT5pbnZh
bGlkYXRlKCk7CisgICAgICAgIG1fcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uc1tpXS0+cmV2
b2tlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBtX3Jlc291cmNlU2FuZGJv
eEV4dGVuc2lvbnMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgbV9yZXNvdXJjZVNh
bmRib3hFeHRlbnNpb25zW2ldLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fcmVzb3VyY2VTYW5k
Ym94RXh0ZW5zaW9uc1tpXS0+cmV2b2tlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAx
NDUzMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSwxMCArOTUsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0
eXBlLCBIYW5kbGUmKTsKICAgICB+U2FuZGJveEV4dGVuc2lvbigpOwogCi0gICAgYm9vbCBpbnZh
bGlkYXRlKCk7CiAgICAgYm9vbCBjb25zdW1lKCk7Ci0gICAgYm9vbCBjb25zdW1lUGVybWFuZW50
bHkoKTsKKyAgICBib29sIHJldm9rZSgpOwogCisgICAgYm9vbCBjb25zdW1lUGVybWFuZW50bHko
KTsKICAgICBzdGF0aWMgYm9vbCBjb25zdW1lUGVybWFuZW50bHkoY29uc3QgSGFuZGxlJik7CiAK
IHByaXZhdGU6CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgCiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCiAgICAgbXV0YWJsZSBXS1Nh
bmRib3hFeHRlbnNpb25SZWYgbV9zYW5kYm94RXh0ZW5zaW9uOworICAgIHNpemVfdCBtX3VzZUNv
dW50OwogI2VuZGlmCiB9OwogCi0KICNpZiAhRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCiBp
bmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpIYW5kbGUoKSB7IH0KIGlubGluZSBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKSB7IH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBp
bmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kCiBpbmxpbmUgdm9pZCBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiwgSGFuZGxlJikgeyB9CiBpbmxpbmUgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiAvKnByZWZpeCovLCBUeXBlLCBI
YW5kbGUmKSB7cmV0dXJuIFN0cmluZygpO30KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjp+U2Fu
ZGJveEV4dGVuc2lvbigpIHsgfQotaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6aW52YWxp
ZGF0ZSgpIHsgcmV0dXJuIHRydWU7IH0KK2lubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OnJl
dm9rZSgpIHsgcmV0dXJuIHRydWU7IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWUoKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkoKSB7IHJldHVybiB0cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94
RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgSGFuZGxlJikgeyByZXR1cm4gdHJ1
ZTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAko
cmV2aXNpb24gMTQ1MzAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1lbW9yeVNhbXBs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOCArMTA4LDggQEAgdm9pZCBXZWJNZW1vcnlT
YW1wbGVyOjpzdG9wKCkgCiAgICAgICAgIG1fc3RvcFRpbWVyLnN0b3AoKTsKICAgICAKICAgICBp
ZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fc2FtcGxlTG9nU2Fu
ZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX3NhbXBsZUxvZ1NhbmRib3hF
eHRlbnNpb24gPSAwOworICAgICAgICBtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24tPnJldm9r
ZSgpOworICAgICAgICBtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogICAg
IH0gICAgCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93
bmxvYWQuY3BwCShyZXZpc2lvbiAxNDUzMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDggKzEzNSwxMCBAQCB2
b2lkIERvd25sb2FkOjpkaWRGaW5pc2goKQogCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQ
cm94eTo6RGlkRmluaXNoKCkpOwogCi0gICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKLSAgICAg
ICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1fc2FuZGJveEV4
dGVuc2lvbikgeworICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPnJldm9rZSgpOworICAgICAg
ICBtX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOworICAgIH0KIAogICAgIG1fZG93bmxvYWRN
YW5hZ2VyLmRvd25sb2FkRmluaXNoZWQodGhpcyk7CiB9CkBAIC0xNDUsOCArMTQ3LDEwIEBAIHZv
aWQgRG93bmxvYWQ6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnIKIHsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjpEaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhKSk7CiAKLSAgICBp
ZiAobV9zYW5kYm94RXh0ZW5zaW9uKQotICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmludmFs
aWRhdGUoKTsKKyAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKSB7CisgICAgICAgIG1fc2FuZGJv
eEV4dGVuc2lvbi0+cmV2b2tlKCk7CisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IG51bGxw
dHI7CisgICAgfQogICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRvd25sb2FkRmluaXNoZWQodGhpcyk7
CiB9CiAKQEAgLTE1NCw4ICsxNTgsMTAgQEAgdm9pZCBEb3dubG9hZDo6ZGlkQ2FuY2VsKGNvbnN0
IENvcmVJUEM6OgogewogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZENhbmNl
bChyZXN1bWVEYXRhKSk7CiAKLSAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQotICAgICAgICBt
X3NhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9zYW5kYm94RXh0ZW5z
aW9uKSB7CisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7CisgICAgICAgIG1f
c2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CisgICAgfQogICAgIG1fZG93bmxvYWRNYW5hZ2Vy
LmRvd25sb2FkRmluaXNoZWQodGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0JKHJldmlzaW9uIDE0NTMwMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYxLDYgKzI2MSw3IEBAIFN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3IKIAogU2FuZGJveEV4dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvbihjb25zdCBI
YW5kbGUmIGhhbmRsZSkKICAgICA6IG1fc2FuZGJveEV4dGVuc2lvbihoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uKQorICAgICwgbV91c2VDb3VudCgwKQogewogICAgIGhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24gPSAwOwogfQpAQCAtMjcwLDI1ICsyNzEsMjggQEAgU2FuZGJveEV4dGVuc2lvbjo6
flNhbmRib3hFeHRlbnNpb24oKQogICAgIGlmICghbV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXS1NhbmRib3hFeHRlbnNpb25JbnZhbGlkYXRlKG1fc2FuZGJveEV4
dGVuc2lvbik7CisgICAgQVNTRVJUKCFtX3VzZUNvdW50KTsKICAgICBXS1NhbmRib3hFeHRlbnNp
b25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7CiB9CiAKLWJvb2wgU2FuZGJveEV4dGVuc2lv
bjo6aW52YWxpZGF0ZSgpCitib29sIFNhbmRib3hFeHRlbnNpb246OnJldm9rZSgpCiB7CiAgICAg
QVNTRVJUKG1fc2FuZGJveEV4dGVuc2lvbik7CisgICAgQVNTRVJUKG1fdXNlQ291bnQpOworICAg
IAorICAgIGlmICgtLW1fdXNlQ291bnQpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYm9v
bCByZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25JbnZhbGlkYXRlKG1fc2FuZGJveEV4dGVuc2lv
bik7Ci0gICAgV0tTYW5kYm94RXh0ZW5zaW9uRGVzdHJveShtX3NhbmRib3hFeHRlbnNpb24pOwot
ICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IDA7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiBXS1NhbmRib3hFeHRlbnNpb25JbnZhbGlkYXRlKG1fc2FuZGJveEV4dGVuc2lvbik7CiB9
CiAKIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSgpCiB7CiAgICAgQVNTRVJUKG1fc2Fu
ZGJveEV4dGVuc2lvbik7CiAKKyAgICBpZiAobV91c2VDb3VudCsrKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKwogICAgIHJldHVybiBXS1NhbmRib3hFeHRlbnNpb25Db25zdW1lKG1fc2FuZGJveEV4
dGVuc2lvbik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE0NTMwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2MywxMyArMjU2
Myw4IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW8KICAgICAgICAg
bV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEpOwogCiAgICAg
ICAgIC8vIElmIHdlIHN0YXJ0ZWQgbG9hZGluZyBhIGxvY2FsIGZpbGUsIHRoZSBzYW5kYm94IGV4
dGVuc2lvbiB0cmFja2VyIHdvdWxkIGhhdmUgYWRvcHRlZCB0aGlzCi0gICAgICAgIC8vIHBlbmRp
bmcgZHJvcCBzYW5kYm94IGV4dGVuc2lvbi4gSWYgbm90LCB3ZSdsbCBwbGF5IGl0IHNhZmUgYW5k
IGludmFsaWRhdGUgaXQuCi0gICAgICAgIGlmIChtX3BlbmRpbmdEcm9wU2FuZGJveEV4dGVuc2lv
bikgewotICAgICAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRh
dGUoKTsKLSAgICAgICAgICAgIG1fcGVuZGluZ0Ryb3BTYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0
cjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ0Ry
b3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZC5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIG1fcGVu
ZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVwbG9hZFtpXS0+aW52YWxpZGF0ZSgpOworICAgICAg
ICAvLyBwZW5kaW5nIGRyb3Agc2FuZGJveCBleHRlbnNpb24uIElmIG5vdCwgd2UnbGwgcGxheSBp
dCBzYWZlIGFuZCBjbGVhciBpdC4KKyAgICAgICAgbV9wZW5kaW5nRHJvcFNhbmRib3hFeHRlbnNp
b24gPSBudWxscHRyOwogCiAgICAgICAgIG1fcGVuZGluZ0Ryb3BFeHRlbnNpb25zRm9yRmlsZVVw
bG9hZC5jbGVhcigpOwogICAgICAgICBicmVhazsKQEAgLTMwODUsMTkgKzMwODAsMTYgQEAgV2Vi
UGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6On5TYW5kYgogCiB2b2lkIFdlYlBhZ2U6OlNh
bmRib3hFeHRlbnNpb25UcmFja2VyOjppbnZhbGlkYXRlKCkKIHsKLSAgICBpZiAobV9wZW5kaW5n
UHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fcGVuZGluZ1Byb3Zpc2lv
bmFsU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX3BlbmRpbmdQcm92
aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSAwOwotICAgIH0KKyAgICBtX3BlbmRpbmdQcm92aXNp
b25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxT
YW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9u
LT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0g
MDsKKyAgICAgICAgbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24tPnJldm9rZSgpOworICAg
ICAgICBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgaWYgKG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbikgewotICAgICAgICBtX2NvbW1pdHRl
ZFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9jb21taXR0ZWRTYW5k
Ym94RXh0ZW5zaW9uID0gMDsKKyAgICAgICAgbV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uLT5y
ZXZva2UoKTsKKyAgICAgICAgbV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsK
ICAgICB9CiB9CiAKQEAgLTMxMTUsMTMgKzMxMDcsNiBAQCB2b2lkIFdlYlBhZ2U6OlNhbmRib3hF
eHRlbnNpb25UcmFja2VyOjpiCiAKIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNr
ZXI6OnNldFBlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24oUGFzc1JlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiBwZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKQogewotICAg
IC8vIElmIHdlIGdldCB0d28gYmVnaW5Mb2FkIGNhbGxzIGluIHN1Y2Nlc3Npb24sIHdpdGhvdXQg
YSBwcm92aXNpb25hbCBsb2FkIHN0YXJ0aW5nLCB0aGVuCi0gICAgLy8gbV9wZW5kaW5nUHJvdmlz
aW9uYWxTYW5kYm94RXh0ZW5zaW9uIHdpbGwgYmUgbm9uLW51bGwuIEludmFsaWRhdGUgYW5kIG51
bGwgb3V0IHRoZSBleHRlbnNpb24gaWYgdGhhdCBpcyB0aGUgY2FzZS4KLSAgICBpZiAobV9wZW5k
aW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fcGVuZGluZ1Byb3Zp
c2lvbmFsU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAgICBtX3BlbmRpbmdQ
cm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwotICAgIH0KLSAgICAKICAgICBt
X3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBwZW5kaW5nUHJvdmlzaW9uYWxT
YW5kYm94RXh0ZW5zaW9uOyAgICAKIH0KIApAQCAtMzE1NCwxMCArMzEzOSw4IEBAIHZvaWQgV2Vi
UGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmQKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5
IHJldXNlIHRoZSBjb21taXRlZCBzYW5kYm94IGV4dGVuc2lvbiBpZiBpdCBpcyBub3QgbnVsbC4g
SXQgY2FuIGJlCiAgICAgLy8gbnVsbCBpZiB0aGUgbGFzdCBsb2FkIHdhcyBmb3IgYW4gZXJyb3Ig
cGFnZS4KLSAgICBpZiAobV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uICYmIHNob3VsZFJldXNl
Q29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbihmcmFtZSkpIHsKLSAgICAgICAgbV9wZW5kaW5nUHJv
dmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uID0gbV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uLnJl
bGVhc2UoKTsKLSAgICAgICAgQVNTRVJUKCFtX2NvbW1pdHRlZFNhbmRib3hFeHRlbnNpb24pOwot
ICAgIH0KKyAgICBpZiAobV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uICYmIHNob3VsZFJldXNl
Q29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbihmcmFtZSkpCisgICAgICAgIG1fcGVuZGluZ1Byb3Zp
c2lvbmFsU2FuZGJveEV4dGVuc2lvbiA9IG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbjsKIAog
ICAgIEFTU0VSVCghbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24pOwogCkBAIC0zMTc1LDE1
ICszMTU4LDEwIEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNrZXI6OmQKIAog
ICAgIC8vIEdlbmVyYWxseSwgdGhlcmUgc2hvdWxkIGJlIG5vIHBlbmRpbmcgZXh0ZW5zaW9uIGF0
IHRoaXMgc3RhZ2UsIGJ1dCB3ZSBjYW4gaGF2ZSBvbmUgaWYgVUkgcHJvY2VzcwogICAgIC8vIGhh
cyBhbiBvdXQgb2YgZGF0ZSBpZGVhIG9mIFdlYlByb2Nlc3Mgc3RhdGUsIGFuZCBpbml0aWF0ZXMg
YSBsb2FkIG9yIHJlbG9hZCB3aXRob3V0IHN0b3BwaW5nIGFuIGV4aXN0aW5nIG9uZS4KLSAgICBp
ZiAobV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1fcGVu
ZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwotICAgICAgICBt
X3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwotICAgIH0KKyAg
ICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogCi0gICAg
Ly8gVGhlIHByb3Zpc2lvbmFsIGxvYWQgaGFzIGJlZW4gY29tbWl0dGVkLiBJbnZhbGlkYXRlIHRo
ZSBjdXJyZW50bHkgY29tbWl0dGVkIHNhbmRib3gKLSAgICAvLyBleHRlbnNpb24gYW5kIG1ha2Ug
dGhlIHByb3Zpc2lvbmFsIHNhbmRib3ggZXh0ZW5zaW9uIHRoZSBjb21taXR0ZWQgc2FuZGJveCBl
eHRlbnNpb24uCiAgICAgaWYgKG1fY29tbWl0dGVkU2FuZGJveEV4dGVuc2lvbikKLSAgICAgICAg
bV9jb21taXR0ZWRTYW5kYm94RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fY29t
bWl0dGVkU2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7CiAKICAgICBtX2NvbW1pdHRlZFNhbmRi
b3hFeHRlbnNpb24gPSBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbi5yZWxlYXNlKCk7CiB9
CkBAIC0zMTk1LDE1ICszMTczLDEyIEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRy
YWNrZXI6OmQKIAogICAgIC8vIEdlbmVyYWxseSwgdGhlcmUgc2hvdWxkIGJlIG5vIHBlbmRpbmcg
ZXh0ZW5zaW9uIGF0IHRoaXMgc3RhZ2UsIGJ1dCB3ZSBjYW4gaGF2ZSBvbmUgaWYgVUkgcHJvY2Vz
cwogICAgIC8vIGhhcyBhbiBvdXQgb2YgZGF0ZSBpZGVhIG9mIFdlYlByb2Nlc3Mgc3RhdGUsIGFu
ZCBpbml0aWF0ZXMgYSBsb2FkIG9yIHJlbG9hZCB3aXRob3V0IHN0b3BwaW5nIGFuIGV4aXN0aW5n
IG9uZS4KLSAgICBpZiAobV9wZW5kaW5nUHJvdmlzaW9uYWxTYW5kYm94RXh0ZW5zaW9uKSB7Ci0g
ICAgICAgIG1fcGVuZGluZ1Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgp
OwotICAgICAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRy
OwotICAgIH0KKyAgICBtX3BlbmRpbmdQcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxs
cHRyOwogCiAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUo
KTsKKyAgICBtX3Byb3Zpc2lvbmFsU2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7CiAgICAgbV9w
cm92aXNpb25hbFNhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>