<?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>80339</bug_id>
          
          <creation_ts>2012-03-05 15:30:30 -0800</creation_ts>
          <short_desc>[chromium] Notify CCLayerImpl tree of context loss and restoration</short_desc>
          <delta_ts>2012-03-05 20:15:48 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>571100</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-05 15:30:30 -0800</bug_when>
    <thetext>There are some situations where CCLayerImpls don&apos;t use managed textures, typically because doing so would either be unwieldy or not really correct from an accounting standpoint. CCPluginLayerImpl, which is now used to render Core Animation plugins on Mac OS, is one example. http://crbug.com/113125 describes a situation where forcing loss of context while Flash is rendering causes bad breakage because the CCPluginLayerImpl continues to reference a stale texture ID. After offline discussion it sounds like the best solution is to give CCLayerImpls the possibility of explicitly responding to context loss and recreation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571228</commentid>
    <comment_count>1</comment_count>
      <attachid>130241</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-05 17:14:36 -0800</bug_when>
    <thetext>Created attachment 130241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571249</commentid>
    <comment_count>2</comment_count>
      <attachid>130241</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-05 17:26:14 -0800</bug_when>
    <thetext>Comment on attachment 130241
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:712
&gt; +    for (size_t i = 0; i &lt; current-&gt;children().size(); ++i)

this won&apos;t hit mask and replica layers - is that OK (i.e. can plugins ever be masks or reflections or inside masks or reflections?). you can hit these by recurring on the mask/replica pointers in addition to children

we also have iterator types in CCLayerIterator.h. They are more complicated, but if you use them you don&apos;t need to worry about exactly how the tree structure is organized, you can just use the iterator and rely on it to hit everything</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571255</commentid>
    <comment_count>3</comment_count>
      <attachid>130241</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-05 17:31:55 -0800</bug_when>
    <thetext>Comment on attachment 130241
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:712
&gt;&gt; +    for (size_t i = 0; i &lt; current-&gt;children().size(); ++i)
&gt; 
&gt; this won&apos;t hit mask and replica layers - is that OK (i.e. can plugins ever be masks or reflections or inside masks or reflections?). you can hit these by recurring on the mask/replica pointers in addition to children
&gt; 
&gt; we also have iterator types in CCLayerIterator.h. They are more complicated, but if you use them you don&apos;t need to worry about exactly how the tree structure is organized, you can just use the iterator and rely on it to hit everything

The iterators need a Surface-Layer list from calcDrawTransformsEtc, so I&apos;m not sure it&apos;s relevant here. This looks like a simple layer-tree walk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571264</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-05 17:38:33 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 130241 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130241&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:712
&gt; &gt;&gt; +    for (size_t i = 0; i &lt; current-&gt;children().size(); ++i)
&gt; &gt; 
&gt; &gt; this won&apos;t hit mask and replica layers - is that OK (i.e. can plugins ever be masks or reflections or inside masks or reflections?). you can hit these by recurring on the mask/replica pointers in addition to children
&gt; &gt; 
&gt; &gt; we also have iterator types in CCLayerIterator.h. They are more complicated, but if you use them you don&apos;t need to worry about exactly how the tree structure is organized, you can just use the iterator and rely on it to hit everything
&gt; 
&gt; The iterators need a Surface-Layer list from calcDrawTransformsEtc, so I&apos;m not sure it&apos;s relevant here. This looks like a simple layer-tree walk.

Yes, looking at the uses of CCLayerIterator it looks like some other entity is responsible for building up the LayerList through which it iterates. I think this patch is what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571286</commentid>
    <comment_count>5</comment_count>
      <attachid>130241</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-05 17:49:50 -0800</bug_when>
    <thetext>Comment on attachment 130241
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:712
&gt;&gt;&gt;&gt; +    for (size_t i = 0; i &lt; current-&gt;children().size(); ++i)
&gt;&gt;&gt; 
&gt;&gt;&gt; this won&apos;t hit mask and replica layers - is that OK (i.e. can plugins ever be masks or reflections or inside masks or reflections?). you can hit these by recurring on the mask/replica pointers in addition to children
&gt;&gt;&gt; 
&gt;&gt;&gt; we also have iterator types in CCLayerIterator.h. They are more complicated, but if you use them you don&apos;t need to worry about exactly how the tree structure is organized, you can just use the iterator and rely on it to hit everything
&gt;&gt; 
&gt;&gt; The iterators need a Surface-Layer list from calcDrawTransformsEtc, so I&apos;m not sure it&apos;s relevant here. This looks like a simple layer-tree walk.
&gt; 
&gt; Yes, looking at the uses of CCLayerIterator it looks like some other entity is responsible for building up the LayerList through which it iterates. I think this patch is what we want.

It&apos;s what you want if it&apos;s OK to skip masks and replicas (since they aren&apos;t in the children list) - is that the desired behavior or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571322</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-05 18:15:21 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 130241 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130241&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:712
&gt; &gt;&gt;&gt;&gt; +    for (size_t i = 0; i &lt; current-&gt;children().size(); ++i)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; this won&apos;t hit mask and replica layers - is that OK (i.e. can plugins ever be masks or reflections or inside masks or reflections?). you can hit these by recurring on the mask/replica pointers in addition to children
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; we also have iterator types in CCLayerIterator.h. They are more complicated, but if you use them you don&apos;t need to worry about exactly how the tree structure is organized, you can just use the iterator and rely on it to hit everything
&gt; &gt;&gt; 
&gt; &gt;&gt; The iterators need a Surface-Layer list from calcDrawTransformsEtc, so I&apos;m not sure it&apos;s relevant here. This looks like a simple layer-tree walk.
&gt; &gt; 
&gt; &gt; Yes, looking at the uses of CCLayerIterator it looks like some other entity is responsible for building up the LayerList through which it iterates. I think this patch is what we want.
&gt; 
&gt; It&apos;s what you want if it&apos;s OK to skip masks and replicas (since they aren&apos;t in the children list) - is that the desired behavior or not?

Per our offline discussion it&apos;s a fair point that the recursion loop should probably traverse mask and replica layers. I was mainly talking about the complexity of building up a LayerList. New patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571343</commentid>
    <comment_count>7</comment_count>
      <attachid>130261</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-05 18:36:26 -0800</bug_when>
    <thetext>Created attachment 130261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571344</commentid>
    <comment_count>8</comment_count>
      <attachid>130261</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-05 18:37:33 -0800</bug_when>
    <thetext>Comment on attachment 130261
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571404</commentid>
    <comment_count>9</comment_count>
      <attachid>130261</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 20:15:44 -0800</bug_when>
    <thetext>Comment on attachment 130261
Patch

Clearing flags on attachment: 130261

Committed r109839: &lt;http://trac.webkit.org/changeset/109839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571405</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 20:15:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130241</attachid>
            <date>2012-03-05 17:14:36 -0800</date>
            <delta_ts>2012-03-05 18:36:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80339-20120305171435.patch</filename>
            <type>text/plain</type>
            <size>11762</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzljNDcyZWYyZTYwYTEw
YmEyNjE4Yzk1ODYyOTEwNjc5OWI3YzViOS4uMTdhNzk2NGFhMDhlZTFhYjFhMDg2MGQwZDk5ZGE4
NThhZThhN2E2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTA1ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE5vdGlm
eSBDQ0xheWVySW1wbCB0cmVlIG9mIGNvbnRleHQgbG9zcyBhbmQgcmVzdG9yYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGJ5IG1hbnVh
bGx5IGtpbGxpbmcgR1BVIHByb2Nlc3Mgd2hpbGUgcGxheWluZyBGbGFzaCB2aWRlby4KKyAgICAg
ICAgVmlkZW8gY29udGludWVzIHRvIHBsYXkgYWZ0ZXIgY29tcG9zaXRvciByZXN0b3JlcyBpdHMg
Y29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpkaWRMb3NlQW5kUmVj
cmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKENDTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2VuZENvbnRleHRM
b3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKEND
TGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5
ZXJJbXBsOjpkaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5M
YXllckltcGwuaDoKKyAgICAgICAgKENDUGx1Z2luTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCk6CisKIDIw
MTItMDMtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCZSBtb3JlIGFnZ3Jlc3NpdmUgYWJvdXQgcmVwYWludGluZyBwYWdlIG92ZXJsYXlzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGVjZjE2NTM0NDZiYTRiYzM0ZDMyMjJhNTNmMGUyNjA0
MjVlMDQxYzkuLjIwNmRiZjZiMWI0YmRlNGMyMDAzZjMzNTY4NTYwNGFiY2QzMjUwMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDMtMDUgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTm90aWZ5
IENDTGF5ZXJJbXBsIHRyZWUgb2YgY29udGV4dCBsb3NzIGFuZCByZXN0b3JhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbml0IHRlc3QgZm9yIG5v
dGlmaWNhdGlvbiBvZiBjb250ZXh0IGxvc3MgYW5kIHJlc3RvcmF0aW9uLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6Q29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyOjpkaWRMb3NlQW5kUmVj
cmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TG9zdE5vdGlm
aWNhdGlvbkNoZWNrTGF5ZXI6OmRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcjo6
Q29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6VEVT
VF9GKToKKwogMjAxMi0wMy0wNSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gUGFzcyBXZWJOYXZpZ2F0aW9uUG9saWN5IHRvIFdlYlZpZXdD
bGllbnQ6OmNyZWF0ZVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA2ZTBiZjJmZTQx
YTlhYTUyMjA3NTVhZmVjMjM1Nzg0YTNkYWY2YTA4Li5kZmMzMjhlY2MxYWU3MTI1ODhmMmJhNGYx
OTllNDJjMzA5Y2RlZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC01MjksNiArNTI5
LDEwIEBAIHZvaWQgQ0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQp
CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCit2b2lkIEND
TGF5ZXJJbXBsOjpkaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoKQoreworfQorCiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggZjcwYmI2N2JlN2I3ZWU1MDMwZTE0MTk0MzE1
MGI4ODZiZjdhYThiMC4uNTYzMDlkZWQ3M2Q0ZDc0MzJhODc0YzYxNDY2NTg3MDZlODgxNzRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0yMTUsNiArMjE1LDExIEBAIHB1YmxpYzoKIAogICAg
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCogbGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KCkgeyByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KIAorICAgIC8v
IEluZGljYXRlcyB0aGF0IHRoZSBjb250ZXh0IHByZXZpb3VzbHkgdXNlZCB0byByZW5kZXIgdGhp
cyBsYXllcgorICAgIC8vIHdhcyBsb3N0IGFuZCB0aGF0IGEgbmV3IG9uZSBoYXMgYmVlbiBjcmVh
dGVkLiBXb24ndCBiZSBjYWxsZWQKKyAgICAvLyB1bnRpbCB0aGUgbmV3IGNvbnRleHQgaGFzIGJl
ZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VBbmRSZWNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXll
ckltcGwoaW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRl
eCAxYjk2ZTQ5NWRkMDhkNjk0ZGJlZjgxOTVlM2NhZjY4ODI1ZWU3YmZiLi5hZGY3NTAxZjdlYTFl
YjI5MDZmNTE0MjgwY2U5NGNiMTM0MGVjZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcApAQCAtNzAwLDQgKzcwMCwxNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCiAgICAgICAgIG1fY2xp
ZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogfQogCit2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uKCkKK3sKKyAg
ICBpZiAobV9yb290TGF5ZXJJbXBsKQorICAgICAgICBzZW5kQ29udGV4dExvc3RBbmRSZXN0b3Jl
ZE5vdGlmaWNhdGlvblJlY3Vyc2l2ZShtX3Jvb3RMYXllckltcGwuZ2V0KCkpOworfQorCit2b2lk
IENDTGF5ZXJUcmVlSG9zdEltcGw6OnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0
aW9uUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50KQoreworICAgIGN1cnJlbnQtPmRpZExv
c2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY3VycmVudC0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkKKyAgICAgICAgc2VuZENvbnRleHRM
b3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUoY3VycmVudC0+Y2hpbGRyZW4oKVtp
XS5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaAppbmRleCBmNzdlMGViODQyMTczZjcxY2ZhNDc3Nzc0ZTk1YjMzNDcz
OTEyYWYxLi5mZjQ3ZWIwOGZjMjgzNzAwMjczMzJmOTg1YjdiMWM4ZjJjZGI5ZTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMjQsNiArMTI0LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgbmVlZHNBbmltYXRlTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Fu
aW1hdGVMYXllcnM7IH0KICAgICB2b2lkIHNldE5lZWRzQW5pbWF0ZUxheWVycygpIHsgbV9uZWVk
c0FuaW1hdGVMYXllcnMgPSB0cnVlOyB9CiAKKyAgICAvLyBOb3RpZmllcyB0aGUgbGF5ZXIgdHJl
ZSB0aGF0IHRoZSBjb250ZXh0IHdhcyBsb3N0IGFuZCBzdWNjZXNzZnVsbHkgcmVzdG9yZWQuCisg
ICAgdm9pZCBzZW5kQ29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvbigpOworCiBwcm90
ZWN0ZWQ6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ1NldHRpbmdzJiwgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCopOwogCkBAIC0xNTIsNiArMTU1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG9wdGltaXplUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmKTsKICAgICB2b2lk
IGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoQ0NMYXllckltcGwqLCBkb3VibGUgZnJhbWVCZWdpblRp
bWVTZWNzLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYsIGJvb2wmIGRpZEFuaW1hdGUsIGJvb2wm
IG5lZWRzQW5pbWF0ZUxheWVycyk7CiAgICAgSW50U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUo
Q0NMYXllckltcGwqKTsKIAogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5
ZXJSZW5kZXJlcjsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGx1Z2luTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcAppbmRleCA3MzU0YTg0MzA1MDVkZmU2ODJl
MTRmOTA3N2FjNGMzMTNjMjFmMzljLi41MWI3NDVmYjMwZWNjYjhjZTI4MGM0YjAwNmI2ZGY1MjM1
NWM0ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwCkBAIC0xMDMsNiAr
MTAzLDE2IEBAIHZvaWQgQ0NQbHVnaW5MYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4
dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAgICAgQ0NMYXllckltcGw6OmR1bXBMYXll
clByb3BlcnRpZXModHMsIGluZGVudCk7CiB9CiAKK3ZvaWQgQ0NQbHVnaW5MYXllckltcGw6OmRp
ZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCit7CisgICAgaWYgKG1faW9TdXJmYWNl
SWQpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIHZhbGlkIHRleHR1cmUgSUQgaW4gdGhl
IG5ldyBjb250ZXh0OyBob3dldmVyLAorICAgICAgICAvLyB0aGUgSU9TdXJmYWNlIGlzIHN0aWxs
IHZhbGlkLgorICAgICAgICBtX2lvU3VyZmFjZVRleHR1cmVJZCA9IDA7CisgICAgICAgIG1faW9T
dXJmYWNlQ2hhbmdlZCA9IHRydWU7CisgICAgfQorfQorCiB2b2lkIENDUGx1Z2luTGF5ZXJJbXBs
OjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3Qg
aW9TdXJmYWNlSWQpCiB7CiAgICAgaWYgKG1faW9TdXJmYWNlSWQgIT0gaW9TdXJmYWNlSWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1BsdWdpbkxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuaAppbmRleCBlNTlkYTg4ODVmOWY5ZjVhYjIxYzJh
YzdmYjVjYTgxNzEzOTg5YjIyLi5jNmJkZWRkMTkzZGMyYmQ4NDFlNGM4OGFiYTMwYjFkYTVmMGQy
YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgKQEAgLTUwLDYgKzUwLDcgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4VHJh
bnNmb3JtLCBGcmFnbWVudFNoYWRlclJHQkFUZXhSZWN0RmxpcEFscGhhPiBUZXhSZWN0UHJvZ3Jh
bUZsaXA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFt
JiwgaW50IGluZGVudCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VBbmRSZWNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQp
IHsgbV90ZXh0dXJlSWQgPSBpZDsgfQogICAgIHZvaWQgc2V0RmxpcHBlZChib29sIGZsaXBwZWQp
IHsgbV9mbGlwcGVkID0gZmxpcHBlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcAppbmRleCBiZjc3NzM0NDRkMjM0OWVhNGJjODYxNjNjMzg4NmJlNzU0MmZhODQ3Li4w
YWYwN2NiZGJmZDI5NTc4MzhmZWMxNDRiMjZhNmRhOWIzZGZjOGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTU5LDggKzE1OSwxMCBAQCBib29sIENDU2lu
Z2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRz
VGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOwogICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwotICAgICAgICBpZiAoaW5pdGlhbGl6
ZWQpCisgICAgICAgIGlmIChpbml0aWFsaXplZCkgewogICAgICAgICAgICAgbV9sYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKKyAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uKCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBpZiAoaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGZlY2I5M2Y2
NmI1MjEzZDE2ZmE1YjRhNTE0NGZlNjUzYjY1NThjODEuLmVkMDUyYTljM2Q4NjljN2FlOTI3MWY2
MTFhMzljNDVhYmE4YmIyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC04NjUsNCArODY1LDUxIEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdmlzaWJpbGl0eUNoYW5nZVJlc2V0c0Rh
bWFnZSkKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC5oZWlnaHQoKSwgYWN0dWFsU3dh
cFJlY3QuaGVpZ2h0KCkpOwogfQogCisvLyBNYWtlIHN1cmUgdGhhdCBjb250ZXh0IGxvc3Qgbm90
aWZpY2F0aW9ucyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSB0cmVlLgorY2xhc3MgQ29udGV4
dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5
ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0TG9zdE5vdGlm
aWNhdGlvbkNoZWNrTGF5ZXIoaWQpKTsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VBbmRS
ZWNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCisgICAgeworICAgICAgICBtX2RpZExvc2VBbmRSZWNy
ZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCA9IHRydWU7CisgICAgfQorCisgICAgYm9vbCBkaWRM
b3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHRDYWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rp
ZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZDsgfQorCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcihpbnQgaWQpCisgICAg
ICAgIDogQ0NMYXllckltcGwoaWQpCisgICAgICAgICwgbV9kaWRMb3NlQW5kUmVjcmVhdGVHcmFw
aGljc0NvbnRleHRDYWxsZWQoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9kaWRM
b3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHRDYWxsZWQ7Cit9OworCitURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIGNvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25TZW50
VG9BbGxMYXllcnMpCit7CisgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIo
Y3JlYXRlQ29udGV4dCgpKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6
ZSgxMCwgMTApKTsKKworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihDb250ZXh0TG9zdE5v
dGlmaWNhdGlvbkNoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgQ29udGV4dExvc3ROb3RpZmlj
YXRpb25DaGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8Q29udGV4dExvc3ROb3RpZmljYXRp
b25DaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOworCisgICAgcm9vdC0+YWRk
Q2hpbGQoQ29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyOjpjcmVhdGUoMSkpOworICAg
IENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllciogbGF5ZXIxID0gc3RhdGljX2Nhc3Q8
Q29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyKj4ocm9vdC0+Y2hpbGRyZW4oKVswXS5n
ZXQoKSk7CisKKyAgICBsYXllcjEtPmFkZENoaWxkKENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hl
Y2tMYXllcjo6Y3JlYXRlKDIpKTsKKyAgICBDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5
ZXIqIGxheWVyMiA9IHN0YXRpY19jYXN0PENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXll
cio+KGxheWVyMS0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uocm9v
dC0+ZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0Q2FsbGVkKCkpOworICAgIEVYUEVD
VF9GQUxTRShsYXllcjEtPmRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UobGF5ZXIyLT5kaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0Nv
bnRleHRDYWxsZWQoKSk7CisKKyAgICBtX2hvc3RJbXBsLT5zZW5kQ29udGV4dExvc3RBbmRSZXN0
b3JlZE5vdGlmaWNhdGlvbigpOworCisgICAgRVhQRUNUX1RSVUUocm9vdC0+ZGlkTG9zZUFuZFJl
Y3JlYXRlR3JhcGhpY3NDb250ZXh0Q2FsbGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+
ZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0Q2FsbGVkKCkpOworICAgIEVYUEVDVF9U
UlVFKGxheWVyMi0+ZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0Q2FsbGVkKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130261</attachid>
            <date>2012-03-05 18:36:26 -0800</date>
            <delta_ts>2012-03-05 20:15:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80339-20120305183625.patch</filename>
            <type>text/plain</type>
            <size>11925</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzljNDcyZWYyZTYwYTEw
YmEyNjE4Yzk1ODYyOTEwNjc5OWI3YzViOS4uMTdhNzk2NGFhMDhlZTFhYjFhMDg2MGQwZDk5ZGE4
NThhZThhN2E2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTA1ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIE5vdGlm
eSBDQ0xheWVySW1wbCB0cmVlIG9mIGNvbnRleHQgbG9zcyBhbmQgcmVzdG9yYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMzM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIGJ5IG1hbnVh
bGx5IGtpbGxpbmcgR1BVIHByb2Nlc3Mgd2hpbGUgcGxheWluZyBGbGFzaCB2aWRlby4KKyAgICAg
ICAgVmlkZW8gY29udGludWVzIHRvIHBsYXkgYWZ0ZXIgY29tcG9zaXRvciByZXN0b3JlcyBpdHMg
Y29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpkaWRMb3NlQW5kUmVj
cmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKENDTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2VuZENvbnRleHRM
b3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKEND
TGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUGx1Z2luTGF5
ZXJJbXBsOjpkaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5M
YXllckltcGwuaDoKKyAgICAgICAgKENDUGx1Z2luTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCk6CisKIDIw
MTItMDMtMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBCZSBtb3JlIGFnZ3Jlc3NpdmUgYWJvdXQgcmVwYWludGluZyBwYWdlIG92ZXJsYXlzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGVjZjE2NTM0NDZiYTRiYzM0ZDMyMjJhNTNmMGUyNjA0
MjVlMDQxYzkuLjIwNmRiZjZiMWI0YmRlNGMyMDAzZjMzNTY4NTYwNGFiY2QzMjUwMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDMtMDUgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gTm90aWZ5
IENDTGF5ZXJJbXBsIHRyZWUgb2YgY29udGV4dCBsb3NzIGFuZCByZXN0b3JhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAzMzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbml0IHRlc3QgZm9yIG5v
dGlmaWNhdGlvbiBvZiBjb250ZXh0IGxvc3MgYW5kIHJlc3RvcmF0aW9uLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OkNvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6Q29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyOjpkaWRMb3NlQW5kUmVj
cmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0TG9zdE5vdGlm
aWNhdGlvbkNoZWNrTGF5ZXI6OmRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcjo6
Q29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6VEVT
VF9GKToKKwogMjAxMi0wMy0wNSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gUGFzcyBXZWJOYXZpZ2F0aW9uUG9saWN5IHRvIFdlYlZpZXdD
bGllbnQ6OmNyZWF0ZVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA2ZTBiZjJmZTQx
YTlhYTUyMjA3NTVhZmVjMjM1Nzg0YTNkYWY2YTA4Li5kZmMzMjhlY2MxYWU3MTI1ODhmMmJhNGYx
OTllNDJjMzA5Y2RlZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC01MjksNiArNTI5
LDEwIEBAIHZvaWQgQ0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQp
CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCit2b2lkIEND
TGF5ZXJJbXBsOjpkaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoKQoreworfQorCiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggZjcwYmI2N2JlN2I3ZWU1MDMwZTE0MTk0MzE1
MGI4ODZiZjdhYThiMC4uNTYzMDlkZWQ3M2Q0ZDc0MzJhODc0YzYxNDY2NTg3MDZlODgxNzRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0yMTUsNiArMjE1LDExIEBAIHB1YmxpYzoKIAogICAg
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVySW1wbCogbGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KCkgeyByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KIAorICAgIC8v
IEluZGljYXRlcyB0aGF0IHRoZSBjb250ZXh0IHByZXZpb3VzbHkgdXNlZCB0byByZW5kZXIgdGhp
cyBsYXllcgorICAgIC8vIHdhcyBsb3N0IGFuZCB0aGF0IGEgbmV3IG9uZSBoYXMgYmVlbiBjcmVh
dGVkLiBXb24ndCBiZSBjYWxsZWQKKyAgICAvLyB1bnRpbCB0aGUgbmV3IGNvbnRleHQgaGFzIGJl
ZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuCisgICAgdmlydHVhbCB2b2lkIGRpZExvc2VBbmRSZWNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXll
ckltcGwoaW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRl
eCAxYjk2ZTQ5NWRkMDhkNjk0ZGJlZjgxOTVlM2NhZjY4ODI1ZWU3YmZiLi5mNzE1YWUzNWQxN2Y5
MGI3NGRiMjJkYzBmM2M5NGU2NjcwNTE5OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcApAQCAtNzAwLDQgKzcwMCwyMSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmFuaW1hdGVMYXllcnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCiAgICAgICAgIG1fY2xp
ZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgpOwogfQogCit2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OnNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uKCkKK3sKKyAg
ICBzZW5kQ29udGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvblJlY3Vyc2l2ZShtX3Jvb3RM
YXllckltcGwuZ2V0KCkpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNlbmRDb250
ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJy
ZW50KQoreworICAgIGlmICghY3VycmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY3VycmVu
dC0+ZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgc2VuZENvbnRleHRM
b3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb25SZWN1cnNpdmUoY3VycmVudC0+bWFza0xheWVyKCkp
OworICAgIHNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uUmVjdXJzaXZlKGN1
cnJlbnQtPnJlcGxpY2FMYXllcigpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJl
bnQtPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIHNlbmRDb250ZXh0TG9zdEFuZFJl
c3RvcmVkTm90aWZpY2F0aW9uUmVjdXJzaXZlKGN1cnJlbnQtPmNoaWxkcmVuKClbaV0uZ2V0KCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKaW5kZXggZjc3ZTBlYjg0MjE3M2Y3MWNmYTQ3Nzc3NGU5NWIzMzQ3MzkxMmFmMS4u
ZmY0N2ViMDhmYzI4MzcwMDI3MzMyZjk4NWI3YjFjOGYyY2RiOWU3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTI0LDYgKzEyNCw5IEBAIHB1YmxpYzoKICAgICBi
b29sIG5lZWRzQW5pbWF0ZUxheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBbmltYXRlTGF5
ZXJzOyB9CiAgICAgdm9pZCBzZXROZWVkc0FuaW1hdGVMYXllcnMoKSB7IG1fbmVlZHNBbmltYXRl
TGF5ZXJzID0gdHJ1ZTsgfQogCisgICAgLy8gTm90aWZpZXMgdGhlIGxheWVyIHRyZWUgdGhhdCB0
aGUgY29udGV4dCB3YXMgbG9zdCBhbmQgc3VjY2Vzc2Z1bGx5IHJlc3RvcmVkLgorICAgIHZvaWQg
c2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3RpZmljYXRpb24oKTsKKwogcHJvdGVjdGVkOgog
ICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQqKTsKIApAQCAtMTUyLDYgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBv
cHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0Jik7CiAgICAgdm9pZCBhbmltYXRl
TGF5ZXJzUmVjdXJzaXZlKENDTGF5ZXJJbXBsKiwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2Vjcywg
Q0NBbmltYXRpb25FdmVudHNWZWN0b3ImLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBuZWVkc0Fu
aW1hdGVMYXllcnMpOwogICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25zdDsKKyAgICB2b2lk
IHNlbmRDb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uUmVjdXJzaXZlKENDTGF5ZXJJ
bXBsKik7CiAKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVy
ZXI7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxh
eWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BsdWdpbkxheWVySW1wbC5jcHAKaW5kZXggNzM1NGE4NDMwNTA1ZGZlNjgyZTE0ZjkwNzdh
YzRjMzEzYzIxZjM5Yy4uNTFiNzQ1ZmIzMGVjY2I4Y2UyODBjNGIwMDZiNmRmNTIzNTVjNGRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQbHVnaW5MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmNwcApAQCAtMTAzLDYgKzEwMywxNiBA
QCB2b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0m
IHRzLCBpbnQgaW5kZW50KSBjb25zdAogICAgIENDTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0
aWVzKHRzLCBpbmRlbnQpOwogfQogCit2b2lkIENDUGx1Z2luTGF5ZXJJbXBsOjpkaWRMb3NlQW5k
UmVjcmVhdGVHcmFwaGljc0NvbnRleHQoKQoreworICAgIGlmIChtX2lvU3VyZmFjZUlkKSB7Cisg
ICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSB2YWxpZCB0ZXh0dXJlIElEIGluIHRoZSBuZXcgY29u
dGV4dDsgaG93ZXZlciwKKyAgICAgICAgLy8gdGhlIElPU3VyZmFjZSBpcyBzdGlsbCB2YWxpZC4K
KyAgICAgICAgbV9pb1N1cmZhY2VUZXh0dXJlSWQgPSAwOworICAgICAgICBtX2lvU3VyZmFjZUNo
YW5nZWQgPSB0cnVlOworICAgIH0KK30KKwogdm9pZCBDQ1BsdWdpbkxheWVySW1wbDo6c2V0SU9T
dXJmYWNlUHJvcGVydGllcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVpbnQzMl90IGlvU3VyZmFj
ZUlkKQogewogICAgIGlmIChtX2lvU3VyZmFjZUlkICE9IGlvU3VyZmFjZUlkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5M
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGx1Z2luTGF5ZXJJbXBsLmgKaW5kZXggZTU5ZGE4ODg1ZjlmOWY1YWIyMWMyYWM3ZmI1Y2E4
MTcxMzk4OWIyMi4uYzZiZGVkZDE5M2RjMmJkODQxZTRjODhhYmEzMGIxZGE1ZjBkMmMyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
bHVnaW5MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclBvc1RleFRyYW5zZm9ybSwg
RnJhZ21lbnRTaGFkZXJSR0JBVGV4UmVjdEZsaXBBbHBoYT4gVGV4UmVjdFByb2dyYW1GbGlwOwog
CiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBp
bmRlbnQpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKIAogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKSB7IG1fdGV4
dHVyZUlkID0gaWQ7IH0KICAgICB2b2lkIHNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKSB7IG1fZmxp
cHBlZCA9IGZsaXBwZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
aW5kZXggYmY3NzczNDQ0ZDIzNDllYTRiYzg2MTYzYzM4ODZiZTc1NDJmYTg0Ny4uMGFmMDdjYmRi
ZmQyOTU3ODM4ZmVjMTQ0YjI2YTZkYTliM2RmYzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKQEAgLTE1OSw4ICsxNTksMTAgQEAgYm9vbCBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVz
T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKTsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKLSAgICAgICAgaWYgKGluaXRpYWxpemVkKQorICAg
ICAgICBpZiAoaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllc0Zvck1haW5UaHJlYWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZW5kQ29u
dGV4dExvc3RBbmRSZXN0b3JlZE5vdGlmaWNhdGlvbigpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKGluaXRpYWxpemVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBmZWNiOTNmNjZiNTIxM2Qx
NmZhNWI0YTUxNDRmZTY1M2I2NTU4YzgxLi5lZDA1MmE5YzNkODY5YzdhZTkyNzFmNjExYTM5YzQ1
YWJhOGJiMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtODY1LDQgKzg2NSw1MSBAQCBURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHZpc2liaWxpdHlDaGFuZ2VSZXNldHNEYW1hZ2UpCiAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkU3dhcFJlY3QuaGVpZ2h0KCksIGFjdHVhbFN3YXBSZWN0Lmhl
aWdodCgpKTsKIH0KIAorLy8gTWFrZSBzdXJlIHRoYXQgY29udGV4dCBsb3N0IG5vdGlmaWNhdGlv
bnMgYXJlIHByb3BhZ2F0ZWQgdGhyb3VnaCB0aGUgdHJlZS4KK2NsYXNzIENvbnRleHRMb3N0Tm90
aWZpY2F0aW9uQ2hlY2tMYXllciA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8Q29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyPiBjcmVh
dGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4dExvc3ROb3RpZmljYXRpb25D
aGVja0xheWVyKGlkKSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQW5kUmVjcmVhdGVH
cmFwaGljc0NvbnRleHQoKQorICAgIHsKKyAgICAgICAgbV9kaWRMb3NlQW5kUmVjcmVhdGVHcmFw
aGljc0NvbnRleHRDYWxsZWQgPSB0cnVlOworICAgIH0KKworICAgIGJvb2wgZGlkTG9zZUFuZFJl
Y3JlYXRlR3JhcGhpY3NDb250ZXh0Q2FsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaWRMb3NlQW5k
UmVjcmVhdGVHcmFwaGljc0NvbnRleHRDYWxsZWQ7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXIoaW50IGlkKQorICAgICAgICA6IEND
TGF5ZXJJbXBsKGlkKQorICAgICAgICAsIG1fZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250
ZXh0Q2FsbGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1fZGlkTG9zZUFuZFJl
Y3JlYXRlR3JhcGhpY3NDb250ZXh0Q2FsbGVkOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBjb250ZXh0TG9zdEFuZFJlc3RvcmVkTm90aWZpY2F0aW9uU2VudFRvQWxsTGF5
ZXJzKQoreworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNv
bnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEw
KSk7CisKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoQ29udGV4dExvc3ROb3RpZmljYXRp
b25DaGVja0xheWVyOjpjcmVhdGUoMCkpOworICAgIENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hl
Y2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PENvbnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tM
YXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKKworICAgIHJvb3QtPmFkZENoaWxkKENv
bnRleHRMb3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKKyAgICBDb250ZXh0
TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXIqIGxheWVyMSA9IHN0YXRpY19jYXN0PENvbnRleHRM
b3N0Tm90aWZpY2F0aW9uQ2hlY2tMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwor
CisgICAgbGF5ZXIxLT5hZGRDaGlsZChDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXI6
OmNyZWF0ZSgyKSk7CisgICAgQ29udGV4dExvc3ROb3RpZmljYXRpb25DaGVja0xheWVyKiBsYXll
cjIgPSBzdGF0aWNfY2FzdDxDb250ZXh0TG9zdE5vdGlmaWNhdGlvbkNoZWNrTGF5ZXIqPihsYXll
cjEtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOworCisgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmRpZExv
c2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXIxLT5kaWRMb3NlQW5kUmVjcmVhdGVHcmFwaGljc0NvbnRleHRDYWxsZWQoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGxheWVyMi0+ZGlkTG9zZUFuZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0Q2Fs
bGVkKCkpOworCisgICAgbV9ob3N0SW1wbC0+c2VuZENvbnRleHRMb3N0QW5kUmVzdG9yZWROb3Rp
ZmljYXRpb24oKTsKKworICAgIEVYUEVDVF9UUlVFKHJvb3QtPmRpZExvc2VBbmRSZWNyZWF0ZUdy
YXBoaWNzQ29udGV4dENhbGxlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPmRpZExvc2VB
bmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXll
cjItPmRpZExvc2VBbmRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dENhbGxlZCgpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>