<?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>125750</bug_id>
          
          <creation_ts>2013-12-14 20:11:22 -0800</creation_ts>
          <short_desc>WebKit2 View Gestures: Pinching beyond the extremes doesn&apos;t animate back to the min/max</short_desc>
          <delta_ts>2013-12-16 18:25:33 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959895</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-14 20:11:22 -0800</bug_when>
    <thetext>When you let go of a pinch where you exceeded the maximum or minimum scale, the view should animate back to the limit instead of snapping back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959926</commentid>
    <comment_count>1</comment_count>
      <attachid>219276</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-15 04:53:41 -0800</bug_when>
    <thetext>Created attachment 219276
patch

this may not apply because I have it on top of https://bugs.webkit.org/show_bug.cgi?id=125751 in my tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959928</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-15 04:54:18 -0800</bug_when>
    <thetext>*** Bug 125751 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960007</commentid>
    <comment_count>3</comment_count>
      <attachid>219297</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-15 23:23:06 -0800</bug_when>
    <thetext>Created attachment 219297
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960120</commentid>
    <comment_count>4</comment_count>
      <attachid>219297</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-16 10:33:42 -0800</bug_when>
    <thetext>Comment on attachment 219297
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:758
&gt; +    // scrolling doesn&apos;t make the view jump; this is borrowed from ScrollableArea.

borrowed -&gt; copied. Can we share code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960343</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-16 18:25:33 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/160685 and http://trac.webkit.org/changeset/160686</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219276</attachid>
            <date>2013-12-15 04:53:41 -0800</date>
            <delta_ts>2013-12-15 23:23:06 -0800</delta_ts>
            <desc>patch</desc>
            <filename>animate.diff</filename>
            <type>text/plain</type>
            <size>16185</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZWEzMjEzLi5lMDNkYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMTItMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzOiBQaW5jaGluZyBiZXlvbmQgdGhlIGV4dHJl
bWVzIGRvZXNuJ3QgYW5pbWF0ZSBiYWNrIHRvIHRoZSBtaW4vbWF4CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU3NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICBFeHBvcnQgYSBmZXcgdGhpbmdzIHNvIFdlYktpdDIgY2FuIHVzZSB0aGVtLgorCiAyMDEzLTEy
LTE0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAg
dGhlIHByb2plY3QgYWZ0ZXIgcjE2MDQ4NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwOTU5ZjI2
Li4xYTNmOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzUyLDYgKzc1Miw5IEBAIF9fWk43
V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTI0c19kZWZhdWx0VGltZW91dEludGVydmFsRQog
X19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjVzZXREZWZhdWx0VGltZW91dEludGVy
dmFsRWQKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTUwc2V0UmVzcG9uc2VDb250
ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlFUktOM1dURjZTdHJpbmdFUzRfUzRf
CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U2c2V0VVJMRVJLTlNfM1VSTEUKK19f
Wk43V2ViQ29yZTE5UGxhdGZvcm1DQUFuaW1hdGlvbjEwc2V0VG9WYWx1ZUVSS05TXzIwVHJhbnNm
b3JtYXRpb25NYXRyaXhFCitfX1pON1dlYkNvcmUxOVBsYXRmb3JtQ0FBbmltYXRpb242Y3JlYXRl
RVAxOUNBUHJvcGVydHlBbmltYXRpb24KK19fWk43V2ViQ29yZTE5UGxhdGZvcm1DQUFuaW1hdGlv
bkQxRXYKIF9fWk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlcjVmbHVzaEV2CiBfX1pON1dl
YkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI2ZGVjb2RlRVBLY20KIF9fWk43V2ViQ29yZTE5VGV4
dFJlc291cmNlRGVjb2RlckMxRVJLTjNXVEY2U3RyaW5nRVJLTlNfMTJUZXh0RW5jb2RpbmdFYgpA
QCAtMTIyNiw2ICsxMjI5LDcgQEAgX19aTjdXZWJDb3JlOUNsaXBib2FyZEQxRXYKIF9fWk43V2Vi
Q29yZTlET01XaW5kb3czMGRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50c0V2CiBfX1pON1dl
YkNvcmU5RE9NV2luZG93MzZkaXNwYXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHNFdgog
X19aTjdXZWJDb3JlOUZsb2F0UmVjdDVzY2FsZUVmZgorX19aTjdXZWJDb3JlOUZsb2F0UmVjdDlp
bnRlcnNlY3RFUktTMF8KIF9fWk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSSzZDR1JlY3QKIF9fWk43
V2ViQ29yZTlGbG9hdFJlY3RDMUVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZsb2F0U2l6
ZUMxRVJLNkNHU2l6ZQpAQCAtMTM4Nyw2ICsxMzkxLDcgQEAgX19aTks3V2ViQ29yZTEwUmVuZGVy
VGV4dDE2bGluZXNCb3VuZGluZ0JveEV2CiBfX1pOSzdXZWJDb3JlMTBSZW5kZXJUZXh0OWZpcnN0
UnVuWEV2CiBfX1pOSzdXZWJDb3JlMTBSZW5kZXJUZXh0OWZpcnN0UnVuWUV2CiBfX1pOSzdXZWJD
b3JlMTBSZW5kZXJWaWV3MTJkb2N1bWVudFJlY3RFdgorX19aTks3V2ViQ29yZTEwUmVuZGVyVmll
dzIwdW5zY2FsZWREb2N1bWVudFJlY3RFdgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzEyY29u
dGVudHNTaXplRXYKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxMmRvY3VtZW50Vmlld0V2CiBf
X1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MTRzY3JvbGxiYXJNb2Rlc0VSTlNfMTNTY3JvbGxiYXJN
b2RlRVMyXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGZjMDM1OWMuLmNjOGE0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MCBAQAogMjAxMy0xMi0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAorICAgICAgICBXZWJLaXQyIFZpZXcgR2VzdHVyZXM6IFBpbmNoaW5nIGJleW9uZCB0
aGUgZXh0cmVtZXMgZG9lc24ndCBhbmltYXRlIGJhY2sgdG8gdGhlIG1pbi9tYXgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTc1MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4geW91IGxldCBnbyBv
ZiBhIHBpbmNoIHdoZXJlIHlvdSBleGNlZWRlZCB0aGUgbWF4aW11bSBvciBtaW5pbXVtIHNjYWxl
LAorICAgICAgICB0aGUgdmlldyBzaG91bGQgYW5pbWF0ZSBiYWNrIHRvIHRoZSBsaW1pdCBpbnN0
ZWFkIG9mIHNuYXBwaW5nIGJhY2suCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICBVbnNjcm9sbGluZyB0aGUgc2Nh
bGVkIG9yaWdpbiBoZXJlIGlzIHdyb25nOyB3ZSBzaG91bGQgc2VuZCB0aGUgc2FtZQorICAgICAg
ICB2YWx1ZSBmb3IgJ29yaWdpbicgZm9yIGNvbW1pdFRyYW5zaWVudFpvb20gdGhhdCB3ZSBkbyBm
b3IgYWRqdXN0VHJhbnNpZW50Wm9vbS4KKyAgICAgICAgVGhlIGRyYXdpbmcgYXJlYSBjYW4gZGVh
bCB3aXRoIHRyYW5zZm9ybWluZyB0aGF0IGhvd2V2ZXIgaXQgbmVlZHMgdG8gY2FsbCBzY2FsZVBh
Z2UoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YmVnaW5UcmFuc2llbnRab29tKToKKyAgICAgICAgRHJpdmUt
YnkgdXNlIFdlYlBhZ2U6Om1haW5GcmFtZVZpZXcoKS4KKworICAgICAgICAoV2ViS2l0OjpUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAg
IFVwZGF0ZSB0aGUgc2hhZG93IGxheWVyJ3MgYm91bmRzLCBwb3NpdGlvbiwgYW5kIHNoYWRvdyBw
YXRoIHdoaWxlIHpvb21pbmcsCisgICAgICAgIGluc3RlYWQgb2YgaGlkaW5nIGl0LgorCisgICAg
ICAgIChXZWJLaXQ6OnRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCk6CisgICAg
ICAgIENyZWF0ZSBhIENBQmFzaWNBbmltYXRpb24gdGhhdCBzdGF5cyBhcHBsaWVkIHRvIGl0cyB0
YXJnZXQgd2hlbiBpdCBmaW5pc2hlcywKKyAgICAgICAgbGFzdHMgZm9yIGEgcXVhcnRlciBzZWNv
bmQsIGFuZCB1c2VzIHRoZSBlYXNlLWluLWVhc2Utb3V0IHRpbWluZyBmdW5jdGlvbi4KKworICAg
ICAgICAoV2ViS2l0Ojpjb25zdHJhaW5ab29tT3JpZ2luRm9yRnJhbWVWaWV3KToKKyAgICAgICAg
V2hlbiB3ZSBsYW5kIGEgdHJhbnNpZW50IHpvb20sIHRoZXJlIG1heSBiZSBvdmVyaGFuZyBhcmVh
cyAobGluZW4sIGluIHRoZSBjYXNlIG9mIE1hYykKKyAgICAgICAgdmlzaWJsZS4gRHVyaW5nIHRo
ZSBjb21taXQgYW5pbWF0aW9uLCB3ZSBzaG91bGQgbW92ZSB0aGUgUmVuZGVyVmlldyBsYXllciBh
cHByb3ByaWF0ZWx5CisgICAgICAgIHNvIHRoYXQgdGhlIHBhZ2UgY292ZXJzIHRoZSBlbnRpcmUg
dmlldyBhbmQgdGhlcmUgYXJlIG5vIG92ZXJoYW5nIGFyZWFzIHZpc2libGUuCisgICAgICAgIEFk
YXB0IHNvbWUgY29kZSBmcm9tIFNjcm9sbGFibGVBcmVhIHRvIGNvbnN0cmFpbiB0aGUgem9vbSBv
cmlnaW4gdG8gZG8gc28uCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICBBbmltYXRlIHRoZSBSZW5k
ZXJWaWV3IGxheWVyJ3MgdHJhbnNmb3JtLCBhbmQgdGhlIHNoYWRvdyBsYXllcidzIGJvdW5kcywg
cG9zaXRpb24sIGFuZCBwYXRoLgorICAgICAgICBXaGVuIHRoZXkgY29tcGxldGUsIGFwcGx5IHRo
ZSB6b29tIHZpYSBzY2FsZVBhZ2UoKSBhbmQgZmx1c2ggdGhlIGxheWVyIHRyZWUgKG90aGVyd2lz
ZSB0aGVyZQorICAgICAgICBjYW4gYmUgYSBmbGFzaCBiZXR3ZWVuIHJlbW92aW5nIHRoZSBhbmlt
YXRpb25zIGFuZCB0aGUgbmV4dCBmbHVzaCB3aXRoIHRoZSBuZXcgc2NhbGUpLgorCisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphcHBseVRyYW5zaWVudFpv
b21Ub1BhZ2UpOgorICAgICAgICBNb3ZlIHRoZSBjb2RlIHRvIGxhbmQgdGhlIHRyYW5zaWVudCB6
b29tICh2aWEgc2NhbGVQYWdlKSBhbmQgdG8gcHV0IHRoZSBzaGFkb3cgYmFjaworICAgICAgICBp
biB0aGUgc3RhdGUgV2ViQ29yZSBsZWZ0IGl0IG91dCBpbnRvIGl0cyBvd24gZnVuY3Rpb24sIHNv
IGl0IGNhbiBiZSBjYWxsZWQgYm90aCBmcm9tIHRoZQorICAgICAgICBhbmltYXRpb24gY29tcGxl
dGlvbiBjYWxsYmFjayBhbmQgZnJvbSB0aGUgc2hvcnQtY2lyY3VpdCBpbiB0aGUgY2FzZSB3aGVy
ZSB3ZSBkb24ndCBuZWVkIHRvIGFuaW1hdGUuCisKKzIwMTMtMTItMTUgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVz
OiBDYW4ndCBwaW5jaCBpbiBwYXN0IHRoZSBtYXhpbXVtIHNjYWxlCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU3NDkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4
IDlkYjBiZTkuLjFiYzcxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTEyMiwxMyArMTIyLDggQEAgdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKIHsKICAg
ICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmlj
YXRpb24pOwogCi0gICAgLy8gRklYTUU6IFNob3VsZCBydWJiZXItYmFuZCBiYWNrIHdoZW4gem9v
bWVkIGluIG9yIG91dCBwYXN0IHRoZSBsaW1pdC4KICAgICBkb3VibGUgbmV3TWFnbmlmaWNhdGlv
biA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlvbiks
IG1heE1hZ25pZmljYXRpb24pOwotCi0gICAgRmxvYXRQb2ludCBzY2FsZWRPcmlnaW4gPSBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1fbWFnbmlmaWNhdGlvbk9yaWdpbiwgbmV3TWFnbmlmaWNh
dGlvbik7Ci0gICAgc2NhbGVkT3JpZ2luLm1vdmVCeSgtbV92aXNpYmxlQ29udGVudFJlY3QubG9j
YXRpb24oKSk7Ci0KLSAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5jb21taXRUcmFu
c2llbnRab29tKG5ld01hZ25pZmljYXRpb24sIC1zY2FsZWRPcmlnaW4pOworICAgIG1fd2ViUGFn
ZVByb3h5LmRyYXdpbmdBcmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlv
biwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01h
Z25pZmljYXRpb24pKTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZEFjdGl2
ZUdlc3R1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4
IDA3Yzc0Y2EuLmM4NTI5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRyYW5zaWVudFpvb20oKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBPVkVSUklERTsKKyAgICB2b2lkIGFwcGx5VHJhbnNp
ZW50Wm9vbVRvUGFnZShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsK
IAogICAgIHZvaWQgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBhNzI0MWZiLi4xYmE4MGIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTQ3LDYgKzQ3LDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1JlbmRlckxheWVyQ29tcG9zaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbGVkQmFja2luZy5oPgogI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KQEAgLTcwMiw3ICs3MDMsNyBAQCBib29sIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3Qg
RnJhbQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpiZWdpblRyYW5zaWVu
dFpvb20oKQogewotICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9s
bGFibGVBcmVhOjpJbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250
ZW50UmVjdCA9IG1fd2ViUGFnZS0+bWFpbkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3Qo
U2Nyb2xsYWJsZUFyZWE6OkluY2x1ZGVTY3JvbGxiYXJzKTsKICAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQmVnaW5UcmFuc2llbnRab29tKHZp
c2libGVDb250ZW50UmVjdCkpOwogfQogCkBAIC03MTUsMzggKzcxNiwxNDEgQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIEZsb2F0UG9pbnQKICAgICBpZiAoIW1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWlu
RnJhbWUoKS52aWV3KCktPnJlbmRlclZpZXcoKTsKLQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9yaWdpbi54KCksIG9yaWdpbi55
KCkpOwogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CiAKKyAgICBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCktPnJlbmRlclZpZXcoKTsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIHJlbmRlclZpZXdMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXJDQSo+KHJlbmRlclZpZXctPmxheWVyKCktPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKS0+
cGxhdGZvcm1DQUxheWVyKCk7CiAgICAgcmVuZGVyVmlld0xheWVyLT5zZXRUcmFuc2Zvcm0odHJh
bnNmb3JtKTsKICAgICByZW5kZXJWaWV3TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQz
RCgpKTsKICAgICByZW5kZXJWaWV3TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRCgpKTsK
IAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJhbnNmb3JtIHRoZSBzaGFkb3cgbGF5ZXIgYXMg
d2VsbCwgaW5zdGVhZCBvZiBoaWRpbmcgaXQuCiAgICAgUGxhdGZvcm1DQUxheWVyKiBzaGFkb3dM
YXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmNvbXBvc2l0
b3IoKS5sYXllckZvckNvbnRlbnRTaGFkb3coKSktPnBsYXRmb3JtQ0FMYXllcigpOwotICAgIHNo
YWRvd0xheWVyLT5zZXRIaWRkZW4odHJ1ZSk7CisKKyAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRz
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdG9GbG9hdFNpemUocmVuZGVyVmlldy0+bGF5b3V0
T3ZlcmZsb3dSZWN0KCkubWF4WE1heFlDb3JuZXIoKSkpOworICAgIHNoYWRvd0JvdW5kcy5zY2Fs
ZShzY2FsZSk7CisKKyAgICBzaGFkb3dMYXllci0+c2V0Qm91bmRzKHNoYWRvd0JvdW5kcyk7Cisg
ICAgc2hhZG93TGF5ZXItPnNldFBvc2l0aW9uKG9yaWdpbiArIHNoYWRvd0JvdW5kcy5jZW50ZXIo
KSk7CisgICAgc2hhZG93TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5zaGFkb3dQYXRoID0gYWRvcHRD
RihDR1BhdGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMsIE5VTEwpKS5nZXQoKTsKIAogICAg
IG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0FC
YXNpY0FuaW1hdGlvbj4gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKFN0cmlu
ZyBrZXlQYXRoKQoreworICAgIGNvbnN0IGZsb2F0IHRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0
aW9uID0gMC4yNTsKKworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBhbmltYXRpb24g
PSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDprZXlQYXRoXTsKKyAgICBb
YW5pbWF0aW9uIHNldER1cmF0aW9uOnRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0aW9uXTsKKyAg
ICBbYW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworICAgIFthbmlt
YXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpmYWxzZV07CisgICAgW2FuaW1hdGlvbiBzZXRU
aW1pbmdGdW5jdGlvbjpbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6a0NB
TWVkaWFUaW1pbmdGdW5jdGlvbkVhc2VJbkVhc2VPdXRdXTsKKworICAgIHJldHVybiBhbmltYXRp
b247Cit9CisKK3N0YXRpYyBGbG9hdFBvaW50IGNvbnN0cmFpblpvb21PcmlnaW5Gb3JGcmFtZVZp
ZXcoZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbiwgRnJhbWVWaWV3KiBmcmFtZVZpZXcp
Cit7CisgICAgLy8gU2NhbGluZyBtYXkgaGF2ZSBleHBvc2VkIHRoZSBvdmVyaGFuZyBhcmVhLCBz
byB3ZSBuZWVkIHRvIGNvbnN0cmFpbiB0aGUgZmluYWwKKyAgICAvLyBsYXllciBwb3NpdGlvbiBl
eGFjdGx5IGxpa2Ugc2Nyb2xsaW5nIHdpbGwgb25jZSBpdCdzIGNvbW1pdHRlZCwgdG8gZW5zdXJl
IHRoYXQKKyAgICAvLyBzY3JvbGxpbmcgZG9lc24ndCBtYWtlIHRoZSB2aWV3IGp1bXA7IHRoaXMg
aXMgYm9ycm93ZWQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6
OkluY2x1ZGVTY3JvbGxiYXJzKTsKKworICAgIEZsb2F0UmVjdCB6b29tQ29udGVudFJlY3QgPSB2
aXNpYmxlQ29udGVudFJlY3Q7CisgICAgem9vbUNvbnRlbnRSZWN0Lm1vdmVCeSgtb3JpZ2luKTsK
KworICAgIEZsb2F0UmVjdCBkb2N1bWVudFJlY3QgPSBmcmFtZVZpZXctPnJlbmRlclZpZXcoKS0+
dW5zY2FsZWREb2N1bWVudFJlY3QoKTsKKyAgICBkb2N1bWVudFJlY3Quc2NhbGUoc2NhbGUpOwor
ICAgIHpvb21Db250ZW50UmVjdC5pbnRlcnNlY3QoZG9jdW1lbnRSZWN0KTsKKworICAgIGlmICh6
b29tQ29udGVudFJlY3Quc2l6ZSgpICE9IHZpc2libGVDb250ZW50UmVjdC5zaXplKCkpIHsKKyAg
ICAgICAgem9vbUNvbnRlbnRSZWN0LnNldFNpemUodmlzaWJsZUNvbnRlbnRSZWN0LnNpemUoKSk7
CisgICAgICAgIHpvb21Db250ZW50UmVjdC5pbnRlcnNlY3QoZG9jdW1lbnRSZWN0KTsKKyAgICAg
ICAgaWYgKHpvb21Db250ZW50UmVjdC53aWR0aCgpIDwgdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRo
KCkpCisgICAgICAgICAgICB6b29tQ29udGVudFJlY3QubW92ZSgtKHZpc2libGVDb250ZW50UmVj
dC53aWR0aCgpIC0gem9vbUNvbnRlbnRSZWN0LndpZHRoKCkpLCAwKTsKKyAgICAgICAgaWYgKHpv
b21Db250ZW50UmVjdC5oZWlnaHQoKSA8IHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSkKKyAg
ICAgICAgICAgIHpvb21Db250ZW50UmVjdC5tb3ZlKDAsIC0odmlzaWJsZUNvbnRlbnRSZWN0Lmhl
aWdodCgpIC0gem9vbUNvbnRlbnRSZWN0LmhlaWdodCgpKSk7CisgICAgfQorCisgICAgRmxvYXRQ
b2ludCBjb25zdHJhaW5lZE9yaWdpbiA9IHpvb21Db250ZW50UmVjdC5sb2NhdGlvbigpOworICAg
IGNvbnN0cmFpbmVkT3JpZ2luLm1vdmVCeSgtdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkp
OworCisgICAgcmV0dXJuIC1jb25zdHJhaW5lZE9yaWdpbjsKK30KKwogdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQgb3JpZ2luKQogewotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3dlYlBh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVuZGVyVmlldygpOworICAgIFJl
bmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZVZpZXcoKS0+cmVuZGVy
VmlldygpOworICAgIFBsYXRmb3JtQ0FMYXllciogcmVuZGVyVmlld0xheWVyID0gc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+bGF5ZXIoKS0+YmFja2luZygpLT5ncmFw
aGljc0xheWVyKCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICBGbG9hdFBvaW50IGNvbnN0cmFp
bmVkT3JpZ2luID0gY29uc3RyYWluWm9vbU9yaWdpbkZvckZyYW1lVmlldyhzY2FsZSwgb3JpZ2lu
LCBtX3dlYlBhZ2UtPm1haW5GcmFtZVZpZXcoKSk7CisKKyAgICBpZiAobV90cmFuc2llbnRab29t
U2NhbGUgPT0gc2NhbGUgJiYgcm91bmRlZEludFBvaW50KG9yaWdpbikgPT0gcm91bmRlZEludFBv
aW50KGNvbnN0cmFpbmVkT3JpZ2luKSkgeworICAgICAgICAvLyBXZSdyZSBhbHJlYWR5IGF0IHRo
ZSByaWdodCBzY2FsZSBhbmQgcG9zaXRpb24sIHNvIHdlIGRvbid0IG5lZWQgdG8gYW5pbWF0ZS4K
KyAgICAgICAgYXBwbHlUcmFuc2llbnRab29tVG9QYWdlKHNjYWxlLCBvcmlnaW4pOworICAgICAg
ICByZXR1cm47CisgICAgfQogCi0gICAgLy8gSWYgdGhlIHBhZ2Ugc2NhbGUgaXMgYWxyZWFkeSB0
aGUgdGFyZ2V0IHNjYWxlLCBzY2FsZVBhZ2UoKSB3aWxsIHNob3J0LWNpcmN1aXQKLSAgICAvLyBh
bmQgbm90IGFwcGx5IHRoZSB0cmFuc2Zvcm0sIHNvIHdlIGNhbid0IGRlcGVuZCBvbiBpdCB0byBk
byBzby4KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7
CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKLSAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ0EqPihyZW5kZXJWaWV3LT5sYXllcigpLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSkt
PnBsYXRmb3JtQ0FMYXllcigpLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKIAotICAgIFBsYXRm
b3JtQ0FMYXllciogc2hhZG93TGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihy
ZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JDb250ZW50U2hhZG93KCkpLT5wbGF0Zm9y
bUNBTGF5ZXIoKTsKLSAgICBzaGFkb3dMYXllci0+c2V0SGlkZGVuKGZhbHNlKTsKKyAgICBSZXRh
aW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNBID0gdHJhbnNpZW50
Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iKTsKKyAgICBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRp
b246OmNyZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0KCkpOworICAgIHJlbmRlclZpZXdB
bmltYXRpb24tPnNldFRvVmFsdWUodHJhbnNmb3JtKTsKKworICAgIFJldGFpblB0cjxDQUxheWVy
PiBzaGFkb3dMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXct
PmNvbXBvc2l0b3IoKS5sYXllckZvckNvbnRlbnRTaGFkb3coKSktPnBsYXRmb3JtQ0FMYXllcigp
LT5wbGF0Zm9ybUxheWVyKCk7CisKKyAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgdG9GbG9hdFNpemUocmVuZGVyVmlldy0+bGF5b3V0T3ZlcmZsb3dS
ZWN0KCkubWF4WE1heFlDb3JuZXIoKSkpOworICAgIHNoYWRvd0JvdW5kcy5zY2FsZShzY2FsZSk7
CisgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2hhZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3Jl
YXRlV2l0aFJlY3Qoc2hhZG93Qm91bmRzLCBOVUxMKSkuZ2V0KCk7CisKKyAgICBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNu
YXBBbmltYXRpb25Gb3JLZXlQYXRoKCJib3VuZHMiKTsKKyAgICBbc2hhZG93Qm91bmRzQW5pbWF0
aW9uIHNldFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpzaGFkb3dCb3VuZHNdXTsKKyAg
ICBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UG9zaXRpb25BbmltYXRpb24gPSB0
cmFuc2llbnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInBvc2l0aW9uIik7CisgICAgW3No
YWRvd0JvdW5kc0FuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OmNv
bnN0cmFpbmVkT3JpZ2luICsgc2hhZG93Qm91bmRzLmNlbnRlcigpXV07CisgICAgUmV0YWluUHRy
PENBQmFzaWNBbmltYXRpb24+IHNoYWRvd1BhdGhBbmltYXRpb24gPSB0cmFuc2llbnRab29tU25h
cEFuaW1hdGlvbkZvcktleVBhdGgoInNoYWRvd1BhdGgiKTsKKyAgICBbc2hhZG93Qm91bmRzQW5p
bWF0aW9uIHNldFRvVmFsdWU6KGlkKXNoYWRvd1BhdGguZ2V0KCldOworCisgICAgW0NBVHJhbnNh
Y3Rpb24gYmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpeKHZv
aWQpIHsKKyAgICAgICAgcmVuZGVyVmlld0xheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoInRy
YW5zaWVudFpvb21Db21taXQiKTsKKyAgICAgICAgW3NoYWRvd0xheWVyIHJlbW92ZUFsbEFuaW1h
dGlvbnNdOworICAgICAgICBhcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uoc2NhbGUsIG9yaWdpbik7
CisgICAgICAgIGZsdXNoTGF5ZXJzKCk7CisgICAgfV07CisKKyAgICByZW5kZXJWaWV3TGF5ZXIt
PmFkZEFuaW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmlt
YXRpb24uZ2V0KCkpOworICAgIFtzaGFkb3dMYXllciBhZGRBbmltYXRpb246c2hhZG93Qm91bmRz
QW5pbWF0aW9uLmdldCgpIGZvcktleTpAInRyYW5zaWVudFpvb21Db21taXRTaGFkb3dCb3VuZHMi
XTsKKyAgICBbc2hhZG93TGF5ZXIgYWRkQW5pbWF0aW9uOnNoYWRvd1Bvc2l0aW9uQW5pbWF0aW9u
LmdldCgpIGZvcktleTpAInRyYW5zaWVudFpvb21Db21taXRTaGFkb3dQb3NpdGlvbiJdOworICAg
IFtzaGFkb3dMYXllciBhZGRBbmltYXRpb246c2hhZG93UGF0aEFuaW1hdGlvbi5nZXQoKSBmb3JL
ZXk6QCJ0cmFuc2llbnRab29tQ29tbWl0U2hhZG93UGF0aCJdOwogCi0gICAgbV93ZWJQYWdlLT5z
Y2FsZVBhZ2Uoc2NhbGUsIHJvdW5kZWRJbnRQb2ludChvcmlnaW4pKTsKKyAgICBbQ0FUcmFuc2Fj
dGlvbiBjb21taXRdOworfQorCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjph
cHBseVRyYW5zaWVudFpvb21Ub1BhZ2UoZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikK
K3sKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3
KCktPnJlbmRlclZpZXcoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJlbmRlclZpZXdMYXllciA9
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmxheWVyKCktPmJhY2tp
bmcoKS0+Z3JhcGhpY3NMYXllcigpKS0+cGxhdGZvcm1DQUxheWVyKCk7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBmaW5hbFRyYW5zZm9ybTsKKyAgICBmaW5hbFRyYW5zZm9ybS5zY2FsZShz
Y2FsZSk7CisKKyAgICAvLyBJZiB0aGUgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IHRoZSB0YXJnZXQg
c2NhbGUsIHNldFBhZ2VTY2FsZUZhY3RvcigpIHdpbGwgc2hvcnQtY2lyY3VpdAorICAgIC8vIGFu
ZCBub3QgYXBwbHkgdGhlIHRyYW5zZm9ybSwgc28gd2UgY2FuJ3QgZGVwZW5kIG9uIGl0IHRvIGRv
IHNvLgorICAgIHJlbmRlclZpZXdMYXllci0+c2V0VHJhbnNmb3JtKGZpbmFsVHJhbnNmb3JtKTsK
KworICAgIFBsYXRmb3JtQ0FMYXllciogc2hhZG93TGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGlj
c0xheWVyQ0EqPihyZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JDb250ZW50U2hhZG93
KCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICBJbnRSZWN0IG92ZXJmbG93UmVjdCA9IHJlbmRl
clZpZXctPnBpeGVsU25hcHBlZExheW91dE92ZXJmbG93UmVjdCgpOworICAgIHNoYWRvd0xheWVy
LT5zZXRCb3VuZHMoSW50UmVjdChJbnRQb2ludCgpLCB0b0ludFNpemUob3ZlcmZsb3dSZWN0Lm1h
eFhNYXhZQ29ybmVyKCkpKSk7CisgICAgc2hhZG93TGF5ZXItPnNldFBvc2l0aW9uKHNoYWRvd0xh
eWVyLT5ib3VuZHMoKS5jZW50ZXIoKSk7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNl
dFVwQ29udGVudFNoYWRvd0xheWVyKHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5sYXllckZvckNv
bnRlbnRTaGFkb3coKSk7CisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmlnaW4ob3JpZ2lu
KTsKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLT5tYWluRnJh
bWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9s
bGJhcnMpOworICAgIHVuc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5KC12aXNpYmxlQ29udGVudFJlY3Qu
bG9jYXRpb24oKSk7CisgICAgbV93ZWJQYWdlLT5zY2FsZVBhZ2Uoc2NhbGUsIHJvdW5kZWRJbnRQ
b2ludCgtdW5zY3JvbGxlZE9yaWdpbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219297</attachid>
            <date>2013-12-15 23:23:06 -0800</date>
            <delta_ts>2013-12-16 10:33:42 -0800</delta_ts>
            <desc>patch</desc>
            <filename>animate.diff</filename>
            <type>text/plain</type>
            <size>16179</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzODEwN2NkLi40ZjU1MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMTItMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzOiBQaW5jaGluZyBiZXlvbmQgdGhlIGV4dHJl
bWVzIGRvZXNuJ3QgYW5pbWF0ZSBiYWNrIHRvIHRoZSBtaW4vbWF4CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU3NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICBFeHBvcnQgYSBmZXcgdGhpbmdzIHNvIFdlYktpdDIgY2FuIHVzZSB0aGVtLgorCiAyMDEzLTEy
LTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIG51bGxw
dHIgaW4gUmVuZGVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwOTU5ZjI2Li4xYTNm
OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNzUyLDYgKzc1Miw5IEBAIF9fWk43V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTI0c19kZWZhdWx0VGltZW91dEludGVydmFsRQogX19aTjdX
ZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjVzZXREZWZhdWx0VGltZW91dEludGVydmFsRWQK
IF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTUwc2V0UmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlFUktOM1dURjZTdHJpbmdFUzRfUzRfCiBfX1pO
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U2c2V0VVJMRVJLTlNfM1VSTEUKK19fWk43V2Vi
Q29yZTE5UGxhdGZvcm1DQUFuaW1hdGlvbjEwc2V0VG9WYWx1ZUVSS05TXzIwVHJhbnNmb3JtYXRp
b25NYXRyaXhFCitfX1pON1dlYkNvcmUxOVBsYXRmb3JtQ0FBbmltYXRpb242Y3JlYXRlRVAxOUNB
UHJvcGVydHlBbmltYXRpb24KK19fWk43V2ViQ29yZTE5UGxhdGZvcm1DQUFuaW1hdGlvbkQxRXYK
IF9fWk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlcjVmbHVzaEV2CiBfX1pON1dlYkNvcmUx
OVRleHRSZXNvdXJjZURlY29kZXI2ZGVjb2RlRVBLY20KIF9fWk43V2ViQ29yZTE5VGV4dFJlc291
cmNlRGVjb2RlckMxRVJLTjNXVEY2U3RyaW5nRVJLTlNfMTJUZXh0RW5jb2RpbmdFYgpAQCAtMTIy
Niw2ICsxMjI5LDcgQEAgX19aTjdXZWJDb3JlOUNsaXBib2FyZEQxRXYKIF9fWk43V2ViQ29yZTlE
T01XaW5kb3czMGRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50c0V2CiBfX1pON1dlYkNvcmU5
RE9NV2luZG93MzZkaXNwYXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHNFdgogX19aTjdX
ZWJDb3JlOUZsb2F0UmVjdDVzY2FsZUVmZgorX19aTjdXZWJDb3JlOUZsb2F0UmVjdDlpbnRlcnNl
Y3RFUktTMF8KIF9fWk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSSzZDR1JlY3QKIF9fWk43V2ViQ29y
ZTlGbG9hdFJlY3RDMUVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZsb2F0U2l6ZUMxRVJL
NkNHU2l6ZQpAQCAtMTM4Nyw2ICsxMzkxLDcgQEAgX19aTks3V2ViQ29yZTEwUmVuZGVyVGV4dDE2
bGluZXNCb3VuZGluZ0JveEV2CiBfX1pOSzdXZWJDb3JlMTBSZW5kZXJUZXh0OWZpcnN0UnVuWEV2
CiBfX1pOSzdXZWJDb3JlMTBSZW5kZXJUZXh0OWZpcnN0UnVuWUV2CiBfX1pOSzdXZWJDb3JlMTBS
ZW5kZXJWaWV3MTJkb2N1bWVudFJlY3RFdgorX19aTks3V2ViQ29yZTEwUmVuZGVyVmlldzIwdW5z
Y2FsZWREb2N1bWVudFJlY3RFdgogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzEyY29udGVudHNT
aXplRXYKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxMmRvY3VtZW50Vmlld0V2CiBfX1pOSzdX
ZWJDb3JlMTBTY3JvbGxWaWV3MTRzY3JvbGxiYXJNb2Rlc0VSTlNfMTNTY3JvbGxiYXJNb2RlRVMy
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDRkOGZjZGQuLjc3YmY1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1
MCBAQAogMjAxMy0xMi0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAorICAgICAgICBXZWJLaXQyIFZpZXcgR2VzdHVyZXM6IFBpbmNoaW5nIGJleW9uZCB0aGUgZXh0
cmVtZXMgZG9lc24ndCBhbmltYXRlIGJhY2sgdG8gdGhlIG1pbi9tYXgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTc1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4geW91IGxldCBnbyBvZiBhIHBp
bmNoIHdoZXJlIHlvdSBleGNlZWRlZCB0aGUgbWF4aW11bSBvciBtaW5pbXVtIHNjYWxlLAorICAg
ICAgICB0aGUgdmlldyBzaG91bGQgYW5pbWF0ZSBiYWNrIHRvIHRoZSBsaW1pdCBpbnN0ZWFkIG9m
IHNuYXBwaW5nIGJhY2suCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5k
TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICBVbnNjcm9sbGluZyB0aGUgc2NhbGVkIG9y
aWdpbiBoZXJlIGlzIHdyb25nOyB3ZSBzaG91bGQgc2VuZCB0aGUgc2FtZQorICAgICAgICB2YWx1
ZSBmb3IgJ29yaWdpbicgZm9yIGNvbW1pdFRyYW5zaWVudFpvb20gdGhhdCB3ZSBkbyBmb3IgYWRq
dXN0VHJhbnNpZW50Wm9vbS4KKyAgICAgICAgVGhlIGRyYXdpbmcgYXJlYSBjYW4gZGVhbCB3aXRo
IHRyYW5zZm9ybWluZyB0aGF0IGhvd2V2ZXIgaXQgbmVlZHMgdG8gY2FsbCBzY2FsZVBhZ2UoKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6YmVnaW5UcmFuc2llbnRab29tKToKKyAgICAgICAgRHJpdmUtYnkgdXNl
IFdlYlBhZ2U6Om1haW5GcmFtZVZpZXcoKS4KKworICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIFVwZGF0
ZSB0aGUgc2hhZG93IGxheWVyJ3MgYm91bmRzLCBwb3NpdGlvbiwgYW5kIHNoYWRvdyBwYXRoIHdo
aWxlIHpvb21pbmcsCisgICAgICAgIGluc3RlYWQgb2YgaGlkaW5nIGl0LgorCisgICAgICAgIChX
ZWJLaXQ6OnRyYW5zaWVudFpvb21TbmFwQW5pbWF0aW9uRm9yS2V5UGF0aCk6CisgICAgICAgIENy
ZWF0ZSBhIENBQmFzaWNBbmltYXRpb24gdGhhdCBzdGF5cyBhcHBsaWVkIHRvIGl0cyB0YXJnZXQg
d2hlbiBpdCBmaW5pc2hlcywKKyAgICAgICAgbGFzdHMgZm9yIGEgcXVhcnRlciBzZWNvbmQsIGFu
ZCB1c2VzIHRoZSBlYXNlLWluLWVhc2Utb3V0IHRpbWluZyBmdW5jdGlvbi4KKworICAgICAgICAo
V2ViS2l0Ojpjb25zdHJhaW5ab29tT3JpZ2luRm9yRnJhbWVWaWV3KToKKyAgICAgICAgV2hlbiB3
ZSBsYW5kIGEgdHJhbnNpZW50IHpvb20sIHRoZXJlIG1heSBiZSBvdmVyaGFuZyBhcmVhcyAobGlu
ZW4sIGluIHRoZSBjYXNlIG9mIE1hYykKKyAgICAgICAgdmlzaWJsZS4gRHVyaW5nIHRoZSBjb21t
aXQgYW5pbWF0aW9uLCB3ZSBzaG91bGQgbW92ZSB0aGUgUmVuZGVyVmlldyBsYXllciBhcHByb3By
aWF0ZWx5CisgICAgICAgIHNvIHRoYXQgdGhlIHBhZ2UgY292ZXJzIHRoZSBlbnRpcmUgdmlldyBh
bmQgdGhlcmUgYXJlIG5vIG92ZXJoYW5nIGFyZWFzIHZpc2libGUuCisgICAgICAgIEFkYXB0IHNv
bWUgY29kZSBmcm9tIFNjcm9sbGFibGVBcmVhIHRvIGNvbnN0cmFpbiB0aGUgem9vbSBvcmlnaW4g
dG8gZG8gc28uCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICBBbmltYXRlIHRoZSBSZW5kZXJWaWV3
IGxheWVyJ3MgdHJhbnNmb3JtLCBhbmQgdGhlIHNoYWRvdyBsYXllcidzIGJvdW5kcywgcG9zaXRp
b24sIGFuZCBwYXRoLgorICAgICAgICBXaGVuIHRoZXkgY29tcGxldGUsIGFwcGx5IHRoZSB6b29t
IHZpYSBzY2FsZVBhZ2UoKSBhbmQgZmx1c2ggdGhlIGxheWVyIHRyZWUgKG90aGVyd2lzZSB0aGVy
ZQorICAgICAgICBjYW4gYmUgYSBmbGFzaCBiZXR3ZWVuIHJlbW92aW5nIHRoZSBhbmltYXRpb25z
IGFuZCB0aGUgbmV4dCBmbHVzaCB3aXRoIHRoZSBuZXcgc2NhbGUpLgorCisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphcHBseVRyYW5zaWVudFpvb21Ub1Bh
Z2UpOgorICAgICAgICBNb3ZlIHRoZSBjb2RlIHRvIGxhbmQgdGhlIHRyYW5zaWVudCB6b29tICh2
aWEgc2NhbGVQYWdlKSBhbmQgdG8gcHV0IHRoZSBzaGFkb3cgYmFjaworICAgICAgICBpbiB0aGUg
c3RhdGUgV2ViQ29yZSBsZWZ0IGl0IG91dCBpbnRvIGl0cyBvd24gZnVuY3Rpb24sIHNvIGl0IGNh
biBiZSBjYWxsZWQgYm90aCBmcm9tIHRoZQorICAgICAgICBhbmltYXRpb24gY29tcGxldGlvbiBj
YWxsYmFjayBhbmQgZnJvbSB0aGUgc2hvcnQtY2lyY3VpdCBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBk
b24ndCBuZWVkIHRvIGFuaW1hdGUuCisKKzIwMTMtMTItMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzOiBDYW4n
dCBwaW5jaCBpbiBwYXN0IHRoZSBtYXhpbXVtIHNjYWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjU3NDkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IDlkYjBi
ZTkuLjFiYzcxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTEyMiwxMyArMTIyLDggQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKIHsKICAgICBBU1NF
UlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24p
OwogCi0gICAgLy8gRklYTUU6IFNob3VsZCBydWJiZXItYmFuZCBiYWNrIHdoZW4gem9vbWVkIGlu
IG9yIG91dCBwYXN0IHRoZSBsaW1pdC4KICAgICBkb3VibGUgbmV3TWFnbmlmaWNhdGlvbiA9IHN0
ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlvbiksIG1heE1h
Z25pZmljYXRpb24pOwotCi0gICAgRmxvYXRQb2ludCBzY2FsZWRPcmlnaW4gPSBzY2FsZWRNYWdu
aWZpY2F0aW9uT3JpZ2luKG1fbWFnbmlmaWNhdGlvbk9yaWdpbiwgbmV3TWFnbmlmaWNhdGlvbik7
Ci0gICAgc2NhbGVkT3JpZ2luLm1vdmVCeSgtbV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24o
KSk7Ci0KLSAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5jb21taXRUcmFuc2llbnRa
b29tKG5ld01hZ25pZmljYXRpb24sIC1zY2FsZWRPcmlnaW4pOworICAgIG1fd2ViUGFnZVByb3h5
LmRyYXdpbmdBcmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwgc2Nh
bGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25pZmlj
YXRpb24pKTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZEFjdGl2ZUdlc3R1
cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDA3Yzc0
Y2EuLmM4NTI5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgK
QEAgLTEwNyw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRyYW5z
aWVudFpvb20oKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKSBPVkVSUklERTsKKyAgICB2b2lkIGFwcGx5VHJhbnNpZW50Wm9v
bVRvUGFnZShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAg
IHZvaWQgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBhNzI0MWZiLi4xYmE4MGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRp
bmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbGVkQmFja2luZy5oPgogI2ltcG9ydCA8d3RmL01h
aW5UaHJlYWQuaD4KQEAgLTcwMiw3ICs3MDMsNyBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpzaG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbQog
CiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpiZWdpblRyYW5zaWVudFpvb20o
KQogewotICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVB
cmVhOjpJbmNsdWRlU2Nyb2xsYmFycyk7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVj
dCA9IG1fd2ViUGFnZS0+bWFpbkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xs
YWJsZUFyZWE6OkluY2x1ZGVTY3JvbGxiYXJzKTsKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQmVnaW5UcmFuc2llbnRab29tKHZpc2libGVD
b250ZW50UmVjdCkpOwogfQogCkBAIC03MTUsMzggKzcxNiwxNDEgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQKICAgICBpZiAoIW1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS52aWV3KCktPnJlbmRlclZpZXcoKTsKLQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5z
Zm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9yaWdpbi54KCksIG9yaWdpbi55KCkpOwog
ICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CiAKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCktPnJlbmRlclZpZXcoKTsKICAgICBQbGF0Zm9y
bUNBTGF5ZXIqIHJlbmRlclZpZXdMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+
KHJlbmRlclZpZXctPmxheWVyKCktPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKS0+cGxhdGZv
cm1DQUxheWVyKCk7CiAgICAgcmVuZGVyVmlld0xheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3Jt
KTsKICAgICByZW5kZXJWaWV3TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsK
ICAgICByZW5kZXJWaWV3TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQzRCgpKTsKIAotICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgdHJhbnNmb3JtIHRoZSBzaGFkb3cgbGF5ZXIgYXMgd2VsbCwg
aW5zdGVhZCBvZiBoaWRpbmcgaXQuCiAgICAgUGxhdGZvcm1DQUxheWVyKiBzaGFkb3dMYXllciA9
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5s
YXllckZvckNvbnRlbnRTaGFkb3coKSktPnBsYXRmb3JtQ0FMYXllcigpOwotICAgIHNoYWRvd0xh
eWVyLT5zZXRIaWRkZW4odHJ1ZSk7CisKKyAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgdG9GbG9hdFNpemUocmVuZGVyVmlldy0+bGF5b3V0T3ZlcmZs
b3dSZWN0KCkubWF4WE1heFlDb3JuZXIoKSkpOworICAgIHNoYWRvd0JvdW5kcy5zY2FsZShzY2Fs
ZSk7CisKKyAgICBzaGFkb3dMYXllci0+c2V0Qm91bmRzKHNoYWRvd0JvdW5kcyk7CisgICAgc2hh
ZG93TGF5ZXItPnNldFBvc2l0aW9uKG9yaWdpbiArIHNoYWRvd0JvdW5kcy5jZW50ZXIoKSk7Cisg
ICAgc2hhZG93TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS5zaGFkb3dQYXRoID0gYWRvcHRDRihDR1Bh
dGhDcmVhdGVXaXRoUmVjdChzaGFkb3dCb3VuZHMsIE5VTEwpKS5nZXQoKTsKIAogICAgIG1fdHJh
bnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0Fu
aW1hdGlvbj4gdHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKFN0cmluZyBrZXlQ
YXRoKQoreworICAgIGNvbnN0IGZsb2F0IHRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0aW9uID0g
MC4yNTsKKworICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBhbmltYXRpb24gPSBbQ0FC
YXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDprZXlQYXRoXTsKKyAgICBbYW5pbWF0
aW9uIHNldER1cmF0aW9uOnRyYW5zaWVudFpvb21TbmFwQmFja0R1cmF0aW9uXTsKKyAgICBbYW5p
bWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOworICAgIFthbmltYXRpb24g
c2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpmYWxzZV07CisgICAgW2FuaW1hdGlvbiBzZXRUaW1pbmdG
dW5jdGlvbjpbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6a0NBTWVkaWFU
aW1pbmdGdW5jdGlvbkVhc2VJbkVhc2VPdXRdXTsKKworICAgIHJldHVybiBhbmltYXRpb247Cit9
CisKK3N0YXRpYyBGbG9hdFBvaW50IGNvbnN0cmFpblpvb21PcmlnaW5Gb3JGcmFtZVZpZXcoZG91
YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbiwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit7Cisg
ICAgLy8gU2NhbGluZyBtYXkgaGF2ZSBleHBvc2VkIHRoZSBvdmVyaGFuZyBhcmVhLCBzbyB3ZSBu
ZWVkIHRvIGNvbnN0cmFpbiB0aGUgZmluYWwKKyAgICAvLyBsYXllciBwb3NpdGlvbiBleGFjdGx5
IGxpa2Ugc2Nyb2xsaW5nIHdpbGwgb25jZSBpdCdzIGNvbW1pdHRlZCwgdG8gZW5zdXJlIHRoYXQK
KyAgICAvLyBzY3JvbGxpbmcgZG9lc24ndCBtYWtlIHRoZSB2aWV3IGp1bXA7IHRoaXMgaXMgYm9y
cm93ZWQgZnJvbSBTY3JvbGxhYmxlQXJlYS4KKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRS
ZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkluY2x1
ZGVTY3JvbGxiYXJzKTsKKworICAgIEZsb2F0UmVjdCB6b29tQ29udGVudFJlY3QgPSB2aXNpYmxl
Q29udGVudFJlY3Q7CisgICAgem9vbUNvbnRlbnRSZWN0Lm1vdmVCeSgtb3JpZ2luKTsKKworICAg
IEZsb2F0UmVjdCBkb2N1bWVudFJlY3QgPSBmcmFtZVZpZXctPnJlbmRlclZpZXcoKS0+dW5zY2Fs
ZWREb2N1bWVudFJlY3QoKTsKKyAgICBkb2N1bWVudFJlY3Quc2NhbGUoc2NhbGUpOworICAgIHpv
b21Db250ZW50UmVjdC5pbnRlcnNlY3QoZG9jdW1lbnRSZWN0KTsKKworICAgIGlmICh6b29tQ29u
dGVudFJlY3Quc2l6ZSgpICE9IHZpc2libGVDb250ZW50UmVjdC5zaXplKCkpIHsKKyAgICAgICAg
em9vbUNvbnRlbnRSZWN0LnNldFNpemUodmlzaWJsZUNvbnRlbnRSZWN0LnNpemUoKSk7CisgICAg
ICAgIHpvb21Db250ZW50UmVjdC5pbnRlcnNlY3QoZG9jdW1lbnRSZWN0KTsKKyAgICAgICAgaWYg
KHpvb21Db250ZW50UmVjdC53aWR0aCgpIDwgdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCkpCisg
ICAgICAgICAgICB6b29tQ29udGVudFJlY3QubW92ZSgtKHZpc2libGVDb250ZW50UmVjdC53aWR0
aCgpIC0gem9vbUNvbnRlbnRSZWN0LndpZHRoKCkpLCAwKTsKKyAgICAgICAgaWYgKHpvb21Db250
ZW50UmVjdC5oZWlnaHQoKSA8IHZpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSkKKyAgICAgICAg
ICAgIHpvb21Db250ZW50UmVjdC5tb3ZlKDAsIC0odmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgp
IC0gem9vbUNvbnRlbnRSZWN0LmhlaWdodCgpKSk7CisgICAgfQorCisgICAgRmxvYXRQb2ludCBj
b25zdHJhaW5lZE9yaWdpbiA9IHpvb21Db250ZW50UmVjdC5sb2NhdGlvbigpOworICAgIGNvbnN0
cmFpbmVkT3JpZ2luLm1vdmVCeSgtdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOworCisg
ICAgcmV0dXJuIC1jb25zdHJhaW5lZE9yaWdpbjsKK30KKwogdm9pZCBUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9p
bnQgb3JpZ2luKQogewotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX3dlYlBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+cmVuZGVyVmlldygpOworICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcgPSBtX3dlYlBhZ2UtPm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygp
OworICAgIFBsYXRmb3JtQ0FMYXllciogcmVuZGVyVmlld0xheWVyID0gc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllckNBKj4ocmVuZGVyVmlldy0+bGF5ZXIoKS0+YmFja2luZygpLT5ncmFwaGljc0xh
eWVyKCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICBGbG9hdFBvaW50IGNvbnN0cmFpbmVkT3Jp
Z2luID0gY29uc3RyYWluWm9vbU9yaWdpbkZvckZyYW1lVmlldyhzY2FsZSwgb3JpZ2luLCBtX3dl
YlBhZ2UtPm1haW5GcmFtZVZpZXcoKSk7CisKKyAgICBpZiAobV90cmFuc2llbnRab29tU2NhbGUg
PT0gc2NhbGUgJiYgcm91bmRlZEludFBvaW50KG9yaWdpbikgPT0gcm91bmRlZEludFBvaW50KGNv
bnN0cmFpbmVkT3JpZ2luKSkgeworICAgICAgICAvLyBXZSdyZSBhbHJlYWR5IGF0IHRoZSByaWdo
dCBzY2FsZSBhbmQgcG9zaXRpb24sIHNvIHdlIGRvbid0IG5lZWQgdG8gYW5pbWF0ZS4KKyAgICAg
ICAgYXBwbHlUcmFuc2llbnRab29tVG9QYWdlKHNjYWxlLCBvcmlnaW4pOworICAgICAgICByZXR1
cm47CisgICAgfQogCi0gICAgLy8gSWYgdGhlIHBhZ2Ugc2NhbGUgaXMgYWxyZWFkeSB0aGUgdGFy
Z2V0IHNjYWxlLCBzY2FsZVBhZ2UoKSB3aWxsIHNob3J0LWNpcmN1aXQKLSAgICAvLyBhbmQgbm90
IGFwcGx5IHRoZSB0cmFuc2Zvcm0sIHNvIHdlIGNhbid0IGRlcGVuZCBvbiBpdCB0byBkbyBzby4K
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgdHJhbnNmb3JtLnRyYW5z
bGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7CiAgICAg
dHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKLSAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0Eq
PihyZW5kZXJWaWV3LT5sYXllcigpLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSktPnBsYXRm
b3JtQ0FMYXllcigpLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKIAotICAgIFBsYXRmb3JtQ0FM
YXllciogc2hhZG93TGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ0EqPihyZW5kZXJW
aWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JDb250ZW50U2hhZG93KCkpLT5wbGF0Zm9ybUNBTGF5
ZXIoKTsKLSAgICBzaGFkb3dMYXllci0+c2V0SGlkZGVuKGZhbHNlKTsKKyAgICBSZXRhaW5QdHI8
Q0FCYXNpY0FuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbkNBID0gdHJhbnNpZW50Wm9vbVNu
YXBBbmltYXRpb25Gb3JLZXlQYXRoKCJ0cmFuc2Zvcm0iKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gcmVuZGVyVmlld0FuaW1hdGlvbiA9IFBsYXRmb3JtQ0FBbmltYXRpb246OmNy
ZWF0ZShyZW5kZXJWaWV3QW5pbWF0aW9uQ0EuZ2V0KCkpOworICAgIHJlbmRlclZpZXdBbmltYXRp
b24tPnNldFRvVmFsdWUodHJhbnNmb3JtKTsKKworICAgIFJldGFpblB0cjxDQUxheWVyPiBzaGFk
b3dMYXllciA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmNvbXBv
c2l0b3IoKS5sYXllckZvckNvbnRlbnRTaGFkb3coKSktPnBsYXRmb3JtQ0FMYXllcigpLT5wbGF0
Zm9ybUxheWVyKCk7CisKKyAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgdG9GbG9hdFNpemUocmVuZGVyVmlldy0+bGF5b3V0T3ZlcmZsb3dSZWN0KCku
bWF4WE1heFlDb3JuZXIoKSkpOworICAgIHNoYWRvd0JvdW5kcy5zY2FsZShzY2FsZSk7CisgICAg
UmV0YWluUHRyPENHUGF0aFJlZj4gc2hhZG93UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0
aFJlY3Qoc2hhZG93Qm91bmRzLCBOVUxMKSkuZ2V0KCk7CisKKyAgICBSZXRhaW5QdHI8Q0FCYXNp
Y0FuaW1hdGlvbj4gc2hhZG93Qm91bmRzQW5pbWF0aW9uID0gdHJhbnNpZW50Wm9vbVNuYXBBbmlt
YXRpb25Gb3JLZXlQYXRoKCJib3VuZHMiKTsKKyAgICBbc2hhZG93Qm91bmRzQW5pbWF0aW9uIHNl
dFRvVmFsdWU6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpzaGFkb3dCb3VuZHNdXTsKKyAgICBSZXRh
aW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4gc2hhZG93UG9zaXRpb25BbmltYXRpb24gPSB0cmFuc2ll
bnRab29tU25hcEFuaW1hdGlvbkZvcktleVBhdGgoInBvc2l0aW9uIik7CisgICAgW3NoYWRvd0Jv
dW5kc0FuaW1hdGlvbiBzZXRUb1ZhbHVlOltOU1ZhbHVlIHZhbHVlV2l0aFBvaW50OmNvbnN0cmFp
bmVkT3JpZ2luICsgc2hhZG93Qm91bmRzLmNlbnRlcigpXV07CisgICAgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IHNoYWRvd1BhdGhBbmltYXRpb24gPSB0cmFuc2llbnRab29tU25hcEFuaW1h
dGlvbkZvcktleVBhdGgoInNoYWRvd1BhdGgiKTsKKyAgICBbc2hhZG93Qm91bmRzQW5pbWF0aW9u
IHNldFRvVmFsdWU6KGlkKXNoYWRvd1BhdGguZ2V0KCldOworCisgICAgW0NBVHJhbnNhY3Rpb24g
YmVnaW5dOworICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpeKHZvaWQpIHsK
KyAgICAgICAgcmVuZGVyVmlld0xheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoInRyYW5zaWVu
dFpvb21Db21taXQiKTsKKyAgICAgICAgW3NoYWRvd0xheWVyIHJlbW92ZUFsbEFuaW1hdGlvbnNd
OworICAgICAgICBhcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uoc2NhbGUsIG9yaWdpbik7CisgICAg
ICAgIGZsdXNoTGF5ZXJzKCk7CisgICAgfV07CisKKyAgICByZW5kZXJWaWV3TGF5ZXItPmFkZEFu
aW1hdGlvbkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24u
Z2V0KCkpOworICAgIFtzaGFkb3dMYXllciBhZGRBbmltYXRpb246c2hhZG93Qm91bmRzQW5pbWF0
aW9uLmdldCgpIGZvcktleTpAInRyYW5zaWVudFpvb21Db21taXRTaGFkb3dCb3VuZHMiXTsKKyAg
ICBbc2hhZG93TGF5ZXIgYWRkQW5pbWF0aW9uOnNoYWRvd1Bvc2l0aW9uQW5pbWF0aW9uLmdldCgp
IGZvcktleTpAInRyYW5zaWVudFpvb21Db21taXRTaGFkb3dQb3NpdGlvbiJdOworICAgIFtzaGFk
b3dMYXllciBhZGRBbmltYXRpb246c2hhZG93UGF0aEFuaW1hdGlvbi5nZXQoKSBmb3JLZXk6QCJ0
cmFuc2llbnRab29tQ29tbWl0U2hhZG93UGF0aCJdOwogCi0gICAgbV93ZWJQYWdlLT5zY2FsZVBh
Z2Uoc2NhbGUsIHJvdW5kZWRJbnRQb2ludChvcmlnaW4pKTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBj
b21taXRdOworfQorCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphcHBseVRy
YW5zaWVudFpvb21Ub1BhZ2UoZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAg
ICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCktPnJl
bmRlclZpZXcoKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHJlbmRlclZpZXdMYXllciA9IHN0YXRp
Y19jYXN0PEdyYXBoaWNzTGF5ZXJDQSo+KHJlbmRlclZpZXctPmxheWVyKCktPmJhY2tpbmcoKS0+
Z3JhcGhpY3NMYXllcigpKS0+cGxhdGZvcm1DQUxheWVyKCk7CisKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBmaW5hbFRyYW5zZm9ybTsKKyAgICBmaW5hbFRyYW5zZm9ybS5zY2FsZShzY2FsZSk7
CisKKyAgICAvLyBJZiB0aGUgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IHRoZSB0YXJnZXQgc2NhbGUs
IHNldFBhZ2VTY2FsZUZhY3RvcigpIHdpbGwgc2hvcnQtY2lyY3VpdAorICAgIC8vIGFuZCBub3Qg
YXBwbHkgdGhlIHRyYW5zZm9ybSwgc28gd2UgY2FuJ3QgZGVwZW5kIG9uIGl0IHRvIGRvIHNvLgor
ICAgIHJlbmRlclZpZXdMYXllci0+c2V0VHJhbnNmb3JtKGZpbmFsVHJhbnNmb3JtKTsKKworICAg
IFBsYXRmb3JtQ0FMYXllciogc2hhZG93TGF5ZXIgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Q0EqPihyZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JDb250ZW50U2hhZG93KCkpLT5w
bGF0Zm9ybUNBTGF5ZXIoKTsKKyAgICBJbnRSZWN0IG92ZXJmbG93UmVjdCA9IHJlbmRlclZpZXct
PnBpeGVsU25hcHBlZExheW91dE92ZXJmbG93UmVjdCgpOworICAgIHNoYWRvd0xheWVyLT5zZXRC
b3VuZHMoSW50UmVjdChJbnRQb2ludCgpLCB0b0ludFNpemUob3ZlcmZsb3dSZWN0Lm1heFhNYXhZ
Q29ybmVyKCkpKSk7CisgICAgc2hhZG93TGF5ZXItPnNldFBvc2l0aW9uKHNoYWRvd0xheWVyLT5i
b3VuZHMoKS5jZW50ZXIoKSk7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNldFVwQ29u
dGVudFNoYWRvd0xheWVyKHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5sYXllckZvckNvbnRlbnRT
aGFkb3coKSk7CisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmlnaW4ob3JpZ2luKTsKKyAg
ICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3
KCktPnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6SW5jbHVkZVNjcm9sbGJhcnMp
OworICAgIHVuc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5KC12aXNpYmxlQ29udGVudFJlY3QubG9jYXRp
b24oKSk7CisgICAgbV93ZWJQYWdlLT5zY2FsZVBhZ2Uoc2NhbGUsIHJvdW5kZWRJbnRQb2ludCgt
dW5zY3JvbGxlZE9yaWdpbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="242893"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>