<?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>74351</bug_id>
          
          <creation_ts>2011-12-12 15:01:43 -0800</creation_ts>
          <short_desc>[chromium] Add inhibitDraw to CCScheduler and drop root impl to prevent background flash on tab restore</short_desc>
          <delta_ts>2011-12-14 20:38:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519537</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-12-12 15:01:43 -0800</bug_when>
    <thetext>[chromium] Add inhibitDraw to CCScheduler and drop root impl to prevent background flash on tab restore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519555</commentid>
    <comment_count>1</comment_count>
      <attachid>118873</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-12-12 15:13:59 -0800</bug_when>
    <thetext>Created attachment 118873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520567</commentid>
    <comment_count>2</comment_count>
      <attachid>118873</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-13 18:25:06 -0800</bug_when>
    <thetext>Comment on attachment 118873
Patch

This all looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520602</commentid>
    <comment_count>3</comment_count>
      <attachid>118873</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-13 19:06:12 -0800</bug_when>
    <thetext>Comment on attachment 118873
Patch

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

R=me. have several naming nits for your consideration.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:224
&gt;      if (CCThreadProxy::implThread()) {
&gt; -        TRACE_EVENT(&quot;CCLayerTreeHost::setNeedsCommit&quot;, this, 0);
&gt;          m_proxy-&gt;setNeedsCommit();
&gt;      } else

nit: you can drop the { }s around the &apos;if&apos; clause if you want to drop this trace since it&apos;s a 1-liner now

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:108
&gt; +CCSchedulerStateMachine::Action CCScheduler::getNextAction()

I think WebKit style would lean towards calling this &apos;nextAction()&apos;

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:41
&gt; +    virtual bool inhibitDraw() const = 0;

this looks like a simple getter, but might be complicated on the implementation side in the future if we get fancy about checking for tiles that are visible. if we want to anticipate that i think we might want to give this a bigger name and make it non-const. up to you, though, for now since it&apos;s a bool getter this works.

then again, we&apos;re gonna call this a whole lot so the implementation had better be really fast

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:434
&gt; +    return m_layerTreeHostImpl ? !m_layerTreeHostImpl-&gt;rootLayer() : true;

hmmmm, a bit yoda-like this ternary statement appears.  perhaps phrasing this function call terms of a positive (shouldDraw(), canDraw(), something like that) would some clarity to the method provide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521416</commentid>
    <comment_count>4</comment_count>
      <attachid>119316</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-12-14 16:11:12 -0800</bug_when>
    <thetext>Created attachment 119316
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521615</commentid>
    <comment_count>5</comment_count>
      <attachid>119316</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 20:38:12 -0800</bug_when>
    <thetext>Comment on attachment 119316
Patch for landing

Clearing flags on attachment: 119316

Committed r102876: &lt;http://trac.webkit.org/changeset/102876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521616</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 20:38:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118873</attachid>
            <date>2011-12-12 15:13:59 -0800</date>
            <delta_ts>2011-12-14 16:11:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74351-20111212151358.patch</filename>
            <type>text/plain</type>
            <size>15275</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4ODkzNGJhNjZiMWEx
MTA1MDJkZDI4OWQ2NDZhZDhiNWNmZTk2Yi4uNzg1YjFjYmQxMjk0ZmFkNTZkNzEyNzZkMmNkODU1
YTVlZDdjODM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTEyLTEyICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBpbmhp
Yml0RHJhdyB0byBDQ1NjaGVkdWxlciBhbmQgZHJvcCByb290IGltcGwgdG8gcHJldmVudCBiYWNr
Z3JvdW5kIGZsYXNoIG9uIHRhYiByZXN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVl
ZHNDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRCZWNvbWVJ
bnZpc2libGVPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpn
ZXROZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0SW5oaWJpdERyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbmhpYml0RHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAy
MDExLTEyLTA4ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBQcm92aWRlIG1vcmUgc3BlY2lmaWMgZXJyb3IgZGVzY3JpcHRpb24gZm9yIFNvY2tl
dFN0cmVhbUVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NjliYmI4NzZhZjJj
MjhmNGI2YzA4ZDZiNWQ5MTBjZTY1NjdkZGRkLi5mOGIwOGE5MzdiMDE5MzdjNjBjOTVkN2M2ODkz
NmI0ZmJjYTYxNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDExLTEyLTEyICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIEFkZCBpbmhpYml0RHJhdyB0byBDQ1NjaGVkdWxlciBhbmQgZHJvcCByb290IGlt
cGwgdG8gcHJldmVudCBiYWNrZ3JvdW5kIGZsYXNoIG9uIHRhYiByZXN0b3JlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6aW5o
aWJpdERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJD
bGllbnQ6OnNldEluaGliaXREcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hl
ZHVsZXJDbGllbnQ6OmluaGliaXREcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVs
ZXJDbGllbnRUaGF0U2V0TmVlZHNEcmF3SW5zaWRlRHJhdzo6aW5oaWJpdERyYXcpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURy
YXc6OmluaGliaXREcmF3KToKKwogMjAxMS0xMi0wNyAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFz
QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgcGFnZS1zY2FsZSBhbmltYXRp
b24gc3VwcG9ydCB0byBJbXBsIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggMjdkOTU2YTdjN2FmYmQwOTVkYjk0NWI5MzRhMTY2ZWZhNTVmMzc0Zi4uYmRiYzQ5YzA0
MzQ1ZGRhNmZmZGYyNThiYmM5NjQyNTRlOWY5N2QxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCkBAIC0yMjAsNyArMjIwLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5l
ZWRzQW5pbWF0ZSgpCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXQoKQogewog
ICAgIGlmIChDQ1RocmVhZFByb3h5OjppbXBsVGhyZWFkKCkpIHsKLSAgICAgICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNDb21taXQiLCB0aGlzLCAwKTsKICAgICAgICAg
bV9wcm94eS0+c2V0TmVlZHNDb21taXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlQ29tcG9zaXRlKCk7CkBAIC0yODcsNiArMjg2LDE4IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCogaG9zdEltCiAgICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5
VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkp
KTsKICAgICAgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVy
ZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKICAgICB9CisKKyAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgZHJvcHBlZCB0aWxlcyBhcmUgcHJvcGFnYXRlZCB0byB0aGUgaW1w
bCB0cmVlLgorICAgIC8vIElmIHRoZSBmcm9udGJ1ZmZlciBpcyBjYWNoZWQsIHRoZW4gY2xvYmJl
ciB0aGUgaW1wbCB0cmVlLiBPdGhlcndpc2UsCisgICAgLy8gcHVzaCBvdmVyIHRoZSB0cmVlIGNo
YW5nZXMuCisgICAgaWYgKG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5jb250
ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIpIHsKKyAgICAgICAgaG9zdEltcGwtPnNldFJvb3RMYXll
cigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocm9vdExheWVyKCkpCisgICAg
ICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVU
cmVlcyhyb290TGF5ZXIoKSwgaG9zdEltcGwtPnJvb3RMYXllcigpKSk7CisgICAgZWxzZQorICAg
ICAgICBob3N0SW1wbC0+c2V0Um9vdExheWVyKDApOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggNTAxYTAwYzJiMDlhMGRmOTBkYzYxZGNhZmNm
Y2E3ZDdjNjY3YjE4NS4uMTU2YTM5ZDFkZWQ3NTA3ZDQ1NzU3NjhhOTUyYTljM2UwNTMyYzVlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtMTA1LDE3ICsxMDUsMjMgQEAgdm9pZCBDQ1Nj
aGVkdWxlcjo6YmVnaW5GcmFtZSgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3luYygp
OwogfQogCitDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyOjpnZXRO
ZXh0QWN0aW9uKCkKK3sKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRJbmhpYml0RHJhdyhtX2NsaWVu
dC0+aW5oaWJpdERyYXcoKSk7CisgICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24o
KTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogewog
ICAgIC8vIEVhcmx5IG91dCBzbyB3ZSBkb24ndCBzcGFtIFRSQUNFX0VWRU5UUyB3aXRoIHVzZWxl
c3MgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMuCi0gICAgaWYgKG1fc3RhdGVNYWNoaW5lLm5leHRB
Y3Rpb24oKSA9PSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpCisgICAgaWYg
KGdldE5leHRBY3Rpb24oKSA9PSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIHJlLWVudGVyIGl0
c2VsZi4gRm9yIGV4YW1wbGUsIGRyYXcgbWF5IGNhbGwKICAgICAvLyBzZXROZWVkc0NvbW1pdC4g
UHJvY2VlZWQgd2l0aCBjYXV0aW9uLgogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rp
b24gYWN0aW9uOwogICAgIGRvIHsKLSAgICAgICAgYWN0aW9uID0gbV9zdGF0ZU1hY2hpbmUubmV4
dEFjdGlvbigpOworICAgICAgICBhY3Rpb24gPSBnZXROZXh0QWN0aW9uKCk7CiAgICAgICAgIG1f
c3RhdGVNYWNoaW5lLnVwZGF0ZVN0YXRlKGFjdGlvbik7CiAKICAgICAgICAgc3dpdGNoIChhY3Rp
b24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmluZGV4IDk1ZTk5NWY0NTE4ZWQ2N2NmMzRmNGM3ODg4
NzRmNjkyMmU3ZTI2ZGQuLjkzMzYwYjM2OTcxMjdiYjBmYjA4YjA0NzJlN2I4NTU4OWU2MzRkZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBDQ1RocmVhZDsK
IGNsYXNzIENDU2NoZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFz
TW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaW5oaWJp
dERyYXcoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVn
aW5GcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3
YXAoKSA9IDA7CkBAIC04MSw2ICs4Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0NTY2hl
ZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQqLCBQYXNzT3duUHRyPENDRnJhbWVSYXRlQ29udHJvbGxl
cj4pOwogCisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBnZXROZXh0QWN0aW9u
KCk7CiAgICAgdm9pZCBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogCiAgICAgQ0NTY2hlZHVs
ZXJDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwCmluZGV4IDRjZmY2NzMwYjg3Y2UxNDI5Y2FiMGQyMTkwN2YyODZkYTg2YmE0N2Iu
LmU2NDY5N2Q2MDc3NmUxZDFjMzlkYzFlNjczYTAyYThkMjY2YTU3NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKQEAgLTM3LDEyICszNywxMyBAQCBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwg
bV9uZWVkc0NvbW1pdChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmco
ZmFsc2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQotICAgICwgbV92aXNpYmxlKGZhbHNl
KSB7IH0KKyAgICAsIG1fdmlzaWJsZShmYWxzZSkKKyAgICAsIG1faW5oaWJpdERyYXcoZmFsc2Up
IHsgfQogCiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKIHsKICAgICBib29sIGNhbkRyYXcgPSBtX2N1cnJl
bnRGcmFtZU51bWJlciAhPSBtX2xhc3RGcmFtZU51bWJlcldoZXJlRHJhd1dhc0NhbGxlZDsKLSAg
ICBib29sIHNob3VsZERyYXcgPSAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIG1f
dmlzaWJsZSAmJiBjYW5EcmF3KSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3OworICAgIGJvb2wgc2hv
dWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlICYm
IGNhbkRyYXcgJiYgIW1faW5oaWJpdERyYXcpIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXc7CiAgICAg
c3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToKICAg
ICAgICAgaWYgKHNob3VsZERyYXcpCkBAIC02OSw2ICs3MCwxMCBAQCBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29u
c3QKICAgICBjYXNlIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXOgogICAgICAg
ICBpZiAoc2hvdWxkRHJhdykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAg
ICAgLy8gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcgd2FudHMgdG8gZW5mb3Jj
ZSBhIGRyYXcuIElmIG1faW5oaWJpdERyYXcgaXMgdHJ1ZSwKKyAgICAgICAgLy8gcHJvY2VlZCB0
byB0aGUgbmV4dCBzdGVwIChzaW1pbGFyIGFzIGluIENPTU1JVF9TVEFURV9JRExFKS4KKyAgICAg
ICAgaWYgKG1faW5oaWJpdERyYXcgJiYgbV9uZWVkc0NvbW1pdCAmJiBtX3Zpc2libGUpCisgICAg
ICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9O
X05PTkU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNWEyN2JkMjhiODhhNzRjYjY5NGVkM2U0
NTUxZDQzMzdkZDYxYzUzMi4uOGM3YmJiZGFlYzhlYmU3MTJhM2MyYzY4YTYyZTQwNzUzM2Y1YzU2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC05OCw2
ICs5OCw4IEBAIHB1YmxpYzoKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQg
dGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KICAgICB2b2lkIGJlZ2luVXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwogCisgICAgdm9pZCBz
ZXRJbmhpYml0RHJhdyhib29sIGluaGliaXQpIHsgbV9pbmhpYml0RHJhdyA9IGluaGliaXQ7IH0K
KwogcHJvdGVjdGVkOgogICAgIENvbW1pdFN0YXRlIG1fY29tbWl0U3RhdGU7CiAKQEAgLTEwOSw2
ICsxMTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nOwogICAgIGJvb2wgbV9pbnNpZGVWU3luYzsKICAgICBib29sIG1fdmlzaWJsZTsKKyAgICBi
b29sIG1faW5oaWJpdERyYXc7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmlu
ZGV4IDhlNzc0MjVlNDQwYTRlZGNmMjlmMjY1YWMzZTllZWZkYmUyMTVkODcuLjc0NWQ1YjA1NDRj
MzI1MGJkMjVkMDZiODU5N2EzZjQ4NTEwNGE5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCkBAIC0yMzksMTIgKzIzOSwxNSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldFZpc2libGUo
Ym9vbCB2aXNpYmxlKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sIHZpc2libGUpCiB7CiAgICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBpZiAoIXZpc2libGUpCi0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdElt
cGwuZ2V0KCkpOwotICAgIGVsc2UKLSAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNl
dE5lZWRzUmVkcmF3KCk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldFZpc2libGUo
dmlzaWJsZSk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZSh2aXNpYmxlKTsK
KyAgICBpZiAoIXZpc2libGUpIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRCZWNvbWVJ
bnZpc2libGVPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CisgICAgICAg
IC8vIGFzIHBhcnRpYWwgb3IgYWxsIHRoZSB0ZXh0dXJlcyBtYXkgYmUgZXZpY3RlZCBpbiBkaWRC
ZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQsCisgICAgICAgIC8vIHNjaGVkdWxlIGEgY29tbWl0
IHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiBpdCBnb2VzIHRvIHZpc2libGUgYWdhaW4uCisg
ICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0NvbW1pdCgpOworICAgIH0g
ZWxzZQorICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNSZWRyYXcoKTsK
ICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKIH0KIApAQCAtNDI1LDYgKzQyOCwxMiBAQCBib29s
IENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVy
biBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsK
IH0KIAorYm9vbCBDQ1RocmVhZFByb3h5OjppbmhpYml0RHJhdygpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0SW1wbCA/ICFt
X2xheWVyVHJlZUhvc3RJbXBsLT5yb290TGF5ZXIoKSA6IHRydWU7Cit9CisKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMiLCB0aGlzLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAxZGYzNzQ2YzVkYzAx
MzRhMzI0ZTRhYzg2NDIzMDQ1MjkzM2E5OGZiLi45NjYzMjM1NDVhOTI4NDYyMmVlMDA5NmQ4MTFj
YjQ0YzliMDQyYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC03MCw2ICs3MCw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIENDU2NoZWR1bGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAg
dmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaW5oaWJpdERyYXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQmVnaW5GcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5k
U3dhcCgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggZjM0Njk3NzY2NmQyYzRkZmY0N2I0
ODgxZmFiMWIxNmQzZjhjZDdiMi4uZTRiNWE3YmI5NzVlYjNhOTI2NWFmMmExZmIzMTJlMjhmMWNh
OWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXROZWVkc0ZvcmNlZFJlZHJhdyhib29sIGIpIHsgbV9uZWVkc0ZvcmNlZFJl
ZHJhdyA9IGI7IH0KICAgICBib29sIG5lZWRzRm9yY2VkUmVkcmF3KCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0ZvcmNlZFJlZHJhdzsgfQogCisgICAgYm9vbCBpbmhpYml0RHJhdygpIGNvbnN0IHsg
cmV0dXJuIG1faW5oaWJpdERyYXc7IH0KICAgICBib29sIGluc2lkZVZTeW5jKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnNpZGVWU3luYzsgfQogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlzaWJsZTsgfQogCkBAIC0yNDQsNiArMjQ1LDM4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0Tm9Db21taXRTdGF0ZXNSZWRyYXdXaGVuSW52aXNpYmxlKQogICAg
IH0KIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RJbmhpYml0UmVk
cmF3X1N0b3BzRHJhdykKK3sKKyAgICBzaXplX3QgbnVtQ29tbWl0U3RhdGVzID0gc2l6ZW9mKGFs
bENvbW1pdFN0YXRlcykgLyBzaXplb2YoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNvbW1pdFN0
YXRlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNvbW1pdFN0YXRlczsgKytpKSB7
CisgICAgICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgZHJhd2luZyByZWdhcmRsZXNzIG9m
IHZzeW5jLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgMjsgKytqKSB7CisgICAg
ICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgICAgICAgICBzdGF0ZS5zZXRDb21taXRT
dGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOworICAgICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZShm
YWxzZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICAgICAg
ICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChq
ID09IDEpCisgICAgICAgICAgICAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOworCisgICAgICAg
ICAgICBzdGF0ZS5zZXRJbmhpYml0RHJhdyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0SW5oaWJpdFJlZHJhd1dpdGhXYWl0aW5nRm9yRmlyc3REcmF3TWFrZXNQcm9ncmVzcykK
K3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFX
KTsKKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBzdGF0ZS5zZXROZWVkc1Jl
ZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxz
ZSk7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRJbmhpYml0RHJh
dyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwogVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQog
ewogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCBiNThlZDJjNTZjMjhkZjc4NWNjOWMxMTY5
ZDY3MDFjYzcwZGZmYmQ2Li4yNjQzMjRmNjEzMmYxNzhkMWMxY2MxYjgyZmIyZmExYTUzODM1ZmFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3Qu
Y3BwCkBAIC00NCwxMyArNDQsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hY3Rpb25z
LmNsZWFyKCk7CiAgICAgICAgIG1faGFzTW9yZVJlc291cmNlVXBkYXRlcyA9IGZhbHNlOworICAg
ICAgICBtX2luaGliaXREcmF3ID0gZmFsc2U7CiAgICAgfQogCiAgICAgdm9pZCBzZXRIYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzKGJvb2wgYikgeyBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBiOyB9
CisgICAgdm9pZCBzZXRJbmhpYml0RHJhdyhib29sIGIpIHsgbV9pbmhpYml0RHJhdyA9IGI7IH0K
IAogICAgIGludCBudW1BY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Piht
X2FjdGlvbnMuc2l6ZSgpKTsgfQogICAgIGNvbnN0IGNoYXIqIGFjdGlvbihpbnQgaSkgY29uc3Qg
eyByZXR1cm4gbV9hY3Rpb25zW2ldOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaW5oaWJpdERyYXco
KSBjb25zdCB7IHJldHVybiBtX2luaGliaXREcmF3OyB9CiAgICAgdmlydHVhbCBib29sIGhhc01v
cmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01vcmVSZXNvdXJjZVVwZGF0
ZXM7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgbV9h
Y3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkgeyBtX2FjdGlvbnMucHVzaF9i
YWNrKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIpOyB9CkBAIC01OSw2ICs2Miw3IEBAIHB1
YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzOwor
ICAgIGJvb2wgbV9pbmhpYml0RHJhdzsKICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyKj4gbV9h
Y3Rpb25zOwogfTsKIApAQCAtMTM5LDYgKzE0Myw3IEBAIHB1YmxpYzoKICAgICBpbnQgbnVtRHJh
d3MoKSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFz
TW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGluaGliaXREcmF3KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAgewpAQCAtMTkyLDYgKzE5Nyw3IEBAIHB1
YmxpYzoKICAgICBpbnQgbnVtRHJhd3MoKSBjb25zdCB7IHJldHVybiBtX251bURyYXdzOyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGluaGliaXREcmF3KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119316</attachid>
            <date>2011-12-14 16:11:12 -0800</date>
            <delta_ts>2011-12-14 20:38:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74351-20111214161111.patch</filename>
            <type>text/plain</type>
            <size>17745</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMyYjFlZWE1ZGUzYTI1
N2RjODc5NWZkNWNiY2ViYzlmZmI2NTk5My4uOTA2ZTIwYmM1MGZhNzcwYzFiNDYzZGQxNDRmNjAx
YzAzMjBlNzRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTEyLTEyICBOYXQg
RHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBpbmhp
Yml0RHJhdyB0byBDQ1NjaGVkdWxlciBhbmQgZHJvcCByb290IGltcGwgdG8gcHJldmVudCBiYWNr
Z3JvdW5kIGZsYXNoIG9uIHRhYiByZXN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJv
Ymluc29uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0TmVl
ZHNDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkaWRCZWNvbWVJ
bnZpc2libGVPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpn
ZXROZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0SW5oaWJpdERyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbmhpYml0RHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAy
MDExLTEyLTE0ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAg
W2Nocm9taXVtXSBSZWZhY3RvciB0aWxlIGRyYXdpbmcgdG8gYmUgbW9yZSBkYXRhLWRyaXZlbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkOTY0YzMxY2FhOWJmYjBiNmFkNzkzNTVkZWQx
Zjk3YTc1ZWJkZmE2Li5jZWQyZDMzN2RkMWIxNTYxNjM1YTRhZjk0YThkZDIxZDg2NjdlNmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEyLTEyICBO
YXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBp
bmhpYml0RHJhdyB0byBDQ1NjaGVkdWxlciBhbmQgZHJvcCByb290IGltcGwgdG8gcHJldmVudCBi
YWNrZ3JvdW5kIGZsYXNoIG9uIHRhYiByZXN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVz
IFJvYmluc29uLgorCisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6aW5oaWJpdERyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6OnNldEluaGli
aXREcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlQ0NTY2hlZHVsZXJDbGllbnQ6Omlu
aGliaXREcmF3KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpTY2hlZHVsZXJDbGllbnRUaGF0U2V0
TmVlZHNEcmF3SW5zaWRlRHJhdzo6aW5oaWJpdERyYXcpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlNjaGVkdWxlckNsaWVudFRoYXRTZXROZWVkc0NvbW1pdEluc2lkZURyYXc6OmluaGliaXREcmF3
KToKKwogMjAxMS0xMi0xNCAgSm9uYXRoYW4gQmFja2VyICA8YmFja2VyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFBsdW1iIHRocm91Z2ggZmxhZyBmb3IgZW5hYmxpbmcgcGFy
dGlhbCBzd2FwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAyN2Q5NTZhN2M3
YWZiZDA5NWRiOTQ1YjkzNGExNjZlZmE1NWYzNzRmLi40NWZmNjZmZDdjMDNlZjkxMWI0NDU0OGMy
ZTZiODJjNmI5YWY4ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTIx
OSwxMCArMjE5LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzQW5pbWF0ZSgpCiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0NvbW1pdCgpCiB7Ci0gICAgaWYgKENDVGhy
ZWFkUHJveHk6OmltcGxUaHJlYWQoKSkgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0OjpzZXROZWVkc0NvbW1pdCIsIHRoaXMsIDApOworICAgIGlmIChDQ1RocmVhZFByb3h5
OjppbXBsVGhyZWFkKCkpCiAgICAgICAgIG1fcHJveHktPnNldE5lZWRzQ29tbWl0KCk7Ci0gICAg
fSBlbHNlCisgICAgZWxzZQogICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsK
IH0KIApAQCAtMjg3LDYgKzI4NiwxOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21l
SW52aXNpYmxlT25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbQogICAgICAg
ICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1h
bmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7CiAgICAgICAgIGNvbnRl
bnRzVGV4dHVyZU1hbmFnZXIoKS0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgdGhl
IGRyb3BwZWQgdGlsZXMgYXJlIHByb3BhZ2F0ZWQgdG8gdGhlIGltcGwgdHJlZS4KKyAgICAvLyBJ
ZiB0aGUgZnJvbnRidWZmZXIgaXMgY2FjaGVkLCB0aGVuIGNsb2JiZXIgdGhlIGltcGwgdHJlZS4g
T3RoZXJ3aXNlLAorICAgIC8vIHB1c2ggb3ZlciB0aGUgdHJlZSBjaGFuZ2VzLgorICAgIGlmICht
X3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuY29udGV4dEhhc0NhY2hlZEZyb250
QnVmZmVyKSB7CisgICAgICAgIGhvc3RJbXBsLT5zZXRSb290TGF5ZXIoMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKHJvb3RMYXllcigpKQorICAgICAgICBob3N0SW1wbC0+c2V0
Um9vdExheWVyKFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXplVHJlZXMocm9vdExheWVyKCks
IGhvc3RJbXBsLT5yb290TGF5ZXIoKSkpOworICAgIGVsc2UKKyAgICAgICAgaG9zdEltcGwtPnNl
dFJvb3RMYXllcigwKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldEhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAxMjFkMDVjYzQ5NzdjZjc5MDg5ODI5NzE4NTEz
ZGFiOTQzOTEzOTNkLi4wOTQ2NWJmOTllNzlmZTcxZjI0MTc0Njc4NDUyZGFlZjg3NTkxMDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtODEsNiArODEsMTUg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb21taXRDb21wbGV0ZSgpCiAgICAgdXBkYXRl
TWF4U2Nyb2xsUG9zaXRpb24oKTsKIH0KIAorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5E
cmF3KCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y29udGV4dCgpCiB7CiAgICAgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlciA/IG1fbGF5ZXJS
ZW5kZXJlci0+Y29udGV4dCgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAppbmRleCBhN2FlMDM4OGJjMDBmNmIwZDA2ZDM2ZDcyMjRkNjQ4ODdkMWRjOGU1Li5lZDM4Yjg2
ZGU0NmZjYjM1NDViODA4OWVmMTZjNmI0NTIxMzg4ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCkBAIC03OCw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgYW5pbWF0ZShkb3VibGUgZnJhbWVEaXNwbGF5VGltZU1zKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0xheWVycygpOwogCisgICAgYm9vbCBjYW5EcmF3KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQoKTsKIAogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5jcHAKaW5kZXggNTAxYTAwYzJiMDlhMGRmOTBkYzYxZGNhZmNmY2E3ZDdjNjY3
YjE4NS4uODEyYTBjNzA4MGQxYjBkZDVlMDM2MjhkMTE1MzdkZDY1ZTFkMjMyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcApAQCAtMTA1LDE3ICsxMDUsMjMgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6
YmVnaW5GcmFtZSgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3luYygpOwogfQogCitD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyOjpuZXh0QWN0aW9uKCkK
K3sKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRDYW5EcmF3KG1fY2xpZW50LT5jYW5EcmF3KCkpOwor
ICAgIHJldHVybiBtX3N0YXRlTWFjaGluZS5uZXh0QWN0aW9uKCk7Cit9CisKIHZvaWQgQ0NTY2hl
ZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKICAgICAvLyBFYXJseSBvdXQgc28g
d2UgZG9uJ3Qgc3BhbSBUUkFDRV9FVkVOVFMgd2l0aCB1c2VsZXNzIHByb2Nlc3NTY2hlZHVsZWRB
Y3Rpb25zLgotICAgIGlmIChtX3N0YXRlTWFjaGluZS5uZXh0QWN0aW9uKCkgPT0gQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FKQorICAgIGlmIChuZXh0QWN0aW9uKCkgPT0gQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiByZS1lbnRlciBpdHNlbGYuIEZvciBleGFtcGxlLCBkcmF3
IG1heSBjYWxsCiAgICAgLy8gc2V0TmVlZHNDb21taXQuIFByb2NlZWVkIHdpdGggY2F1dGlvbi4K
ICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIGFjdGlvbjsKICAgICBkbyB7Ci0g
ICAgICAgIGFjdGlvbiA9IG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oKTsKKyAgICAgICAgYWN0
aW9uID0gbmV4dEFjdGlvbigpOwogICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVTdGF0ZShh
Y3Rpb24pOwogCiAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApp
bmRleCA5NWU5OTVmNDUxOGVkNjdjZjM0ZjRjNzg4ODc0ZjY5MjJlN2UyNmRkLi43MzEwNTgxYjEx
YjVmZGYzZjg4OTdmYWNmNmM2ZjkxOTRjMmUyY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAg
LTM3LDYgKzM3LDcgQEAgY2xhc3MgQ0NUaHJlYWQ7CiAKIGNsYXNzIENDU2NoZWR1bGVyQ2xpZW50
IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkgPSAwOwpAQCAtODEsNiArODIsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIENDU2NoZWR1bGVyKENDU2NoZWR1bGVyQ2xpZW50KiwgUGFz
c093blB0cjxDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXI+KTsKIAorICAgIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBY3Rpb24gbmV4dEFjdGlvbigpOwogICAgIHZvaWQgcHJvY2Vzc1NjaGVkdWxlZEFj
dGlvbnMoKTsKIAogICAgIENDU2NoZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA0Y2ZmNjczMGI4N2NlMTQy
OWNhYjBkMjE5MDdmMjg2ZGE4NmJhNDdiLi4wNWI0ZjZjYjZiNjcxMmRhNmRlMDc1ZmQ1ZDIyOTZl
MzdmYTA4NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
Y3BwCkBAIC0zNywxMiArMzcsMTMgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lKCkKICAgICAsIG1fbmVlZHNDb21taXQoZmFsc2UpCiAgICAgLCBtX3Vw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKQogICAgICwgbV9pbnNpZGVWU3luYyhmYWxz
ZSkKLSAgICAsIG1fdmlzaWJsZShmYWxzZSkgeyB9CisgICAgLCBtX3Zpc2libGUoZmFsc2UpCisg
ICAgLCBtX2NhbkRyYXcodHJ1ZSkgeyB9CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rp
b24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewogICAgIGJv
b2wgY2FuRHJhdyA9IG1fY3VycmVudEZyYW1lTnVtYmVyICE9IG1fbGFzdEZyYW1lTnVtYmVyV2hl
cmVEcmF3V2FzQ2FsbGVkOwotICAgIGJvb2wgc2hvdWxkRHJhdyA9IChtX25lZWRzUmVkcmF3ICYm
IG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlICYmIGNhbkRyYXcpIHx8IG1fbmVlZHNGb3JjZWRS
ZWRyYXc7CisgICAgYm9vbCBzaG91bGREcmF3ID0gKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVW
U3luYyAmJiBtX3Zpc2libGUgJiYgY2FuRHJhdyAmJiBtX2NhbkRyYXcpIHx8IG1fbmVlZHNGb3Jj
ZWRSZWRyYXc7CiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRf
U1RBVEVfSURMRToKICAgICAgICAgaWYgKHNob3VsZERyYXcpCkBAIC02OSw2ICs3MCwxMCBAQCBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpu
ZXh0QWN0aW9uKCkgY29uc3QKICAgICBjYXNlIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJT
VF9EUkFXOgogICAgICAgICBpZiAoc2hvdWxkRHJhdykKICAgICAgICAgICAgIHJldHVybiBBQ1RJ
T05fRFJBVzsKKyAgICAgICAgLy8gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcg
d2FudHMgdG8gZW5mb3JjZSBhIGRyYXcuIElmIG1fY2FuRHJhdyBpcyBmYWxzZSwKKyAgICAgICAg
Ly8gcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwIChzaW1pbGFyIGFzIGluIENPTU1JVF9TVEFURV9J
RExFKS4KKyAgICAgICAgaWYgKCFtX2NhbkRyYXcgJiYgbV9uZWVkc0NvbW1pdCAmJiBtX3Zpc2li
bGUpCisgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1
cm4gQUNUSU9OX05PTkU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNWEyN2JkMjhiODhhNzRj
YjY5NGVkM2U0NTUxZDQzMzdkZDYxYzUzMi4uMmQ3ZGE3ZWUzY2U5MGQyYmNmNDM1NjQzNGU5MmJl
M2Y3ODA2YTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5o
CkBAIC05OCw2ICs5OCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbSBuZXh0U3RhdGUuIEluZGlj
YXRlcyB0aGF0IHRoZSBzcGVjaWZpYyB1cGRhdGUgcmVxdWVzdCBjb21wbGV0ZWQuCiAgICAgdm9p
ZCBiZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKTsKIAor
ICAgIC8vIEluZGljYXRlcyB3aGV0aGVyIGRyYXdpbmcgd291bGQsIGF0IHRoaXMgdGltZSwgbWFr
ZSBzZW5zZS4KKyAgICAvLyBjYW5EcmF3IGNhbiBiZSB1c2VkIHRvIHN1cHJlc3MgZmxhc2hlcyBv
ciBjaGVja2VyYm9hcmRpbmcKKyAgICAvLyB3aGVuIHN1Y2ggYmVoYXZpb3Igd291bGQgYmUgdW5k
ZXNpcmFibGUuCisgICAgdm9pZCBzZXRDYW5EcmF3KGJvb2wgY2FuKSB7IG1fY2FuRHJhdyA9IGNh
bjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKIApAQCAt
MTA5LDYgKzExNCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc7CiAgICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAgIGJvb2wgbV92aXNpYmxlOwor
ICAgIGJvb2wgbV9jYW5EcmF3OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCA4ZTc3NDI1ZTQ0MGE0ZWRjZjI5ZjI2NWFjM2U5ZWVmZGJlMjE1ZDg3Li5jMDBkZDY2ZTUz
NGFhMzQ0NGY2YmU4YWQ0YWFmMWQ4NTljZDE0ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcApAQCAtMjM5LDEyICsyMzksMTUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxl
KGJvb2wgdmlzaWJsZSkKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgYm9vbCB2aXNpYmxlKQogewogICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgaWYgKCF2aXNpYmxlKQotICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLmdldCgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5z
ZXROZWVkc1JlZHJhdygpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRWaXNpYmxl
KHZpc2libGUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUodmlzaWJsZSk7
CisgICAgaWYgKCF2aXNpYmxlKSB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkQmVjb21l
SW52aXNpYmxlT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOworICAgICAg
ICAvLyBhcyBwYXJ0aWFsIG9yIGFsbCB0aGUgdGV4dHVyZXMgbWF5IGJlIGV2aWN0ZWQgaW4gZGlk
QmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkLAorICAgICAgICAvLyBzY2hlZHVsZSBhIGNvbW1p
dCB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gaXQgZ29lcyB0byB2aXNpYmxlIGFnYWluLgor
ICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNDb21taXQoKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzUmVkcmF3KCk7
CiAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKQEAgLTQyNSw2ICs0MjgsMTQgQEAgYm9v
bCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QKICAgICByZXR1
cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7
CiB9CiAKK2Jvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJhdygpCit7CisgICAgQVNTRVJUKGlzSW1w
bFRocmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0SW1wbC0+Y2FuRHJhdygpOworfQor
CiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMo
KQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXgg
MWRmMzc0NmM1ZGMwMTM0YTMyNGU0YWM4NjQyMzA0NTI5MzNhOThmYi4uYTQxYzBkNTY0YjYzODEz
YmE2M2E2Y2VkNThlMDRkNjljMzhmMmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAt
NjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29tbWl0T25J
bXBsVGhyZWFkKCk7CiAKICAgICAvLyBDQ1NjaGVkdWxlckNsaWVudCBpbXBsZW1lbnRhdGlvbgor
ICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCk7CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNv
dXJjZVVwZGF0ZXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVn
aW5GcmFtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKaW5kZXggMzZmZDdkYmQwN2JkYzdjZjFjODYxZmQ4MmFlYmMyYjA4NGEwM2EzMy4u
ZDZhNzI5YTBkMjNiMzY2ZTViMzM2ZjU2NjcxMjJkMDQ2NWI5MDQ0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0x
MDMsNyArMTAzLDEyIEBAIGNsYXNzIE1vY2tMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5ZXJU
cmVlSG9zdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TW9ja0xheWVyVHJlZUhv
c3Q+IGNyZWF0ZShUZXN0SG9va3MqIHRlc3RIb29rcywgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBj
bGllbnQsIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyLCBjb25zdCBDQ1NldHRp
bmdzJiBzZXR0aW5ncykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja0xh
eWVyVHJlZUhvc3QodGVzdEhvb2tzLCBjbGllbnQsIHJvb3RMYXllciwgc2V0dGluZ3MpKTsKKyAg
ICAgICAgUmVmUHRyPE1vY2tMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYo
bmV3IE1vY2tMYXllclRyZWVIb3N0KHRlc3RIb29rcywgY2xpZW50LCByb290TGF5ZXIsIHNldHRp
bmdzKSk7CisKKyAgICAgICAgLy8gTGF5ZXJUcmVlSG9zdEltcGwgd29uJ3QgZHJhdyBpZiBpdCBo
YXMgMXgxIHZpZXdwb3J0LgorICAgICAgICBsYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRT
aXplKDEsIDEpKTsKKworICAgICAgICByZXR1cm4gbGF5ZXJUcmVlSG9zdDsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVl
SG9zdEltcGwoQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCogY2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QuY3BwCmluZGV4IGYzNDY5Nzc2NjZkMmM0ZGZmNDdiNDg4MWZhYjFiMTZkM2Y4Y2Q3YjIu
LjQ4YTNmZGExZjRmZWJkY2FhNzcyODgzM2NmMjc2ZDIwYjI4NTRiNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNG
b3JjZWRSZWRyYXcoYm9vbCBiKSB7IG1fbmVlZHNGb3JjZWRSZWRyYXcgPSBiOyB9CiAgICAgYm9v
bCBuZWVkc0ZvcmNlZFJlZHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXc7
IH0KIAorICAgIGJvb2wgY2FuRHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuRHJhdzsgfQogICAg
IGJvb2wgaW5zaWRlVlN5bmMoKSBjb25zdCB7IHJldHVybiBtX2luc2lkZVZTeW5jOyB9CiAgICAg
Ym9vbCB2aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAKQEAgLTI0NCw2ICsy
NDUsMzggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb0NvbW1pdFN0
YXRlc1JlZHJhd1doZW5JbnZpc2libGUpCiAgICAgfQogfQogCitURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdENhblJlZHJhd19TdG9wc0RyYXcpCit7CisgICAgc2l6ZV90IG51
bUNvbW1pdFN0YXRlcyA9IHNpemVvZihhbGxDb21taXRTdGF0ZXMpIC8gc2l6ZW9mKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDb21taXRTdGF0ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1Db21taXRTdGF0ZXM7ICsraSkgeworICAgICAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUg
YW55IGRyYXdpbmcgcmVnYXJkbGVzcyBvZiB2c3luYy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IDI7ICsraikgeworICAgICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAg
ICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKKyAgICAg
ICAgICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0TmVl
ZHNSZWRyYXcodHJ1ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdyhm
YWxzZSk7CisgICAgICAgICAgICBpZiAoaiA9PSAxKQorICAgICAgICAgICAgICAgIHN0YXRlLmRp
ZEVudGVyVlN5bmMoKTsKKworICAgICAgICAgICAgc3RhdGUuc2V0Q2FuRHJhdyhmYWxzZSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICB9CisgICAgfQorfQorCitURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdENhblJlZHJhd1dpdGhXYWl0aW5nRm9yRmlyc3RE
cmF3TWFrZXNQcm9ncmVzcykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUu
c2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlU
SU5HX0ZPUl9GSVJTVF9EUkFXKTsKKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAg
ICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBz
dGF0ZS5zZXRDYW5EcmF3KGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwogVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJv
dW5kT2ZVcGRhdGVzKQogewogICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCBiNThlZDJjNTZj
MjhkZjc4NWNjOWMxMTY5ZDY3MDFjYzcwZGZmYmQ2Li4wZmU4MTFkODY3YjhkOTJmODE3OWI5MDIy
ZmYwMzgyMWI0NDAxMTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwCkBAIC00NCwxMyArNDQsMTYgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgbV9hY3Rpb25zLmNsZWFyKCk7CiAgICAgICAgIG1faGFzTW9yZVJlc291cmNlVXBkYXRl
cyA9IGZhbHNlOworICAgICAgICBtX2NhbkRyYXcgPSB0cnVlOwogICAgIH0KIAogICAgIHZvaWQg
c2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyhib29sIGIpIHsgbV9oYXNNb3JlUmVzb3VyY2VVcGRh
dGVzID0gYjsgfQorICAgIHZvaWQgc2V0Q2FuRHJhdyhib29sIGIpIHsgbV9jYW5EcmF3ID0gYjsg
fQogCiAgICAgaW50IG51bUFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KG1fYWN0aW9ucy5zaXplKCkpOyB9CiAgICAgY29uc3QgY2hhciogYWN0aW9uKGludCBpKSBjb25z
dCB7IHJldHVybiBtX2FjdGlvbnNbaV07IH0KIAorICAgIHZpcnR1YWwgYm9vbCBjYW5EcmF3KCkg
eyByZXR1cm4gbV9jYW5EcmF3OyB9CiAgICAgdmlydHVhbCBib29sIGhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXM7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpIHsgbV9hY3Rpb25zLnB1c2hf
YmFjaygic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkgeyBtX2FjdGlvbnMucHVzaF9iYWNrKCJzY2hlZHVs
ZWRBY3Rpb25EcmF3QW5kU3dhcCIpOyB9CkBAIC01OSw2ICs2Miw3IEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIGJvb2wgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzOworICAgIGJvb2wgbV9j
YW5EcmF3OwogICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIqPiBtX2FjdGlvbnM7CiB9OwogCkBA
IC0xMzksNiArMTQzLDcgQEAgcHVibGljOgogICAgIGludCBudW1EcmF3cygpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtRHJhd3M7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VVcGRh
dGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuRHJhdygp
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgp
CiAgICAgewpAQCAtMTkyLDYgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICBpbnQgbnVtRHJhd3MoKSBj
b25zdCB7IHJldHVybiBtX251bURyYXdzOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTW9yZVJl
c291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGNhbkRyYXcoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXAoKQogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>