SlideShare a Scribd company logo
1 of 71
今日からわかる!(?)
ソーシャルグラフ解析
 複雑ネットワークとOSS
        How many friends do you
                have?
    一般社団法人LOCAL

     おのでら だいち
小野寺大地(onodes)
リアルろくろ




小野寺大地(onodes)
自己紹介
✓ 苫小牧生まれ苫小牧育ち チーム苫小牧を作りたい
✓ 北海道大学大学院
 ✓ 複雑ネットワーク,クラスタって何?
✓ 一般社団法人LOCAL
✓ Ruby札幌
✓ 好:酒,寝,肉,肉チャー,二郎,写真,温泉,ヱヴァ
✓ 嫌:読書,英語,暑,睡眠妨害,窓...
はじめに
本日の目的
本日の目的
本日の目的
本日の目的
複雑ネットワーク

✓ グラフ構造を扱う研究分野
✓ Twitter,Facebook,blog...も研究対象
✓ 友達の友達は友達
✓ 世界は狭い
✓ 知り合いが超多い人は少なく,それなりの人が多い
複雑ネットワーク

✓ グラフ構造を扱う研究分野
✓ Twitter,Facebook,blog...も研究対象
✓ 友達の友達は友達
✓ 世界は狭い
✓ 知り合いが超多い人は少なく,それなりの人が多い
グラフ
油           野菜
                                 100




                                75




                                50



                            25


2007
       2008                 0
              2009
                     2010
油          野菜
                                      100




                                     75




                                     50



                                 25


2007
       2008                      0
              2009
                          2010
2007   2008        2009     2010




              9%


                      14%


50%




                    28%
100


                                                                   75
                           100

                                                                   50
                           75

                                                                   25
                       50
                                       2007                    0
                                              2008
                       25                            2009
                                                            2010
20072008               0
         2009
                2010
                                        9%
                                              14%
                                 50%


                                             28%
100


                                                                   75
                           100

                                                                   50
                           75

                                                                   25
                       50
                                       2007                    0
                                              2008
                       25                            2009
                                                            2010
20072008               0
         2009
                2010
                                        9%
                                              14%
                                 50%


                                             28%
グラフ?
ここで扱うグラフ

✓ 人と人
✓ モノとモノ
✓ 人とモノ
ここで扱うグラフ

✓ 人と人(一部グラフ)
✓ モノとモノ(一部グラフ)
✓ 人とモノ(二部グラフ)
ここで扱うグラフ

✓ 人と人(一部グラフ)
✓ モノとモノ(一部グラフ)
✓ 人とモノ(二部グラフ)
一部グラフ

✓ Twitterのfollow follower関係
✓ Facebookのfriend
✓ リアルでの友人関係
一部グラフ
             friend

    friend




friend                friend
一部グラフ
             follow

    follow




follow                follow
一部グラフ
   follow



follow


            follow
本日の目的
本日の目的

✓ じゃあグラフ構造から誰が
✓ 「もしかして知り合い?」
✓ その人のデータ(居住地)からではできないの?
本日の目的

✓ じゃあグラフ構造から誰が
✓ 「もしかして知り合い?」
✓ その人のデータ(居住地)からではできないの?

     できない
職歴
  学歴
 自己紹介
基本データ
住んだこと
 ある場所
職歴
                  学歴
                 自己紹介
                基本データ
                住んだこと
                 ある場所




全く違う人でも知り合いなことはあるよね?
一部グラフ
             friend

    friend




friend                friend
もしかして知り合い?
              friend

     friend




 friend                friend
二部グラフ


✓ amazonの購買データなどなど
二部グラフ
二部グラフ
二部グラフ
二部グラフ
グラフのみえる化
みえる化=可視化

✓ ネットワークの可視化
✓ 適当に人を配置してもダメ
✓ どうすればいい配置になるの?
可視化の方法

✓ ランダム配置
✓ kkっていう配置
✓ FRっていう配置
ちょっと実演
可視化
✓ Twitterの可視化
 ✓ @onodesから友達の友達まで
 ✓ ユーザ数30000くらい
 ✓ follow数35000くらい

 ✓ powered by Gephi & openord
可視化
可視化

✓ Facebookの可視化
✓ touch graph
 ✓ http://www.touchgraph.com/
可視化



touch
graph
グラフの計算
グラフの計算


✓ コンピュータで計算しようと思ったとき
✓ どうやって「繋がり」を保存すれば良いのか?
グラフの計算
✓ 隣接行列(2次元配列)
    A   B   C

                    A
A   0   1   0   B

B   1   0   1       C

C   0   1   0
グラフの計算
✓ 隣接リスト
 a,b
 b,c           A
           B
 c
 ...           C
 ...
 ...
このあたりをやってくれる
   ライブラリ
ライブラリ

✓ JUNG(Java)
✓ iGraph(R,Python)
✓ NetworkX(Python)
ライブラリ

✓ JUNG(Java)
✓ iGraph(R,Python)
✓ NetworkX(Python)
JUNG
✓ Javaで書かれたオープンソースライブラリ
✓ グラフで表現可能なデータのサポート
 ✓ モデリング
 ✓ 分析
 ✓ 可視化
✓ http://jung.sourceforge.net/
JUNG


✓ 簡単なソースコードとtutorial(日本語)
 ✓ http://www.cs.tsukuba.ac.jp/   misue/
   open/tutorial/jung2/step1.html
JUNG
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.UndirectedSparseGraph;

public class Sample1a {

    public static void main(String[] args) {
        Graph<Integer,Integer> graph = new
UndirectedSparseGraph<Integer,Integer>();
        graph.addVertex(1);
        graph.addVertex(2);
        graph.addVertex(3);
        graph.addEdge(101, 1, 2);
        graph.addEdge(102, 2, 3);
        System.out.println("Graph G = " + graph.toString());
    }

}
JUNG
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.UndirectedSparseGraph;

public class Sample1a {

    public static void main(String[] args) {
        Graph<Integer,Integer> graph = new
UndirectedSparseGraph<Integer,Integer>();
        graph.addVertex(1);
        graph.addVertex(2);
        graph.addVertex(3);
        graph.addEdge(101, 1, 2);
        graph.addEdge(102, 2, 3);
        System.out.println("Graph G = " + graph.toString());
    }

}
ライブラリ

✓ JUNG(Java)
✓ iGraph(R,C++,Python)
✓ NetworkX(Python)
NetworkX
import networkx
import pylab
g = networkx.Graph()
g.add_edge("A", "B")
g.add_edge("B", "C")
networkx.draw(g)
pylab.savefig("network.png")
さらに大規模化へ
GraphDBの紹介
GraphDB

✓ GraphDB
 ✓ あるデータと接続しているデータを調べるために
  インデックスを参照しない

 ✓ あるデータからの接続関係でデータを見つける
GraphDB
             friend

    friend




friend                friend
GraphDB


✓ データベースといえばクエリ
✓ GraphDBのクエリは?インデックス参照しない...?
GraphDB

✓ Query = Traversal
 ✓ 関係性,接続が大事
 ✓ このデータからあのデータまでの最短経路って?
 ✓ このデータに関係するデータ一覧はどれ?
GraphDB
✓ 簡単なまとめ
 ✓ GraphDBを使うべき場面
   ✓ あるデータからあるデータまでの距離が知りたい
   ✓ この人の友達の友達は何人いる?
 ✓ 使わない方がいい場面
   ✓ データの中からこの条件に合うデータを見つける
GraphDB

✓ 種類
 ✓ OrientDB
 ✓ Neo4j
 ✓ sones
 ✓ info grid...
まとめ
まとめ
✓ SNSの普及で人と人,モノとモノの繋がりが見えるよ
 うになってきた

✓ 繋がりから色々「オススメ」ができる
✓ この繋がりがネットワーク
✓ 扱うにはGraphを扱うライブラリ,DBが有効
✓ Facebookとかに色々バレている毎日
今日使ったツールなど

✓ Gephi(ネットワーク可視化)
✓ iGraph(ネットワーク解析,可視化ライブラリ)
✓ JUNG(ネットワーク解析,可視化ライブラリ)
✓ OrientDB(GraphDB)
✓ Gremlin(GraphDBアクセス用インタフェース)

More Related Content

What's hot

空間データのための回帰分析
空間データのための回帰分析空間データのための回帰分析
空間データのための回帰分析
springking
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
Miyoshi Yuya
 

What's hot (20)

Explanation in Machine Learning and Its Reliability
Explanation in Machine Learning and Its ReliabilityExplanation in Machine Learning and Its Reliability
Explanation in Machine Learning and Its Reliability
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ
 
画像キャプションの自動生成
画像キャプションの自動生成画像キャプションの自動生成
画像キャプションの自動生成
 
文献紹介:Benchmarking Neural Network Robustness to Common Corruptions and Perturb...
文献紹介:Benchmarking Neural Network Robustness to Common Corruptions and Perturb...文献紹介:Benchmarking Neural Network Robustness to Common Corruptions and Perturb...
文献紹介:Benchmarking Neural Network Robustness to Common Corruptions and Perturb...
 
【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features
【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features
【論文読み会】Deep Clustering for Unsupervised Learning of Visual Features
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門
 
【DL輪読会】Hierarchical Text-Conditional Image Generation with CLIP Latents
【DL輪読会】Hierarchical Text-Conditional Image Generation with CLIP Latents【DL輪読会】Hierarchical Text-Conditional Image Generation with CLIP Latents
【DL輪読会】Hierarchical Text-Conditional Image Generation with CLIP Latents
 
Anomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめたAnomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめた
 
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
 
[DL輪読会] Spectral Norm Regularization for Improving the Generalizability of De...
[DL輪読会] Spectral Norm Regularization for Improving the Generalizability of De...[DL輪読会] Spectral Norm Regularization for Improving the Generalizability of De...
[DL輪読会] Spectral Norm Regularization for Improving the Generalizability of De...
 
空間データのための回帰分析
空間データのための回帰分析空間データのための回帰分析
空間データのための回帰分析
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
[DL輪読会]大規模分散強化学習の難しい問題設定への適用
[DL輪読会]大規模分散強化学習の難しい問題設定への適用[DL輪読会]大規模分散強化学習の難しい問題設定への適用
[DL輪読会]大規模分散強化学習の難しい問題設定への適用
 
パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化パターン認識第9章 学習ベクトル量子化
パターン認識第9章 学習ベクトル量子化
 
[DL輪読会]Autonomous Reinforcement Learning: Formalism and Benchmarking
[DL輪読会]Autonomous Reinforcement Learning: Formalism and Benchmarking[DL輪読会]Autonomous Reinforcement Learning: Formalism and Benchmarking
[DL輪読会]Autonomous Reinforcement Learning: Formalism and Benchmarking
 
【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...
【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...
【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...
 
(文献紹介)デブラー手法の紹介
(文献紹介)デブラー手法の紹介(文献紹介)デブラー手法の紹介
(文献紹介)デブラー手法の紹介
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
 
[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...
[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...
[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...
 

Viewers also liked

Lightning-Talk: Ramen->Graph->Database, neo4j_fdw
Lightning-Talk: Ramen->Graph->Database, neo4j_fdwLightning-Talk: Ramen->Graph->Database, neo4j_fdw
Lightning-Talk: Ramen->Graph->Database, neo4j_fdw
Toshi Harada
 
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
Takahiro Inoue
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
Hisao Soyama
 
複雑ネットワーク勉強会 二部グラフの基礎と応用 20120208
複雑ネットワーク勉強会  二部グラフの基礎と応用 20120208複雑ネットワーク勉強会  二部グラフの基礎と応用 20120208
複雑ネットワーク勉強会 二部グラフの基礎と応用 20120208
Hiroko Onari
 
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
OSgeo Japan
 
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
Hisao Soyama
 

Viewers also liked (20)

『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
 
2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク2部グラフとソーシャルネットワーク
2部グラフとソーシャルネットワーク
 
2章グラフ理論スピード入門
2章グラフ理論スピード入門2章グラフ理論スピード入門
2章グラフ理論スピード入門
 
はじめての正規表現
はじめての正規表現はじめての正規表現
はじめての正規表現
 
Introduction to NumPy & SciPy
Introduction to NumPy & SciPyIntroduction to NumPy & SciPy
Introduction to NumPy & SciPy
 
Lightning-Talk: Ramen->Graph->Database, neo4j_fdw
Lightning-Talk: Ramen->Graph->Database, neo4j_fdwLightning-Talk: Ramen->Graph->Database, neo4j_fdw
Lightning-Talk: Ramen->Graph->Database, neo4j_fdw
 
GraphX Advent Calendar Day15
GraphX Advent Calendar Day15GraphX Advent Calendar Day15
GraphX Advent Calendar Day15
 
GraphX Advent Calendar Day 14
GraphX Advent Calendar Day 14GraphX Advent Calendar Day 14
GraphX Advent Calendar Day 14
 
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
 
Neo4j を Javaプログラムから使う
Neo4j を Javaプログラムから使うNeo4j を Javaプログラムから使う
Neo4j を Javaプログラムから使う
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
 
複雑ネットワーク勉強会 二部グラフの基礎と応用 20120208
複雑ネットワーク勉強会  二部グラフの基礎と応用 20120208複雑ネットワーク勉強会  二部グラフの基礎と応用 20120208
複雑ネットワーク勉強会 二部グラフの基礎と応用 20120208
 
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
 
Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析
 
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」までNeo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
 
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
 
Twitter拡散力の話
Twitter拡散力の話Twitter拡散力の話
Twitter拡散力の話
 

Recently uploaded

Recently uploaded (11)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

今日からわかる!ソーシャルグラフ解析

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n