<?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>108951</bug_id>
          
          <creation_ts>2013-02-05 09:31:39 -0800</creation_ts>
          <short_desc>[BlackBerry] Fix flicker on page load transitions</short_desc>
          <delta_ts>2013-02-07 08:59:57 -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>WebKit BlackBerry</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>http://mobile.theverge.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Jakob Petsovits">jpetsovits</assigned_to>
          <cc>anilsson</cc>
    
    <cc>anlo</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>825553</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-05 09:31:39 -0800</bug_when>
    <thetext>The main idea for this patch is that whenever we adopt a new backingstore geometry that doesn&apos;t contain any rendered tiles, or VisibleZoom render jobs that need more tiles to be rendered to be considered complete, we&apos;ll then suspend blitting until there is valid content to show.

This main idea is codified as checks for empty buffers in adoptAsFrontState(), and checks for the current state of the render queue after rendering content in render(). However, as BackingStore objects with disabled surface pools or pure use of accelerated compositing also swap geometries in some circumstances, the use of suspend counters grows increasingly fragile.

To make this patch more resilient against regressions, the current suspend counter is complemented with several explicit conditions for suspending screen updates, and both subsequently combined into a single cached boolean value telling the UI thread whether or not to suspend. In the future, other suspend calls can be migrated to this &quot;state machine&quot; design as well, potentially phasing out the suspend counter altogether.

The immediate result is that there will be no flashing of background color between page loads or after discarding tiles on scale changes until the content has been rendered.

See patch below, with its commit message reused for the bug description above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825560</commentid>
    <comment_count>1</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-05 09:34:46 -0800</bug_when>
    <thetext>Err, [BlackBerry] prefix for the bug. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825730</commentid>
    <comment_count>2</comment_count>
      <attachid>186681</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-05 12:56:18 -0800</bug_when>
    <thetext>Created attachment 186681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827425</commentid>
    <comment_count>3</comment_count>
      <attachid>186681</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-02-07 06:16:11 -0800</bug_when>
    <thetext>Comment on attachment 186681
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827508</commentid>
    <comment_count>4</comment_count>
      <attachid>187109</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-07 07:41:26 -0800</bug_when>
    <thetext>Created attachment 187109
Patch, with Arvid added as internal reviewer

Only changed the hunk in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827523</commentid>
    <comment_count>5</comment_count>
      <attachid>187109</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-02-07 07:58:08 -0800</bug_when>
    <thetext>Comment on attachment 187109
Patch, with Arvid added as internal reviewer

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827588</commentid>
    <comment_count>6</comment_count>
      <attachid>187109</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 08:59:54 -0800</bug_when>
    <thetext>Comment on attachment 187109
Patch, with Arvid added as internal reviewer

Clearing flags on attachment: 187109

Committed r142137: &lt;http://trac.webkit.org/changeset/142137&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827589</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 08:59:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186681</attachid>
            <date>2013-02-05 12:56:18 -0800</date>
            <delta_ts>2013-02-07 07:41:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108951-20130205155247.patch</filename>
            <type>text/plain</type>
            <size>16920</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4NmEyYjZiMjE0ZDc5MDUyZmQ3NzBkNjA5OTJkZGE0NGIxYzdhNTM5Li44MmIyNzVlNTUz
OTEwM2I1NzJlNGY0NjQ5YTk2MDZjM2RkYzY3NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMy0wMi0wNSAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBGaXggYWxsIGZsaWNrZXIg
Y2F1c2VkIGJ5IGVtcHR5L2luY29tcGxldGUgZ2VvbWV0cmllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODk1MQorICAgICAgICBQUiAyODY5MjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgbWFp
biBpZGVhIGZvciB0aGlzIHBhdGNoIGlzIHRoYXQgd2hlbmV2ZXIgd2UgYWRvcHQKKyAgICAgICAg
YSBuZXcgYmFja2luZ3N0b3JlIGdlb21ldHJ5IHRoYXQgZG9lc24ndCBjb250YWluIGFueQorICAg
ICAgICByZW5kZXJlZCB0aWxlcywgb3IgVmlzaWJsZVpvb20gcmVuZGVyIGpvYnMgdGhhdCBuZWVk
IG1vcmUKKyAgICAgICAgdGlsZXMgdG8gYmUgcmVuZGVyZWQgdG8gYmUgY29uc2lkZXJlZCBjb21w
bGV0ZSwgd2UnbGwgdGhlbgorICAgICAgICBzdXNwZW5kIGJsaXR0aW5nIHVudGlsIHRoZXJlIGlz
IHZhbGlkIGNvbnRlbnQgdG8gc2hvdy4KKworICAgICAgICBUaGlzIG1haW4gaWRlYSBpcyBjb2Rp
ZmllZCBhcyBjaGVja3MgZm9yIGVtcHR5IGJ1ZmZlcnMKKyAgICAgICAgaW4gYWRvcHRBc0Zyb250
U3RhdGUoKSwgYW5kIGNoZWNrcyBmb3IgdGhlIGN1cnJlbnQgc3RhdGUKKyAgICAgICAgb2YgdGhl
IHJlbmRlciBxdWV1ZSBhZnRlciByZW5kZXJpbmcgY29udGVudCBpbiByZW5kZXIoKS4KKyAgICAg
ICAgSG93ZXZlciwgYXMgQmFja2luZ1N0b3JlIG9iamVjdHMgd2l0aCBkaXNhYmxlZCBzdXJmYWNl
IHBvb2xzCisgICAgICAgIG9yIHB1cmUgdXNlIG9mIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGFs
c28gc3dhcCBnZW9tZXRyaWVzCisgICAgICAgIGluIHNvbWUgY2lyY3Vtc3RhbmNlcywgdGhlIHVz
ZSBvZiBzdXNwZW5kIGNvdW50ZXJzIGdyb3dzCisgICAgICAgIGluY3JlYXNpbmdseSBmcmFnaWxl
LgorCisgICAgICAgIFRvIG1ha2UgdGhpcyBwYXRjaCBtb3JlIHJlc2lsaWVudCBhZ2FpbnN0IHJl
Z3Jlc3Npb25zLAorICAgICAgICB0aGUgY3VycmVudCBzdXNwZW5kIGNvdW50ZXIgaXMgY29tcGxl
bWVudGVkIHdpdGggc2V2ZXJhbAorICAgICAgICBleHBsaWNpdCBjb25kaXRpb25zIGZvciBzdXNw
ZW5kaW5nIHNjcmVlbiB1cGRhdGVzLAorICAgICAgICBhbmQgYm90aCBzdWJzZXF1ZW50bHkgY29t
YmluZWQgaW50byBhIHNpbmdsZSBjYWNoZWQKKyAgICAgICAgYm9vbGVhbiB2YWx1ZSB0ZWxsaW5n
IHRoZSBVSSB0aHJlYWQgd2hldGhlciBvciBub3QgdG8KKyAgICAgICAgc3VzcGVuZC4gSW4gdGhl
IGZ1dHVyZSwgb3RoZXIgc3VzcGVuZCBjYWxscyBjYW4gYmUKKyAgICAgICAgbWlncmF0ZWQgdG8g
dGhpcyAic3RhdGUgbWFjaGluZSIgZGVzaWduIGFzIHdlbGwsCisgICAgICAgIHBvdGVudGlhbGx5
IHBoYXNpbmcgb3V0IHRoZSBzdXNwZW5kIGNvdW50ZXIgYWx0b2dldGhlci4KKworICAgICAgICBU
aGUgaW1tZWRpYXRlIHJlc3VsdCBpcyB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gZmxhc2hpbmcKKyAg
ICAgICAgb2YgYmFja2dyb3VuZCBjb2xvciBiZXR3ZWVuIHBhZ2UgbG9hZHMgb3IgYWZ0ZXIgZGlz
Y2FyZGluZworICAgICAgICB0aWxlcyBvbiBzY2FsZSBjaGFuZ2VzIHVudGlsIHRoZSBjb250ZW50
IGhhcyBiZWVuIHJlbmRlcmVkLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdT
dG9yZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQ
cml2YXRlOjpzdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3BlbmRTY3JlZW5VcGRhdGVzKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lQmFj
a2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdT
dG9yZVByaXZhdGU6OnJlc3VtZVNjcmVlblVwZGF0ZXMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3Rh
dGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFj
a2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmFkb3B0QXNGcm9udFN0YXRlKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0Q3Vy
cmVudEJhY2tpbmdTdG9yZU93bmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFj
a2luZ1N0b3JlOjpyZWxlYXNlT3duZWRCYWNraW5nU3RvcmVNZW1vcnkpOgorICAgICAgICAqIEFw
aS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6CisgICAg
ICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQ
YWdlUHJpdmF0ZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIpOgorCiAyMDEzLTAyLTA0
ICBUaWFuY2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldQWRqdXN0IGZhdGZpbmdlciBkZXRlY3Rpb24gcmVjdCBzaXplCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjY5MjY2ZjhiNmM5OGI1ZjE0
YTM4N2VjOTUzMzdhZTEwOWRhNjM1Ni4uZGYwMTQ5YWZhOTY0MmY0ZDBjMTg0YThlMzdlZTYwZmFm
NGEwOGFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3Jl
LmNwcApAQCAtMjAzLDExICsyMDMsMTQgQEAgYm9vbCBCYWNraW5nU3RvcmVHZW9tZXRyeTo6aXNU
aWxlQ29ycmVzcG9uZGluZ1RvQnVmZmVyKFRpbGVJbmRleCBpbmRleCwgVGlsZUJ1ZmYKIH0KIAog
QmFja2luZ1N0b3JlUHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSgpCi0gICAgOiBtX3N1c3Bl
bmRTY3JlZW5VcGRhdGVzKDApCisgICAgOiBtX3N1c3BlbmRTY3JlZW5VcGRhdGVDb3VudGVyV2Vi
S2l0VGhyZWFkKDApCiAgICAgLCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzKDApCiAgICAg
LCBtX3Jlc3VtZU9wZXJhdGlvbihCYWNraW5nU3RvcmU6Ok5vbmUpCisgICAgLCBtX3N1c3BlbmRT
Y3JlZW5VcGRhdGVzV2ViS2l0VGhyZWFkKHRydWUpCisgICAgLCBtX3N1c3BlbmRTY3JlZW5VcGRh
dGVzVXNlckludGVyZmFjZVRocmVhZCh0cnVlKQogICAgICwgbV9zdXNwZW5kUmVuZGVySm9icyhm
YWxzZSkKICAgICAsIG1fc3VzcGVuZFJlZ3VsYXJSZW5kZXJKb2JzKGZhbHNlKQorICAgICwgbV90
aWxlTWF0cml4Q29udGFpbnNVc2VmdWxDb250ZW50KGZhbHNlKQogICAgICwgbV90aWxlTWF0cml4
TmVlZHNVcGRhdGUoZmFsc2UpCiAgICAgLCBtX2lzU2Nyb2xsaW5nT3Jab29taW5nKGZhbHNlKQog
ICAgICwgbV93ZWJQYWdlKDApCkBAIC0yODQsNiArMjg3LDEyIEBAIGJvb2wgQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6aXNPcGVuR0xDb21wb3NpdGluZygpIGNvbnN0CiAKIHZvaWQgQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6c3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogeworICAgIEFTU0VSVChCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRU
aHJlYWQoKSk7CisKKyAgICAvLyBXZSBzdGlsbCB1c2UgYXRvbWljIHZhbHVlcyBoZXJlIGJlY2F1
c2UgdGhlIFVJIHRocmVhZCBjYW4gdXNlIGl0IGluCisgICAgLy8gc2V0U2Nyb2xsaW5nT3Jab29t
aW5nKCkgKHRocm91Z2ggc2hvdWxkUGVyZm9ybVJlZ3VsYXJSZW5kZXJKb2JzKCkpLgorICAgIC8v
IEZJWE1FOiBPbmNlIHRoYXQgb25lIHJlc3BlY3RzIHRocmVhZCBib3VuZGFyaWVzIHByb3Blcmx5
LCBzd2l0Y2ggdG8KKyAgICAvLyByZWd1bGFyIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmF0aW9u
cy4KICAgICBpZiAoYXRvbWljX2FkZF92YWx1ZSgmbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRl
cywgMCkpIHsKICAgICAgICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKICAgICAgICAg
ICAgICJCYWNraW5nc3RvcmUgYWxyZWFkeSBzdXNwZW5kZWQsIGluY3JlYXNpbmcgc3VzcGVuZCBj
b3VudGVyLiIpOwpAQCAtMjk0LDcgKzMwMyw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
c3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnN1c3BlbmRTY3JlZW5VcGRhdGVzKCkKIHsKLSAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRl
cykgeworICAgIEFTU0VSVChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2Fn
ZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisKKyAgICBpZiAobV9zdXNwZW5kU2NyZWVu
VXBkYXRlQ291bnRlcldlYktpdFRocmVhZCkgewogICAgICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLAogICAgICAgICAgICAgIlNjcmVlbiBhbHJlYWR5IHN1c3BlbmRlZCwgaW5jcmVh
c2luZyBzdXNwZW5kIGNvdW50ZXIuIik7CiAgICAgfQpAQCAtMzAyLDEzICszMTMsMTQgQEAgdm9p
ZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kU2NyZWVuVXBkYXRlcygpCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSB1c2VyIGludGVyZmFjZSB0aHJlYWQgZ2V0cyB0aGUgbWVzc2FnZSBiZWZvcmUg
d2UgcHJvY2VlZAogICAgIC8vIGJlY2F1c2UgYmxpdFZpc2libGVDb250ZW50cygpIGNhbiBiZSBj
YWxsZWQgZnJvbSB0aGUgdXNlciBpbnRlcmZhY2UKICAgICAvLyB0aHJlYWQgYW5kIGl0IG11c3Qg
aG9ub3IgdGhpcyBmbGFnLgotICAgICsrbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLQotICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5z
eW5jVG9DdXJyZW50TWVzc2FnZSgpOworICAgICsrbV9zdXNwZW5kU2NyZWVuVXBkYXRlQ291bnRl
cldlYktpdFRocmVhZDsKKyAgICB1cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUoKTsKIH0K
IAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVCYWNraW5nU3RvcmVVcGRhdGVzKCkK
IHsKKyAgICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VD
bGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOworCiAgICAgdW5zaWduZWQgY3VycmVudFZhbHVl
ID0gYXRvbWljX2FkZF92YWx1ZSgmbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcywgMCk7CiAg
ICAgQVNTRVJUKGN1cnJlbnRWYWx1ZSA+PSAxKTsKICAgICBpZiAoY3VycmVudFZhbHVlIDwgMSkg
ewpAQCAtMzMwLDkgKzM0MiwxMCBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZUJh
Y2tpbmdTdG9yZVVwZGF0ZXMoKQogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZVNj
cmVlblVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bWVVcGRhdGVPcGVyYXRpb24gb3ApCiB7Ci0g
ICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMpOworICAgIEFTU0VSVChCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQo
KSk7CisgICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZUNvdW50ZXJXZWJLaXRUaHJlYWQp
OwogCi0gICAgaWYgKCFtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKSB7CisgICAgaWYgKCFtX3N1c3Bl
bmRTY3JlZW5VcGRhdGVDb3VudGVyV2ViS2l0VGhyZWFkKSB7CiAgICAgICAgIFBsYXRmb3JtOjps
b2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCiAgICAgICAgICAgICAiQ2FsbCBt
aXNtYXRjaDogU2NyZWVuIGhhc24ndCBiZWVuIHN1c3BlbmRlZCwgdGhlcmVmb3JlIHdvbid0IHJl
c3VtZSEiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzQzLDEwICszNTYsMTAgQEAgdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3JlZW5VcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVzdW1l
VXBkYXRlT3BlcmF0aW8KICAgICAgICAgfHwgKG1fcmVzdW1lT3BlcmF0aW9uID09IEJhY2tpbmdT
dG9yZTo6Tm9uZSAmJiBvcCA9PSBCYWNraW5nU3RvcmU6OkJsaXQpKQogICAgICAgICBtX3Jlc3Vt
ZU9wZXJhdGlvbiA9IG9wOwogCi0gICAgaWYgKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPj0gMikg
eyAvLyB3ZSdyZSBzdGlsbCBzdXNwZW5kZWQKKyAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRl
Q291bnRlcldlYktpdFRocmVhZCA+PSAyKSB7IC8vIHdlJ3JlIHN0aWxsIHN1c3BlbmRlZAogICAg
ICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAogICAgICAgICAgICAgIlNjcmVlbiBh
bmQgYmFja2luZ3N0b3JlIHN0aWxsIHN1c3BlbmRlZCwgZGVjcmVhc2luZyBzdXNwZW5kIGNvdW50
ZXIuIik7Ci0gICAgICAgIC0tbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKKyAgICAgICAgLS1tX3N1
c3BlbmRTY3JlZW5VcGRhdGVDb3VudGVyV2ViS2l0VGhyZWFkOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zNTgsOCArMzcxLDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1
bWVTY3JlZW5VcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW8KICAgICAg
ICAgaWYgKGlzT3BlbkdMQ29tcG9zaXRpbmcoKSAmJiAhaXNBY3RpdmUoKSkgewogICAgICAgICAg
ICAgbV93ZWJQYWdlLT5kLT5zZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIodHJ1ZSk7CiAgICAg
ICAgICAgICBtX3dlYlBhZ2UtPmQtPnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRp
b24oKTsKLSAgICAgICAgICAgIC0tbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLSAgICAgICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgp
LT5zeW5jVG9DdXJyZW50TWVzc2FnZSgpOworICAgICAgICAgICAgLS1tX3N1c3BlbmRTY3JlZW5V
cGRhdGVDb3VudGVyV2ViS2l0VGhyZWFkOworICAgICAgICAgICAgdXBkYXRlU3VzcGVuZFNjcmVl
blVwZGF0ZVN0YXRlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzk2
LDggKzQwOSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lU2NyZWVuVXBkYXRl
cyhCYWNraW5nU3RvcmU6OlJlc3VtZVVwZGF0ZU9wZXJhdGlvCiAgICAgLy8gTWFrZSBzdXJlIHRo
ZSB1c2VyIGludGVyZmFjZSB0aHJlYWQgZ2V0cyB0aGUgbWVzc2FnZSBiZWZvcmUgd2UgcHJvY2Vl
ZAogICAgIC8vIGJlY2F1c2UgYmxpdFZpc2libGVDb250ZW50cygpIGNhbiBiZSBjYWxsZWQgZnJv
bSB0aGUgdXNlciBpbnRlcmZhY2UKICAgICAvLyB0aHJlYWQgYW5kIGl0IG11c3QgaG9ub3IgdGhp
cyBmbGFnLgotICAgIC0tbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLSAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+c3luY1RvQ3VycmVu
dE1lc3NhZ2UoKTsKKyAgICAtLW1fc3VzcGVuZFNjcmVlblVwZGF0ZUNvdW50ZXJXZWJLaXRUaHJl
YWQ7CisgICAgdXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7CiAKICAgICBpZiAob3Ag
PT0gQmFja2luZ1N0b3JlOjpOb25lKQogICAgICAgICByZXR1cm47CkBAIC00MTUsNiArNDI4LDI4
IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lU2NyZWVuVXBkYXRlcyhCYWNraW5n
U3RvcmU6OlJlc3VtZVVwZGF0ZU9wZXJhdGlvCiAjZW5kaWYKIH0KIAordm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjp1cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUoKQoreworICAgIEFTU0VS
VChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1
cnJlbnRUaHJlYWQoKSk7CisKKyAgICBib29sIGlzQmFja2luZ1N0b3JlVXNhYmxlID0gaXNBY3Rp
dmUoKSAmJiBtX3RpbGVNYXRyaXhDb250YWluc1VzZWZ1bENvbnRlbnQKKyAgICAgICAgJiYgKG1f
c3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgfHwgIW1fcmVuZGVyUXVldWUtPmhhc0N1cnJlbnRW
aXNpYmxlWm9vbUpvYigpKTsgLy8gQmFja2luZ3N0b3JlIGlzIG5vdCB1c2FibGUgd2hpbGUgd2Un
cmUgd2FpdGluZyBmb3IgYW4gKCJhdG9taWMiKSB6b29tIGpvYiB0byBmaW5pc2guCisKKyAgICBi
b29sIHNob3VsZFN1c3BlbmQgPSBtX3N1c3BlbmRTY3JlZW5VcGRhdGVDb3VudGVyV2ViS2l0VGhy
ZWFkCisgICAgICAgIHx8ICFtX3dlYlBhZ2UtPmlzVmlzaWJsZSgpCisgICAgICAgIHx8ICghaXNC
YWNraW5nU3RvcmVVc2FibGUgJiYgIW1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvckRyYXdzUm9vdExh
eWVyKCkgJiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpOworCisgICAgaWYgKG1f
c3VzcGVuZFNjcmVlblVwZGF0ZXNXZWJLaXRUaHJlYWQgPT0gc2hvdWxkU3VzcGVuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9zdXNwZW5kU2NyZWVuVXBkYXRlc1dlYktpdFRocmVhZCA9IHNo
b3VsZFN1c3BlbmQ7CisKKyAgICAvLyBGSVhNRTogSWYgd2UgY2hhbmdlIHRoZSBiYWNraW5nc3Rv
cmUgdG8gZGlzcGF0Y2ggZ2VvbWV0cmllcywgdGhpcworICAgIC8vICAgYXNzaWdubWVudCBzaG91
bGQgYmUgbW92ZWQgdG8gYSBkaXNwYXRjaGVkIHNldHRlciBmdW5jdGlvbiBpbnN0ZWFkLgorICAg
IG1fc3VzcGVuZFNjcmVlblVwZGF0ZXNVc2VySW50ZXJmYWNlVGhyZWFkID0gc2hvdWxkU3VzcGVu
ZDsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VD
bGllbnQoKS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKK30KKwogdm9pZCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpyZXBhaW50KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiB3aW5kb3dSZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wg
aW1tZWRpYXRlKQogewpAQCAtMTEzMCwxMiArMTE2NSwxNSBAQCBUaWxlSW5kZXhMaXN0IEJhY2tp
bmdTdG9yZVByaXZhdGU6OnJlbmRlcihjb25zdCBUaWxlSW5kZXhMaXN0JiB0aWxlSW5kZXhMaXN0
KQogICAgICAgICBuZXdUaWxlTWFwLnNldChpbmRleCwgYmFja0J1ZmZlcik7CiAgICAgfQogCi0g
ICAgbmV3R2VvbWV0cnktPnNldFRpbGVNYXAobmV3VGlsZU1hcCk7Ci0gICAgYWRvcHRBc0Zyb250
U3RhdGUobmV3R2VvbWV0cnkpOwotCiAgICAgLy8gTGV0IHRoZSByZW5kZXIgcXVldWUga25vdyB0
aGF0IHRoZSB0aWxlIGNvbnRlbnRzIGFyZSB1cCB0byBkYXRlIG5vdy4KICAgICBtX3JlbmRlclF1
ZXVlLT5jbGVhcihyZW5kZXJlZFRpbGVzLCBmcm9udFN0YXRlKCksIFJlbmRlclF1ZXVlOjpEb250
Q2xlYXJDb21wbGV0ZWRKb2JzKTsKIAorICAgIC8vIElmIHdlIGNvdWxkbid0IHJlbmRlciBhbGwg
cmVxdWVzdGVkIGpvYnMsIHN1c3BlbmQgYmxpdHRpbmcgdW50aWwgd2UgZG8uCisgICAgdXBkYXRl
U3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7CisKKyAgICBuZXdHZW9tZXRyeS0+c2V0VGlsZU1h
cChuZXdUaWxlTWFwKTsKKyAgICBhZG9wdEFzRnJvbnRTdGF0ZShuZXdHZW9tZXRyeSk7CisKICNp
ZiBERUJVR19CQUNLSU5HU1RPUkUKICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sCiAgICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXIgZG9uZSBy
ZW5kZXJpbmcgJWQgdGlsZXMuIiwKQEAgLTEyMjIsMTMgKzEyNjAsNiBAQCB2b2lkIEJhY2tpbmdT
dG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSB8fCBtX3N1c3Bl
bmRTY3JlZW5VcGRhdGVzKSB7Ci0gICAgICAgIC8vIEF2b2lkIGNsaWVudCBnb2luZyBpbnRvIGJ1
c3kgbG9vcCB3aGlsZSBibGl0IGlzIGltcG9zc2libGUuCi0gICAgICAgIGlmIChmb3JjZSkKLSAg
ICAgICAgICAgIG1faGFzQmxpdEpvYnMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQogICAgIGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNz
YWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7CiAgICAgICAgIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3Nh
Z2UoCiAgICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1l
c3NhZ2UoCkBAIC0xMjM2LDYgKzEyNjcsMTMgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpi
bGl0VmlzaWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlc1VzZXJJbnRlcmZhY2VUaHJlYWQpIHsKKyAg
ICAgICAgLy8gQXZvaWQgY2xpZW50IGdvaW5nIGludG8gYnVzeSBsb29wIHdoaWxlIGJsaXQgaXMg
aW1wb3NzaWJsZS4KKyAgICAgICAgaWYgKGZvcmNlKQorICAgICAgICAgICAgbV9oYXNCbGl0Sm9i
cyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFmb3JjZSkgewog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgLy8gSWYgdGhlcmUncyBh
IFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LCBsZXQgaXQgc2NoZWR1bGUgdGhlIGJsaXQuCkBAIC0y
MjgwLDEzICsyMzE4LDIyIEBAIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBCYWNraW5nU3RvcmVQcml2
YXRlOjpmcm9udFN0YXRlKCkgY29uc3QKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjphZG9w
dEFzRnJvbnRTdGF0ZShCYWNraW5nU3RvcmVHZW9tZXRyeSogbmV3RnJvbnRTdGF0ZSkKIHsKKyAg
ICBib29sIGhhc1ZhbGlkQnVmZmVycyA9IGZhbHNlOworCiAgICAgLy8gUmVtZW1iZXIgdGhlIGJ1
ZmZlcnMgd2UnbGwgdXNlIGluIHRoZSBuZXcgZnJvbnQgc3RhdGUgZm9yIGNvbXBhcmlzb24uCiAg
ICAgV1RGOjpWZWN0b3I8VGlsZUJ1ZmZlcio+IG5ld1RpbGVCdWZmZXJzOwogICAgIFRpbGVNYXAg
bmV3VGlsZU1hcCA9IG5ld0Zyb250U3RhdGUtPnRpbGVNYXAoKTsKICAgICBUaWxlTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBuZXdUaWxlTWFwLmVuZCgpOwogICAgIGZvciAoVGlsZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBuZXdUaWxlTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBpZiAoaXQtPnZhbHVlKQorICAgICAgICBpZiAoaXQtPnZhbHVlKSB7CisgICAgICAg
ICAgICBoYXNWYWxpZEJ1ZmZlcnMgPSB0cnVlOwogICAgICAgICAgICAgbmV3VGlsZUJ1ZmZlcnMu
YXBwZW5kKGl0LT52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWhhc1ZhbGlk
QnVmZmVycykgeworICAgICAgICBtX3RpbGVNYXRyaXhDb250YWluc1VzZWZ1bENvbnRlbnQgPSBm
YWxzZTsKKyAgICAgICAgdXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7CiAgICAgfQog
CiAgICAgdW5zaWduZWQgbmV3RnJvbnQgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihuZXdG
cm9udFN0YXRlKTsKQEAgLTIyOTUsOCArMjM0MiwxMyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZh
dGU6OmFkb3B0QXNGcm9udFN0YXRlKEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBuZXdGcm9udFN0YXRl
KQogICAgIC8vIEF0b21pYyBjaGFuZ2UuCiAgICAgX3NtcF94Y2hnKCZtX2Zyb250U3RhdGUsIG5l
d0Zyb250KTsKIAotICAgIC8vIFdhaXQgdW50aWwgdGhlIHVzZXIgaW50ZXJmYWNlIHRocmVhZCB3
b24ndCBhY2Nlc3MgdGhlIG9sZCBmcm9udCBzdGF0ZSBhbnltb3JlLgotICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5zeW5jVG9DdXJy
ZW50TWVzc2FnZSgpOworICAgIGlmIChoYXNWYWxpZEJ1ZmZlcnMpIHsKKyAgICAgICAgbV90aWxl
TWF0cml4Q29udGFpbnNVc2VmdWxDb250ZW50ID0gdHJ1ZTsKKyAgICAgICAgdXBkYXRlU3VzcGVu
ZFNjcmVlblVwZGF0ZVN0YXRlKCk7IC8vIGluY2x1ZGVzIHN5bmNUb0N1cnJlbnRNZXNzYWdlKCks
IHNvIHdlIGNhbiB1c2UgaXQgaW5zdGVhZAorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdhaXQg
dW50aWwgdGhlIHVzZXIgaW50ZXJmYWNlIHRocmVhZCB3b24ndCBhY2Nlc3MgdGhlIG9sZCBmcm9u
dCBzdGF0ZSBhbnltb3JlLgorICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVy
ZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKKyAgICB9
CiAKICAgICAvLyBSZWNsYWltIHVudXNlZCBvbGQgdGlsZSBidWZmZXJzIGFzIGJhY2sgYnVmZmVy
cy4KICAgICBUaWxlTWFwIG9sZFRpbGVNYXAgPSBvbGRGcm9udFN0YXRlLT50aWxlTWFwKCk7CkBA
IC0yMzUwLDYgKzI0MDIsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEN1cnJlbnRC
YWNraW5nU3RvcmVPd25lcihXZWJQYWdlKiB3ZWJQYWdlKQogICAgICAgICBCYWNraW5nU3RvcmVQ
cml2YXRlOjpzX2N1cnJlbnRCYWNraW5nU3RvcmVPd25lci0+ZC0+bV9iYWNraW5nU3RvcmUtPmQt
PnJlc2V0VGlsZXMoKTsKIAogICAgIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNfY3VycmVudEJhY2tp
bmdTdG9yZU93bmVyID0gd2ViUGFnZTsKKyAgICB3ZWJQYWdlLT5iYWNraW5nU3RvcmUoKS0+ZC0+
dXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7IC8vIGRlcGVuZHMgb24gaXNBY3RpdmUo
KQogfQogCiBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmlzQWN0aXZlKCkgY29uc3QKQEAgLTI0
NjYsOCArMjUxOSwxMyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6YWNxdWlyZUJhY2tpbmdTdG9yZU1l
bW9yeSgpCiAKIHZvaWQgQmFja2luZ1N0b3JlOjpyZWxlYXNlT3duZWRCYWNraW5nU3RvcmVNZW1v
cnkoKQogewotICAgIGlmIChCYWNraW5nU3RvcmVQcml2YXRlOjpzX2N1cnJlbnRCYWNraW5nU3Rv
cmVPd25lciA9PSBkLT5tX3dlYlBhZ2UpCisgICAgaWYgKEJhY2tpbmdTdG9yZVByaXZhdGU6OnNf
Y3VycmVudEJhY2tpbmdTdG9yZU93bmVyID09IGQtPm1fd2ViUGFnZSkgeworICAgICAgICAvLyBD
YWxsIHJlc2V0VGlsZXMoKSAoaG9wZWZ1bGx5KSBhZnRlciBzdXNwZW5kU2NyZWVuVXBkYXRlcygp
CisgICAgICAgIC8vIHNvIHdlIHdpbGwgbm90IGNhdXNlIGNoZWNrZXJib2FyZCB0byBiZSBzaG93
biBiZWZvcmUgc3VzcGVuZGluZy4KKyAgICAgICAgLy8gVGhpcyBjYXVzZXMgdGhlIHRpbGVzIGlu
IHVzZSB0byBiZSBnaXZlbiBiYWNrIHRvIHRoZSBTdXJmYWNlUG9vbC4KKyAgICAgICAgZC0+cmVz
ZXRUaWxlcygpOwogICAgICAgICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+cmVs
ZWFzZUJ1ZmZlcnMoKTsKKyAgICB9CiB9CiAKIGJvb2wgQmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9i
cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tp
bmdTdG9yZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9w
LmgKaW5kZXggNTc3Mzk5NWJiNmQ4NTc1OGYyMDlmMDY1NmQ0ZjlmMjk5NThhMGNiOS4uM2E1M2M1
MTA3N2MwOTk5ODI3OTAxODkzZTc1Y2YyNTJmZTZkNWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaApAQCAtMTI4LDggKzEyOCw2IEBAIHB1Ymxp
YzoKICAgICAvLyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OldpbmRvdzo6R0xFUzJV
c2FnZS4KICAgICBib29sIGlzT3BlbkdMQ29tcG9zaXRpbmcoKSBjb25zdDsKIAotICAgIGJvb2wg
aXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVz
OyB9Ci0KICAgICAvLyBTdXNwZW5kcyBhbGwgYmFja2luZ3N0b3JlIHVwZGF0ZXMgc28gdGhhdCBy
ZW5kZXJpbmcgdG8gdGhlIGJhY2tpbmdzdG9yZSBpcyBkaXNhYmxlZC4KICAgICB2b2lkIHN1c3Bl
bmRCYWNraW5nU3RvcmVVcGRhdGVzKCk7CiAKQEAgLTE0Miw2ICsxNDAsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gUmVzdW1lcyBhbGwgc2NyZWVuIHVwZGF0ZXMgc28gdGhhdCAnYmxpdFZpc2libGVDb250
ZW50cycgaXMgZW5hYmxlZC4KICAgICB2b2lkIHJlc3VtZVNjcmVlblVwZGF0ZXMoQmFja2luZ1N0
b3JlOjpSZXN1bWVVcGRhdGVPcGVyYXRpb24pOwogCisgICAgLy8gVXBkYXRlIG1fc3VzcGVuZFNj
cmVlblVwZGF0ZXMqVGhyZWFkIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGNvbmRpdGlvbnMuCisgICAg
dm9pZCB1cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUoKTsKKwogICAgIC8vIFRoZSBmdW5j
dGlvbnMgcmVwYWludCgpLCBzbG93U2Nyb2xsKCksIHNjcm9sbCgpLCBzY3JvbGxpbmdTdGFydGVk
SGVscGVyKCkgYXJlCiAgICAgLy8gY2FsbGVkIGZyb20gb3V0c2lkZSBXZWJLaXQgYW5kIHdpdGhp
biBXZWJLaXQgdmlhIENocm9tZUNsaWVudEJsYWNrQmVycnkuCiAgICAgdm9pZCByZXBhaW50KGNv
bnN0IFBsYXRmb3JtOjpJbnRSZWN0JiB3aW5kb3dSZWN0LCBib29sIGNvbnRlbnRDaGFuZ2VkLCBi
b29sIGltbWVkaWF0ZSk7CkBAIC0zNDIsMTIgKzM0MywxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgV2ViUGFnZSogc19jdXJyZW50QmFja2luZ1N0b3JlT3duZXI7CiAKLSAgICB1bnNpZ25lZCBt
X3N1c3BlbmRTY3JlZW5VcGRhdGVzOworICAgIHVuc2lnbmVkIG1fc3VzcGVuZFNjcmVlblVwZGF0
ZUNvdW50ZXJXZWJLaXRUaHJlYWQ7CiAgICAgdW5zaWduZWQgbV9zdXNwZW5kQmFja2luZ1N0b3Jl
VXBkYXRlczsKICAgICBCYWNraW5nU3RvcmU6OlJlc3VtZVVwZGF0ZU9wZXJhdGlvbiBtX3Jlc3Vt
ZU9wZXJhdGlvbjsKIAorICAgIGJvb2wgbV9zdXNwZW5kU2NyZWVuVXBkYXRlc1dlYktpdFRocmVh
ZDsKKyAgICBib29sIG1fc3VzcGVuZFNjcmVlblVwZGF0ZXNVc2VySW50ZXJmYWNlVGhyZWFkOwog
ICAgIGJvb2wgbV9zdXNwZW5kUmVuZGVySm9iczsKICAgICBib29sIG1fc3VzcGVuZFJlZ3VsYXJS
ZW5kZXJKb2JzOworICAgIGJvb2wgbV90aWxlTWF0cml4Q29udGFpbnNVc2VmdWxDb250ZW50Owog
ICAgIGJvb2wgbV90aWxlTWF0cml4TmVlZHNVcGRhdGU7CiAgICAgYm9vbCBtX2lzU2Nyb2xsaW5n
T3Jab29taW5nOwogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGJhNjM4NTY4NzRlZjI4ZDVmMjJkMjY1YzBjMjZhZDM2
ODQxMWU3YzcuLjZmYWUyMzBjMjIwNzE2NzFiYjI0MTIyMjQxMDIzZDUwMmQ5ZTAzODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMzIyMSw2ICszMjIxLDcg
QEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgICAg
IH0KIAogICAgICAgICBtX3Zpc2libGUgPSB2aXNpYmxlOworICAgICAgICBtX2JhY2tpbmdTdG9y
ZS0+ZC0+dXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7CiAgICAgfQogCiAjaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCkBAIC01MzQzLDYgKzUzNDQsNyBAQCB2b2lkIFdlYlBh
Z2VQcml2YXRlOjpzZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIoYm9vbCBjb21wb3NpdG9yRHJh
d3NSb290TGF5ZXIpCiAgICAgLy8gV2hlbiB0aGUgQmxhY2tCZXJyeSBwb3J0IGZvcmNlcyBjb21w
b3NpdGluZyBtb2RlLCB0aGUgcm9vdCBsYXllciBzdG9wcwogICAgIC8vIHBhaW50aW5nIHRvIHdp
bmRvdyBhbmQgc3RhcnRzIHBhaW50aW5nIHRvIGxheWVyIGluc3RlYWQuCiAgICAgbV9wYWdlLT5z
ZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShjb21wb3NpdG9yRHJhd3NSb290TGF5
ZXIpOworICAgIG1fYmFja2luZ1N0b3JlLT5kLT51cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3Rh
dGUoKTsKIAogICAgIGlmICghbV9tYWluRnJhbWUpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187109</attachid>
            <date>2013-02-07 07:41:26 -0800</date>
            <delta_ts>2013-02-07 08:59:54 -0800</delta_ts>
            <desc>Patch, with Arvid added as internal reviewer</desc>
            <filename>bug-108951-20130205155247.patch</filename>
            <type>text/plain</type>
            <size>16971</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4NmEyYjZiMjE0ZDc5MDUyZmQ3NzBkNjA5OTJkZGE0NGIxYzdhNTM5Li44MmIyNzVlNTUz
OTEwM2I1NzJlNGY0NjQ5YTk2MDZjM2RkYzY3NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMy0wMi0wNSAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBGaXggYWxsIGZsaWNrZXIg
Y2F1c2VkIGJ5IGVtcHR5L2luY29tcGxldGUgZ2VvbWV0cmllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODk1MQorICAgICAgICBSSU0gUFIgMjg2
OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIEludGVy
bmFsbHkgcmV2aWV3ZWQgYnkgQXJ2aWQgTmlsc3Nvbi4KKworICAgICAgICBUaGUgbWFpbiBpZGVh
IGZvciB0aGlzIHBhdGNoIGlzIHRoYXQgd2hlbmV2ZXIgd2UgYWRvcHQKKyAgICAgICAgYSBuZXcg
YmFja2luZ3N0b3JlIGdlb21ldHJ5IHRoYXQgZG9lc24ndCBjb250YWluIGFueQorICAgICAgICBy
ZW5kZXJlZCB0aWxlcywgb3IgVmlzaWJsZVpvb20gcmVuZGVyIGpvYnMgdGhhdCBuZWVkIG1vcmUK
KyAgICAgICAgdGlsZXMgdG8gYmUgcmVuZGVyZWQgdG8gYmUgY29uc2lkZXJlZCBjb21wbGV0ZSwg
d2UnbGwgdGhlbgorICAgICAgICBzdXNwZW5kIGJsaXR0aW5nIHVudGlsIHRoZXJlIGlzIHZhbGlk
IGNvbnRlbnQgdG8gc2hvdy4KKworICAgICAgICBUaGlzIG1haW4gaWRlYSBpcyBjb2RpZmllZCBh
cyBjaGVja3MgZm9yIGVtcHR5IGJ1ZmZlcnMKKyAgICAgICAgaW4gYWRvcHRBc0Zyb250U3RhdGUo
KSwgYW5kIGNoZWNrcyBmb3IgdGhlIGN1cnJlbnQgc3RhdGUKKyAgICAgICAgb2YgdGhlIHJlbmRl
ciBxdWV1ZSBhZnRlciByZW5kZXJpbmcgY29udGVudCBpbiByZW5kZXIoKS4KKyAgICAgICAgSG93
ZXZlciwgYXMgQmFja2luZ1N0b3JlIG9iamVjdHMgd2l0aCBkaXNhYmxlZCBzdXJmYWNlIHBvb2xz
CisgICAgICAgIG9yIHB1cmUgdXNlIG9mIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGFsc28gc3dh
cCBnZW9tZXRyaWVzCisgICAgICAgIGluIHNvbWUgY2lyY3Vtc3RhbmNlcywgdGhlIHVzZSBvZiBz
dXNwZW5kIGNvdW50ZXJzIGdyb3dzCisgICAgICAgIGluY3JlYXNpbmdseSBmcmFnaWxlLgorCisg
ICAgICAgIFRvIG1ha2UgdGhpcyBwYXRjaCBtb3JlIHJlc2lsaWVudCBhZ2FpbnN0IHJlZ3Jlc3Np
b25zLAorICAgICAgICB0aGUgY3VycmVudCBzdXNwZW5kIGNvdW50ZXIgaXMgY29tcGxlbWVudGVk
IHdpdGggc2V2ZXJhbAorICAgICAgICBleHBsaWNpdCBjb25kaXRpb25zIGZvciBzdXNwZW5kaW5n
IHNjcmVlbiB1cGRhdGVzLAorICAgICAgICBhbmQgYm90aCBzdWJzZXF1ZW50bHkgY29tYmluZWQg
aW50byBhIHNpbmdsZSBjYWNoZWQKKyAgICAgICAgYm9vbGVhbiB2YWx1ZSB0ZWxsaW5nIHRoZSBV
SSB0aHJlYWQgd2hldGhlciBvciBub3QgdG8KKyAgICAgICAgc3VzcGVuZC4gSW4gdGhlIGZ1dHVy
ZSwgb3RoZXIgc3VzcGVuZCBjYWxscyBjYW4gYmUKKyAgICAgICAgbWlncmF0ZWQgdG8gdGhpcyAi
c3RhdGUgbWFjaGluZSIgZGVzaWduIGFzIHdlbGwsCisgICAgICAgIHBvdGVudGlhbGx5IHBoYXNp
bmcgb3V0IHRoZSBzdXNwZW5kIGNvdW50ZXIgYWx0b2dldGhlci4KKworICAgICAgICBUaGUgaW1t
ZWRpYXRlIHJlc3VsdCBpcyB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gZmxhc2hpbmcKKyAgICAgICAg
b2YgYmFja2dyb3VuZCBjb2xvciBiZXR3ZWVuIHBhZ2UgbG9hZHMgb3IgYWZ0ZXIgZGlzY2FyZGlu
ZworICAgICAgICB0aWxlcyBvbiBzY2FsZSBjaGFuZ2VzIHVudGlsIHRoZSBjb250ZW50IGhhcyBi
ZWVuIHJlbmRlcmVkLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVBy
aXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRl
OjpzdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3BlbmRTY3JlZW5VcGRhdGVzKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lQmFja2luZ1N0
b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVBy
aXZhdGU6OnJlc3VtZVNjcmVlblVwZGF0ZXMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpCYWNraW5nU3RvcmVQcml2YXRlOjp1cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0
b3JlUHJpdmF0ZTo6cmVuZGVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2lu
Z1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cyk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmFkb3B0QXNGcm9udFN0YXRlKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6c2V0Q3VycmVudEJh
Y2tpbmdTdG9yZU93bmVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0
b3JlOjpyZWxlYXNlT3duZWRCYWNraW5nU3RvcmVNZW1vcnkpOgorICAgICAgICAqIEFwaS9CYWNr
aW5nU3RvcmVfcC5oOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6CisgICAgICAgICog
QXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJp
dmF0ZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQ
cml2YXRlOjpzZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIpOgorCiAyMDEzLTAyLTA0ICBUaWFu
Y2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldQWRq
dXN0IGZhdGZpbmdlciBkZXRlY3Rpb24gcmVjdCBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggMjY5MjY2ZjhiNmM5OGI1ZjE0YTM4N2Vj
OTUzMzdhZTEwOWRhNjM1Ni4uZGYwMTQ5YWZhOTY0MmY0ZDBjMTg0YThlMzdlZTYwZmFmNGEwOGFm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcApA
QCAtMjAzLDExICsyMDMsMTQgQEAgYm9vbCBCYWNraW5nU3RvcmVHZW9tZXRyeTo6aXNUaWxlQ29y
cmVzcG9uZGluZ1RvQnVmZmVyKFRpbGVJbmRleCBpbmRleCwgVGlsZUJ1ZmYKIH0KIAogQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSgpCi0gICAgOiBtX3N1c3BlbmRTY3Jl
ZW5VcGRhdGVzKDApCisgICAgOiBtX3N1c3BlbmRTY3JlZW5VcGRhdGVDb3VudGVyV2ViS2l0VGhy
ZWFkKDApCiAgICAgLCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzKDApCiAgICAgLCBtX3Jl
c3VtZU9wZXJhdGlvbihCYWNraW5nU3RvcmU6Ok5vbmUpCisgICAgLCBtX3N1c3BlbmRTY3JlZW5V
cGRhdGVzV2ViS2l0VGhyZWFkKHRydWUpCisgICAgLCBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzVXNl
ckludGVyZmFjZVRocmVhZCh0cnVlKQogICAgICwgbV9zdXNwZW5kUmVuZGVySm9icyhmYWxzZSkK
ICAgICAsIG1fc3VzcGVuZFJlZ3VsYXJSZW5kZXJKb2JzKGZhbHNlKQorICAgICwgbV90aWxlTWF0
cml4Q29udGFpbnNVc2VmdWxDb250ZW50KGZhbHNlKQogICAgICwgbV90aWxlTWF0cml4TmVlZHNV
cGRhdGUoZmFsc2UpCiAgICAgLCBtX2lzU2Nyb2xsaW5nT3Jab29taW5nKGZhbHNlKQogICAgICwg
bV93ZWJQYWdlKDApCkBAIC0yODQsNiArMjg3LDEyIEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6aXNPcGVuR0xDb21wb3NpdGluZygpIGNvbnN0CiAKIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0
ZTo6c3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogeworICAgIEFTU0VSVChCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQo
KSk7CisKKyAgICAvLyBXZSBzdGlsbCB1c2UgYXRvbWljIHZhbHVlcyBoZXJlIGJlY2F1c2UgdGhl
IFVJIHRocmVhZCBjYW4gdXNlIGl0IGluCisgICAgLy8gc2V0U2Nyb2xsaW5nT3Jab29taW5nKCkg
KHRocm91Z2ggc2hvdWxkUGVyZm9ybVJlZ3VsYXJSZW5kZXJKb2JzKCkpLgorICAgIC8vIEZJWE1F
OiBPbmNlIHRoYXQgb25lIHJlc3BlY3RzIHRocmVhZCBib3VuZGFyaWVzIHByb3Blcmx5LCBzd2l0
Y2ggdG8KKyAgICAvLyByZWd1bGFyIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmF0aW9ucy4KICAg
ICBpZiAoYXRvbWljX2FkZF92YWx1ZSgmbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcywgMCkp
IHsKICAgICAgICAgQkJMT0coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywKICAgICAgICAgICAgICJC
YWNraW5nc3RvcmUgYWxyZWFkeSBzdXNwZW5kZWQsIGluY3JlYXNpbmcgc3VzcGVuZCBjb3VudGVy
LiIpOwpAQCAtMjk0LDcgKzMwMyw5IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c3VzcGVu
ZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3Bl
bmRTY3JlZW5VcGRhdGVzKCkKIHsKLSAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlcykgewor
ICAgIEFTU0VSVChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVu
dCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7CisKKyAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRl
Q291bnRlcldlYktpdFRocmVhZCkgewogICAgICAgICBCQkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJ
bmZvLAogICAgICAgICAgICAgIlNjcmVlbiBhbHJlYWR5IHN1c3BlbmRlZCwgaW5jcmVhc2luZyBz
dXNwZW5kIGNvdW50ZXIuIik7CiAgICAgfQpAQCAtMzAyLDEzICszMTMsMTQgQEAgdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kU2NyZWVuVXBkYXRlcygpCiAgICAgLy8gTWFrZSBzdXJl
IHRoZSB1c2VyIGludGVyZmFjZSB0aHJlYWQgZ2V0cyB0aGUgbWVzc2FnZSBiZWZvcmUgd2UgcHJv
Y2VlZAogICAgIC8vIGJlY2F1c2UgYmxpdFZpc2libGVDb250ZW50cygpIGNhbiBiZSBjYWxsZWQg
ZnJvbSB0aGUgdXNlciBpbnRlcmZhY2UKICAgICAvLyB0aHJlYWQgYW5kIGl0IG11c3QgaG9ub3Ig
dGhpcyBmbGFnLgotICAgICsrbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLQotICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5zeW5jVG9D
dXJyZW50TWVzc2FnZSgpOworICAgICsrbV9zdXNwZW5kU2NyZWVuVXBkYXRlQ291bnRlcldlYktp
dFRocmVhZDsKKyAgICB1cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUoKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVCYWNraW5nU3RvcmVVcGRhdGVzKCkKIHsKKyAg
ICBBU1NFUlQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQo
KS0+aXNDdXJyZW50VGhyZWFkKCkpOworCiAgICAgdW5zaWduZWQgY3VycmVudFZhbHVlID0gYXRv
bWljX2FkZF92YWx1ZSgmbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcywgMCk7CiAgICAgQVNT
RVJUKGN1cnJlbnRWYWx1ZSA+PSAxKTsKICAgICBpZiAoY3VycmVudFZhbHVlIDwgMSkgewpAQCAt
MzMwLDkgKzM0MiwxMCBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZUJhY2tpbmdT
dG9yZVVwZGF0ZXMoKQogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZVNjcmVlblVw
ZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bWVVcGRhdGVPcGVyYXRpb24gb3ApCiB7Ci0gICAgQVNT
RVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMpOworICAgIEFTU0VSVChCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZUNvdW50ZXJXZWJLaXRUaHJlYWQpOwogCi0g
ICAgaWYgKCFtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKSB7CisgICAgaWYgKCFtX3N1c3BlbmRTY3Jl
ZW5VcGRhdGVDb3VudGVyV2ViS2l0VGhyZWFkKSB7CiAgICAgICAgIFBsYXRmb3JtOjpsb2dBbHdh
eXMoUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCiAgICAgICAgICAgICAiQ2FsbCBtaXNtYXRj
aDogU2NyZWVuIGhhc24ndCBiZWVuIHN1c3BlbmRlZCwgdGhlcmVmb3JlIHdvbid0IHJlc3VtZSEi
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzQzLDEwICszNTYsMTAgQEAgdm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpyZXN1bWVTY3JlZW5VcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRl
T3BlcmF0aW8KICAgICAgICAgfHwgKG1fcmVzdW1lT3BlcmF0aW9uID09IEJhY2tpbmdTdG9yZTo6
Tm9uZSAmJiBvcCA9PSBCYWNraW5nU3RvcmU6OkJsaXQpKQogICAgICAgICBtX3Jlc3VtZU9wZXJh
dGlvbiA9IG9wOwogCi0gICAgaWYgKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPj0gMikgeyAvLyB3
ZSdyZSBzdGlsbCBzdXNwZW5kZWQKKyAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlQ291bnRl
cldlYktpdFRocmVhZCA+PSAyKSB7IC8vIHdlJ3JlIHN0aWxsIHN1c3BlbmRlZAogICAgICAgICBC
QkxPRyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAogICAgICAgICAgICAgIlNjcmVlbiBhbmQgYmFj
a2luZ3N0b3JlIHN0aWxsIHN1c3BlbmRlZCwgZGVjcmVhc2luZyBzdXNwZW5kIGNvdW50ZXIuIik7
Ci0gICAgICAgIC0tbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKKyAgICAgICAgLS1tX3N1c3BlbmRT
Y3JlZW5VcGRhdGVDb3VudGVyV2ViS2l0VGhyZWFkOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0zNTgsOCArMzcxLDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3Jl
ZW5VcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW8KICAgICAgICAgaWYg
KGlzT3BlbkdMQ29tcG9zaXRpbmcoKSAmJiAhaXNBY3RpdmUoKSkgewogICAgICAgICAgICAgbV93
ZWJQYWdlLT5kLT5zZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIodHJ1ZSk7CiAgICAgICAgICAg
ICBtX3dlYlBhZ2UtPmQtPnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsK
LSAgICAgICAgICAgIC0tbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLSAgICAgICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5zeW5j
VG9DdXJyZW50TWVzc2FnZSgpOworICAgICAgICAgICAgLS1tX3N1c3BlbmRTY3JlZW5VcGRhdGVD
b3VudGVyV2ViS2l0VGhyZWFkOworICAgICAgICAgICAgdXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0
ZVN0YXRlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzk2LDggKzQw
OSw4IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lU2NyZWVuVXBkYXRlcyhCYWNr
aW5nU3RvcmU6OlJlc3VtZVVwZGF0ZU9wZXJhdGlvCiAgICAgLy8gTWFrZSBzdXJlIHRoZSB1c2Vy
IGludGVyZmFjZSB0aHJlYWQgZ2V0cyB0aGUgbWVzc2FnZSBiZWZvcmUgd2UgcHJvY2VlZAogICAg
IC8vIGJlY2F1c2UgYmxpdFZpc2libGVDb250ZW50cygpIGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUg
dXNlciBpbnRlcmZhY2UKICAgICAvLyB0aHJlYWQgYW5kIGl0IG11c3QgaG9ub3IgdGhpcyBmbGFn
LgotICAgIC0tbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+c3luY1RvQ3VycmVudE1lc3Nh
Z2UoKTsKKyAgICAtLW1fc3VzcGVuZFNjcmVlblVwZGF0ZUNvdW50ZXJXZWJLaXRUaHJlYWQ7Cisg
ICAgdXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7CiAKICAgICBpZiAob3AgPT0gQmFj
a2luZ1N0b3JlOjpOb25lKQogICAgICAgICByZXR1cm47CkBAIC00MTUsNiArNDI4LDI4IEBAIHZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lU2NyZWVuVXBkYXRlcyhCYWNraW5nU3RvcmU6
OlJlc3VtZVVwZGF0ZU9wZXJhdGlvCiAjZW5kaWYKIH0KIAordm9pZCBCYWNraW5nU3RvcmVQcml2
YXRlOjp1cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUoKQoreworICAgIEFTU0VSVChCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRU
aHJlYWQoKSk7CisKKyAgICBib29sIGlzQmFja2luZ1N0b3JlVXNhYmxlID0gaXNBY3RpdmUoKSAm
JiBtX3RpbGVNYXRyaXhDb250YWluc1VzZWZ1bENvbnRlbnQKKyAgICAgICAgJiYgKG1fc3VzcGVu
ZEJhY2tpbmdTdG9yZVVwZGF0ZXMgfHwgIW1fcmVuZGVyUXVldWUtPmhhc0N1cnJlbnRWaXNpYmxl
Wm9vbUpvYigpKTsgLy8gQmFja2luZ3N0b3JlIGlzIG5vdCB1c2FibGUgd2hpbGUgd2UncmUgd2Fp
dGluZyBmb3IgYW4gKCJhdG9taWMiKSB6b29tIGpvYiB0byBmaW5pc2guCisKKyAgICBib29sIHNo
b3VsZFN1c3BlbmQgPSBtX3N1c3BlbmRTY3JlZW5VcGRhdGVDb3VudGVyV2ViS2l0VGhyZWFkCisg
ICAgICAgIHx8ICFtX3dlYlBhZ2UtPmlzVmlzaWJsZSgpCisgICAgICAgIHx8ICghaXNCYWNraW5n
U3RvcmVVc2FibGUgJiYgIW1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkg
JiYgIXNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpOworCisgICAgaWYgKG1fc3VzcGVu
ZFNjcmVlblVwZGF0ZXNXZWJLaXRUaHJlYWQgPT0gc2hvdWxkU3VzcGVuZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9zdXNwZW5kU2NyZWVuVXBkYXRlc1dlYktpdFRocmVhZCA9IHNob3VsZFN1
c3BlbmQ7CisKKyAgICAvLyBGSVhNRTogSWYgd2UgY2hhbmdlIHRoZSBiYWNraW5nc3RvcmUgdG8g
ZGlzcGF0Y2ggZ2VvbWV0cmllcywgdGhpcworICAgIC8vICAgYXNzaWdubWVudCBzaG91bGQgYmUg
bW92ZWQgdG8gYSBkaXNwYXRjaGVkIHNldHRlciBmdW5jdGlvbiBpbnN0ZWFkLgorICAgIG1fc3Vz
cGVuZFNjcmVlblVwZGF0ZXNVc2VySW50ZXJmYWNlVGhyZWFkID0gc2hvdWxkU3VzcGVuZDsKKyAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQo
KS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKK30KKwogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRl
OjpyZXBhaW50KGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiB3aW5kb3dSZWN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wgaW1tZWRp
YXRlKQogewpAQCAtMTEzMCwxMiArMTE2NSwxNSBAQCBUaWxlSW5kZXhMaXN0IEJhY2tpbmdTdG9y
ZVByaXZhdGU6OnJlbmRlcihjb25zdCBUaWxlSW5kZXhMaXN0JiB0aWxlSW5kZXhMaXN0KQogICAg
ICAgICBuZXdUaWxlTWFwLnNldChpbmRleCwgYmFja0J1ZmZlcik7CiAgICAgfQogCi0gICAgbmV3
R2VvbWV0cnktPnNldFRpbGVNYXAobmV3VGlsZU1hcCk7Ci0gICAgYWRvcHRBc0Zyb250U3RhdGUo
bmV3R2VvbWV0cnkpOwotCiAgICAgLy8gTGV0IHRoZSByZW5kZXIgcXVldWUga25vdyB0aGF0IHRo
ZSB0aWxlIGNvbnRlbnRzIGFyZSB1cCB0byBkYXRlIG5vdy4KICAgICBtX3JlbmRlclF1ZXVlLT5j
bGVhcihyZW5kZXJlZFRpbGVzLCBmcm9udFN0YXRlKCksIFJlbmRlclF1ZXVlOjpEb250Q2xlYXJD
b21wbGV0ZWRKb2JzKTsKIAorICAgIC8vIElmIHdlIGNvdWxkbid0IHJlbmRlciBhbGwgcmVxdWVz
dGVkIGpvYnMsIHN1c3BlbmQgYmxpdHRpbmcgdW50aWwgd2UgZG8uCisgICAgdXBkYXRlU3VzcGVu
ZFNjcmVlblVwZGF0ZVN0YXRlKCk7CisKKyAgICBuZXdHZW9tZXRyeS0+c2V0VGlsZU1hcChuZXdU
aWxlTWFwKTsKKyAgICBhZG9wdEFzRnJvbnRTdGF0ZShuZXdHZW9tZXRyeSk7CisKICNpZiBERUJV
R19CQUNLSU5HU1RPUkUKICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZl
bEluZm8sCiAgICAgICAgICJCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXIgZG9uZSByZW5kZXJp
bmcgJWQgdGlsZXMuIiwKQEAgLTEyMjIsMTMgKzEyNjAsNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoYm9vbCBmb3JjZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSB8fCBtX3N1c3BlbmRTY3Jl
ZW5VcGRhdGVzKSB7Ci0gICAgICAgIC8vIEF2b2lkIGNsaWVudCBnb2luZyBpbnRvIGJ1c3kgbG9v
cCB3aGlsZSBibGl0IGlzIGltcG9zc2libGUuCi0gICAgICAgIGlmIChmb3JjZSkKLSAgICAgICAg
ICAgIG1faGFzQmxpdEpvYnMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IGlmICghQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xp
ZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7CiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
Ojp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCiAg
ICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2Uo
CkBAIC0xMjM2LDYgKzEyNjcsMTMgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0Vmlz
aWJsZUNvbnRlbnRzKGJvb2wgZm9yY2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlc1VzZXJJbnRlcmZhY2VUaHJlYWQpIHsKKyAgICAgICAg
Ly8gQXZvaWQgY2xpZW50IGdvaW5nIGludG8gYnVzeSBsb29wIHdoaWxlIGJsaXQgaXMgaW1wb3Nz
aWJsZS4KKyAgICAgICAgaWYgKGZvcmNlKQorICAgICAgICAgICAgbV9oYXNCbGl0Sm9icyA9IGZh
bHNlOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFmb3JjZSkgewogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgLy8gSWYgdGhlcmUncyBhIFdlYlBh
Z2VDb21wb3NpdG9yQ2xpZW50LCBsZXQgaXQgc2NoZWR1bGUgdGhlIGJsaXQuCkBAIC0yMjgwLDEz
ICsyMzE4LDIyIEBAIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBCYWNraW5nU3RvcmVQcml2YXRlOjpm
cm9udFN0YXRlKCkgY29uc3QKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjphZG9wdEFzRnJv
bnRTdGF0ZShCYWNraW5nU3RvcmVHZW9tZXRyeSogbmV3RnJvbnRTdGF0ZSkKIHsKKyAgICBib29s
IGhhc1ZhbGlkQnVmZmVycyA9IGZhbHNlOworCiAgICAgLy8gUmVtZW1iZXIgdGhlIGJ1ZmZlcnMg
d2UnbGwgdXNlIGluIHRoZSBuZXcgZnJvbnQgc3RhdGUgZm9yIGNvbXBhcmlzb24uCiAgICAgV1RG
OjpWZWN0b3I8VGlsZUJ1ZmZlcio+IG5ld1RpbGVCdWZmZXJzOwogICAgIFRpbGVNYXAgbmV3VGls
ZU1hcCA9IG5ld0Zyb250U3RhdGUtPnRpbGVNYXAoKTsKICAgICBUaWxlTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBuZXdUaWxlTWFwLmVuZCgpOwogICAgIGZvciAoVGlsZU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBuZXdUaWxlTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBpZiAoaXQtPnZhbHVlKQorICAgICAgICBpZiAoaXQtPnZhbHVlKSB7CisgICAgICAgICAgICBo
YXNWYWxpZEJ1ZmZlcnMgPSB0cnVlOwogICAgICAgICAgICAgbmV3VGlsZUJ1ZmZlcnMuYXBwZW5k
KGl0LT52YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWhhc1ZhbGlkQnVmZmVy
cykgeworICAgICAgICBtX3RpbGVNYXRyaXhDb250YWluc1VzZWZ1bENvbnRlbnQgPSBmYWxzZTsK
KyAgICAgICAgdXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7CiAgICAgfQogCiAgICAg
dW5zaWduZWQgbmV3RnJvbnQgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihuZXdGcm9udFN0
YXRlKTsKQEAgLTIyOTUsOCArMjM0MiwxMyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmFk
b3B0QXNGcm9udFN0YXRlKEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBuZXdGcm9udFN0YXRlKQogICAg
IC8vIEF0b21pYyBjaGFuZ2UuCiAgICAgX3NtcF94Y2hnKCZtX2Zyb250U3RhdGUsIG5ld0Zyb250
KTsKIAotICAgIC8vIFdhaXQgdW50aWwgdGhlIHVzZXIgaW50ZXJmYWNlIHRocmVhZCB3b24ndCBh
Y2Nlc3MgdGhlIG9sZCBmcm9udCBzdGF0ZSBhbnltb3JlLgotICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5zeW5jVG9DdXJyZW50TWVz
c2FnZSgpOworICAgIGlmIChoYXNWYWxpZEJ1ZmZlcnMpIHsKKyAgICAgICAgbV90aWxlTWF0cml4
Q29udGFpbnNVc2VmdWxDb250ZW50ID0gdHJ1ZTsKKyAgICAgICAgdXBkYXRlU3VzcGVuZFNjcmVl
blVwZGF0ZVN0YXRlKCk7IC8vIGluY2x1ZGVzIHN5bmNUb0N1cnJlbnRNZXNzYWdlKCksIHNvIHdl
IGNhbiB1c2UgaXQgaW5zdGVhZAorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdhaXQgdW50aWwg
dGhlIHVzZXIgaW50ZXJmYWNlIHRocmVhZCB3b24ndCBhY2Nlc3MgdGhlIG9sZCBmcm9udCBzdGF0
ZSBhbnltb3JlLgorICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRo
cmVhZE1lc3NhZ2VDbGllbnQoKS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKKyAgICB9CiAKICAg
ICAvLyBSZWNsYWltIHVudXNlZCBvbGQgdGlsZSBidWZmZXJzIGFzIGJhY2sgYnVmZmVycy4KICAg
ICBUaWxlTWFwIG9sZFRpbGVNYXAgPSBvbGRGcm9udFN0YXRlLT50aWxlTWFwKCk7CkBAIC0yMzUw
LDYgKzI0MDIsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEN1cnJlbnRCYWNraW5n
U3RvcmVPd25lcihXZWJQYWdlKiB3ZWJQYWdlKQogICAgICAgICBCYWNraW5nU3RvcmVQcml2YXRl
OjpzX2N1cnJlbnRCYWNraW5nU3RvcmVPd25lci0+ZC0+bV9iYWNraW5nU3RvcmUtPmQtPnJlc2V0
VGlsZXMoKTsKIAogICAgIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNfY3VycmVudEJhY2tpbmdTdG9y
ZU93bmVyID0gd2ViUGFnZTsKKyAgICB3ZWJQYWdlLT5iYWNraW5nU3RvcmUoKS0+ZC0+dXBkYXRl
U3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7IC8vIGRlcGVuZHMgb24gaXNBY3RpdmUoKQogfQog
CiBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmlzQWN0aXZlKCkgY29uc3QKQEAgLTI0NjYsOCAr
MjUxOSwxMyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6YWNxdWlyZUJhY2tpbmdTdG9yZU1lbW9yeSgp
CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpyZWxlYXNlT3duZWRCYWNraW5nU3RvcmVNZW1vcnkoKQog
ewotICAgIGlmIChCYWNraW5nU3RvcmVQcml2YXRlOjpzX2N1cnJlbnRCYWNraW5nU3RvcmVPd25l
ciA9PSBkLT5tX3dlYlBhZ2UpCisgICAgaWYgKEJhY2tpbmdTdG9yZVByaXZhdGU6OnNfY3VycmVu
dEJhY2tpbmdTdG9yZU93bmVyID09IGQtPm1fd2ViUGFnZSkgeworICAgICAgICAvLyBDYWxsIHJl
c2V0VGlsZXMoKSAoaG9wZWZ1bGx5KSBhZnRlciBzdXNwZW5kU2NyZWVuVXBkYXRlcygpCisgICAg
ICAgIC8vIHNvIHdlIHdpbGwgbm90IGNhdXNlIGNoZWNrZXJib2FyZCB0byBiZSBzaG93biBiZWZv
cmUgc3VzcGVuZGluZy4KKyAgICAgICAgLy8gVGhpcyBjYXVzZXMgdGhlIHRpbGVzIGluIHVzZSB0
byBiZSBnaXZlbiBiYWNrIHRvIHRoZSBTdXJmYWNlUG9vbC4KKyAgICAgICAgZC0+cmVzZXRUaWxl
cygpOwogICAgICAgICBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+cmVsZWFzZUJ1
ZmZlcnMoKTsKKyAgICB9CiB9CiAKIGJvb2wgQmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9icygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKaW5k
ZXggNTc3Mzk5NWJiNmQ4NTc1OGYyMDlmMDY1NmQ0ZjlmMjk5NThhMGNiOS4uM2E1M2M1MTA3N2Mw
OTk5ODI3OTAxODkzZTc1Y2YyNTJmZTZkNWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaApAQCAtMTI4LDggKzEyOCw2IEBAIHB1YmxpYzoKICAg
ICAvLyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OldpbmRvdzo6R0xFUzJVc2FnZS4K
ICAgICBib29sIGlzT3BlbkdMQ29tcG9zaXRpbmcoKSBjb25zdDsKIAotICAgIGJvb2wgaXNTdXNw
ZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOyB9Ci0K
ICAgICAvLyBTdXNwZW5kcyBhbGwgYmFja2luZ3N0b3JlIHVwZGF0ZXMgc28gdGhhdCByZW5kZXJp
bmcgdG8gdGhlIGJhY2tpbmdzdG9yZSBpcyBkaXNhYmxlZC4KICAgICB2b2lkIHN1c3BlbmRCYWNr
aW5nU3RvcmVVcGRhdGVzKCk7CiAKQEAgLTE0Miw2ICsxNDAsOSBAQCBwdWJsaWM6CiAgICAgLy8g
UmVzdW1lcyBhbGwgc2NyZWVuIHVwZGF0ZXMgc28gdGhhdCAnYmxpdFZpc2libGVDb250ZW50cycg
aXMgZW5hYmxlZC4KICAgICB2b2lkIHJlc3VtZVNjcmVlblVwZGF0ZXMoQmFja2luZ1N0b3JlOjpS
ZXN1bWVVcGRhdGVPcGVyYXRpb24pOwogCisgICAgLy8gVXBkYXRlIG1fc3VzcGVuZFNjcmVlblVw
ZGF0ZXMqVGhyZWFkIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGNvbmRpdGlvbnMuCisgICAgdm9pZCB1
cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUoKTsKKwogICAgIC8vIFRoZSBmdW5jdGlvbnMg
cmVwYWludCgpLCBzbG93U2Nyb2xsKCksIHNjcm9sbCgpLCBzY3JvbGxpbmdTdGFydGVkSGVscGVy
KCkgYXJlCiAgICAgLy8gY2FsbGVkIGZyb20gb3V0c2lkZSBXZWJLaXQgYW5kIHdpdGhpbiBXZWJL
aXQgdmlhIENocm9tZUNsaWVudEJsYWNrQmVycnkuCiAgICAgdm9pZCByZXBhaW50KGNvbnN0IFBs
YXRmb3JtOjpJbnRSZWN0JiB3aW5kb3dSZWN0LCBib29sIGNvbnRlbnRDaGFuZ2VkLCBib29sIGlt
bWVkaWF0ZSk7CkBAIC0zNDIsMTIgKzM0MywxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2Vi
UGFnZSogc19jdXJyZW50QmFja2luZ1N0b3JlT3duZXI7CiAKLSAgICB1bnNpZ25lZCBtX3N1c3Bl
bmRTY3JlZW5VcGRhdGVzOworICAgIHVuc2lnbmVkIG1fc3VzcGVuZFNjcmVlblVwZGF0ZUNvdW50
ZXJXZWJLaXRUaHJlYWQ7CiAgICAgdW5zaWduZWQgbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRl
czsKICAgICBCYWNraW5nU3RvcmU6OlJlc3VtZVVwZGF0ZU9wZXJhdGlvbiBtX3Jlc3VtZU9wZXJh
dGlvbjsKIAorICAgIGJvb2wgbV9zdXNwZW5kU2NyZWVuVXBkYXRlc1dlYktpdFRocmVhZDsKKyAg
ICBib29sIG1fc3VzcGVuZFNjcmVlblVwZGF0ZXNVc2VySW50ZXJmYWNlVGhyZWFkOwogICAgIGJv
b2wgbV9zdXNwZW5kUmVuZGVySm9iczsKICAgICBib29sIG1fc3VzcGVuZFJlZ3VsYXJSZW5kZXJK
b2JzOworICAgIGJvb2wgbV90aWxlTWF0cml4Q29udGFpbnNVc2VmdWxDb250ZW50OwogICAgIGJv
b2wgbV90aWxlTWF0cml4TmVlZHNVcGRhdGU7CiAgICAgYm9vbCBtX2lzU2Nyb2xsaW5nT3Jab29t
aW5nOwogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwCmluZGV4IGJhNjM4NTY4NzRlZjI4ZDVmMjJkMjY1YzBjMjZhZDM2ODQxMWU3
YzcuLjZmYWUyMzBjMjIwNzE2NzFiYjI0MTIyMjQxMDIzZDUwMmQ5ZTAzODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMzIyMSw2ICszMjIxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJpdmF0ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgICAgIH0KIAog
ICAgICAgICBtX3Zpc2libGUgPSB2aXNpYmxlOworICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+
dXBkYXRlU3VzcGVuZFNjcmVlblVwZGF0ZVN0YXRlKCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFBB
R0VfVklTSUJJTElUWV9BUEkpCkBAIC01MzQzLDYgKzUzNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcml2
YXRlOjpzZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIoYm9vbCBjb21wb3NpdG9yRHJhd3NSb290
TGF5ZXIpCiAgICAgLy8gV2hlbiB0aGUgQmxhY2tCZXJyeSBwb3J0IGZvcmNlcyBjb21wb3NpdGlu
ZyBtb2RlLCB0aGUgcm9vdCBsYXllciBzdG9wcwogICAgIC8vIHBhaW50aW5nIHRvIHdpbmRvdyBh
bmQgc3RhcnRzIHBhaW50aW5nIHRvIGxheWVyIGluc3RlYWQuCiAgICAgbV9wYWdlLT5zZXR0aW5n
cygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShjb21wb3NpdG9yRHJhd3NSb290TGF5ZXIpOwor
ICAgIG1fYmFja2luZ1N0b3JlLT5kLT51cGRhdGVTdXNwZW5kU2NyZWVuVXBkYXRlU3RhdGUoKTsK
IAogICAgIGlmICghbV9tYWluRnJhbWUpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>