Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 4020F2009C5 for ; Mon, 16 May 2016 15:38:31 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 3ED3A160A16; Mon, 16 May 2016 13:38:31 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id E5D20160131 for ; Mon, 16 May 2016 15:38:29 +0200 (CEST) Received: (qmail 63062 invoked by uid 500); 16 May 2016 13:38:29 -0000 Mailing-List: contact user-help@kudu.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@kudu.incubator.apache.org Delivered-To: mailing list user@kudu.incubator.apache.org Received: (qmail 63054 invoked by uid 99); 16 May 2016 13:38:29 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 May 2016 13:38:29 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id A7FA5C6721 for ; Mon, 16 May 2016 13:38:28 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.179 X-Spam-Level: * X-Spam-Status: No, score=1.179 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=globant.com Received: from mx2-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id mqEZlSZXhMOB for ; Mon, 16 May 2016 13:38:25 +0000 (UTC) Received: from mail-lb0-f170.google.com (mail-lb0-f170.google.com [209.85.217.170]) by mx2-lw-eu.apache.org (ASF Mail Server at mx2-lw-eu.apache.org) with ESMTPS id 36C0E5F1F5 for ; Mon, 16 May 2016 13:38:25 +0000 (UTC) Received: by mail-lb0-f170.google.com with SMTP id ww9so41939424lbc.2 for ; Mon, 16 May 2016 06:38:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=globant.com; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=AkbPAIUls77Q+2TfKov8Xu8kcTs4Wngg3jpNJoJzqSU=; b=WpZObezjrtNlqFcOo2Ewjdv3vCJWPvIXGSHEdakiMUr/Xe8xjlk/O5+xp4eXMoSmhT ym3VHDHMxBP69njLhpGlVgZdju55wrhRaPcFp9jKzayQm73fnYMQU6whxkTAsQaEdRUn f07dmrxPPTuGEYQYV7jZbMmEA1kOj9cOUylow= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=AkbPAIUls77Q+2TfKov8Xu8kcTs4Wngg3jpNJoJzqSU=; b=WyW5fmzEhXLeSfS8hlfMWtkiXymzndPGQH6xvHvrLw4TuKv5/z8Eg1XGNHgrM0ox7A cYTYA4FHxhAeBijKs3TJAbo/FGjuYJjRdGXaAHuOLh7u+NrtJDYTLPXLjB9NPKq0CguB 5u+tG6a7RpGTzlXmQBTW4RQXhHRxOyRqavDwGkLMlwn9/xs4aXhm6LXLJi4kauTTMhx9 DRYEVTslKlqSxZl/PQHfdfPlXVc7TRBhjSRhFK/W7NmKmdKmn6HO7VCsz3Y3b1PjUm2e N4fAyupkbsNFpgfJApQIpBUZksHy3iKOou8rAGYnY5ti1gdmUFC9r3HLxHZt1M3+ASAp cr8w== X-Gm-Message-State: AOPr4FWti9EItVcnTITfKrheb1qFwSDmWKbyFzitfJP24JA/KuTfco3vqB5FzCiuOfRiN9dnsZUo7f6kheKBR27p4/8APyW/LluF/BdtjL8Crqd31WoefrdvyeYnvEGD/TQj4nl8qOdnrP/X//1FDMAc2V/aWw== X-Received: by 10.112.228.194 with SMTP id sk2mr11426013lbc.7.1463405898552; Mon, 16 May 2016 06:38:18 -0700 (PDT) MIME-Version: 1.0 Received: by 10.25.136.194 with HTTP; Mon, 16 May 2016 06:37:47 -0700 (PDT) In-Reply-To: References: From: Amit Adhau Date: Mon, 16 May 2016 19:07:47 +0530 Message-ID: Subject: Re: Partition and Split rows To: user@kudu.incubator.apache.org Content-Type: multipart/related; boundary=047d7bfd0ccebfdcc20532f5bc3e archived-at: Mon, 16 May 2016 13:38:31 -0000 --047d7bfd0ccebfdcc20532f5bc3e Content-Type: multipart/alternative; boundary=047d7bfd0ccebfdcbc0532f5bc3d --047d7bfd0ccebfdcbc0532f5bc3d Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, As you have explained the importance of the partition and data split for time series data retrieval, I have below query or limitation at this moment for implementing one of our use case. For date time data, in kudu we use Timestamp datatype and obviously we can do the partitioning on it. But, if we need to fetch the timestamp based data from Impala for adhoc analysis it gives us an error like the integration in Impala is missing and I guess you will be implementing it in Kimpala merge. Q: Can I fetch the kudu Timestamp data from Tableu/Pentaho for reporting and analytics purpose or I need Int64 datatype only. Q: Are you going to provide the Kimpala merge or kudu timestamp support in Impala/Tableu in near future. Q: At this moment, instead of Timestamp we are using Int64 type in kudu, will it be equally helpful for performance, if we use the partition and split by explanation given for timestamp datatype? e.g. can we get a better performance for a composite key on a given kudu table defined as 'metric(s),Int64(has timestamp data) and with a partition on Int64 column with Split by clause? Thanks, Amit On Sat, May 7, 2016 at 9:20 PM, Dan Burkert wrote: > Hi Sand, > > I've been working on some diagrams to help explain some of the more > advanced partitioning types, it's attached. Still pretty rough at this > point, but the goal is to clean it up and move it into the Kudu > documentation proper. I'm interested to hear what kind of time series yo= u > are interested in Kudu for. I'm tasked with improving Kudu for time > series, you can follow progress here > . If you have any > additional ideas I'd love to hear them. You may also be interested in a > small project that a JD and I have been working on in the past week to > build an OpenTSDB style store on top of Kudu, you can find it here > . Still quite feature limited at > this point. > > - Dan > > On Fri, May 6, 2016 at 4:51 PM, Sand Stone wrote= : > >> Thanks. Will read. >> >> Given that I am researching time series data, row locality is crucial :-= ) >> >> >> On Fri, May 6, 2016 at 3:57 PM, Jean-Daniel Cryans >> wrote: >> >>> We do have non-covering range partitions coming in the next few months, >>> here's the design (in review): >>> http://gerrit.cloudera.org:8080/#/c/2772/9/docs/design-docs/non-coverin= g-range-partitions.md >>> >>> The "Background & Motivation" section should give you a good idea of wh= y >>> I'm mentioning this. >>> >>> Meanwhile, if you don't need row locality, using hash partitioning coul= d >>> be good enough. >>> >>> J-D >>> >>> On Fri, May 6, 2016 at 3:53 PM, Sand Stone >>> wrote: >>> >>>> Makes sense. >>>> >>>> Yeah it would be cool if users could specify/control the split rows >>>> after the table is created. Now, I have to "think ahead" to pre-create= the >>>> range buckets. >>>> >>>> On Fri, May 6, 2016 at 3:49 PM, Jean-Daniel Cryans >>> > wrote: >>>> >>>>> You will only get 1 tablet and no data distribution, which is bad. >>>>> >>>>> That's also how HBase works, but it will split regions as you insert >>>>> data and eventually you'll get some data distribution even if it does= n't >>>>> start in an ideal situation. Tablet splitting will come later for Kud= u. >>>>> >>>>> J-D >>>>> >>>>> On Fri, May 6, 2016 at 3:42 PM, Sand Stone >>>>> wrote: >>>>> >>>>>> One more questions, how does the range partition work if I don't >>>>>> specify the split rows? >>>>>> >>>>>> Thanks! >>>>>> >>>>>> On Fri, May 6, 2016 at 3:37 PM, Sand Stone >>>>>> wrote: >>>>>> >>>>>>> Thanks, Misty. The "advanced" impala example helped. >>>>>>> >>>>>>> I was just reading the Java API,CreateTableOptions.java, it's >>>>>>> unclear how the range partition column names associated with the pa= rtial >>>>>>> rows params in the addSplitRow API. >>>>>>> >>>>>>> On Fri, May 6, 2016 at 3:08 PM, Misty Stanley-Jones < >>>>>>> mstanleyjones@cloudera.com> wrote: >>>>>>> >>>>>>>> Hi Sand, >>>>>>>> >>>>>>>> Please have a look at >>>>>>>> http://getkudu.io/docs/kudu_impala_integration.html#partitioning_t= ables >>>>>>>> and see if it is helpful to you. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Misty >>>>>>>> >>>>>>>> On Fri, May 6, 2016 at 2:00 PM, Sand Stone >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi, I am new to Kudu. I wonder how the split rows work. I know >>>>>>>>> from some docs, this is currently for pre-creation the table. I a= m >>>>>>>>> researching how to partition (hash+range) some time series test d= ata. >>>>>>>>> >>>>>>>>> Is there an example? or notes somewhere I could read upon. >>>>>>>>> >>>>>>>>> Thanks much. >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > --=20 Thanks & Regards, *Amit Adhau* | Data Architect *GLOBANT* | IND:+91 9821518132 [image: Facebook] [image: Twitter] [image: Youtube] [image: Linkedin] [image: Pinterest] [image: Globant] --=20 The information contained in this e-mail may be confidential. It has been= =20 sent for the sole use of the intended recipient(s). If the reader of this= =20 message is not an intended recipient, you are hereby notified that any=20 unauthorized review, use, disclosure, dissemination, distribution or=20 copying of this communication, or any of its contents,=20 is strictly prohibited. If you have received it by mistake please let us=20 know by e-mail immediately and delete it from your system. Many thanks. =20 La informaci=C3=B3n contenida en este mensaje puede ser confidencial. Ha si= do=20 enviada para el uso exclusivo del destinatario(s) previsto. Si el lector de= =20 este mensaje no fuera el destinatario previsto, por el presente queda Ud.= =20 notificado que cualquier lectura, uso, publicaci=C3=B3n, diseminaci=C3=B3n,= =20 distribuci=C3=B3n o copiado de esta comunicaci=C3=B3n o su contenido est=C3= =A1=20 estrictamente prohibido. En caso de que Ud. hubiera recibido este mensaje= =20 por error le agradeceremos notificarnos por e-mail inmediatamente y=20 eliminarlo de su sistema. Muchas gracias. --047d7bfd0ccebfdcbc0532f5bc3d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

As you have explained the importanc= e of the partition and data split for time series data retrieval, I have be= low query or limitation at this moment for implementing one of our use case= .

For date time data, in kudu we use Timestamp dat= atype and obviously we can do the partitioning on it. But, if we need to fe= tch the timestamp based data from Impala for adhoc analysis it gives us an = error like=C2=A0the integration in Impala = is missing and I guess you will be implementing it in=C2=A0Kimpala merge.=C2=A0

Q: Can I fetch the kudu Timestamp data from Tableu/Pentaho for reporting = and analytics purpose or I need Int64 datatype only.

Q: Are you going to provide the Kimpala merge or kudu timestamp sup= port in Impala/Tableu in near future.

Q: At t= his moment,=C2=A0instead=C2=A0of Timestamp we are using Int64 type in kudu,= will it be equally helpful for performance, if we use the partition and sp= lit by explanation given for timestamp datatype? e.g. can we get a better p= erformance for a composite key on a given kudu table defined as 'metric= (s),Int64(has timestamp data) and with a partition on Int64 column with Spl= it by clause?

=
Thanks,
Amit


On Sat, May 7, 2016 at 9:20 PM, Dan Burkert = <dan@cloudera.com<= /a>> wrote:
Hi= Sand,

I've been working on some diagrams to help ex= plain some of the more advanced partitioning types, it's attached. =C2= =A0 Still pretty rough at this point, but the goal is to clean it up and mo= ve it into the Kudu documentation proper.=C2=A0 I'm interested to hear = what kind of time series you are interested in Kudu for.=C2=A0 I'm task= ed with improving Kudu for time series, you can follow progress here= . If you have any additional ideas I'd love to hear them.=C2=A0 You may= also be interested in a small project that a JD and I have been working on= in the past week to build an OpenTSDB style store on top of Kudu, you can = find it=C2=A0here.=C2=A0 Still quite feature limited at this point.

- Dan

On Fri, May 6, 2016 at 4:51 PM, Sa= nd Stone <sand.m.stone@gmail.com> wrote:
Thanks. Will read.=C2=A0

Given that I am researching time series data, row locality is crucial= :-) =C2=A0

On Fri, May 6, 2016 at 3:57 PM, Jean-Daniel Cryans <jdc= ryans@apache.org> wrote:
We do have non-covering range partitions coming in the next = few months, here's the design (in review):=C2=A0http://gerrit.cloudera.org:8080/#/c/2772/9/docs/de= sign-docs/non-covering-range-partitions.md

The "= ;Background & Motivation" section should give you a good idea of w= hy I'm mentioning this.

Meanwhile, if you don&= #39;t need row locality, using hash partitioning could be good enough.

J-D
<= /div>

On= Fri, May 6, 2016 at 3:53 PM, Sand Stone <sand.m.stone@gmail.com&= gt; wrote:
Makes = sense.=C2=A0

Yeah it would be cool if users could specif= y/control the split rows after the table is created. Now, I have to "t= hink ahead" to pre-create the range buckets.=C2=A0

On Fri, May 6, = 2016 at 3:49 PM, Jean-Daniel Cryans <jdcryans@apache.org> = wrote:
You will only get= 1 tablet and no data distribution, which is bad.

That&#= 39;s also how HBase works, but it will split regions as you insert data and= eventually you'll get some data distribution even if it doesn't st= art in an ideal situation. Tablet splitting will come later for Kudu.
=

J-D

On = Fri, May 6, 2016 at 3:42 PM, Sand Stone <sand.m.stone@gmail.com&g= t; wrote:
One mor= e questions, how does the range partition work if I don't specify the s= plit rows?=C2=A0

Thanks!=C2=A0

On Fri, May 6, 2016 a= t 3:37 PM, Sand Stone <sand.m.stone@gmail.com> wrote:
Thanks, Misty. The "advanced" impala = example helped.=C2=A0

I was just reading the Java API,= CreateTableOptions.java, it's unclear how the range partition column na= mes associated with the partial rows params in the=C2=A0addSplitRow API.<= /div>

On Fri, May 6, 2016 at 3:08 PM, Misty Stanley-Jones &= lt;mstanley= jones@cloudera.com> wrote:
=
Hi Sand,

Please have a look at=C2=A0http://getkudu.io/docs/kudu_impala_integration.html= #partitioning_tables and see if it is helpful to you.

Thanks,
Misty

On Fri, May 6, 2016 at 2:00 PM, Sand St= one <sand.m.stone@gmail.com> wrote:
Hi, I am new to Kudu. I wonder how the spl= it rows work. I know from some docs, this is currently for pre-creation the= table. I am researching how to partition (hash+range) some time series tes= t data.=C2=A0

Is there an example? or notes somewhere I = could read upon.=C2=A0

Thanks much.=C2=A0











--
=
Thanks & Regards,=

Amit Adhau=C2=A0|=C2=A0Data Architect

GLOBANT=C2=A0|=C2=A0IND:+91 9821518132

3D"Facebook"

3D"Youtube"

3D"Linkedin"

3D"Pinterest"=

3D"Globant"=


The information con= tained in this e-mail may be=C2=A0confidential. It has been sent for the so= le use of the intended recipient(s). If the reader of this message is not a= n intended recipient, you are hereby notified that any unauthorized review,= use, disclosure, dissemination, distribution or copying of this communicat= ion, or any of its contents, is=C2=A0strictly=C2=A0prohibited.=C2=A0= If you have received it by mis= take please let us know by e-mail immediately and delete it from your syste= m.=C2=A0= Many thanks.

=C2=A0=

La informaci=C3=B3n contenida en este= mensaje puede ser confidencial. Ha sido enviada para el uso exclusivo del = destinatario(s) previsto. Si el lector de este mensaje no fuera el destinat= ario previsto, por el presente queda Ud. notificado que cualquier lectura, = uso, publicaci=C3=B3n, diseminaci=C3=B3n, distribuci=C3=B3n o copiado de es= ta comunicaci=C3=B3n o su contenido est=C3=A1 estrictamente prohibido. En c= aso de que Ud. hubiera recibido este mensaje por error le agradeceremos not= ificarnos por e-mail inmediatamente y eliminarlo de su sistema.=C2=A0Muchas gracias.=


--047d7bfd0ccebfdcbc0532f5bc3d-- --047d7bfd0ccebfdcc20532f5bc3e Content-Type: image/jpeg; name="image003.jpg" Content-Disposition: inline; filename="image003.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 277600d9e52226c_0.3 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAZABkDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwAooAyc etd9oGkWP2GO+u7TyZVjKSeZ9xh/e/LvX01euqMbtHxGEwksTLli7WOBoqxf/Zvt032Ld9n3nZu9 Kr1sndXOWS5W0FPM8pj8syuY/wC7uOPyplFOwJtbBRRRQI//2Q== --047d7bfd0ccebfdcc20532f5bc3e Content-Type: image/jpeg; name="image008.jpg" Content-Disposition: inline; filename="image008.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 277600d9e52226c_0.8 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAZABkDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDn6ngs Lu6iklt7aWWOLl3RCQv1NQV2tpdWtv8ADCQotyjtcGNzHJt3SEdf93HavXnJxtY4oq5xVFFFWSFW f7Ruhph0/wA3/RTJ5vl4H3vXNVqKLXGFFFFAj//Z --047d7bfd0ccebfdcc20532f5bc3e Content-Type: image/jpeg; name="image009.jpg" Content-Disposition: inline; filename="image009.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 277600d9e52226c_0.9 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAZABkDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDGhhku JlihRpJHOFVRkk0jo0bskilXU4ZSMEGtPwxF53iWwj3um6XG6NsMOD0NdM2haMrQTX8d3NLeX0tv uEv+2QGP5V706yhKzPmKWHdWPMn/AFp/mcJRV3WrFdM1m7s0YskMhVSeuO1Uq1TTV0c8ouLafQmt Luaxu47m2fZNEdyNjODVuTX9RlEIefPkzGdPlHDk5J/M1nUUOMW7tFRqSirJk13dzX13Jc3Db5ZT uZsYyahooppW0RLbbuz/2Q== --047d7bfd0ccebfdcc20532f5bc3e Content-Type: image/jpeg; name="image010.jpg" Content-Disposition: inline; filename="image010.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 277600d9e52226c_0.10 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAZABkDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDnKsLp 141qblbWcwDnzAh249c1XHUZGR6V3RubTztN1UzRwRbpJZFd8O0ONqRhO44Irz4xufbV60qdrK9/ 6/E4WilYhnYgYBJIHpSVJ0BT5JpJhGJGLCNQiZ/hX0/WmUUCsFFFFAz/2Q== --047d7bfd0ccebfdcc20532f5bc3e Content-Type: image/jpeg; name="image007.jpg" Content-Disposition: inline; filename="image007.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 277600d9e52226c_0.7 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAZABkDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDsqklt 5IVRpFwrjKnsajrb0pFm0uVbkDyQxwW7V8bhaCrycL2dv6uMxKKfMsazMImLIDwSMZplc7VnYAqa W7lmhSJiBGgwFUYB9zUNFNTlFNJ7gFFFFSB//9k= --047d7bfd0ccebfdcc20532f5bc3e Content-Type: image/jpeg; name="image004.jpg" Content-Disposition: inline; filename="image004.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: 277600d9e52226c_0.4 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMg IyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAZABkDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDhaWtf wjHHN4t0tJlV42uFBVhkGvcGtrz/AISJVS0tDpfkZdmUBxJk/d9eMda86nS51e59njMwWGko8t9L 72Pneiug8dRRw+NNTSFERBIMKowB8oz+tc/WUlZtHbSn7SCn3VxVYqwZSQRyCO1XP7Y1L/oIXf8A 3+b/ABqlRSuU4p7oc7tI5d2LMxySTkk02iigo//Z --047d7bfd0ccebfdcc20532f5bc3e--